[jboss-cvs] JBossAS SVN: r99104 - in projects/reloaded/trunk/naming-deployers/src: main/java/org/jboss/reloaded/naming/deployers/mc and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 7 05:46:21 EST 2010
Author: wolfc
Date: 2010-01-07 05:46:20 -0500 (Thu, 07 Jan 2010)
New Revision: 99104
Added:
projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyContainer.java
projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyDeployer.java
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/MCJavaEEComponent.java
projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/simple/SimpleTestCase.java
projects/reloaded/trunk/naming-deployers/src/test/resources/dummy-deployers-beans.xml
Log:
RELOADED-12: component naming deployer works
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-07 07:51:30 UTC (rev 99103)
+++ projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/AppNamingDeployer.java 2010-01-07 10:46:20 UTC (rev 99104)
@@ -68,7 +68,7 @@
.addAnnotation(annotation(ApplicationScope.class, appName))
.addConstructorParameter(String.class.getName(), appName);
builder.addPropertyMetaData("nameSpaces", builder.createInject("NameSpaces"));
- deploymentUnit.addAttachment(BeanMetaData.class, builder.getBeanMetaData());
+ deploymentUnit.addAttachment("java:app:" + BeanMetaData.class, builder.getBeanMetaData());
}
protected boolean isJavaEEApplication(DeploymentUnit deploymentUnit)
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-07 07:51:30 UTC (rev 99103)
+++ projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ComponentNamingDeployer.java 2010-01-07 10:46:20 UTC (rev 99104)
@@ -51,6 +51,9 @@
setInputs(informer.getRequiredAttachments());
addInput("java:module");
setOutput(BeanMetaData.class);
+ // if we don't work on components only you'll see a duplicate install of java:module
+ // because AbstractDeploymentUnit.getAttachments inherits attachments from the parent.
+ setComponentsOnly(true);
}
@Override
@@ -68,12 +71,25 @@
.addAnnotation(annotation(DeploymentScope.class, moduleName))
.addAnnotation(annotation(InstanceScope.class, name))
.addConstructorParameter(String.class.getName(), name);
+ if(appName != null)
+ builder.addAnnotation(annotation(ApplicationScope.class, appName));
AbstractInjectionValueMetaData javaModule = new AbstractInjectionValueMetaData("java:module");
javaModule.setSearch(new ParentsLookupStrategy());
builder.addConstructorParameter(JavaEEModule.class.getName(), javaModule);
- if(appName != null)
- builder.addAnnotation(annotation(ApplicationScope.class, appName));
+ builder.addPropertyMetaData("nameSpaces", builder.createInject("NameSpaces"));
- unit.addAttachment(BeanMetaData.class, builder.getBeanMetaData());
+ // VDF can't do component composition, so each BMD must be in a separate component
+ DeploymentUnit component = unit.getParent().addComponent(name + ".java:comp");
+ component.addAttachment(BeanMetaData.class, builder.getBeanMetaData());
}
+
+ @Override
+ protected void internalUndeploy(DeploymentUnit unit)
+ {
+ if(!informer.isJavaEEComponent(unit))
+ return;
+
+ String name = informer.getComponentName(unit);
+ unit.removeComponent(name + ".java:comp");
+ }
}
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-07 07:51:30 UTC (rev 99103)
+++ projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/ModuleNamingDeployer.java 2010-01-07 10:46:20 UTC (rev 99104)
@@ -85,7 +85,7 @@
builder.addConstructorParameter(JavaEEApplication.class.getName(), (Object) null);
builder.addPropertyMetaData("nameSpaces", builder.createInject("NameSpaces"));
- unit.addAttachment(BeanMetaData.class, builder.getBeanMetaData());
+ unit.addAttachment("java:module:" + BeanMetaData.class, builder.getBeanMetaData());
}
/**
Modified: projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/mc/MCJavaEEComponent.java
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/mc/MCJavaEEComponent.java 2010-01-07 07:51:30 UTC (rev 99103)
+++ projects/reloaded/trunk/naming-deployers/src/main/java/org/jboss/reloaded/naming/deployers/mc/MCJavaEEComponent.java 2010-01-07 10:46:20 UTC (rev 99104)
@@ -21,6 +21,7 @@
*/
package org.jboss.reloaded.naming.deployers.mc;
+import org.jboss.logging.Logger;
import org.jboss.reloaded.naming.spi.JavaEEComponent;
import org.jboss.reloaded.naming.spi.JavaEEModule;
import org.jnp.interfaces.NamingContext;
@@ -31,6 +32,8 @@
*/
public class MCJavaEEComponent extends AbstractNameSpace implements JavaEEComponent
{
+ private static final Logger log = Logger.getLogger(MCJavaEEComponent.class);
+
private JavaEEModule module;
public MCJavaEEComponent(String name, JavaEEModule module)
@@ -49,6 +52,8 @@
{
NamingServer srv = new NamingServer();
context = new NamingContext(nameSpaces.getGlobalContext().getEnvironment(), null, srv);
+
+ log.debug("Installed context " + context + " for JavaEE component " + name + " in module " + module.getName());
}
@Override
Added: projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyContainer.java
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyContainer.java (rev 0)
+++ projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyContainer.java 2010-01-07 10:46:20 UTC (rev 99104)
@@ -0,0 +1,106 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright (c) 2010, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.reloaded.naming.deployers.test.common;
+
+import org.jboss.logging.Logger;
+import org.jboss.reloaded.naming.CurrentComponent;
+import org.jboss.reloaded.naming.spi.JavaEEComponent;
+import org.jboss.util.naming.NonSerializableFactory;
+import org.jboss.util.naming.Util;
+
+import javax.naming.InitialContext;
+import java.util.concurrent.Callable;
+
+/**
+ * @author <a href="cdewolf at redhat.com">Carlo de Wolf</a>
+ */
+public class DummyContainer
+{
+ private static Logger log = Logger.getLogger(DummyContainer.class);
+
+ private JavaEEComponent component;
+ private InitialContext ctx;
+
+ public DummyContainer(JavaEEComponent component)
+ {
+ this.component = component;
+ }
+
+ private <R> R around(Callable<R> callable)
+ {
+ CurrentComponent.push(component);
+ try
+ {
+ return callable.call();
+ }
+ catch(Exception e)
+ {
+ if(e instanceof RuntimeException)
+ throw (RuntimeException) e;
+ throw new RuntimeException(e);
+ }
+ finally
+ {
+ CurrentComponent.pop();
+ }
+ }
+
+ public Object getValue(final String name)
+ {
+ return around(new Callable<Object>() {
+ public Object call() throws Exception
+ {
+ return ctx.lookup(name);
+ }
+ });
+ }
+
+ public void setValue(final String name, final String value)
+ {
+ around(new Callable<Void>() {
+ public Void call() throws Exception
+ {
+ Util.bind(ctx, name, value);
+ return null;
+ }
+ });
+ }
+
+ public void start() throws Exception
+ {
+ ctx = new InitialContext();
+
+ // normally done somewhere else
+ NonSerializableFactory.rebind(component.getModule().getContext(), component.getName(), this);
+
+ log.info("Started container " + this + " with java:comp context " + component.getContext());
+ }
+
+ public void stop() throws Exception
+ {
+ Util.unbind(component.getModule().getContext(), component.getName());
+
+ if(ctx != null)
+ ctx.close();
+ ctx = null;
+ }
+}
Property changes on: projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyContainer.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Added: projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyDeployer.java
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyDeployer.java (rev 0)
+++ projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyDeployer.java 2010-01-07 10:46:20 UTC (rev 99104)
@@ -0,0 +1,79 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright (c) 2010, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.reloaded.naming.deployers.test.common;
+
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.plugins.graph.Search;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.plugins.scope.ApplicationScope;
+import org.jboss.metadata.plugins.scope.DeploymentScope;
+import org.jboss.metadata.plugins.scope.InstanceScope;
+import org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer;
+import org.jboss.reloaded.naming.spi.JavaEEComponent;
+
+import static org.jboss.reloaded.naming.deployers.util.AnnotationHelper.annotation;
+
+/**
+ * @author <a href="cdewolf at redhat.com">Carlo de Wolf</a>
+ */
+public class DummyDeployer extends AbstractSimpleRealDeployer<DummyMetaData>
+{
+ private JavaEEComponentInformer informer;
+
+ public DummyDeployer()
+ {
+ super(DummyMetaData.class);
+ setOutput(BeanMetaData.class);
+ setComponentsOnly(true);
+ //setUseUnitName(true);
+ }
+
+ @Override
+ public void deploy(DeploymentUnit unit, DummyMetaData deployment) throws DeploymentException
+ {
+ String appName = informer.getApplicationName(unit);
+ String moduleName = informer.getModulePath(unit);
+ String name = informer.getComponentName(unit);
+
+ // create JavaEEModule bean
+ BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(name, DummyContainer.class.getName())
+ .addAnnotation(annotation(DeploymentScope.class, moduleName))
+ .addAnnotation(annotation(InstanceScope.class, name));
+ if(appName != null)
+ builder.addAnnotation(annotation(ApplicationScope.class, appName));
+ AbstractInjectionValueMetaData javaComponent = new AbstractInjectionValueMetaData("java:comp");
+ javaComponent.setSearch(Search.LOCAL);
+ builder.addConstructorParameter(JavaEEComponent.class.getName(), javaComponent);
+
+ unit.addAttachment(BeanMetaData.class, builder.getBeanMetaData());
+ }
+
+ public void setJavaEEComponentInformer(JavaEEComponentInformer informer)
+ {
+ this.informer = informer;
+ }
+}
Property changes on: projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/common/DummyDeployer.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
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-07 07:51:30 UTC (rev 99103)
+++ projects/reloaded/trunk/naming-deployers/src/test/java/org/jboss/reloaded/naming/deployers/test/simple/SimpleTestCase.java 2010-01-07 10:46:20 UTC (rev 99104)
@@ -38,17 +38,20 @@
import org.jboss.kernel.spi.deployment.KernelDeployment;
import org.jboss.metadata.ear.jboss.JBossAppMetaData;
import org.jboss.reloaded.naming.deployers.test.common.DummiesMetaData;
+import org.jboss.reloaded.naming.deployers.test.common.DummyContainer;
import org.jboss.reloaded.naming.service.NameSpaces;
+import org.jboss.util.naming.Util;
import org.jboss.virtual.AssembledDirectory;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
+import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import java.net.URL;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
@@ -164,18 +167,39 @@
}
@Test
- @Ignore
public void testComponents() throws Exception
{
AssembledDirectory root = AssembledDirectory.createAssembledDirectory("components", "components.jar");
VFSDeployment deployment = new AbstractVFSDeployment(root);
+ //((MutableAttachments) deployment.getPredeterminedManagedObjects()).addAttachment(DummiesMetaData.class, DummiesMetaData.create("A", "B"));
((MutableAttachments) deployment.getPredeterminedManagedObjects()).addAttachment(DummiesMetaData.class, DummiesMetaData.create("A", "B"));
mainDeployer.deploy(deployment);
// basically the lookup is what really checks the functionality, not null is a bonus
assertNotNull(ctx.lookup("java:global"));
- assertNotNull(ctx.lookup("java:global/components"));
+ Context c = (Context) ctx.lookup("java:global/components");
+ assertNotNull(c);
+ Util.bind(c, "test", "Hello world");
+
+ DummyContainer containerA = (DummyContainer) ctx.lookup("java:global/components/A");
+
+ String result = (String) containerA.getValue("java:module/test");
+ assertEquals("Hello world", result);
+
+ DummyContainer containerB = (DummyContainer) ctx.lookup("java:global/components/B");
+
+ containerA.setValue("java:comp/local", "a local value");
+ try
+ {
+ containerB.getValue("java:comp/local");
+ }
+ catch(RuntimeException e)
+ {
+ // good
+ // TODO: should be a NameNotFoundException
+ }
+
mainDeployer.undeploy(deployment);
assertNameNotFound("java:global/components");
Modified: projects/reloaded/trunk/naming-deployers/src/test/resources/dummy-deployers-beans.xml
===================================================================
--- projects/reloaded/trunk/naming-deployers/src/test/resources/dummy-deployers-beans.xml 2010-01-07 07:51:30 UTC (rev 99103)
+++ projects/reloaded/trunk/naming-deployers/src/test/resources/dummy-deployers-beans.xml 2010-01-07 10:46:20 UTC (rev 99104)
@@ -1,4 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="urn:jboss:bean-deployer:2.0">
<bean name="DummiesDeployer" class="org.jboss.reloaded.naming.deployers.test.common.DummiesDeployer"/>
+ <bean name="DummyDeployer" class="org.jboss.reloaded.naming.deployers.test.common.DummyDeployer">
+ <property name="javaEEComponentInformer"><inject bean="JavaEEComponentInformer"/></property>
+ </bean>
</deployment>
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list