You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2009/01/13 04:13:28 UTC

svn commit: r734013 - in /openejb/trunk/openejb3/container/openejb-core/src: main/java/org/apache/openejb/config/ test/java/org/apache/openejb/config/

Author: dblevins
Date: Mon Jan 12 19:13:27 2009
New Revision: 734013

URL: http://svn.apache.org/viewvc?rev=734013&view=rev
Log:
Guarantee auto-generated CMP abstract-schema-name is unique in ear -- required for the CMP/JPA code to work.

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java?rev=734013&r1=734012&r2=734013&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java Mon Jan 12 19:13:27 2009
@@ -18,6 +18,8 @@
 
 import java.util.Map;
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Messages;
@@ -44,17 +46,37 @@
     }
 
     public synchronized AppModule deploy(AppModule appModule) throws OpenEJBException {
+
+        Set<String> abstractSchemaNames = new HashSet<String>();
+        for (EjbModule ejbModule : appModule.getEjbModules()) {
+            for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
+                if (isCmpEntity(bean)) {
+                    EntityBean entity = (EntityBean) bean;
+                    String name = entity.getAbstractSchemaName();
+                    if (name != null) {
+                        abstractSchemaNames.add(name);
+                    }
+                }
+            }
+        }
+
+
         Map<String, String> contextData = new HashMap<String, String>();
         contextData.put("appId", appModule.getModuleId());
+
         for (EjbModule ejbModule : appModule.getEjbModules()) {
             contextData.put("ejbJarId", ejbModule.getModuleId());
-            deploy(ejbModule, contextData);
+            deploy(ejbModule, contextData, abstractSchemaNames);
         }
         contextData.clear();
         return appModule;
     }
 
-    public EjbModule deploy(EjbModule ejbModule, Map<String, String> contextData) throws OpenEJBException {
+    public EjbModule deploy(EjbModule ejbModule) throws OpenEJBException {
+        return deploy(ejbModule, new HashMap<String,String>(), new HashSet<String>());
+    }
+
+    private EjbModule deploy(EjbModule ejbModule, Map<String, String> contextData, Set<String> abstractSchemaNames) throws OpenEJBException {
         contextData.put("moduleId", ejbModule.getModuleId());
 
         OpenejbJar openejbJar;
@@ -95,7 +117,17 @@
                 EntityBean entity = (EntityBean) bean;
                 if (entity.getAbstractSchemaName() == null) {
                     String abstractSchemaName = bean.getEjbName().trim().replaceAll("[ \\t\\n\\r-]+", "_");
-                    // The AbstractSchemaName must be unique, we should check that it is 
+
+                    // The AbstractSchemaName must be unique, we should check that it is
+                    if (abstractSchemaNames.contains(abstractSchemaName)) {
+                        int i = 2;
+                        while (abstractSchemaNames.contains(abstractSchemaName + i)) {
+                             i++;
+                        }
+                        abstractSchemaName = abstractSchemaName + i;
+                    }
+
+                    abstractSchemaNames.add(abstractSchemaName);
                     entity.setAbstractSchemaName(abstractSchemaName);
                 }
             }

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java?rev=734013&r1=734012&r2=734013&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java Mon Jan 12 19:13:27 2009
@@ -89,7 +89,7 @@
         // create and configure the module
         EjbModule ejbModule = new EjbModule(getClass().getClassLoader(), "TestModule", ejbJarFileName, ejbJar, new OpenejbJar());
         InitEjbDeployments initEjbDeployments = new InitEjbDeployments();
-        initEjbDeployments.deploy(ejbModule, new HashMap<String,String>());
+        initEjbDeployments.deploy(ejbModule);
         AppModule appModule = new AppModule(getClass().getClassLoader(), "TestModule");
         appModule.getEjbModules().add(ejbModule);
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java?rev=734013&r1=734012&r2=734013&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java Mon Jan 12 19:13:27 2009
@@ -94,7 +94,7 @@
         // create and configure the module
         EjbModule ejbModule = new EjbModule(getClass().getClassLoader(), "TestModule", ejbJarFileName, ejbJar, new OpenejbJar());
         InitEjbDeployments initEjbDeployments = new InitEjbDeployments();
-        initEjbDeployments.deploy(ejbModule, new HashMap<String,String>());
+        initEjbDeployments.deploy(ejbModule);
         AppModule appModule = new AppModule(getClass().getClassLoader(), "TestModule");
         appModule.getEjbModules().add(ejbModule);
 



Re: svn commit: r734013 - in /openejb/trunk/openejb3/container/openejb-core/src: main/java/org/apache/openejb/config/ test/java/org/apache/openejb/config/

Posted by Mohammad Nour El-Din <no...@gmail.com>.
Shouldn't we issue a warning or something for the user while deploying
the module ?

On Tue, Jan 13, 2009 at 5:13 AM,  <db...@apache.org> wrote:
> Author: dblevins
> Date: Mon Jan 12 19:13:27 2009
> New Revision: 734013
>
> URL: http://svn.apache.org/viewvc?rev=734013&view=rev
> Log:
> Guarantee auto-generated CMP abstract-schema-name is unique in ear -- required for the CMP/JPA code to work.
>
> Modified:
>    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java
>    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java
>    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java
>
> Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java
> URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java?rev=734013&r1=734012&r2=734013&view=diff
> ==============================================================================
> --- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java (original)
> +++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/InitEjbDeployments.java Mon Jan 12 19:13:27 2009
> @@ -18,6 +18,8 @@
>
>  import java.util.Map;
>  import java.util.HashMap;
> +import java.util.HashSet;
> +import java.util.Set;
>
>  import org.apache.openejb.util.LogCategory;
>  import org.apache.openejb.util.Messages;
> @@ -44,17 +46,37 @@
>     }
>
>     public synchronized AppModule deploy(AppModule appModule) throws OpenEJBException {
> +
> +        Set<String> abstractSchemaNames = new HashSet<String>();
> +        for (EjbModule ejbModule : appModule.getEjbModules()) {
> +            for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
> +                if (isCmpEntity(bean)) {
> +                    EntityBean entity = (EntityBean) bean;
> +                    String name = entity.getAbstractSchemaName();
> +                    if (name != null) {
> +                        abstractSchemaNames.add(name);
> +                    }
> +                }
> +            }
> +        }
> +
> +
>         Map<String, String> contextData = new HashMap<String, String>();
>         contextData.put("appId", appModule.getModuleId());
> +
>         for (EjbModule ejbModule : appModule.getEjbModules()) {
>             contextData.put("ejbJarId", ejbModule.getModuleId());
> -            deploy(ejbModule, contextData);
> +            deploy(ejbModule, contextData, abstractSchemaNames);
>         }
>         contextData.clear();
>         return appModule;
>     }
>
> -    public EjbModule deploy(EjbModule ejbModule, Map<String, String> contextData) throws OpenEJBException {
> +    public EjbModule deploy(EjbModule ejbModule) throws OpenEJBException {
> +        return deploy(ejbModule, new HashMap<String,String>(), new HashSet<String>());
> +    }
> +
> +    private EjbModule deploy(EjbModule ejbModule, Map<String, String> contextData, Set<String> abstractSchemaNames) throws OpenEJBException {
>         contextData.put("moduleId", ejbModule.getModuleId());
>
>         OpenejbJar openejbJar;
> @@ -95,7 +117,17 @@
>                 EntityBean entity = (EntityBean) bean;
>                 if (entity.getAbstractSchemaName() == null) {
>                     String abstractSchemaName = bean.getEjbName().trim().replaceAll("[ \\t\\n\\r-]+", "_");
> -                    // The AbstractSchemaName must be unique, we should check that it is
> +
> +                    // The AbstractSchemaName must be unique, we should check that it is
> +                    if (abstractSchemaNames.contains(abstractSchemaName)) {
> +                        int i = 2;
> +                        while (abstractSchemaNames.contains(abstractSchemaName + i)) {
> +                             i++;
> +                        }
> +                        abstractSchemaName = abstractSchemaName + i;
> +                    }
> +
> +                    abstractSchemaNames.add(abstractSchemaName);
>                     entity.setAbstractSchemaName(abstractSchemaName);
>                 }
>             }
>
> Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java
> URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java?rev=734013&r1=734012&r2=734013&view=diff
> ==============================================================================
> --- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java (original)
> +++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/OpenEjb2ConversionTest.java Mon Jan 12 19:13:27 2009
> @@ -89,7 +89,7 @@
>         // create and configure the module
>         EjbModule ejbModule = new EjbModule(getClass().getClassLoader(), "TestModule", ejbJarFileName, ejbJar, new OpenejbJar());
>         InitEjbDeployments initEjbDeployments = new InitEjbDeployments();
> -        initEjbDeployments.deploy(ejbModule, new HashMap<String,String>());
> +        initEjbDeployments.deploy(ejbModule);
>         AppModule appModule = new AppModule(getClass().getClassLoader(), "TestModule");
>         appModule.getEjbModules().add(ejbModule);
>
>
> Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java
> URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java?rev=734013&r1=734012&r2=734013&view=diff
> ==============================================================================
> --- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java (original)
> +++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/SunCmpConversionTest.java Mon Jan 12 19:13:27 2009
> @@ -94,7 +94,7 @@
>         // create and configure the module
>         EjbModule ejbModule = new EjbModule(getClass().getClassLoader(), "TestModule", ejbJarFileName, ejbJar, new OpenejbJar());
>         InitEjbDeployments initEjbDeployments = new InitEjbDeployments();
> -        initEjbDeployments.deploy(ejbModule, new HashMap<String,String>());
> +        initEjbDeployments.deploy(ejbModule);
>         AppModule appModule = new AppModule(getClass().getClassLoader(), "TestModule");
>         appModule.getEjbModules().add(ejbModule);
>
>
>
>



-- 
----
Thanks
- Mohammad Nour
- LinkedIn: http://www.linkedin.com/in/mnour
----
"Life is like riding a bicycle. To keep your balance you must keep moving"
- Albert Einstein