|
From: <hib...@li...> - 2006-04-18 03:14:47
|
Author: epbernard
Date: 2006-04-17 23:14:36 -0400 (Mon, 17 Apr 2006)
New Revision: 9757
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/EJB3OverridenAnnotationReaderTest.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/orm.xml
Log:
Support xml overriding for exclude * listeners
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java 2006-04-17 23:15:32 UTC (rev 9756)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java 2006-04-18 03:14:36 UTC (rev 9757)
@@ -37,6 +37,8 @@
import javax.persistence.EntityResult;
import javax.persistence.FieldResult;
import javax.persistence.ColumnResult;
+import javax.persistence.ExcludeDefaultListeners;
+import javax.persistence.ExcludeSuperclassListeners;
import org.dom4j.Element;
import org.dom4j.Attribute;
@@ -90,6 +92,8 @@
annotationToXml.put( NamedNativeQueries.class, "named-native-query" );
annotationToXml.put( SqlResultSetMapping.class, "sql-result-set-mapping" );
annotationToXml.put( SqlResultSetMappings.class, "sql-result-set-mapping" );
+ annotationToXml.put( ExcludeDefaultListeners.class, "exclude-default-listeners" );
+ annotationToXml.put( ExcludeSuperclassListeners.class, "exclude-superclass-listeners" );
}
private XMLContext xmlContext;
@@ -198,6 +202,10 @@
if ( current != null ) annotationList.add( current );
current = getSqlResultSetMappings( tree, defaults );
if ( current != null ) annotationList.add( current );
+ current = getExcludeDefaultListeners( tree, defaults );
+ if ( current != null ) annotationList.add( current );
+ current = getExcludeSuperclassListeners( tree, defaults );
+ if ( current != null ) annotationList.add( current );
this.annotations = annotationList.toArray( new Annotation[ annotationList.size() ] );
}
else if ( propertyName != null ) {
@@ -210,6 +218,28 @@
}
}
+ private ExcludeSuperclassListeners getExcludeSuperclassListeners(Element tree, XMLContext.Default defaults) {
+ return (ExcludeSuperclassListeners) getMarkerAnnotation(ExcludeSuperclassListeners.class, tree, defaults);
+ }
+
+ private ExcludeDefaultListeners getExcludeDefaultListeners(Element tree, XMLContext.Default defaults) {
+ return (ExcludeDefaultListeners) getMarkerAnnotation(ExcludeDefaultListeners.class, tree, defaults);
+ }
+
+ private Annotation getMarkerAnnotation(Class<? extends Annotation> clazz, Element element, XMLContext.Default defaults) {
+ Element subelement = element == null ? null : element.element( annotationToXml.get( clazz ) );
+ if (subelement != null) {
+ return AnnotationFactory.create( new AnnotationDescriptor( clazz ) );
+ }
+ else if ( defaults.canUseJavaAnnotations() ) {
+ //TODO wonder whether it should be excluded so that user can undone it
+ return super.getAnnotation( clazz );
+ }
+ else {
+ return null;
+ }
+ }
+
private SqlResultSetMappings getSqlResultSetMappings(Element tree, XMLContext.Default defaults) {
List<SqlResultSetMapping> results = (List<SqlResultSetMapping>) buildSqlResultsetMappings( tree );
if ( defaults.canUseJavaAnnotations() ) {
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/EJB3OverridenAnnotationReaderTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/EJB3OverridenAnnotationReaderTest.java 2006-04-17 23:15:32 UTC (rev 9756)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/EJB3OverridenAnnotationReaderTest.java 2006-04-18 03:14:36 UTC (rev 9757)
@@ -23,6 +23,8 @@
import javax.persistence.SqlResultSetMappings;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
+import javax.persistence.ExcludeSuperclassListeners;
+import javax.persistence.ExcludeDefaultListeners;
import junit.framework.TestCase;
import org.dom4j.DocumentException;
@@ -88,6 +90,8 @@
assertNotNull( reader.getAnnotation( SqlResultSetMappings.class ) );
assertEquals( "competitor1Point", reader.getAnnotation( SqlResultSetMappings.class ).value()[0].columns()[0].name() );
assertEquals( "competitor1Point", reader.getAnnotation( SqlResultSetMappings.class ).value()[0].entities()[0].fields()[0].column() );
+ assertNotNull( reader.getAnnotation( ExcludeSuperclassListeners.class ) );
+ assertNotNull( reader.getAnnotation( ExcludeDefaultListeners.class ) );
reader = new EJB3OverridenAnnotationReader(Competition.class, context);
assertNotNull( reader.getAnnotation( MappedSuperclass.class) );
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/orm.xml
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/orm.xml 2006-04-17 23:15:32 UTC (rev 9756)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/reflection/java/xml/orm.xml 2006-04-18 03:14:36 UTC (rev 9757)
@@ -53,6 +53,8 @@
</entity-result>
<column-result name="competitor1Point"/>
</sql-result-set-mapping>
+ <exclude-default-listeners/>
+ <exclude-superclass-listeners/>
</entity>
<entity class="TennisMatch">
<primary-key-join-column name="id"/>
|