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 2011/03/10 08:35:11 UTC

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

Author: dblevins
Date: Thu Mar 10 07:35:10 2011
New Revision: 1080136

URL: http://svn.apache.org/viewvc?rev=1080136&view=rev
Log:
OPENEJB-1442: Clarify and normalize all internal module identifiers

Added:
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java   (with props)
Removed:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbSet.java
Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbResolver.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceModule.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationFailedException.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationResults.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckDependsOn.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/LinkResolver.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationValidationTest.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigurationFactoryTest.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
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Connector.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbJar.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Thu Mar 10 07:35:10 2011
@@ -464,8 +464,8 @@ public class Assembler extends Assembler
 
     public AppContext createApplication(AppInfo appInfo, ClassLoader classLoader, boolean start) throws OpenEJBException, IOException, NamingException {
         // The path is used in the UrlCache, command line deployer, JNDI name templates, tomcat integration and a few other places
-        if (appInfo.path == null) throw new IllegalArgumentException("AppInfo.path cannot be null");
         if (appInfo.appId == null) throw new IllegalArgumentException("AppInfo.appId cannot be null");
+        if (appInfo.path == null) appInfo.path = appInfo.appId;
 
         logger.info("createApplication.start", appInfo.path);
 
@@ -1048,10 +1048,10 @@ public class Assembler extends Assembler
     public ClassLoader createAppClassLoader(AppInfo appInfo) throws OpenEJBException, IOException {
         List<URL> jars = new ArrayList<URL>();
         for (EjbJarInfo info : appInfo.ejbJars) {
-            jars.add(toUrl(info.path));
+            if (info.path != null) jars.add(toUrl(info.path));
         }
         for (ClientInfo info : appInfo.clients) {
-            jars.add(toUrl(info.path));
+            if (info.path != null) jars.add(toUrl(info.path));
         }
         for (ConnectorInfo info : appInfo.connectors) {
             for (String jarPath : info.libs) {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbJarInfo.java Thu Mar 10 07:35:10 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.assembler.classic;
 
+import java.net.URI;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Properties;
@@ -26,7 +27,7 @@ public class EjbJarInfo extends InfoObje
     public final Properties properties = new Properties();
 
     public String moduleId;
-    public String modulePackageName;
+    public URI moduleUri;
     public String path;
     public final List<EnterpriseBeanInfo> enterpriseBeans = new ArrayList<EnterpriseBeanInfo>();
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbResolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbResolver.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbResolver.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EjbResolver.java Thu Mar 10 07:35:10 2011
@@ -16,7 +16,6 @@
  */
 package org.apache.openejb.assembler.classic;
 
-import org.apache.openejb.jee.SessionBean;
 import org.apache.openejb.util.LinkResolver;
 
 import java.net.URI;
@@ -86,17 +85,17 @@ public class EjbResolver {
 
     private void add(EjbJarInfo ejbJarInfo) {
         for (EnterpriseBeanInfo bean : ejbJarInfo.enterpriseBeans) {
-            index(ejbJarInfo.modulePackageName, bean);
+            index(ejbJarInfo.moduleUri, bean);
         }
     }
 
-    private void index(String modulePackageName, EnterpriseBeanInfo bean) {
+    private void index(URI moduleURI, EnterpriseBeanInfo bean) {
         // All deployments: deploymentId -> bean
 
         deployments.put(bean.ejbDeploymentId, bean);
 
         // add to the link resolver
-        resolver.add(modulePackageName, bean.ejbName, bean.ejbDeploymentId);
+        resolver.add(moduleURI, bean.ejbName, bean.ejbDeploymentId);
 
         // Remote: Interfaces(home,object) -> deploymentId
         if (bean.remote != null) {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java Thu Mar 10 07:35:10 2011
@@ -103,9 +103,9 @@ class AppInfoBuilder {
         appInfo.standaloneModule = appModule.isStandaloneModule();
         appInfo.watchedResources.addAll(appModule.getWatchedResources());
 
-        if (appInfo.path == null) throw new IllegalArgumentException("AppInfo.path cannot be null");
         if (appInfo.appId == null) throw new IllegalArgumentException("AppInfo.appId cannot be null");
-        
+        if (appInfo.path == null) appInfo.path = appInfo.appId;
+
         //
         //  J2EE Connectors
         //
@@ -150,7 +150,7 @@ class AppInfoBuilder {
                 ejbJarInfo.portInfos.addAll(configureWebservices(ejbModule.getWebservices()));
                 configureWebserviceSecurity(ejbJarInfo, ejbModule);
 
-                ejbJarInfos.put(ejbJarInfo.path, ejbJarInfo);
+                ejbJarInfos.put(ejbJarInfo.moduleId, ejbJarInfo);
 
                 appInfo.ejbJars.add(ejbJarInfo);
 
@@ -172,7 +172,7 @@ class AppInfoBuilder {
         // Build the JNDI tree for each ejb
         for (EjbModule ejbModule : appModule.getEjbModules()) {
 
-            EjbJarInfo ejbJar = ejbJarInfos.get(ejbModule.getJarLocation());
+            EjbJarInfo ejbJar = ejbJarInfos.get(ejbModule.getModuleId());
 
             Map<String, EnterpriseBean> beanData = ejbModule.getEjbJar().getEnterpriseBeansByEjbName();
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java Thu Mar 10 07:35:10 2011
@@ -18,8 +18,10 @@ package org.apache.openejb.config;
 
 import org.apache.openejb.jee.Application;
 import org.apache.openejb.jee.jpa.EntityMappings;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
 
 import java.io.File;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -42,21 +44,26 @@ public class AppModule implements Deploy
     private final List<ClientModule> clientModules = new ArrayList<ClientModule>();
     private final List<EjbModule> ejbModules = new ArrayList<EjbModule>();
     private final List<PersistenceModule> persistenceModules = new ArrayList<PersistenceModule>();
-    private final String jarLocation;
     private final ClassLoader classLoader;
     private EntityMappings cmpMappings;
     private final Map<String,Object> altDDs = new HashMap<String,Object>();
-    private final String moduleId;
-    private final String modulePackageName;        
     private final Set<String> watchedResources = new TreeSet<String>();
     private final boolean standaloneModule;
 
+    private ID id;
+
     public AppModule(ClassLoader classLoader, String jarLocation) {
         this(classLoader, jarLocation, null, false);
     }
 
     public <T extends DeploymentModule> AppModule(T module) {
-        this(module.getClassLoader(), module.getJarLocation(), new Application(module.getModuleId()), true);
+        this.standaloneModule = true;
+        this.classLoader = module.getClassLoader();
+        this.application = new Application(module.getModuleId());
+
+        this.id = new ID(null, application, null, module.getFile(), module.getModuleUri(), this);
+        this.validation = new ValidationContext(this);
+
         final Class<? extends DeploymentModule> type = module.getClass();
 
         if (type == EjbModule.class) {
@@ -76,38 +83,11 @@ public class AppModule implements Deploy
 
     public AppModule(ClassLoader classLoader, String jarLocation, Application application, boolean standaloneModule) {
         this.classLoader = classLoader;
-        this.jarLocation = jarLocation;
         this.application = application;
         
-        String moduleId=null;
-        
-        if (jarLocation != null) {
-            File file = new File(jarLocation);
-            this.modulePackageName = file.getName();
-        } else {
-            this.modulePackageName = null;
-        }
-        
-        if (application == null || application.getApplicationName() == null) {
-            
-            if (modulePackageName != null && modulePackageName.endsWith(".unpacked")) {
-                moduleId = modulePackageName.substring(0, modulePackageName.length() - ".unpacked".length());
-            } else if (modulePackageName != null && modulePackageName.endsWith(".ear")) {
-                moduleId = modulePackageName.substring(0, modulePackageName.length() - 4);
-            } else {
-                moduleId = modulePackageName;
-            }
-
-        } else {
-            moduleId = application.getApplicationName();
-        }
-        
-        if (this.jarLocation == null) throw new IllegalArgumentException("jarLocation cannot be null");
-        if (moduleId == null) throw new IllegalArgumentException("moduleId cannot be null");
-        
-        this.moduleId = moduleId;
-
-        this.validation = new ValidationContext(AppModule.class, jarLocation);
+        File file = (jarLocation == null) ? null : new File(jarLocation);
+        this.id = new ID(null, application, null, file, null, this);
+        this.validation = new ValidationContext(this);
         this.standaloneModule = standaloneModule;
     }
 
@@ -190,14 +170,21 @@ public class AppModule implements Deploy
         return contexts;
     }
 
+    public String getJarLocation() {
+        return (id.getLocation() != null) ? id.getLocation().getAbsolutePath() : null;
+    }
+
     public String getModuleId() {
-        return moduleId;
+        return id.getName();
+    }
+
+    public File getFile() {
+        return id.getLocation();
+    }
+
+    public URI getModuleUri() {
+        return id.getUri();
     }
-    
-    @Override
-    public String getModulePackageName() {
-        return  modulePackageName; 
-    }    
 
     public Map<String, Object> getAltDDs() {
         return altDDs;
@@ -223,10 +210,6 @@ public class AppModule implements Deploy
         return persistenceModules;
     }
 
-    public String getJarLocation() {
-        return jarLocation;
-    }
-
     public List<URL> getAdditionalLibraries() {
         return additionalLibraries;
     }
@@ -264,7 +247,7 @@ public class AppModule implements Deploy
     @Override
     public String toString() {
         return "AppModule{" +
-                "moduleId='" + moduleId + '\'' +
+                "moduleId='" + id.getName() + '\'' +
                 '}';
     }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppValidator.java Thu Mar 10 07:35:10 2011
@@ -107,7 +107,7 @@ public class AppValidator {
             return;
         }
         System.out.println("------------------------------------------");
-        System.out.println("JAR " + set.getJarPath());
+        System.out.println("JAR " + set.getName());
         System.out.println("                                          ");
 
         printValidationExceptions(set.getErrors());
@@ -153,7 +153,7 @@ public class AppValidator {
 
         System.out.println("<jar>");
         System.out.print("  <path>");
-        System.out.print(set.getJarPath());
+        System.out.print(set.getName());
         System.out.println("</path>");
 
         printValidationExceptionsXML(set.getErrors());

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java Thu Mar 10 07:35:10 2011
@@ -165,7 +165,7 @@ public class AutoConfig implements Dynam
         }
 
         for (EjbModule ejbModule : appModule.getEjbModules()) {
-            URI moduleURI = URI.create(ejbModule.getModulePackageName());
+            URI moduleURI = ejbModule.getModuleUri();
 
             for (JndiConsumer component : ejbModule.getEjbJar().getEnterpriseBeans()) {
                 processPersistenceRefs(component, ejbModule, persistenceUnits, moduleURI);
@@ -408,22 +408,19 @@ public class AutoConfig implements Dynam
         for (EjbModule ejbModule : appModule.getEjbModules()) {
             AssemblyDescriptor assembly = ejbModule.getEjbJar().getAssemblyDescriptor();
             if (assembly != null) {
-                String modulePackageName = ejbModule.getModulePackageName();
                 for (MessageDestination destination : assembly.getMessageDestination()) {
-                    destinationResolver.add(modulePackageName, destination.getMessageDestinationName(), destination);
+                    destinationResolver.add(ejbModule.getModuleUri(), destination.getMessageDestinationName(), destination);
                 }
             }
         }
         for (ClientModule clientModule : appModule.getClientModules()) {
-            String modulePackageName = appModule.getModulePackageName();
             for (MessageDestination destination : clientModule.getApplicationClient().getMessageDestination()) {
-                destinationResolver.add(modulePackageName, destination.getMessageDestinationName(), destination);
+                destinationResolver.add(appModule.getModuleUri(), destination.getMessageDestinationName(), destination);
             }
         }
         for (WebModule webModule : appModule.getWebModules()) {
-            String modulePackageName = appModule.getModulePackageName();
             for (MessageDestination destination : webModule.getWebApp().getMessageDestination()) {
-                destinationResolver.add(modulePackageName, destination.getMessageDestinationName(), destination);
+                destinationResolver.add(appModule.getModuleUri(), destination.getMessageDestinationName(), destination);
             }
         }
 
@@ -438,7 +435,7 @@ public class AutoConfig implements Dynam
                 continue;
             }
 
-            URI moduleUri = URI.create(ejbModule.getModulePackageName());
+            URI moduleUri = ejbModule.getModuleUri();
             OpenejbJar openejbJar = ejbModule.getOpenejbJar();
 
             for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
@@ -495,7 +492,7 @@ public class AutoConfig implements Dynam
                 continue;
             }
 
-            URI moduleUri = URI.create(ejbModule.getModulePackageName());
+            URI moduleUri = ejbModule.getModuleUri();
             OpenejbJar openejbJar = ejbModule.getOpenejbJar();
 
             for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
@@ -522,7 +519,7 @@ public class AutoConfig implements Dynam
         }
 
         for (ClientModule clientModule : appModule.getClientModules()) {
-            URI moduleUri = URI.create(clientModule.getModulePackageName());
+            URI moduleUri = clientModule.getModuleUri();
             for (MessageDestinationRef ref : clientModule.getApplicationClient().getMessageDestinationRef()) {
                 String destinationId = resolveDestinationId(ref, moduleUri, destinationResolver, destinationTypes);
                 if (destinationId != null) {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java Thu Mar 10 07:35:10 2011
@@ -17,8 +17,10 @@
 package org.apache.openejb.config;
 
 import org.apache.openejb.jee.ApplicationClient;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.xbean.finder.AbstractFinder;
 
+import java.net.URI;
 import java.util.Map;
 import java.util.HashMap;
 import java.util.Set;
@@ -33,7 +35,6 @@ import java.io.File;
 public class ClientModule implements DeploymentModule {
     private final ValidationContext validation;
     private ApplicationClient applicationClient;
-    private String jarLocation;
     private ClassLoader classLoader;
     private String mainClass;
     private boolean ejbModuleGenerated;
@@ -41,37 +42,17 @@ public class ClientModule implements Dep
     private final Set<String> localClients = new HashSet<String>();
     private final Set<String> remoteClients = new HashSet<String>();
     private final Map<String,Object> altDDs = new HashMap<String,Object>();
-    private final String moduleId;
-    private String modulePackageName;        
+    private ID id;
     private final Set<String> watchedResources = new TreeSet<String>();
 
     public ClientModule(ApplicationClient applicationClient, ClassLoader classLoader, String jarLocation, String mainClass, String moduleId) {
         this.applicationClient = applicationClient;
         this.classLoader = classLoader;
-        this.jarLocation = jarLocation;
         this.mainClass = mainClass;
         
-        File file = new File(jarLocation);
-        this.modulePackageName = file.getName();
-
-        if (moduleId == null) {
-            if (applicationClient != null && applicationClient.getModuleName() != null) {
-                moduleId = applicationClient.getModuleName();
-            } else if (applicationClient != null && applicationClient.getId() != null) {
-                moduleId = applicationClient.getId();
-            } else {
-                if (modulePackageName != null && modulePackageName.endsWith(".unpacked")) {
-                    moduleId = modulePackageName.substring(0, modulePackageName.length() - ".unpacked".length());
-                } else if (modulePackageName != null && modulePackageName.endsWith(".jar")) {
-                    moduleId = modulePackageName.substring(0, modulePackageName.length() - ".jar".length());
-                } else {
-                    moduleId = modulePackageName;
-                }
-            }
-        }
-
-        this.moduleId = moduleId;
-        validation = new ValidationContext(ClientModule.class, jarLocation);
+        File file = (jarLocation == null) ? null : new File(jarLocation);
+        this.id = new ID(null, applicationClient, moduleId, file, null, this);
+        this.validation = new ValidationContext(this);
     }
 
     public boolean isEjbModuleGenerated() {
@@ -98,14 +79,25 @@ public class ClientModule implements Dep
         return validation;
     }
 
+    public String getJarLocation() {
+        return (id.getLocation() != null) ? id.getLocation().getAbsolutePath() : null;
+    }
+
+    public void setJarLocation(String jarLocation) {
+        this.id = new ID(null, applicationClient, id.getName(), new File(jarLocation), id.getUri(), this);
+    }
+
     public String getModuleId() {
-        return moduleId;
+        return id.getName();
+    }
+
+    public File getFile() {
+        return id.getLocation();
+    }
+
+    public URI getModuleUri() {
+        return id.getUri();
     }
-    
-    @Override
-    public String getModulePackageName() {
-        return modulePackageName;
-    }    
 
     public Map<String, Object> getAltDDs() {
         return altDDs;
@@ -135,14 +127,6 @@ public class ClientModule implements Dep
         this.classLoader = classLoader;
     }
 
-    public String getJarLocation() {
-        return jarLocation;
-    }
-
-    public void setJarLocation(String jarLocation) {
-        this.jarLocation = jarLocation;
-    }
-
     public String getMainClass() {
         return mainClass;
     }
@@ -158,7 +142,7 @@ public class ClientModule implements Dep
     @Override
     public String toString() {
         return "ClientModule{" +
-                "moduleId='" + moduleId + '\'' +
+                "moduleId='" + id.getName() + '\'' +
                 ", mainClass='" + mainClass + '\'' +
                 '}';
     }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConnectorModule.java Thu Mar 10 07:35:10 2011
@@ -19,6 +19,7 @@ package org.apache.openejb.config;
 import org.apache.openejb.jee.Connector;
 
 import java.io.File;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -36,13 +37,11 @@ public class ConnectorModule implements 
 
     private Connector connector;
     private ClassLoader classLoader;
-    private String jarLocation;
-    private final String moduleId;
-    private String modulePackageName;    
     private final List<URL> libraries = new ArrayList<URL>();
     private final Set<String> watchedResources = new TreeSet<String>();
 
-
+    private ID id;
+    
     public ConnectorModule(Connector connector) {
         this(connector, Thread.currentThread().getContextClassLoader(), null, null);
     }
@@ -50,48 +49,31 @@ public class ConnectorModule implements 
     public ConnectorModule(Connector connector, ClassLoader classLoader, String jarLocation, String moduleId) {
         this.connector = connector;
         this.classLoader = classLoader;
-        this.jarLocation = jarLocation;
-        
-        if (jarLocation != null) {
-            File file = new File(jarLocation);
-            this.modulePackageName = file.getName();
-        } else {
-            this.modulePackageName = null;
-        }
-
-        if (moduleId == null) {
-            if (connector != null && connector.getModuleName() != null) {
-                moduleId = connector.getModuleName();
-            } else if (connector != null && connector.getId() != null) { 
-                moduleId = connector.getId();
-            } else {
-
-                if (modulePackageName != null && modulePackageName.endsWith(".unpacked")) {
-                    moduleId = modulePackageName.substring(0, modulePackageName.length() - ".unpacked".length());
-                } else if (modulePackageName != null && modulePackageName.endsWith(".jar")) {
-                    moduleId = modulePackageName.substring(0, modulePackageName.length() - ".jar".length());
-                } else {
-                    moduleId = modulePackageName;
-                }
-            }
-        }
 
-        this.moduleId = moduleId;
-        validation = new ValidationContext(ConnectorModule.class, jarLocation);
+        File file = (jarLocation == null) ? null : new File(jarLocation);
+        this.id = new ID(null, connector, null, file, null, this);
+        this.validation = new ValidationContext(this);
     }
 
     public ValidationContext getValidation() {
         return validation;
     }
 
+    public String getJarLocation() {
+        return (id.getLocation() != null) ? id.getLocation().getAbsolutePath() : null;
+    }
+
     public String getModuleId() {
-        return moduleId;
+        return id.getName();
+    }
+
+    public File getFile() {
+        return id.getLocation();
+    }
+
+    public URI getModuleUri() {
+        return id.getUri();
     }
-    
-    @Override
-    public String getModulePackageName() {
-        return modulePackageName;
-    }    
 
     public Map<String, Object> getAltDDs() {
         return altDDs;
@@ -113,14 +95,6 @@ public class ConnectorModule implements 
         this.classLoader = classLoader;
     }
 
-    public String getJarLocation() {
-        return jarLocation;
-    }
-
-    public void setJarLocation(String jarLocation) {
-        this.jarLocation = jarLocation;
-    }
-
     public List<URL> getLibraries() {
         return libraries;
     }
@@ -132,7 +106,7 @@ public class ConnectorModule implements 
     @Override
     public String toString() {
         return "ConnectorModule{" +
-                "moduleId='" + moduleId + '\'' +
+                "moduleId='" + id.getName() + '\'' +
                 '}';
     }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentModule.java Thu Mar 10 07:35:10 2011
@@ -16,6 +16,10 @@
  */
 package org.apache.openejb.config;
 
+import org.apache.openejb.jee.NamedModule;
+
+import java.io.File;
+import java.net.URI;
 import java.util.Map;
 import java.util.Set;
 
@@ -25,15 +29,76 @@ import java.util.Set;
 public interface DeploymentModule {
     String getModuleId();
     
-    String getModulePackageName();
+    URI getModuleUri();
 
     ClassLoader getClassLoader();
 
     String getJarLocation();
 
+    File getFile();
+
     Map<String, Object> getAltDDs();
 
     ValidationContext getValidation();
 
     Set<String> getWatchedResources();
+
+    class ID {
+        private final String name;
+        private final File location;
+        private final URI uri;
+
+        public ID(NamedModule vendorDd, NamedModule specDd, String name, File location, URI uri, DeploymentModule module) {
+            this.name = name(vendorDd, specDd, uri, location, name, module);
+            this.location = location(location, uri);
+            this.uri = uri(uri, location, this.name);
+        }
+
+        private URI uri(URI uri, File location, String name) {
+            if (uri != null) return uri;
+            if (location != null) return location.toURI();
+            return URI.create(name);
+        }
+
+        private File location(File location, URI uri) {
+            if (location != null) return location;
+            if (uri != null && uri.isAbsolute()) return new File(uri);
+            return null;
+        }
+
+        private String name(NamedModule vendor, NamedModule spec, URI uri, File location, String name, DeploymentModule module) {
+            if (name != null && !name.startsWith("@")) return name;
+            if (vendor != null && vendor.getModuleName() != null) return vendor.getModuleName().trim();
+            if (vendor != null && vendor.getId() != null) return vendor.getId().trim();
+            if (spec != null && spec.getModuleName() != null) return spec.getModuleName().trim();
+            if (spec != null && spec.getId() != null) return spec.getId().trim();
+            if (uri != null) return stripExtension(uri.getPath());
+            if (location != null) return stripExtension(location.getName());
+            if (name != null) return name;
+            return "@" + module.getClass().getSimpleName() + module.hashCode();
+        }
+
+        private String stripExtension(String name) {
+            String[] exts = {".jar", ".zip", ".ear", ".war", ".rar", ".unpacked"};
+            for (String ext : exts) {
+                if (name.endsWith(ext)) {
+                    return name.substring(0, name.length() - ext.length());
+                }
+            }
+            return name;
+        }
+
+        public String getName() {
+            if (name.startsWith("@")) return name.substring(1);
+            return name;
+        }
+
+        public File getLocation() {
+            return location;
+        }
+
+        public URI getUri() {
+            return uri;
+        }
+    }
 }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbJarInfoBuilder.java Thu Mar 10 07:35:10 2011
@@ -142,17 +142,8 @@ public class EjbJarInfoBuilder {
         EjbJarInfo ejbJar = new EjbJarInfo();
         ejbJar.path = jar.getJarLocation();
         ejbJar.moduleId = jar.getModuleId();
-        ejbJar.modulePackageName=jar.getModulePackageName();
+        ejbJar.moduleUri =jar.getModuleUri();
 
-        
-        if (ejbJar.modulePackageName == null) {
-            ejbJar.modulePackageName = new File(ejbJar.path).getName();
-        }
-        
-        if (ejbJar.moduleId == null) {
-            ejbJar.moduleId = ejbJar.modulePackageName.replaceFirst(".jar$","");
-        }        
-        
         ejbJar.watchedResources.addAll(jar.getWatchedResources());
 
         ejbJar.properties.putAll(jar.getOpenejbJar().getProperties());

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java Thu Mar 10 07:35:10 2011
@@ -19,13 +19,15 @@ package org.apache.openejb.config;
 
 import org.apache.openejb.jee.Beans;
 import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.NamedModule;
 import org.apache.openejb.jee.Webservices;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
 import org.apache.xbean.finder.AbstractFinder;
 
 import java.io.File;
-import java.util.Map;
+import java.net.URI;
 import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicReference;
@@ -33,6 +35,7 @@ import java.util.concurrent.atomic.Atomi
 /**
  * Class is to remain "dumb" and should not have deployment logic added to it.
  * Class is intentionally not an interface as that would encourage "smart" implementations
+ *
  * @version $Revision$ $Date$
  */
 public class EjbModule implements WsModule {
@@ -40,22 +43,18 @@ public class EjbModule implements WsModu
     private final ValidationContext validation;
 
     private ClassLoader classLoader;
-    private String jarLocation;
+
     private EjbJar ejbJar;
     private OpenejbJar openejbJar;
     private Webservices webservices;
-    private String moduleId;
-    private String modulePackageName;
-
-
-
 
     private final AtomicReference<AbstractFinder> finder = new AtomicReference<AbstractFinder>();
-    private final Map<String,Object> altDDs = new HashMap<String,Object>();
+    private final Map<String, Object> altDDs = new HashMap<String, Object>();
     private final Set<String> watchedResources = new TreeSet<String>();
     private Beans beans;
 
     private ClientModule clientModule;
+    private ID id;
 
     public EjbModule(EjbJar ejbJar) {
         this(Thread.currentThread().getContextClassLoader(), null, ejbJar, null);
@@ -73,46 +72,12 @@ public class EjbModule implements WsModu
         this.ejbJar = ejbJar;
         this.openejbJar = openejbJar;
 
-        if (jarURI == null){
-            if (moduleId != null){
-                jarURI = moduleId;
-            } else if (ejbJar.getId() != null && !ejbJar.getId().equals("")){
-                jarURI = ejbJar.getId();
-            } else {
-                jarURI = ejbJar.toString();
-            }
-        }
-        this.jarLocation = jarURI;
-        
-        if (jarLocation != null) {
-            File file = new File(jarLocation);
-            this.modulePackageName = file.getName();
-        } else {
-            this.modulePackageName = null;
-        }
-        
-        if (moduleId == null) {
-            if (ejbJar != null && ejbJar.getModuleName() != null) {
-                moduleId = ejbJar.getModuleName();
-            } else if (ejbJar != null && ejbJar.getId() != null) {
-                moduleId = ejbJar.getId();
-            } else if (modulePackageName == null) {
-                    moduleId = jarURI;
-            } else {
-                
-                if (modulePackageName != null && modulePackageName.endsWith(".unpacked")) {
-                    moduleId = modulePackageName.substring(0, modulePackageName.length() - ".unpacked".length());
-                } else if (modulePackageName != null && modulePackageName.endsWith(".jar")) {
-
-                    moduleId = modulePackageName.substring(0, modulePackageName.length() - ".jar".length() );
-                }else {
-                    moduleId = modulePackageName; 
-                }
-            }
-        }
-        
-        this.moduleId = moduleId;
-        validation = new ValidationContext(EjbModule.class, jarLocation);
+        File file = null;
+
+        if (jarURI != null) file = new File(jarURI);
+
+        this.id = new ID(openejbJar, ejbJar, moduleId, file, null, this);
+        this.validation = new ValidationContext(this);
     }
 
     public EjbModule(ClassLoader classLoader, String jarURI, EjbJar ejbJar, OpenejbJar openejbJar) {
@@ -134,7 +99,7 @@ public class EjbModule implements WsModu
     public void setFinder(AbstractFinder finder) {
         this.finder.set(finder);
     }
-    
+
     public ClientModule getClientModule() {
         return clientModule;
     }
@@ -172,28 +137,35 @@ public class EjbModule implements WsModu
     }
 
     public String getJarLocation() {
-        return jarLocation;
+        return (id.getLocation() != null) ? id.getLocation().getAbsolutePath() : null;
     }
 
     public void setJarLocation(String jarLocation) {
-        this.jarLocation = jarLocation;
+        this.id = new ID(openejbJar, ejbJar, id.getName(), new File(jarLocation), id.getUri(), this);
     }
 
     public String getModuleId() {
-        return moduleId;
+        return id.getName();
     }
 
-    public void setModuleId(String moduleId) {
-        this.moduleId = moduleId;
+    public File getFile() {
+        return id.getLocation();
     }
     
-    public String getModulePackageName() {
-        return modulePackageName;
+    public void setModuleId(String moduleId) {
+        if (openejbJar == null) openejbJar = new OpenejbJar();
+        openejbJar.setModuleName(moduleId);
+        
+        this.id = new ID(openejbJar, ejbJar, id.getName(), id.getLocation(), id.getUri(), this);
+    }
+
+    public URI getModuleUri() {
+        return id.getUri();
+    }
+
+    public void setModuleUri(URI moduleUri) {
+        this.id = new ID(openejbJar, ejbJar, id.getName(), id.getLocation(), moduleUri, this);
     }
-    
-    public void setModulePackageName(String modulePackageName) {
-        this.modulePackageName = modulePackageName;
-    }    
 
     public OpenejbJar getOpenejbJar() {
         return openejbJar;
@@ -218,7 +190,7 @@ public class EjbModule implements WsModu
     @Override
     public String toString() {
         return "EjbModule{" +
-                "moduleId='" + moduleId + '\'' +
+                "moduleId='" + id.getName() + '\'' +
                 '}';
     }
 }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java Thu Mar 10 07:35:10 2011
@@ -64,7 +64,7 @@ public class FinderFactory {
             }
             return new ClassFinder(module.getClassLoader(), url);
         } else {
-            return new ClassFinder(module.getClassLoader());
+            return new ClassFinder();
         }
     }
 }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceModule.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceModule.java Thu Mar 10 07:35:10 2011
@@ -18,6 +18,8 @@ package org.apache.openejb.config;
 
 import org.apache.openejb.jee.jpa.unit.Persistence;
 
+import java.io.File;
+import java.net.URI;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.Map;
@@ -26,9 +28,10 @@ public class PersistenceModule implement
     private String rootUrl;
     private Persistence persistence;
     private final Set<String> watchedResources = new TreeSet<String>();
+    private URI uri;
 
     public PersistenceModule(String rootUrl, Persistence persistence) {
-        this.rootUrl = rootUrl;
+        setRootUrl(rootUrl);
         this.persistence = persistence;
     }
 
@@ -38,6 +41,7 @@ public class PersistenceModule implement
 
     public void setRootUrl(String rootUrl) {
         this.rootUrl = rootUrl;
+        this.uri = URI.create(rootUrl);
     }
 
     public Persistence getPersistence() {
@@ -68,8 +72,11 @@ public class PersistenceModule implement
         return null;
     }
 
-    @Override
-    public String getModulePackageName() {
+    public URI getModuleUri() {
+        return uri;
+    }
+
+    public File getFile() {
         return null;
     }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ReportValidationResults.java Thu Mar 10 07:35:10 2011
@@ -57,7 +57,7 @@ public class ReportValidationResults imp
             logResults(context, level);
         }
 
-        ValidationContext uberContext = new ValidationContext(AppModule.class, appModule.getValidation().getJarPath());
+        ValidationContext uberContext = new ValidationContext(appModule);
         for (ValidationContext context : contexts) {
             for (ValidationError error : context.getErrors()) {
                 uberContext.addError(error);
@@ -79,7 +79,7 @@ public class ReportValidationResults imp
             logger.info("Set the '"+VALIDATION_LEVEL+"' system property to "+ join(" or ", levels) +" for increased validation details.");
         }
 
-        validationFailedException = new ValidationFailedException("Module failed validation. "+uberContext.getModuleType()+"(path="+uberContext.getJarPath()+")", uberContext, validationFailedException);
+        validationFailedException = new ValidationFailedException("Module failed validation. " + uberContext.getModuleType() + "(name=" + uberContext.getName() + ")", uberContext, validationFailedException);
 
         if (validationFailedException != null) throw validationFailedException;
 
@@ -102,13 +102,13 @@ public class ReportValidationResults imp
 
         if (context.hasErrors() || context.hasFailures()) {
 
-            logger.error("Invalid "+context.getModuleType()+"(path="+context.getJarPath()+")");
+            logger.error("Invalid "+context.getModuleType()+"(path="+context.getName()+")");
 //            logger.error("Validation: "+errors.length + " errors, "+failures.length+ " failures, in "+context.getModuleType()+"(path="+context.getJarPath()+")");
         } else if (context.hasWarnings()) {
             if (context.getWarnings().length == 1) {
-                logger.warning(context.getWarnings().length +" warning for "+context.getModuleType()+"(path="+context.getJarPath()+")");
+                logger.warning(context.getWarnings().length +" warning for "+context.getModuleType()+"(path="+context.getName()+")");
             } else {
-                logger.warning(context.getWarnings().length +" warnings for "+context.getModuleType()+"(path="+context.getJarPath()+")");
+                logger.warning(context.getWarnings().length +" warnings for "+context.getModuleType()+"(path="+context.getName()+")");
             }
         }
     }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationContext.java Thu Mar 10 07:35:10 2011
@@ -16,23 +16,33 @@
  */
 package org.apache.openejb.config;
 
+import org.apache.openejb.jee.was.v6.common.QName;
+
 import java.util.List;
 import java.util.ArrayList;
 
 /**
  * @version $Rev$ $Date$
  */
-public class ValidationContext implements ValidationResults{
+public class ValidationContext implements ValidationResults {
     private final List<ValidationFailure> failures = new ArrayList<ValidationFailure>();
     private final List<ValidationWarning> warnings = new ArrayList<ValidationWarning>();
     private final List<ValidationError> errors = new ArrayList<ValidationError>();
 
-    private final String jarPath;
     private final String moduleType;
+    private final String name;
+    private final DeploymentModule module;
 
-    public ValidationContext(Class<? extends DeploymentModule> moduleType, String jarPath) {
+    public ValidationContext(Class<? extends DeploymentModule> moduleType, String name) {
         this.moduleType = moduleType.getSimpleName();
-        this.jarPath = jarPath;
+        this.name = name;
+        this.module = null;
+    }
+
+    public ValidationContext(DeploymentModule module) {
+        this.moduleType = module.getClass().getSimpleName();
+        this.module = module;
+        this.name = null;
     }
 
     public void fail(String component, String key, Object... details) {
@@ -95,8 +105,8 @@ public class ValidationContext implement
         return errors.size() > 0;
     }
 
-    public String getJarPath() {
-        return jarPath;
+    public String getName() {
+        return (module == null) ? name : module.getModuleId();
     }
 
     public String getModuleType() {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationFailedException.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationFailedException.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationFailedException.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationFailedException.java Thu Mar 10 07:35:10 2011
@@ -25,7 +25,7 @@ public class ValidationFailedException e
     private final ValidationError[] errors;
     private final ValidationFailure[] failures;
     private final ValidationWarning[] warnings;
-    private final String jarPath;
+    private final String name;
     private final String moduleType;
 
     public ValidationFailedException(String message, ValidationResults set) {
@@ -34,15 +34,15 @@ public class ValidationFailedException e
 
     public ValidationFailedException(String message, ValidationResults set, ValidationFailedException e) {
         super(message, e);
-        jarPath = set.getJarPath();
+        name = set.getName();
         errors = set.getErrors();
         failures = set.getFailures();
         warnings = set.getWarnings();
         moduleType = set.getModuleType();
     }
 
-    public String getJarPath() {
-        return jarPath;
+    public String getName() {
+        return name;
     }
 
     public ValidationError[] getErrors() {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationResults.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationResults.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationResults.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ValidationResults.java Thu Mar 10 07:35:10 2011
@@ -32,7 +32,7 @@ public interface ValidationResults {
 
     boolean hasErrors();
 
-    String getJarPath();
+    String getName();
 
     String getModuleType();
 }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java Thu Mar 10 07:35:10 2011
@@ -17,6 +17,7 @@
 package org.apache.openejb.config;
 
 import java.io.File;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -43,20 +44,25 @@ public class WebModule implements WsModu
     private String host;
     private String contextRoot;
     private ClassLoader classLoader;
-    private String jarLocation;
-    private final String moduleId;
-    private String modulePackageName;    
     private final List<TldTaglib> taglibs = new ArrayList<TldTaglib>();
     private final Set<String> watchedResources = new TreeSet<String>();
     // List of all faces configuration files found in this web module
     private final List<FacesConfig> facesConfigs = new ArrayList<FacesConfig>();
     private AbstractFinder finder;
 
+    private ID id;
+    
     // keep the list of filtered URL we got after applying include/exclude pattern (@See DeploymentsResolver.loadFromClasspath)
     private List<URL> urls;
 
     public WebModule(WebApp webApp, String contextRoot, ClassLoader classLoader, String jarLocation, String moduleId) {
         this.webApp = webApp;
+
+
+        File file = (jarLocation == null) ? null : new File(jarLocation);
+        this.id = new ID(null, webApp, moduleId, file, null, this);
+        this.validation = new ValidationContext(this);
+
         if (contextRoot == null) {
             contextRoot = jarLocation.substring(jarLocation.lastIndexOf(System.getProperty("file.separator")));
             if (contextRoot.endsWith(".unpacked")) {
@@ -69,42 +75,24 @@ public class WebModule implements WsModu
         if (contextRoot.startsWith("/")) contextRoot = contextRoot.substring(1);
         this.contextRoot = contextRoot;
         this.classLoader = classLoader;
-        this.jarLocation = jarLocation;
-        
-        if (jarLocation != null) {
-            File file = new File(jarLocation);
-            this.modulePackageName = file.getName();
-        } else {
-            this.modulePackageName = null;
-        }
 
         if (webApp != null) webApp.setContextRoot(contextRoot);
+    }
 
-        if (moduleId == null) {
-            
-                if (webApp != null && webApp.getModuleName() != null) {
-                    moduleId = webApp.getModuleName();
-                } else if (webApp != null && webApp.getId() != null) {
-                    moduleId = webApp.getId();
-                } else {
-    
-                    if (modulePackageName != null && modulePackageName.endsWith(".unpacked")) {
-                        moduleId = modulePackageName.substring(0, modulePackageName.length() - ".unpacked".length());
-                    } else if (modulePackageName != null && modulePackageName.endsWith(".jar")) {
-                        moduleId = modulePackageName.substring(0, modulePackageName.length() - ".jar".length());
-                    } else {
-                        moduleId = modulePackageName;
-                    }
-                }
-            
-        } 
-
-        
-            
-        this.moduleId = moduleId;
-       
-        
-        validation = new ValidationContext(WebModule.class, jarLocation);
+    public String getJarLocation() {
+        return (id.getLocation() != null) ? id.getLocation().getAbsolutePath() : null;
+    }
+
+    public String getModuleId() {
+        return id.getName();
+    }
+
+    public File getFile() {
+        return id.getLocation();
+    }
+
+    public URI getModuleUri() {
+        return id.getUri();
     }
 
     public List<URL> getUrls() {
@@ -127,15 +115,6 @@ public class WebModule implements WsModu
         return validation;
     }
 
-    public String getModuleId() {
-        return moduleId;
-    }
-    
-    @Override
-    public String getModulePackageName() {
-        return modulePackageName;
-    }    
-
     public Map<String, Object> getAltDDs() {
         return altDDs;
     }
@@ -165,15 +144,6 @@ public class WebModule implements WsModu
         this.classLoader = classLoader;
     }
 
-    public String getJarLocation() {
-        return jarLocation;
-    }
-
-    public void setJarLocation(String jarLocation) {
-        this.jarLocation = jarLocation;
-    }
-
-
     public String getContextRoot() {
         return contextRoot;
     }
@@ -207,7 +177,7 @@ public class WebModule implements WsModu
     @Override
     public String toString() {
         return "WebModule{" +
-                "moduleId='" + moduleId + '\'' +
+                "moduleId='" + id.getName() + '\'' +
                 ", contextRoot='" + contextRoot + '\'' +
                 '}';
     }

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckDependsOn.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckDependsOn.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckDependsOn.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckDependsOn.java Thu Mar 10 07:35:10 2011
@@ -45,25 +45,14 @@ public class CheckDependsOn extends Vali
 
         for (EjbModule ejbModule : appModule.getEjbModules()) {
 
-            String modulePackageName = ejbModule.getModulePackageName();
-
-            URI moduleUri = null;
-            if (modulePackageName != null) {
-                try {
-                    moduleUri = new URI(modulePackageName);
-                } catch (URISyntaxException e) {
-                    return;
-                }
-            }
-
             Resolver<Bean> resolver = new Resolver(app, new LinkResolver<Bean>());
 
             for (EnterpriseBean bean : ejbModule.getEjbJar().getEnterpriseBeans()) {
-                Bean b = new Bean(bean, ejbModule, moduleUri, resolver);
+                Bean b = new Bean(bean, ejbModule, ejbModule.getModuleUri(), resolver);
 
-                resolver.module.add(ejbModule.getModulePackageName(), bean.getEjbName(), b);
+                resolver.module.add(ejbModule.getModuleUri(), bean.getEjbName(), b);
 
-                resolver.app.add(ejbModule.getModulePackageName(), bean.getEjbName(), b);
+                resolver.app.add(ejbModule.getModuleUri(), bean.getEjbName(), b);
 
             }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/LinkResolver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/LinkResolver.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/LinkResolver.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/LinkResolver.java Thu Mar 10 07:35:10 2011
@@ -17,6 +17,9 @@
  */
 package org.apache.openejb.util;
 
+import org.apache.openejb.loader.JarLocation;
+
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
@@ -25,18 +28,23 @@ import java.util.Collections;
 import java.net.URI;
 
 public class LinkResolver<E> {
-    private final Map<String, E> byFullName = new TreeMap<String, E>();
+    private final Map<URI, E> byFullName = new TreeMap<URI, E>();
     private final Map<String, Collection<E>> byShortName = new TreeMap<String, Collection<E>>();
 
     public boolean add(String modulePackageName, String name, E value) {
-        String fullName = modulePackageName + "#" + name;
-        if (byFullName.containsKey(fullName)) {
+        return add(URI.create(modulePackageName), name, value);
+    }
+
+    public boolean add(URI moduleURI, String name, E value) {
+        URI uri = resolve(moduleURI, name);
+
+        if (byFullName.containsKey(uri)) {
             // entry already exists
             return false;
         }
 
         // Full name: modulePackageName#name -> value
-        byFullName.put(fullName, value);
+        byFullName.put(uri, value);
 
         // Short name: name -> List(values)
         Collection<E> values = byShortName.get(name);
@@ -49,6 +57,12 @@ public class LinkResolver<E> {
         return true;
     }
 
+    private URI resolve(URI moduleURI, String name) {
+        name = name.replaceAll(" ", "%20");
+        URI uri = moduleURI.resolve("#" + name);
+        return uri;
+    }
+
     public Collection<E> values() {
         return byFullName.values();
     }
@@ -68,7 +82,7 @@ public class LinkResolver<E> {
             // check for a name in the current module
             E value = null;
             if (moduleUri != null) {
-                value = byFullName.get(moduleUri.toString() + "#" + link);
+                value = byFullName.get(resolve(moduleUri, link));
             }
             if (value != null) {
                 return value;
@@ -83,8 +97,8 @@ public class LinkResolver<E> {
             return value;
         } else if (moduleUri != null) {
             // full (absolute) name
-            String fullName = moduleUri.resolve(link).toString();
-            E value = byFullName.get(fullName);
+            URI uri = moduleUri.resolve(link);
+            E value = byFullName.get(uri);
             return value;
         } else {
             // Absolute reference in a standalone module

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationValidationTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationValidationTest.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationValidationTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/OpenEjbConfigurationValidationTest.java Thu Mar 10 07:35:10 2011
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -137,6 +138,10 @@ public class OpenEjbConfigurationValidat
                 continue;
             }
 
+            if (URI.class.isAssignableFrom(type)) {
+                continue;
+            }
+
             if(Date.class.isAssignableFrom(type)) {
                 continue;
             }

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java Thu Mar 10 07:35:10 2011
@@ -28,6 +28,7 @@ import static org.junit.Assert.assertTha
 
 import org.apache.openejb.jee.EnterpriseBean;
 import org.apache.openejb.jee.SessionBean;
+import org.apache.xbean.finder.ClassFinder;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -46,9 +47,7 @@ public class AnnotationDeployerTest {
      *  For http://issues.apache.org/jira/browse/OPENEJB-980
      */
     public void applicationExceptionInheritanceTest() throws Exception {
-        EjbJar ejbJar = new EjbJar("test-classes");
-        EjbModule ejbModule = new EjbModule(ejbJar);
-        ejbModule.setJarLocation(null); // TODO check why it's necessary now
+        EjbModule ejbModule = testModule();
         AnnotationDeployer.DiscoverAnnotatedBeans discvrAnnBeans = new AnnotationDeployer.DiscoverAnnotatedBeans();
         ejbModule = discvrAnnBeans.deploy(ejbModule);
 
@@ -63,7 +62,22 @@ public class AnnotationDeployerTest {
         appEx = assemblyDescriptor.getApplicationException(ValueRequiredException.class);
         assertThat(appEx, nullValue());
     }
-    
+
+    private EjbModule testModule() {
+        EjbJar ejbJar = new EjbJar("test-classes");
+        EjbModule ejbModule = new EjbModule(ejbJar);
+        ejbModule.setFinder(new ClassFinder(AnnotationDeployerTest.class,
+                BusinessException.class,
+                Exception.class,
+                GenericInterface.class,
+                InterceptedSLSBean.class,
+                MyMainClass.class,
+                TestLocalBean.class,
+                ValueRequiredException.class
+        ));
+        return ejbModule;
+    }
+
     @Test
     /**
      *  For https://issues.apache.org/jira/browse/OPENEJB-1063
@@ -96,10 +110,9 @@ public class AnnotationDeployerTest {
      */
     @Test
     public void interceptingGenericBusinessMethodCalls() throws Exception {
-        EjbJar ejbJar = new EjbJar("test-classes");
-        EjbModule ejbModule = new EjbModule(ejbJar);
-        ejbModule.setJarLocation(null);
-
+        EjbModule ejbModule = testModule();
+        EjbJar ejbJar = ejbModule.getEjbJar();
+        
         AnnotationDeployer.DiscoverAnnotatedBeans discvrAnnBeans = new AnnotationDeployer.DiscoverAnnotatedBeans();
         ejbModule = discvrAnnBeans.deploy(ejbModule);
 
@@ -113,9 +126,8 @@ public class AnnotationDeployerTest {
      */
     @Test
     public void testLocalBean() throws Exception {
-        EjbJar ejbJar = new EjbJar("test-classes");
-        EjbModule ejbModule = new EjbModule(ejbJar);
-        ejbModule.setJarLocation(null);
+        EjbModule ejbModule = testModule();
+        EjbJar ejbJar = ejbModule.getEjbJar();
 
         AppModule appModule = new AppModule(Thread.currentThread().getContextClassLoader(), "myapp");
         appModule.getEjbModules().add(ejbModule);

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java Thu Mar 10 07:35:10 2011
@@ -260,7 +260,7 @@ public class AutoConfigPersistenceUnitsT
         app.getPersistenceModules().add(new PersistenceModule("root", new Persistence(persistenceUnit)));
         WebApp webApp = new WebApp();
         webApp.setMetadataComplete(true);
-        app.getWebModules().add(new WebModule(webApp, "orange-web", cl, "war", "orange-id"));
+        app.getWebModules().add(new WebModule(webApp, "orange-web", cl, null, "orange-id"));
 
         // Create app
         AppInfo appInfo = config.configureApplication(app);

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigurationFactoryTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigurationFactoryTest.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigurationFactoryTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/ConfigurationFactoryTest.java Thu Mar 10 07:35:10 2011
@@ -51,7 +51,7 @@ public class ConfigurationFactoryTest {
         ejbJar.setMetadataComplete(true);
         EjbJarInfo info = factory.configureApplication(ejbJar);
         // not much to assert
-        assertEquals(id, info.path);
+        assertEquals(id, info.moduleId);
     }
 
     @Test

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=1080136&r1=1080135&r2=1080136&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 Thu Mar 10 07:35:10 2011
@@ -137,7 +137,7 @@ public class OpenEjb2ConversionTest exte
 
     private AppModule deploy(String ejbJarFileName, String openejbJarFileName) throws OpenEJBException {
         // create and configure the module
-        EjbModule ejbModule = new EjbModule(getClass().getClassLoader(), "TestModule", ejbJarFileName, null, null);
+        EjbModule ejbModule = new EjbModule(getClass().getClassLoader(), "TestModule", null, null, null);
         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=1080136&r1=1080135&r2=1080136&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 Thu Mar 10 07:35:10 2011
@@ -91,7 +91,7 @@ public class SunCmpConversionTest extend
         EjbJar ejbJar = (EjbJar) JaxbJavaee.unmarshalJavaee(EjbJar.class, new ByteArrayInputStream(readContent(in).getBytes()));
 
         // create and configure the module
-        EjbModule ejbModule = new EjbModule(getClass().getClassLoader(), "TestModule", ejbJarFileName, ejbJar, new OpenejbJar());
+        EjbModule ejbModule = new EjbModule(getClass().getClassLoader(), "TestModule", null, ejbJar, new OpenejbJar());
         InitEjbDeployments initEjbDeployments = new InitEjbDeployments();
         initEjbDeployments.deploy(ejbModule);
         AppModule appModule = new AppModule(getClass().getClassLoader(), "TestModule");

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java Thu Mar 10 07:35:10 2011
@@ -96,7 +96,7 @@ import javax.xml.bind.annotation.adapter
     "messageDestination",
     "dataSource"
 })
-public class Application implements JndiConsumer {
+public class Application implements JndiConsumer, NamedModule {
 
     @XmlElement(name = "application-name")
     protected String applicationName;
@@ -162,6 +162,11 @@ public class Application implements Jndi
         this.applicationName = value;
     }
 
+    @Override
+    public String getModuleName() {
+        return getApplicationName();
+    }
+
     @XmlElement(name = "description", required = true)
     public Text[] getDescriptions() {
         return description.toArray();

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/ApplicationClient.java Thu Mar 10 07:35:10 2011
@@ -93,7 +93,7 @@ import java.util.Map;
         "dataSource"
 
 })
-public class ApplicationClient implements JndiConsumer, Lifecycle {
+public class ApplicationClient implements JndiConsumer, Lifecycle, NamedModule {
 
     @XmlElement(name = "module-name", required = true)
     protected String moduleName;

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Connector.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Connector.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Connector.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Connector.java Thu Mar 10 07:35:10 2011
@@ -76,7 +76,7 @@ import java.util.Map;
         "resourceAdapter",
         "requiredWorkContext"
 })
-public class Connector {
+public class Connector implements NamedModule {
 
     @XmlElement(name = "module-name")
     protected String moduleName;

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbJar.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbJar.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbJar.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/EjbJar.java Thu Mar 10 07:35:10 2011
@@ -78,7 +78,7 @@ import java.util.Collection;
         "assemblyDescriptor",
         "ejbClientJar"
         })
-public class EjbJar {
+public class EjbJar implements NamedModule {
 
     @XmlElement(name = "module-name")
     protected String moduleName;

Added: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java?rev=1080136&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java (added)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java Thu Mar 10 07:35:10 2011
@@ -0,0 +1,26 @@
+/**
+ * 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.jee;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface NamedModule {
+
+    String getId();
+    String getModuleName();
+}

Propchange: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/WebApp.java Thu Mar 10 07:35:10 2011
@@ -98,7 +98,7 @@ import java.util.Map;
         "moduleName"
 
 })
-public class WebApp implements WebCommon, Lifecycle {
+public class WebApp implements WebCommon, Lifecycle, NamedModule {
     @XmlTransient
     private String contextRoot;
 

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java?rev=1080136&r1=1080135&r2=1080136&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java Thu Mar 10 07:35:10 2011
@@ -18,6 +18,7 @@
 
 package org.apache.openejb.jee.oejb3;
 
+import org.apache.openejb.jee.NamedModule;
 import org.apache.openejb.jee.StatelessBean;
 import org.apache.openejb.jee.EnterpriseBean;
 
@@ -37,13 +38,16 @@ import java.util.Properties;
 /**
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(propOrder = {"properties","ejbDeployment"})
+@XmlType(propOrder = {"moduleName", "properties","ejbDeployment"})
 @XmlRootElement(name = "openejb-jar")
-public class OpenejbJar {
+public class OpenejbJar implements NamedModule {
     @XmlElement(name = "properties")
     @XmlJavaTypeAdapter(PropertiesAdapter.class)
     protected Properties properties;
 
+    @XmlElement(name = "module-name")
+    protected String moduleName;
+
     @XmlElement(name = "ejb-deployment", required = true)
     protected List<EjbDeployment> ejbDeployment;
 
@@ -70,6 +74,20 @@ public class OpenejbJar {
         return map;
     }
 
+    @Override
+    public String getId() {
+        return null;
+    }
+
+    @Override
+    public String getModuleName() {
+        return moduleName;
+    }
+
+    public void setModuleName(String moduleName) {
+        this.moduleName = moduleName;
+    }
+
     public int getEjbDeploymentCount() {
         return getEjbDeployment().size();
     }