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"/> |