[hibernate-commits] Hibernate SVN: r19664 - in core/branches/Branch_3_5/entitymanager/src: test/java/org/hibernate/ejb/test/packaging and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Jun 2 09:15:30 EDT 2010


Author: epbernard
Date: 2010-06-02 09:15:29 -0400 (Wed, 02 Jun 2010)
New Revision: 19664

Modified:
   core/branches/Branch_3_5/entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java
   core/branches/Branch_3_5/entitymanager/src/test/java/org/hibernate/ejb/test/packaging/ScannerTest.java
Log:
HHH-5286 Scanner instances can now be passed in the integration map

The Scanner builder was only considering the scanner key from the properties
not the integration map and hence never handled instances. Now fixed.

Modified: core/branches/Branch_3_5/entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java
===================================================================
--- core/branches/Branch_3_5/entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java	2010-06-02 11:47:01 UTC (rev 19663)
+++ core/branches/Branch_3_5/entitymanager/src/main/java/org/hibernate/ejb/Ejb3Configuration.java	2010-06-02 13:15:29 UTC (rev 19664)
@@ -328,7 +328,7 @@
 						Scanner scanner = null;
 						URL jarURL = null;
 						if ( metadata.getName() == null ) {
-							scanner = buildScanner( metadata.getProps() );
+							scanner = buildScanner( metadata.getProps(), integration );
 							jarURL = JarVisitorFactory.getJarURLFromURLEntry( url, "/META-INF/persistence.xml" );
 							metadata.setName( scanner.getUnqualifiedJarName(jarURL) );
 						}
@@ -337,7 +337,7 @@
 						}
 						else if ( persistenceUnitName == null || metadata.getName().equals( persistenceUnitName ) ) {
 							if (scanner == null) {
-								scanner = buildScanner( metadata.getProps() );
+								scanner = buildScanner( metadata.getProps(), integration );
 								jarURL = JarVisitorFactory.getJarURLFromURLEntry( url, "/META-INF/persistence.xml" );
 							}
 							//scan main JAR
@@ -377,8 +377,12 @@
 		}
 	}
 
-	private Scanner buildScanner(Properties properties) {
-		final Object scanner = properties.getProperty( AvailableSettings.SCANNER );
+	private Scanner buildScanner(Properties properties, Map<?,?> integration) {
+		//read the String or Instance from the integration map first and use the properties as a backup.
+		Object scanner = integration.get( AvailableSettings.SCANNER );
+		if (scanner == null) {
+			scanner = properties.getProperty( AvailableSettings.SCANNER );
+		}
 		if (scanner != null) {
 			Class<?> scannerClass;
 			if ( scanner instanceof String ) {
@@ -569,7 +573,7 @@
 			ScanningContext context = new ScanningContext();
 			final Properties copyOfProperties = (Properties) info.getProperties().clone();
 			ConfigurationHelper.overrideProperties( copyOfProperties, integration );
-			context.scanner( buildScanner( copyOfProperties ) )
+			context.scanner( buildScanner( copyOfProperties, integration ) )
 					.searchOrm( searchForORMFiles )
 					.explicitMappingFiles( null ); //URLs provided by the container already
 

Modified: core/branches/Branch_3_5/entitymanager/src/test/java/org/hibernate/ejb/test/packaging/ScannerTest.java
===================================================================
--- core/branches/Branch_3_5/entitymanager/src/test/java/org/hibernate/ejb/test/packaging/ScannerTest.java	2010-06-02 11:47:01 UTC (rev 19663)
+++ core/branches/Branch_3_5/entitymanager/src/test/java/org/hibernate/ejb/test/packaging/ScannerTest.java	2010-06-02 13:15:29 UTC (rev 19664)
@@ -35,6 +35,7 @@
 import javax.persistence.MappedSuperclass;
 import javax.persistence.Persistence;
 
+import org.hibernate.ejb.AvailableSettings;
 import org.hibernate.ejb.packaging.NamedInputStream;
 import org.hibernate.ejb.packaging.NativeScanner;
 import org.hibernate.ejb.packaging.Scanner;
@@ -82,13 +83,20 @@
 		
 		EntityManagerFactory emf;
 		CustomScanner.resetUsed();
-		emf = Persistence.createEntityManagerFactory( "defaultpar", new HashMap() );
+		final HashMap integration = new HashMap();
+		emf = Persistence.createEntityManagerFactory( "defaultpar", integration );
 		assertTrue( ! CustomScanner.isUsed() );
 		emf.close();
 
 		CustomScanner.resetUsed();
-		emf = Persistence.createEntityManagerFactory( "manager1", new HashMap() );
+		emf = Persistence.createEntityManagerFactory( "manager1", integration );
 		assertTrue( CustomScanner.isUsed() );
 		emf.close();
+
+		CustomScanner.resetUsed();
+		integration.put( AvailableSettings.SCANNER, new CustomScanner() );
+		emf = Persistence.createEntityManagerFactory( "defaultpar", integration );
+		assertTrue( CustomScanner.isUsed() );
+		emf.close();
 	}
 }



More information about the hibernate-commits mailing list