[hibernate-commits] Hibernate SVN: r10265 - in trunk/HibernateExt/metadata/src: java/org/hibernate/cfg/annotations java/org/hibernate/reflection/java test/org/hibernate/test/annotations/query

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Aug 15 13:03:38 EDT 2006


Author: epbernard
Date: 2006-08-15 13:03:35 -0400 (Tue, 15 Aug 2006)
New Revision: 10265

Added:
   trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/orm.xml
Removed:
   trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/package-info.java
Modified:
   trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/QueryBinder.java
   trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java
   trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXFactory.java
   trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/QueryTest.java
Log:
ANN-415 resultClass was considered string and not Class leading to a CCE
Remove NEVER usage in favor to MANUAL

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/QueryBinder.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/QueryBinder.java	2006-08-15 15:44:09 UTC (rev 10264)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/QueryBinder.java	2006-08-15 17:03:35 UTC (rev 10265)
@@ -246,7 +246,7 @@
 				flushMode = FlushMode.COMMIT;
 				break;
 			case NEVER:
-				flushMode = FlushMode.NEVER;
+				flushMode = FlushMode.MANUAL;
 				break;
 			default:
 				throw new AssertionFailure( "Unknown flushModeType: " + flushModeType );
@@ -329,8 +329,11 @@
 					return FlushMode.COMMIT;
 				}
 				else if ( hint.value().equalsIgnoreCase( FlushMode.NEVER.toString() ) ) {
-					return FlushMode.NEVER;
+					return FlushMode.MANUAL;
 				}
+				else if ( hint.value().equalsIgnoreCase( FlushMode.MANUAL.toString() ) ) {
+					return FlushMode.MANUAL;
+				}
 				else {
 					throw new AnnotationException( "Unknown FlushMode in hint: " + query + ":" + hint.name() );
 				}

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java	2006-08-15 15:44:09 UTC (rev 10264)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java	2006-08-15 17:03:35 UTC (rev 10265)
@@ -1334,7 +1334,21 @@
 				columnResults.add( (ColumnResult) AnnotationFactory.create( columnResultDescriptor ) );
 			}
 			ann.setValue( "columns", columnResults.toArray( new ColumnResult[ columnResults.size() ] ) );
-			copyStringAttribute( ann, subelement, "result-class", false );
+			//FIXME there is never such a result-class, get rid of it?
+			String clazzName = subelement.attributeValue( "result-class" );
+			if ( StringHelper.isNotEmpty( clazzName ) ) {
+				Class clazz = null;
+				try {
+					clazz = ReflectHelper.classForName(
+							XMLContext.buildSafeClassName( clazzName, defaults ),
+							EJB3OverridenAnnotationReader.class
+					);
+				}
+				catch (ClassNotFoundException e) {
+					throw new AnnotationException( "Unable to find entity-class: " + clazzName, e );
+				}
+				ann.setValue( "resultClass", clazz );
+			}
 			copyStringAttribute( ann, subelement, "result-set-mapping", false );
 			resultsets.add( (SqlResultSetMapping) AnnotationFactory.create( ann ) );
 		}
@@ -1356,7 +1370,7 @@
 	}
 
 	private NamedQueries getNamedQueries(Element tree, XMLContext.Default defaults) {
-		List<NamedQuery> queries = (List<NamedQuery>) buildNamedQueries( tree, false );
+		List<NamedQuery> queries = (List<NamedQuery>) buildNamedQueries( tree, false, defaults );
 		if ( defaults.canUseJavaAnnotations() ) {
 			NamedQuery annotation = super.getAnnotation( NamedQuery.class );
 			addNamedQueryIfNeeded( annotation, queries );
@@ -1392,7 +1406,7 @@
 	}
 
 	private NamedNativeQueries getNamedNativeQueries(Element tree, XMLContext.Default defaults) {
-		List<NamedNativeQuery> queries = (List<NamedNativeQuery>) buildNamedQueries( tree, true );
+		List<NamedNativeQuery> queries = (List<NamedNativeQuery>) buildNamedQueries( tree, true, defaults );
 		if ( defaults.canUseJavaAnnotations() ) {
 			NamedNativeQuery annotation = super.getAnnotation( NamedNativeQuery.class );
 			addNamedNativeQueryIfNeeded( annotation, queries );
@@ -1427,7 +1441,7 @@
 		}
 	}
 
-	public static List buildNamedQueries(Element element, boolean isNative) {
+	public static List buildNamedQueries(Element element, boolean isNative, XMLContext.Default defaults) {
 		if ( element == null ) return new ArrayList();
 		List namedQueryElementList = isNative ?
 				element.elements( "named-native-query" ) :
@@ -1457,7 +1471,20 @@
 				queryHints.add( (QueryHint) AnnotationFactory.create( hintDescriptor ) );
 			}
 			ann.setValue( "hints", queryHints.toArray( new QueryHint[ queryHints.size() ] ) );
-			copyStringAttribute( ann, subelement, "result-class", false );
+			String clazzName = subelement.attributeValue( "result-class" );
+			if ( StringHelper.isNotEmpty( clazzName ) ) {
+				Class clazz = null;
+				try {
+					clazz = ReflectHelper.classForName(
+							XMLContext.buildSafeClassName( clazzName, defaults ),
+							EJB3OverridenAnnotationReader.class
+					);
+				}
+				catch (ClassNotFoundException e) {
+					throw new AnnotationException( "Unable to find entity-class: " + clazzName, e );
+				}
+				ann.setValue( "resultClass", clazz );
+			}
 			copyStringAttribute( ann, subelement, "result-set-mapping", false );
 			namedQueries.add( AnnotationFactory.create( ann ) );
 		}

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXFactory.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXFactory.java	2006-08-15 15:44:09 UTC (rev 10264)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXFactory.java	2006-08-15 17:03:35 UTC (rev 10265)
@@ -146,7 +146,7 @@
 					namedQueries = new ArrayList<NamedQuery>();
 					defaults.put( NamedQuery.class, namedQueries );
 				}
-				List<NamedQuery> currentNamedQueries = EJB3OverridenAnnotationReader.buildNamedQueries(element, false);
+				List<NamedQuery> currentNamedQueries = EJB3OverridenAnnotationReader.buildNamedQueries(element, false, xmlDefaults);
 				namedQueries.addAll( currentNamedQueries );
 
 				List<NamedNativeQuery> namedNativeQueries = (List<NamedNativeQuery>) defaults.get(NamedNativeQuery.class);
@@ -154,7 +154,7 @@
 					namedNativeQueries = new ArrayList<NamedNativeQuery>();
 					defaults.put( NamedNativeQuery.class, namedNativeQueries );
 				}
-				List<NamedNativeQuery> currentNamedNativeQueries = EJB3OverridenAnnotationReader.buildNamedQueries(element, true);
+				List<NamedNativeQuery> currentNamedNativeQueries = EJB3OverridenAnnotationReader.buildNamedQueries(element, true, xmlDefaults);
 				namedNativeQueries.addAll( currentNamedNativeQueries );
 
 				List<SqlResultSetMapping> sqlResultSetMappings = (List<SqlResultSetMapping>) defaults.get(SqlResultSetMapping.class);

Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/QueryTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/QueryTest.java	2006-08-15 15:44:09 UTC (rev 10264)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/QueryTest.java	2006-08-15 17:03:35 UTC (rev 10265)
@@ -303,4 +303,11 @@
 				"org.hibernate.test.annotations.query"
 		};
 	}
+
+	@Override
+	protected String[] getXmlFiles() {
+		return new String[] {
+				"org/hibernate/test/annotations/query/orm.xml"
+		};
+	}
 }

Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/orm.xml
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/orm.xml	2006-08-15 15:44:09 UTC (rev 10264)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/orm.xml	2006-08-15 17:03:35 UTC (rev 10265)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                 version="1.0"
+        >
+    <named-query name="plane.getAll">
+        <query>select p from Plane p</query>
+    </named-query>
+    <named-native-query name="night.getAll.bySQL" result-set-mapping="sqlmapping">
+        <query>select id, night_duration, night_date as dte, area_id from Night where night_duration > ?</query>
+    </named-native-query>
+    <named-native-query name="getAreaByNative" result-class="org.hibernate.test.annotations.query.Area">
+        <query>select * from tbl_area</query>
+    </named-native-query>
+    <sql-result-set-mapping name="sqlmapping">
+        <entity-result entity-class="org.hibernate.test.annotations.query.Night">
+            <field-result name="id" column="id"/>
+            <field-result name="duration" column="night_duration"/>
+            <field-result name="date" column="dte"/>
+            <field-result name="area" column="area_id"/>
+        </entity-result>
+    </sql-result-set-mapping>
+</entity-mappings>
\ No newline at end of file

Deleted: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/package-info.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/package-info.java	2006-08-15 15:44:09 UTC (rev 10264)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/query/package-info.java	2006-08-15 17:03:35 UTC (rev 10265)
@@ -1,34 +0,0 @@
-/**
- * Test package for metatata facilities
- * It contains an example of named queries
- */
-
- at javax.persistence.NamedQuery(name = "plane.getAll", query = "select p from Plane p")
- at NamedNativeQueries({
- at javax.persistence.NamedNativeQuery(
-		name = "night.getAll.bySQL",
-		query = "select id, night_duration, night_date as dte, area_id from Night where night_duration > ?",
-		resultSetMapping = "sqlmapping")
-		}
-)
- at NamedNativeQuery(name = "getAreaByNative", query = "select * from tbl_area", resultClass = Area.class)
- at SqlResultSetMapping(
-		name = "sqlmapping",
-		entities = {
-		@EntityResult(
-				entityClass = org.hibernate.test.annotations.query.Night.class,
-				fields = {
-				@FieldResult(name = "id", column = "id"),
-				@FieldResult(name = "duration", column = "night_duration"),
-				@FieldResult(name = "date", column = "dte"),
-				@FieldResult(name = "area", column = "area_id")
-						}
-		)
-				}
-) package org.hibernate.test.annotations.query;
-
-import javax.persistence.EntityResult;
-import javax.persistence.FieldResult;
-import javax.persistence.NamedNativeQueries;
-import javax.persistence.NamedNativeQuery;
-import javax.persistence.SqlResultSetMapping;




More information about the hibernate-commits mailing list