[hibernate-commits] Hibernate SVN: r11344 - in trunk/HibernateExt/entitymanager/src: java/org/hibernate/ejb/util and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Sun Mar 25 14:24:02 EDT 2007


Author: epbernard
Date: 2007-03-25 14:24:01 -0400 (Sun, 25 Mar 2007)
New Revision: 11344

Modified:
   trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/Ejb3Configuration.java
   trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/Version.java
   trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/util/NamingHelper.java
   trunk/HibernateExt/entitymanager/src/test/org/hibernate/ejb/test/connection/DataSourceInjectionTest.java
   trunk/HibernateExt/entitymanager/src/test/org/hibernate/ejb/test/connection/PersistenceUnitInfoImpl.java
Log:
EJB-282 ORM.xml should be searched even when excludeUnlistedClass is set up

Modified: trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/Ejb3Configuration.java
===================================================================
--- trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/Ejb3Configuration.java	2007-03-24 01:02:24 UTC (rev 11343)
+++ trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/Ejb3Configuration.java	2007-03-25 18:24:01 UTC (rev 11344)
@@ -345,11 +345,10 @@
 			boolean[] detectArtifactForMainJar = getDetectedArtifacts( info.getProperties(), null, info.excludeUnlistedClasses() );
 			for ( URL jar : info.getJarFileUrls() ) {
 				if ( detectArtifactForOtherJars[0] ) scanForClasses( jar, packages, entities );
-				if ( detectArtifactForOtherJars[1] ) scanForXmlFiles( jar, hbmFiles, searchForORMFiles );
+				scanForXmlFiles( jar, hbmFiles, XML_SEARCH.getType( detectArtifactForOtherJars[1], searchForORMFiles ) );
 			}
 			if ( detectArtifactForMainJar[0] ) scanForClasses( info.getPersistenceUnitRootUrl(), packages, entities );
-			if ( detectArtifactForMainJar[1] )
-				scanForXmlFiles( info.getPersistenceUnitRootUrl(), hbmFiles, searchForORMFiles );
+			scanForXmlFiles( info.getPersistenceUnitRootUrl(), hbmFiles, XML_SEARCH.getType( detectArtifactForMainJar[1], searchForORMFiles ) );
 
 			Properties properties = info.getProperties() != null ?
 					info.getProperties() :
@@ -599,11 +598,15 @@
 		return filters;
 	}
 
-	private void scanForXmlFiles(URL jar, List<NamedInputStream> hbmxmls, final boolean searchforORMFiles) {
+	private void scanForXmlFiles(URL jar, List<NamedInputStream> hbmxmls, final XML_SEARCH searchType) {
+		if (searchType == XML_SEARCH.NONE) return;
+		if (jar == null) log.error( "Container is providing a null PersistenceUnitRootUrl: discovery impossible");
+		final boolean searchforORMFiles = searchType == XML_SEARCH.BOTH || searchType == XML_SEARCH.ORM_XML;
+		final boolean searchforHBMFiles = searchType == XML_SEARCH.BOTH || searchType == XML_SEARCH.HBM;
 		Iterator it = ArchiveBrowser.getBrowser(
 				jar, new ArchiveBrowser.Filter() {
 			public boolean accept(String filename) {
-				return filename.endsWith( ".hbm.xml" )
+				return (searchforHBMFiles && filename.endsWith( ".hbm.xml" ) )
 						|| (searchforORMFiles && filename.endsWith( META_INF_ORM_XML ) )
 						;
 			}
@@ -617,6 +620,7 @@
 	}
 
 	private void scanForClasses(URL jar, List<String> packages, List<String> entities) {
+		if (jar == null) log.error( "Container is providing a null PersistenceUnitRootUrl: discovery impossible");
 		Iterator it = null;
 		try {
 			it = ArchiveBrowser.getBrowser(
@@ -1409,4 +1413,17 @@
 		cfg.addResource( path, classLoader );
 		return this;
 	}
+
+	private enum XML_SEARCH {
+		HBM,
+		ORM_XML,
+		BOTH,
+		NONE;
+
+		public static XML_SEARCH getType(boolean searchHbm, boolean searchOrm) {
+			return searchHbm ?
+					searchOrm ? XML_SEARCH.BOTH : XML_SEARCH.HBM :
+					searchOrm ? XML_SEARCH.ORM_XML : XML_SEARCH.NONE;
+		}
+	}
 }

Modified: trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/Version.java
===================================================================
--- trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/Version.java	2007-03-24 01:02:24 UTC (rev 11343)
+++ trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/Version.java	2007-03-25 18:24:01 UTC (rev 11344)
@@ -8,7 +8,7 @@
  * @author Emmanuel Bernard
  */
 public class Version {
-	public static final String VERSION = "3.3.0.GA";
+	public static final String VERSION = "3.3.1.GA";
 	private static Log log = LogFactory.getLog( Version.class );
 
 	static {

Modified: trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/util/NamingHelper.java
===================================================================
--- trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/util/NamingHelper.java	2007-03-24 01:02:24 UTC (rev 11343)
+++ trunk/HibernateExt/entitymanager/src/java/org/hibernate/ejb/util/NamingHelper.java	2007-03-25 18:24:01 UTC (rev 11344)
@@ -27,7 +27,7 @@
 	public static void bind(Ejb3Configuration cfg) {
 		String name = cfg.getHibernateConfiguration().getProperty( HibernatePersistence.CONFIGURATION_JNDI_NAME );
 		if ( name == null ) {
-			log.debug( "Not Ejb3Configuration to JNDI, no JNDI name configured" );
+			log.debug( "No JNDI name configured for binding Ejb3Configuration" );
 		}
 		else {
 			log.info( "Ejb3Configuration name: " + name );

Modified: trunk/HibernateExt/entitymanager/src/test/org/hibernate/ejb/test/connection/DataSourceInjectionTest.java
===================================================================
--- trunk/HibernateExt/entitymanager/src/test/org/hibernate/ejb/test/connection/DataSourceInjectionTest.java	2007-03-24 01:02:24 UTC (rev 11343)
+++ trunk/HibernateExt/entitymanager/src/test/org/hibernate/ejb/test/connection/DataSourceInjectionTest.java	2007-03-25 18:24:01 UTC (rev 11344)
@@ -1,6 +1,7 @@
 //$Id$
 package org.hibernate.ejb.test.connection;
 
+import java.io.File;
 import javax.persistence.EntityManagerFactory;
 
 import junit.framework.TestCase;
@@ -10,8 +11,11 @@
  * @author Emmanuel Bernard
  */
 public class DataSourceInjectionTest extends TestCase {
-	public void testDatasourceInjection() {
-		PersistenceUnitInfoImpl info = new PersistenceUnitInfoImpl( new String[]{} );
+	public void testDatasourceInjection() throws Exception {
+		File current = new File(".");
+		File sub = new File(current, "puroot");
+		sub.mkdir();
+		PersistenceUnitInfoImpl info = new PersistenceUnitInfoImpl( sub.toURI().toURL(), new String[]{} );
 		try {
 			EntityManagerFactory emf = ( new HibernatePersistence() ).createContainerEntityManagerFactory( info, null );
 			fail( "FakeDatasource should have been used" );
@@ -19,5 +23,8 @@
 		catch (FakeDataSourceException fde) {
 			//success
 		}
+		finally {
+			sub.delete();
+		}
 	}
 }

Modified: trunk/HibernateExt/entitymanager/src/test/org/hibernate/ejb/test/connection/PersistenceUnitInfoImpl.java
===================================================================
--- trunk/HibernateExt/entitymanager/src/test/org/hibernate/ejb/test/connection/PersistenceUnitInfoImpl.java	2007-03-24 01:02:24 UTC (rev 11343)
+++ trunk/HibernateExt/entitymanager/src/test/org/hibernate/ejb/test/connection/PersistenceUnitInfoImpl.java	2007-03-25 18:24:01 UTC (rev 11344)
@@ -23,12 +23,14 @@
 public class PersistenceUnitInfoImpl implements PersistenceUnitInfo {
 	private Properties properties = new Properties();
 	private List<String> mappingFiles;
+	private URL puRoot;
 
-	public PersistenceUnitInfoImpl(String[] mappingFiles) {
+	public PersistenceUnitInfoImpl(URL puRoot, String[] mappingFiles) {
 		this.mappingFiles = new ArrayList<String>( mappingFiles.length );
 		for ( String mappingFile : mappingFiles ) {
 			this.mappingFiles.add( mappingFile );
 		}
+		this.puRoot = puRoot;
 	}
 
 	public String getPersistenceUnitName() {
@@ -78,7 +80,7 @@
 	}
 
 	public URL getPersistenceUnitRootUrl() {
-		return null;
+		return puRoot;
 	}
 
 	public boolean excludeUnlistedClasses() {




More information about the hibernate-commits mailing list