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
