[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