[hibernate-commits] Hibernate SVN: r18609 - in core/trunk/entitymanager/src: test/java/org/hibernate/ejb/test/metadata and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Fri Jan 22 14:21:34 EST 2010
Author: epbernard
Date: 2010-01-22 14:21:33 -0500 (Fri, 22 Jan 2010)
New Revision: 18609
Added:
core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/DeskWithRawType.java
core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/EmployeeWithRawType.java
core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/SecondMetadataTest.java
Modified:
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/AttributeFactory.java
Log:
HHH-4834 Take into account that collections can be of raw type.
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/AttributeFactory.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/AttributeFactory.java 2010-01-22 18:52:56 UTC (rev 18608)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/metamodel/AttributeFactory.java 2010-01-22 19:21:33 UTC (rev 18609)
@@ -734,12 +734,18 @@
ParameterizedType signatureType = getSignatureType( member );
if ( keyPersistentAttributeType == null ) {
- elementJavaType = getClassFromGenericArgument( signatureType.getActualTypeArguments()[0] );
+ elementJavaType = signatureType != null ?
+ getClassFromGenericArgument( signatureType.getActualTypeArguments()[0] ) :
+ Object.class; //FIXME and honor targetEntity?
keyJavaType = null;
}
else {
- keyJavaType = getClassFromGenericArgument( signatureType.getActualTypeArguments()[0] );
- elementJavaType = getClassFromGenericArgument( signatureType.getActualTypeArguments()[1] );
+ keyJavaType = signatureType != null ?
+ getClassFromGenericArgument( signatureType.getActualTypeArguments()[0] ) :
+ Object.class; //FIXME and honor targetEntity?
+ elementJavaType = signatureType != null ?
+ getClassFromGenericArgument( signatureType.getActualTypeArguments()[1] ) :
+ Object.class; //FIXME and honor targetEntity?
}
this.elementValueContext = new ValueContext() {
@@ -836,9 +842,12 @@
}
public static ParameterizedType getSignatureType(Member member) {
- return (ParameterizedType) ( Field.class.isInstance( member )
- ? ( (Field) member ).getGenericType()
- : ( (Method) member ).getGenericReturnType());
+ final java.lang.reflect.Type type = Field.class.isInstance( member )
+ ? ( ( Field ) member ).getGenericType()
+ : ( ( Method ) member ).getGenericReturnType();
+ //this is a raw type
+ if ( type instanceof Class ) return null;
+ return (ParameterizedType) type;
}
public static PluralAttribute.CollectionType determineCollectionType(Class javaType) {
Added: core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/DeskWithRawType.java
===================================================================
--- core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/DeskWithRawType.java (rev 0)
+++ core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/DeskWithRawType.java 2010-01-22 19:21:33 UTC (rev 18609)
@@ -0,0 +1,61 @@
+package org.hibernate.ejb.test.metadata;
+
+import java.util.Collection;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class DeskWithRawType implements java.io.Serializable {
+
+ @Id
+ protected String id;
+
+ @Basic
+ protected String name;
+
+ public DeskWithRawType() {
+ }
+
+ @ManyToMany(targetEntity = EmployeeWithRawType.class, cascade = CascadeType.ALL)
+ @JoinTable(name = "DESK_EMPL",
+ joinColumns =
+ @JoinColumn(
+ name = "DESK_FK", referencedColumnName = "ID"),
+ inverseJoinColumns =
+ @JoinColumn(
+ name = "EMPL_FK", referencedColumnName = "ID")
+ )
+ protected Collection employees = new java.util.ArrayList();
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Collection getEmployees() {
+ return employees;
+ }
+
+ public void setEmployees(Collection employees) {
+ this.employees = employees;
+ }
+}
Added: core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/EmployeeWithRawType.java
===================================================================
--- core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/EmployeeWithRawType.java (rev 0)
+++ core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/EmployeeWithRawType.java 2010-01-22 19:21:33 UTC (rev 18609)
@@ -0,0 +1,52 @@
+package org.hibernate.ejb.test.metadata;
+
+import java.util.Collection;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class EmployeeWithRawType implements java.io.Serializable {
+
+
+ @Id
+ protected String id;
+
+ @Basic
+ protected String name;
+
+ @ManyToMany(targetEntity = DeskWithRawType.class, mappedBy = "employees", cascade = CascadeType.ALL)
+ protected Collection desks = new java.util.ArrayList();
+
+ public EmployeeWithRawType() {
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Collection getDesks() {
+ return desks;
+ }
+
+ public void setDesks(Collection desks) {
+ this.desks = desks;
+ }
+}
\ No newline at end of file
Added: core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/SecondMetadataTest.java
===================================================================
--- core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/SecondMetadataTest.java (rev 0)
+++ core/trunk/entitymanager/src/test/java/org/hibernate/ejb/test/metadata/SecondMetadataTest.java 2010-01-22 19:21:33 UTC (rev 18609)
@@ -0,0 +1,26 @@
+package org.hibernate.ejb.test.metadata;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.hibernate.ejb.test.TestCase;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class SecondMetadataTest extends TestCase {
+
+ public void testBaseOfService() throws Exception {
+ EntityManagerFactory emf = factory;
+ assertNotNull( emf.getMetamodel() );
+ assertNotNull( emf.getMetamodel().entity( DeskWithRawType.class ) );
+ assertNotNull( emf.getMetamodel().entity( EmployeeWithRawType.class ) );
+ }
+
+ @Override
+ public Class[] getAnnotatedClasses() {
+ return new Class[] {
+ DeskWithRawType.class,
+ EmployeeWithRawType.class
+ };
+ }
+}
More information about the hibernate-commits
mailing list