|
From: <hib...@li...> - 2006-08-11 04:58:47
|
Author: epbernard
Date: 2006-08-11 00:58:44 -0400 (Fri, 11 Aug 2006)
New Revision: 10243
Modified:
trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java
Log:
EJB-212 excludeUnlistedClasses is taken into account if autodetection property is not set up
Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-08-11 04:21:33 UTC (rev 10242)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-08-11 04:58:44 UTC (rev 10243)
@@ -176,7 +176,6 @@
);
for ( PersistenceMetadata metadata : metadataFiles ) {
log.trace( metadata.toString() );
- JarVisitor.Filter[] filters = getFilters( metadata.getProps(), integration, metadata.getMappingFiles() );
if ( metadata.getProvider() == null || IMPLEMENTATION_NAME.equalsIgnoreCase(
metadata.getProvider()
@@ -184,7 +183,8 @@
log.trace( "Archive to be processed by hibernate Entity Manager implementation found" );
//correct provider
URL jarURL = JarVisitor.getJarURLFromURLEntry( url, "/META-INF/persistence.xml" );
- JarVisitor visitor = JarVisitor.getVisitor( jarURL, filters );
+ JarVisitor.Filter[] persistenceXmlFilter = getFilters( metadata, integration, metadata.getExcludeUnlistedClasses() );
+ JarVisitor visitor = JarVisitor.getVisitor( jarURL, persistenceXmlFilter );
if ( metadata.getName() == null ) {
metadata.setName( visitor.getUnqualifiedJarName() );
}
@@ -196,8 +196,9 @@
}
else if ( emName == null || metadata.getName().equals( emName ) ) {
addMetadataFromVisitor( visitor, metadata );
+ JarVisitor.Filter[] otherXmlFilter = getFilters( metadata, integration, false );
for ( String jarFile : metadata.getJarFiles() ) {
- visitor = JarVisitor.getVisitor( jarFile, filters );
+ visitor = JarVisitor.getVisitor( jarFile, otherXmlFilter );
addMetadataFromVisitor( visitor, metadata );
}
return createFactory( metadata, integration );
@@ -295,15 +296,14 @@
defineTransactionType( transactionType, workingVars );
// }
//workingVars.put( HibernatePersistence.TRANSACTION_TYPE, transactionType );
- boolean[] detectArtifact = getDetectedArtifacts( info.getProperties(), null );
+ boolean[] detectArtifactForOtherJars = getDetectedArtifacts( info.getProperties(), null, false );
+ boolean[] detectArtifactForMainJar = getDetectedArtifacts( info.getProperties(), null, info.excludeUnlistedClasses() );
for ( URL jar : info.getJarFileUrls() ) {
- if ( detectArtifact[0] ) scanForClasses( jar, packages, entities );
- if ( detectArtifact[1] ) scanForHbmXmlFiles( jar, hbmFiles );
+ if ( detectArtifactForOtherJars[0] ) scanForClasses( jar, packages, entities );
+ if ( detectArtifactForOtherJars[1] ) scanForHbmXmlFiles( jar, hbmFiles );
}
- if ( ! info.excludeUnlistedClasses() ) {
- if ( detectArtifact[0] ) scanForClasses( info.getPersistenceUnitRootUrl(), packages, entities );
- if ( detectArtifact[1] ) scanForHbmXmlFiles( info.getPersistenceUnitRootUrl(), hbmFiles );
- }
+ if ( detectArtifactForMainJar[0] ) scanForClasses( info.getPersistenceUnitRootUrl(), packages, entities );
+ if ( detectArtifactForMainJar[1] ) scanForHbmXmlFiles( info.getPersistenceUnitRootUrl(), hbmFiles );
Properties properties = info.getProperties() != null ?
info.getProperties() :
@@ -459,7 +459,7 @@
return this;
}
- private boolean[] getDetectedArtifacts(Properties properties, Map overridenProperties) {
+ private boolean[] getDetectedArtifacts(Properties properties, Map overridenProperties, boolean excludeIfNotOverriden) {
boolean[] result = new boolean[2];
result[0] = false; //detect classes
result[1] = false; //detect hbm
@@ -467,9 +467,16 @@
(String) overridenProperties.get( HibernatePersistence.AUTODETECTION ) :
null;
detect = detect == null ?
- properties.getProperty( HibernatePersistence.AUTODETECTION, "class,hbm" ) :
+ properties.getProperty( HibernatePersistence.AUTODETECTION) :
detect;
- StringTokenizer st = new StringTokenizer( detect, ",", false );
+ if (detect == null && excludeIfNotOverriden) {
+ //not overriden so we comply with the spec
+ return result;
+ }
+ else if (detect == null){
+ detect = "class,hbm";
+ }
+ StringTokenizer st = new StringTokenizer( detect, ", ", false );
while ( st.hasMoreElements() ) {
String element = (String) st.nextElement();
if ( "class".equalsIgnoreCase( element ) ) result[0] = true;
@@ -479,9 +486,12 @@
return result;
}
- private JarVisitor.Filter[] getFilters(Properties properties, Map overridenProperties, final List<String> mappingFiles) {
- boolean[] result = getDetectedArtifacts( properties, overridenProperties );
- int size = ( result[0] ? 2 : 0 ) + 1; //( result[1] ? 1 : 0 );
+ private JarVisitor.Filter[] getFilters(PersistenceMetadata metadata, Map overridenProperties, boolean excludeIfNotOverriden) {
+ Properties properties = metadata.getProps();
+ final List<String> mappingFiles = metadata.getMappingFiles();
+ boolean[] result = getDetectedArtifacts( properties, overridenProperties, excludeIfNotOverriden );
+
+ int size = ( result[0] ? 2 : 0 ) + 1; //class involves classes and packages, xml files are always involved because of orm.xml
JarVisitor.Filter[] filters = new JarVisitor.Filter[size];
if ( result[0] ) {
filters[0] = new JarVisitor.PackageFilter( false, null ) {
|