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 2007/01/19 12:26:54 UTC

svn commit: r497780 - in /incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: ./ alt/config/ assembler/classic/

Author: dblevins
Date: Fri Jan 19 03:26:51 2007
New Revision: 497780

URL: http://svn.apache.org/viewvc?view=rev&rev=497780
Log:
OPENEJB-448: Move duplicate app checking into the assembler

Added:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DuplicateDeploymentIdException.java
Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJBException.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/DeploymentLoader.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java

Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DuplicateDeploymentIdException.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DuplicateDeploymentIdException.java?view=auto&rev=497780
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DuplicateDeploymentIdException.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/DuplicateDeploymentIdException.java Fri Jan 19 03:26:51 2007
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DuplicateDeploymentIdException extends OpenEJBException {
+    public DuplicateDeploymentIdException() {
+    }
+
+    public DuplicateDeploymentIdException(String message) {
+        super(message);
+    }
+
+    public DuplicateDeploymentIdException(String message, Throwable rootCause) {
+        super(message, rootCause);
+    }
+
+    public DuplicateDeploymentIdException(Throwable rootCause) {
+        super(rootCause);
+    }
+}

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJBException.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJBException.java?view=diff&rev=497780&r1=497779&r2=497780
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJBException.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEJBException.java Fri Jan 19 03:26:51 2007
@@ -46,4 +46,5 @@
     public Throwable getRootCause() {
         return super.getCause();
     }
+
 }

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java?view=diff&rev=497780&r1=497779&r2=497780
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java Fri Jan 19 03:26:51 2007
@@ -233,14 +233,14 @@
     }
 
     public EjbJarInfo configureApplication(EjbModule ejbModule) throws OpenEJBException {
-        AppModule appModule = new AppModule(ejbModule.getClassLoader(), null);
+        AppModule appModule = new AppModule(ejbModule.getClassLoader(), ejbModule.getJarLocation());
         appModule.getEjbModules().add(ejbModule);
         AppInfo appInfo = configureApplication(appModule);
         return appInfo.ejbJars.get(0);
     }
 
     public ClientInfo configureApplication(ClientModule clientModule) throws OpenEJBException {
-        AppModule appModule = new AppModule(clientModule.getClassLoader(), null);
+        AppModule appModule = new AppModule(clientModule.getClassLoader(), clientModule.getJarLocation());
         appModule.getClientModules().add(clientModule);
         AppInfo appInfo = configureApplication(appModule);
         return appInfo.clients.get(0);

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/DeploymentLoader.java?view=diff&rev=497780&r1=497779&r2=497780
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/DeploymentLoader.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/DeploymentLoader.java Fri Jan 19 03:26:51 2007
@@ -247,7 +247,7 @@
 
 //            EjbModule ejbModule = deployer.deploy(undeployedModule);
 
-            AppModule appModule = new AppModule(classLoader, null);
+            AppModule appModule = new AppModule(classLoader, ejbModule.getJarLocation());
             appModule.getEjbModules().add(ejbModule);
 
             return appModule;

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java?view=diff&rev=497780&r1=497779&r2=497780
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/EjbJarInfoBuilder.java Fri Jan 19 03:26:51 2007
@@ -92,7 +92,8 @@
 
 
     public EjbJarInfo buildInfo(EjbModule jar) throws OpenEJBException {
-
+        deploymentIds.clear();
+        securityRoles.clear();
         int beansDeployed = jar.getOpenejbJar().getEjbDeploymentCount();
         int beansInEjbJar = jar.getEjbJar().getEnterpriseBeans().length;
 

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?view=diff&rev=497780&r1=497779&r2=497780
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Fri Jan 19 03:26:51 2007
@@ -22,6 +22,7 @@
 import org.apache.openejb.Injection;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.DuplicateDeploymentIdException;
 import org.apache.openejb.core.ConnectorReference;
 import org.apache.openejb.core.CoreContainerSystem;
 import org.apache.openejb.core.CoreDeploymentInfo;
@@ -52,6 +53,7 @@
 import javax.resource.spi.ManagedConnectionFactory;
 import javax.transaction.TransactionManager;
 import javax.transaction.TransactionSynchronizationRegistry;
+import javax.ejb.DuplicateKeyException;
 import java.io.File;
 import java.io.IOException;
 import java.lang.instrument.ClassFileTransformer;
@@ -260,7 +262,13 @@
 
         for (AppInfo appInfo : containerSystemInfo.applications) {
 
-            createApplication(appInfo, createAppClassLoader(appInfo));
+            try {
+                createApplication(appInfo, createAppClassLoader(appInfo));
+            } catch (DuplicateDeploymentIdException e) {
+                // already logged.
+            } catch (Throwable e) {
+                logger.error("Application could not be deployed: "+appInfo.jarPath, e);
+            }
         }
     }
 
@@ -293,6 +301,30 @@
     }
 
     public void createApplication(AppInfo appInfo, ClassLoader classLoader) throws OpenEJBException, IOException, NamingException {
+
+        List<String> used = new ArrayList();
+        for (EjbJarInfo ejbJarInfo : appInfo.ejbJars) {
+            for (EnterpriseBeanInfo beanInfo : ejbJarInfo.enterpriseBeans) {
+                if (containerSystem.getDeploymentInfo(beanInfo.ejbDeploymentId) != null){
+                    used.add(beanInfo.ejbDeploymentId);
+                }
+            }
+        }
+
+        if (used.size() > 0){
+            String message = "Application cannot be deployed as it contains deployment-ids which are already deployed: app: " + appInfo.jarPath;
+            logger.error(message);
+            OpenEJBException openEJBException = new DuplicateDeploymentIdException(message);
+            Exception e = openEJBException;
+            for (String id : used) {
+                logger.debug("DeploymentId already used: "+id);
+                DuplicateDeploymentIdException e2 = new DuplicateDeploymentIdException(id);
+                e.initCause(e2);
+                e = e2;
+            }
+            throw openEJBException;
+        }
+
         // Generate the cmp2 concrete subclasses
         Cmp2Builder cmp2Builder = new Cmp2Builder(appInfo, classLoader);
         File generatedJar = cmp2Builder.getJarFile();