Shouldn't we issue a warning or something for the user while deploying
the module ?

On Tue, Jan 13, 2009 at 5:13 AM,  <[email protected]> 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

Reply via email to