You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/11/20 18:47:51 UTC

svn commit: r1411765 - in /openejb/trunk/openejb/container/openejb-core/src: main/java/org/apache/openejb/config/AnnotationDeployer.java test/java/org/apache/openejb/config/EntitiesScanningPackageLimitedTest.java

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());
     }
 }