Author: rmannibucau
Date: Tue Nov 20 17:47:50 2012
New Revision: 1411765

URL: http://svn.apache.org/viewvc?rev=1411765&view=rev
Log:
TOMEE-596 limit package scanning for jpa entities

Added:
    
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningPackageLimitedTest.java
      - copied, changed from r1411568, 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningTest.java
Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1411765&r1=1411764&r2=1411765&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 Tue Nov 20 17:47:50 2012
@@ -244,6 +244,7 @@ public class AnnotationDeployer implemen
     public static final Logger startupLogger = 
Logger.getInstance(LogCategory.OPENEJB_STARTUP_CONFIG, 
"org.apache.openejb.util.resources");
 
     public static final String OPENEJB_JPA_AUTO_SCAN = "openejb.jpa.auto-scan";
+    public static final String OPENEJB_JPA_AUTO_SCAN_PACKAGE = 
"openejb.jpa.auto-scan.package";
 
     private static final ThreadLocal<DeploymentModule> currentModule = new 
ThreadLocal<DeploymentModule>();
     private static final Set<String> lookupMissing = new HashSet<String>(2);
@@ -1497,12 +1498,14 @@ public class AnnotationDeployer implemen
                     for (org.apache.openejb.jee.jpa.unit.PersistenceUnit pu : 
pm.getPersistence().getPersistenceUnit()) {
                         if ((pu.isExcludeUnlistedClasses() == null || 
!pu.isExcludeUnlistedClasses())
                                 && 
"true".equalsIgnoreCase(pu.getProperties().getProperty(OPENEJB_JPA_AUTO_SCAN))) 
{
+                            final String packageName = 
pu.getProperties().getProperty(OPENEJB_JPA_AUTO_SCAN_PACKAGE);
+
                             // no need of meta currently since JPA providers 
doesn't support it
                             final List<Class<?>> classes = 
finder.findAnnotatedClasses(Entity.class);
                             final List<String> existingClasses = pu.getClazz();
                             for (Class<?> clazz : classes) {
                                 final String name = clazz.getName();
-                                if (!existingClasses.contains(name)) {
+                                if ((packageName == null || 
name.startsWith(packageName)) && !existingClasses.contains(name)) {
                                     pu.getClazz().add(name);
                                 }
                             }

Copied: 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningPackageLimitedTest.java
 (from r1411568, 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningTest.java)
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningPackageLimitedTest.java?p2=openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningPackageLimitedTest.java&p1=openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningTest.java&r1=1411568&r2=1411765&rev=1411765&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningTest.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/config/EntitiesScanningPackageLimitedTest.java
 Tue Nov 20 17:47:50 2012
@@ -35,7 +35,7 @@ import java.util.Properties;
 import static junit.framework.Assert.assertEquals;
 
 @RunWith(ApplicationComposer.class)
-public class EntitiesScanningTest {
+public class EntitiesScanningPackageLimitedTest {
 
     @Module
     public Class<?>[] app() throws Exception {
@@ -45,9 +45,9 @@ public class EntitiesScanningTest {
     @Configuration
     public Properties config() {
         final Properties p = new Properties();
-        p.put("cczczczedc", "new://Resource?type=DataSource");
-        p.put("cczczczedc.JdbcDriver", "org.hsqldb.jdbcDriver");
-        p.put("cczczczedc.JdbcUrl", "jdbc:hsqldb:mem:cczccdzcz");
+        p.put("cczczczedc2", "new://Resource?type=DataSource");
+        p.put("cczczczedc2.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("cczczczedc2.JdbcUrl", "jdbc:hsqldb:mem:cczccdzcz2");
         return p;
     }
 
@@ -57,6 +57,7 @@ public class EntitiesScanningTest {
         unit.setProperty("openjpa.jdbc.SynchronizeMappings", 
"buildSchema(ForeignKeys=true)");
         unit.getProperties().setProperty("openjpa.RuntimeUnenhancedClasses", 
"supported");
         unit.getProperties().setProperty("openejb.jpa.auto-scan", "true");
+        unit.getProperties().setProperty("openejb.jpa.auto-scan.package", 
"com.doesnt.exist");
 
         final Persistence persistence = new Persistence(unit);
         persistence.setVersion("2.0");
@@ -88,8 +89,6 @@ public class EntitiesScanningTest {
     @Test
     public void check() throws Exception {
         final ReloadableEntityManagerFactory remf = 
((ReloadableEntityManagerFactory) emf);
-        assertEquals(1, remf.getManagedClasses().size());
-        assertEquals(SomeSimpleEntity.class.getName(), 
remf.getManagedClasses().iterator().next());
-        assertEquals(true, remf.getExcludeUnlistedClasses());
+        assertEquals(0, remf.getManagedClasses().size());
     }
 }


Reply via email to