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