[jboss-cvs] JBossAS SVN: r99287 - in projects/reloaded/trunk/naming-deployers/src: main/java/org/jboss/reloaded/naming/deployers/mc and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jan 12 10:39:10 EST 2010


Author: wolfc
Date: 2010-01-12 10:39:10 -0500 (Tue, 12 Jan 2010)
New Revision: 99287

Modified:
   projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/AppNamingDeployer.java
   projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ComponentNamingDeployer.java
   projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ModuleNamingDeployer.java
   projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/mc/MCJavaEEModule.java
   projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/simple/SimpleTestCase.java
Log:
RELOADED-12: install uniquely named MC beans (because BeanMetaDataDeployer.undeploy doesn't take scope into account)

Modified: projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/AppNamingDeployer.java
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/AppNamingDeployer.java	2010-01-12 15:24:50 UTC (rev 99286)
+++ projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/AppNamingDeployer.java	2010-01-12 15:39:10 UTC (rev 99287)
@@ -64,9 +64,12 @@
          return;
 
       String appName = informer.getApplicationName(deploymentUnit);
-      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder("java:app", MCJavaEEApplication.class.getName())
+      // because BeanMetaDataDeployer.undeploy needs an unique name
+      String name = "jboss.naming:application=" + appName;
+      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(name, MCJavaEEApplication.class.getName())
          .addAnnotation(annotation(ApplicationScope.class, appName))
-         .addConstructorParameter(String.class.getName(), appName);
+         .addConstructorParameter(String.class.getName(), appName)
+         .addAlias("java:app");
       builder.addPropertyMetaData("nameSpaces", builder.createInject("NameSpaces"));
       deploymentUnit.addAttachment("java:app:" + BeanMetaData.class, builder.getBeanMetaData());
    }

Modified: projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ComponentNamingDeployer.java
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ComponentNamingDeployer.java	2010-01-12 15:24:50 UTC (rev 99286)
+++ projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ComponentNamingDeployer.java	2010-01-12 15:39:10 UTC (rev 99287)
@@ -64,13 +64,18 @@
 
       String appName = informer.getApplicationName(unit);
       String moduleName = informer.getModulePath(unit);
-      String name = informer.getComponentName(unit);
+      String componentName = informer.getComponentName(unit);
 
       // create JavaEEModule bean
-      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder("java:comp", MCJavaEEComponent.class.getName())
+      String name = "jboss.naming:";
+      if(appName != null)
+         name += "application=" + appName + ",";
+      name += "module=" + moduleName + ",component=" + componentName;
+      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(name, MCJavaEEComponent.class.getName())
          .addAnnotation(annotation(DeploymentScope.class, moduleName))
-         .addAnnotation(annotation(InstanceScope.class, name))
-         .addConstructorParameter(String.class.getName(), name);
+         .addAnnotation(annotation(InstanceScope.class, componentName))
+         .addConstructorParameter(String.class.getName(), componentName)
+         .addAlias("java:comp");
       if(appName != null)
          builder.addAnnotation(annotation(ApplicationScope.class, appName));
       AbstractInjectionValueMetaData javaModule = new AbstractInjectionValueMetaData("java:module");
@@ -79,7 +84,7 @@
       builder.addPropertyMetaData("nameSpaces", builder.createInject("NameSpaces"));      
 
       // VDF can't do component composition, so each BMD must be in a separate component
-      DeploymentUnit component = unit.getParent().addComponent(name + ".java:comp");
+      DeploymentUnit component = unit.getParent().addComponent(componentName + ".java:comp");
       component.addAttachment(BeanMetaData.class, builder.getBeanMetaData());
    }
 

Modified: projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ModuleNamingDeployer.java
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ModuleNamingDeployer.java	2010-01-12 15:24:50 UTC (rev 99286)
+++ projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ModuleNamingDeployer.java	2010-01-12 15:39:10 UTC (rev 99287)
@@ -68,13 +68,18 @@
       
       // appName is either the name of the JavaEE application or null for a stand-alone JavaEE module
       String appName = informer.getApplicationName(unit);
-      String name = informer.getModulePath(unit);
+      String moduleName = informer.getModulePath(unit);
 
       // create JavaEEModule bean
-      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder("java:module", MCJavaEEModule.class.getName())
-         .addAnnotation(annotation(DeploymentScope.class, name))
-         .addConstructorParameter(String.class.getName(), name);
+      String name = "jboss.naming:";
       if(appName != null)
+         name += "application=" + appName + ",";
+      name += "module=" + moduleName;
+      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(name, MCJavaEEModule.class.getName())
+         .addAnnotation(annotation(DeploymentScope.class, moduleName))
+         .addConstructorParameter(String.class.getName(), moduleName)
+         .addAlias("java:module");
+      if(appName != null)
       {
          builder.addAnnotation(annotation(ApplicationScope.class, appName));
          AbstractInjectionValueMetaData javaApp = new AbstractInjectionValueMetaData("java:app");

Modified: projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/mc/MCJavaEEModule.java
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/mc/MCJavaEEModule.java	2010-01-12 15:24:50 UTC (rev 99286)
+++ projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/mc/MCJavaEEModule.java	2010-01-12 15:39:10 UTC (rev 99287)
@@ -54,7 +54,7 @@
    {
       parentContext = (application != null ? application.getContext() : nameSpaces.getGlobalContext());
       context = Util.createSubcontext(parentContext, name);
-      log.debug("Installed context " + context + " for JavaEE module " + name + ", parentContext = " + parentContext);
+      log.debug("Installed context " + context + " for JavaEE module " + name + ", application = " + application + ", parentContext = " + parentContext);
    }
 
    @Override

Modified: projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/simple/SimpleTestCase.java
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/simple/SimpleTestCase.java	2010-01-12 15:24:50 UTC (rev 99286)
+++ projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/simple/SimpleTestCase.java	2010-01-12 15:39:10 UTC (rev 99287)
@@ -244,6 +244,36 @@
       assertNameNotFound("java:global/standalone");
    }
 
+   // make sure we don't undeploy the wrong module (because of BeanMetaDataDeployer.undeploy ignoring scope)
+   @Test
+   public void testStandaloneModule2() throws Exception
+   {
+      AssembledDirectory root1 = AssembledDirectory.createAssembledDirectory("standalone1", "standalone1.jar");
+      VFSDeployment deployment1 = new AbstractVFSDeployment(root1);
+      mainDeployer.deploy(deployment1);
+
+      AssembledDirectory root2 = AssembledDirectory.createAssembledDirectory("standalone2", "standalone2.jar");
+      VFSDeployment deployment2 = new AbstractVFSDeployment(root2);
+      mainDeployer.deploy(deployment2);
+
+      // basically the lookup is what really checks the functionality, not null is a bonus
+      assertNotNull(ctx.lookup("java:global/standalone1"));
+      assertNotNull(ctx.lookup("java:global/standalone2"));
+
+      mainDeployer.undeploy(deployment2);
+
+//      assertNotNull(ctx.lookup("java:global/standalone1"));
+//      assertNameNotFound("java:global/standalone2");
+
+      mainDeployer.deploy(deployment2);
+
+      assertNotNull(ctx.lookup("java:global/standalone1"));
+      assertNotNull(ctx.lookup("java:global/standalone2"));
+      
+      mainDeployer.undeploy(deployment1);
+      mainDeployer.undeploy(deployment2);
+   }
+
    protected static void validate() throws Exception
    {
       try




More information about the jboss-cvs-commits mailing list