[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