[hibernate-commits] Hibernate SVN: r10356 - in trunk/HibernateExt/metadata/src: java/org/hibernate/reflection/java test/org/hibernate/test/annotations/indexcoll
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Mon Aug 28 15:22:03 EDT 2006
Author: epbernard
Date: 2006-08-28 15:22:02 -0400 (Mon, 28 Aug 2006)
New Revision: 10356
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Trainee.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Training.java
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXCollectionType.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/IndexedCollectionTest.java
Log:
ANN-419 add unit test and fix bugs
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXCollectionType.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXCollectionType.java 2006-08-28 11:00:28 UTC (rev 10355)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXCollectionType.java 2006-08-28 19:22:02 UTC (rev 10356)
@@ -4,6 +4,7 @@
import java.lang.reflect.Type;
import java.util.Collection;
import java.util.Map;
+import java.util.SortedMap;
import org.hibernate.reflection.XClass;
import org.hibernate.reflection.java.generics.TypeEnvironment;
@@ -34,7 +35,9 @@
public XClass caseParameterizedType(ParameterizedType parameterizedType) {
Type[] args = parameterizedType.getActualTypeArguments();
Type componentType;
- if ( getCollectionClass().isAssignableFrom( Map.class ) ) {
+ Class<? extends Collection> collectionClass = getCollectionClass();
+ if ( collectionClass.isAssignableFrom( Map.class )
+ || collectionClass.isAssignableFrom( SortedMap.class ) ) {
componentType = args[1];
}
else {
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/IndexedCollectionTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/IndexedCollectionTest.java 2006-08-28 11:00:28 UTC (rev 10355)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/IndexedCollectionTest.java 2006-08-28 19:22:02 UTC (rev 10356)
@@ -207,11 +207,11 @@
s = openSession();
tx = s.beginTransaction();
AlphabeticalDirectory m = new AlphabeticalDirectory();
- m.setName("M");
+ m.setName( "M" );
AlphabeticalDirectory v = new AlphabeticalDirectory();
- v.setName("V");
- s.persist(m);
- s.persist(v);
+ v.setName( "V" );
+ s.persist( m );
+ s.persist( v );
AddressBook book = new AddressBook();
book.setOwner( "Emmanuel" );
@@ -377,9 +377,9 @@
Gas o2 = new Gas();
o2.name = "oxygen";
atm.gases.put( "100%", o2 );
- atm.gasesPerKey.put(key, o2);
+ atm.gasesPerKey.put( key, o2 );
atm2.gases.put( "100%", o2 );
- atm2.gasesPerKey.put(key, o2);
+ atm2.gasesPerKey.put( key, o2 );
s.persist( key );
s.persist( atm );
s.persist( atm2 );
@@ -390,11 +390,33 @@
key = (GasKey) s.get( GasKey.class, key.getName() );
assertEquals( 1, atm.gases.size() );
assertEquals( o2.name, atm.gases.get( "100%" ).name );
- assertEquals( o2.name, atm.gasesPerKey.get(key).name );
+ assertEquals( o2.name, atm.gasesPerKey.get( key ).name );
tx.rollback();
s.close();
}
+ public void testSortedMap() {
+ Session s = openSession();
+ Transaction tx = s.beginTransaction();
+ Training training = new Training();
+ Trainee trainee = new Trainee();
+ trainee.setName( "Jim" );
+ Trainee trainee2 = new Trainee();
+ trainee2.setName( "Emmanuel" );
+ s.persist( trainee );
+ s.persist( trainee2 );
+ training.getTrainees().put("Jim", trainee);
+ training.getTrainees().put("Emmanuel", trainee2);
+ s.persist( training );
+ s.flush();
+ s.clear();
+ training = (Training) s.get( Training.class, training.getId() );
+ assertEquals( "Emmanuel", training.getTrainees().firstKey() );
+ assertEquals( "Jim", training.getTrainees().lastKey() );
+ tx.rollback();
+ s.close();
+ }
+
public IndexedCollectionTest(String x) {
super( x );
}
@@ -417,7 +439,9 @@
Atmosphere.class,
Gas.class,
AlphabeticalDirectory.class,
- GasKey.class
+ GasKey.class,
+ Trainee.class,
+ Training.class
};
}
}
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Trainee.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Trainee.java 2006-08-28 11:00:28 UTC (rev 10355)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Trainee.java 2006-08-28 19:22:02 UTC (rev 10356)
@@ -0,0 +1,31 @@
+//$Id: $
+package org.hibernate.test.annotations.indexcoll;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.GeneratedValue;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class Trainee {
+ @Id @GeneratedValue private Long id;
+ private String name;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Training.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Training.java 2006-08-28 11:00:28 UTC (rev 10355)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Training.java 2006-08-28 19:22:02 UTC (rev 10356)
@@ -0,0 +1,39 @@
+//$Id: $
+package org.hibernate.test.annotations.indexcoll;
+
+import java.util.SortedMap;
+import java.util.TreeMap;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MapKey;
+import javax.persistence.ManyToMany;
+
+import org.hibernate.annotations.Sort;
+import org.hibernate.annotations.SortType;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class Training {
+ @Id @GeneratedValue private Long id;
+ @Sort(type= SortType.NATURAL)
+ @MapKey(name="name") @ManyToMany SortedMap<String, Trainee> trainees = new TreeMap<String, Trainee>();
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public SortedMap<String, Trainee> getTrainees() {
+ return trainees;
+ }
+
+ public void setTrainees(SortedMap<String, Trainee> trainees) {
+ this.trainees = trainees;
+ }
+}
More information about the hibernate-commits
mailing list