Diff
Property changes: trunk/servicemix-lwcontainer
Name: svn:ignore
+ .classpath
.project
target
Modified: trunk/servicemix-lwcontainer/maven.xml (1035 => 1036)
--- trunk/servicemix-lwcontainer/maven.xml 2005-12-07 14:20:22 UTC (rev 1035)
+++ trunk/servicemix-lwcontainer/maven.xml 2005-12-07 14:22:30 UTC (rev 1036)
@@ -7,25 +7,4 @@
<goal name="nightly" prereqs="clean, jar:install, jbi:install, jar:deploy, jbi:deploy"/>
- <postGoal name="java:compile">
- <attainGoal name="xbean:generate" />
- </postGoal>
-
- <goal name="xbean:generate" description="Generates the XBean XSD, documentation and META-INF/services files.">
- <path id="test.classpath">
- <pathelement path="${maven.build.dest}" />
- <pathelement path="${basedir}/target/classes" />
- <pathelement path="${basedir}/target/test-classes" />
- <path refid="maven.dependency.classpath" />
- </path>
-
- <taskdef name="xsdGenerate" classname="org.xbean.spring.generator.MappingGeneratorTask">
- <classpath refid="test.classpath" />
- </taskdef>
- <xsdGenerate destFile="${basedir}/target/servicemix-lwcontainer-${pom.currentVersion}.xsd" namespace="http://servicemix.org/lwcontainer/1.0"
- classpathref="test.classpath" srcdir="${basedir}/src/main/java" metaInfDir="${basedir}/target/generated/"/>
- <copy file="${basedir}/target/servicemix-jsr181-${pom.currentVersion}.xsd" todir="${basedir}/target/generated/"/>
- <copy file="${basedir}/target/servicemix-jsr181-${pom.currentVersion}.xsd" todir="${basedir}/../xdocs"/>
- <copy file="${basedir}/target/servicemix-jsr181-${pom.currentVersion}.xsd.html" todir="${basedir}/../xdocs"/>
- </goal>
</project>
Modified: trunk/servicemix-lwcontainer/project.properties (1035 => 1036)
--- trunk/servicemix-lwcontainer/project.properties 2005-12-07 14:20:22 UTC (rev 1035)
+++ trunk/servicemix-lwcontainer/project.properties 2005-12-07 14:22:30 UTC (rev 1036)
@@ -2,5 +2,3 @@
jbi.bootstrap.class.name = org.servicemix.lwcontainer.LwContainerBootstrap
jbi.component.type=service-engine
-org.apache.commons.attributes.enable=true
-org.apache.commons.attributes.index.enable=true
Modified: trunk/servicemix-lwcontainer/project.xml (1035 => 1036)
--- trunk/servicemix-lwcontainer/project.xml 2005-12-07 14:20:22 UTC (rev 1035)
+++ trunk/servicemix-lwcontainer/project.xml 2005-12-07 14:22:30 UTC (rev 1036)
@@ -175,22 +175,6 @@
<version>${log4j_version}</version>
</dependency>
- <dependency>
- <groupId>annogen</groupId>
- <artifactId>annogen</artifactId>
- <version>${annogen_version}</version>
- <properties>
- <scope>compile</scope>
- </properties>
- </dependency>
- <dependency>
- <groupId>qdox</groupId>
- <artifactId>qdox</artifactId>
- <version>${qdox_version}</version>
- <properties>
- <scope>compile</scope>
- </properties>
- </dependency>
</dependencies>
<build>
@@ -201,22 +185,5 @@
<excludes>
</excludes>
</unitTest>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <includes>
- <include>**/*.properties</include>
- <include>**/*.xml</include>
- <include>**/*</include>
- </includes>
- </resource>
- <resource>
- <directory>target/generated</directory>
- <includes>
- <include>**/*</include>
- </includes>
- <filtering>false</filtering>
- </resource>
- </resources>
</build>
</project>
Added: trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerBootstrap.java (1035 => 1036)
--- trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerBootstrap.java 2005-12-07 14:20:22 UTC (rev 1035)
+++ trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerBootstrap.java 2005-12-07 14:22:30 UTC (rev 1036)
@@ -0,0 +1,7 @@
+package org.servicemix.lwcontainer;
+
+import org.servicemix.common.BaseBootstrap;
+
+public class LwContainerBootstrap extends BaseBootstrap {
+
+}
Added: trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerComponent.java (1035 => 1036)
--- trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerComponent.java 2005-12-07 14:20:22 UTC (rev 1035)
+++ trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerComponent.java 2005-12-07 14:22:30 UTC (rev 1036)
@@ -0,0 +1,17 @@
+package org.servicemix.lwcontainer;
+
+import org.servicemix.common.BaseComponent;
+import org.servicemix.common.BaseServiceUnitManager;
+import org.servicemix.common.Deployer;
+
+public class LwContainerComponent extends BaseComponent {
+
+ /* (non-Javadoc)
+ * @see org.servicemix.common.BaseComponent#createServiceUnitManager()
+ */
+ public BaseServiceUnitManager createServiceUnitManager() {
+ Deployer[] deployers = new Deployer[] { new LwContainerXBeanDeployer(this) };
+ return new BaseServiceUnitManager(this, deployers);
+ }
+
+}
Added: trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerEndpoint.java (1035 => 1036)
--- trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerEndpoint.java 2005-12-07 14:20:22 UTC (rev 1035)
+++ trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerEndpoint.java 2005-12-07 14:22:30 UTC (rev 1036)
@@ -0,0 +1,57 @@
+package org.servicemix.lwcontainer;
+
+import javax.jbi.component.ComponentContext;
+import javax.jbi.messaging.MessageExchange.Role;
+import javax.xml.namespace.QName;
+
+import org.activemq.util.IdGenerator;
+import org.servicemix.common.Endpoint;
+import org.servicemix.common.ExchangeProcessor;
+import org.servicemix.jbi.container.ActivationSpec;
+import org.servicemix.jbi.container.JBIContainer;
+import org.servicemix.jbi.framework.ComponentContextImpl;
+
+public class LwContainerEndpoint extends Endpoint {
+
+ private static final QName SERVICE_NAME = new QName("http://lwcontainer.servicemix.org", "LwContainerComponent");
+
+ private ActivationSpec activationSpec;
+
+ public LwContainerEndpoint(ActivationSpec activationSpec) {
+ this.activationSpec = activationSpec;
+ this.service = SERVICE_NAME;
+ if (activationSpec.getId() != null) {
+ this.endpoint = activationSpec.getId();
+ } else if (activationSpec.getComponentName() != null) {
+ this.endpoint = activationSpec.getComponentName();
+ } else {
+ this.endpoint = new IdGenerator().generateId();
+ }
+ }
+
+ public Role getRole() {
+ throw new UnsupportedOperationException();
+ }
+
+ public void activate() throws Exception {
+ getContainer().activateComponent(activationSpec);
+
+ }
+
+ public void deactivate() throws Exception {
+ getContainer().deactivateComponent(activationSpec.getId());
+ }
+
+ public ExchangeProcessor getProcessor() {
+ throw new UnsupportedOperationException();
+ }
+
+ public JBIContainer getContainer() {
+ ComponentContext context = getServiceUnit().getComponent().getComponentContext();
+ if( context instanceof ComponentContextImpl ) {
+ return ((ComponentContextImpl) context).getContainer();
+ }
+ throw new IllegalStateException("LwContainer component can only be deployed in ServiceMix");
+ }
+
+}
Added: trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerXBeanDeployer.java (1035 => 1036)
--- trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerXBeanDeployer.java 2005-12-07 14:20:22 UTC (rev 1035)
+++ trunk/servicemix-lwcontainer/src/main/java/org/servicemix/lwcontainer/LwContainerXBeanDeployer.java 2005-12-07 14:22:30 UTC (rev 1036)
@@ -0,0 +1,38 @@
+package org.servicemix.lwcontainer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.servicemix.common.BaseComponent;
+import org.servicemix.common.xbean.AbstractXBeanDeployer;
+import org.servicemix.jbi.container.ActivationSpec;
+import org.servicemix.jbi.container.SpringServiceUnitContainer;
+import org.xbean.kernel.Kernel;
+import org.xbean.kernel.StringServiceName;
+
+public class LwContainerXBeanDeployer extends AbstractXBeanDeployer {
+
+ public LwContainerXBeanDeployer(BaseComponent component) {
+ super(component);
+ }
+
+ protected String getXBeanFile() {
+ return "servicemix";
+ }
+
+ protected List getServices(Kernel kernel) {
+ try {
+ Object jbi = kernel.getService(new StringServiceName("jbi"));
+ SpringServiceUnitContainer suContainer = (SpringServiceUnitContainer) jbi;
+ ActivationSpec[] specs = suContainer.getActivationSpecs();
+ List services = new ArrayList();
+ for (int i = 0; i < specs.length; i++) {
+ services.add(new LwContainerEndpoint(specs[i]));
+ }
+ return services;
+ } catch (Exception e) {
+ throw new RuntimeException("Can not find 'jbi' bean", e);
+ }
+ }
+
+}
Added: trunk/servicemix-lwcontainer/src/test/java/org/servicemix/lwcontainer/LwContainerComponentTest.java (1035 => 1036)
--- trunk/servicemix-lwcontainer/src/test/java/org/servicemix/lwcontainer/LwContainerComponentTest.java 2005-12-07 14:20:22 UTC (rev 1035)
+++ trunk/servicemix-lwcontainer/src/test/java/org/servicemix/lwcontainer/LwContainerComponentTest.java 2005-12-07 14:22:30 UTC (rev 1036)
@@ -0,0 +1,130 @@
+/**
+ *
+ * Copyright 2005 Unity Systems, LLC. http://www.unity-systems.com
+ *
+ * Licensed 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.servicemix.lwcontainer;
+
+import org.servicemix.client.DefaultServiceMixClient;
+import org.servicemix.client.ServiceMixClient;
+import org.servicemix.jbi.container.JBIContainer;
+
+import javax.jbi.messaging.InOut;
+import javax.jbi.messaging.MessagingException;
+import javax.xml.namespace.QName;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ * @version $Revision$
+ */
+public class LwContainerComponentTest extends TestCase {
+ protected JBIContainer container = new JBIContainer();
+
+ private File tempRootDir;
+
+ /*
+ * @see TestCase#setUp()
+ */
+ protected void setUp() throws Exception {
+ super.setUp();
+ container.setCreateMBeanServer(false);
+ container.setMonitorInstallationDirectory(false);
+ tempRootDir = File.createTempFile("servicemix", "rootDir");
+ tempRootDir.delete();
+ File tempTemp = new File(tempRootDir.getAbsolutePath() + "/temp");
+ if (!tempTemp.mkdirs())
+ fail("Unable to create temporary working root directory ["
+ + tempTemp.getAbsolutePath() + "]");
+
+ System.out.println("Using temporary root directory ["
+ + tempRootDir.getAbsolutePath() + "]");
+
+ container.setRootDir(tempRootDir.getAbsolutePath());
+ container.setMonitorInstallationDirectory(false);
+ container.setUseMBeanServer(false);
+ container.setCreateMBeanServer(false);
+ container.setFlowName("st");
+ container.init();
+ container.start();
+ }
+
+ public void testComponentInstallation() throws Exception {
+ LwContainerComponent component = new LwContainerComponent();
+ container.activateComponent(component, "#ServiceMixComponent#");
+ URL url = ""
+ File path = new File(new URI(url.toString()));
+ path = path.getParentFile();
+ ServiceMixClient client = new DefaultServiceMixClient(container);
+
+ for (int i = 0; i < 2; i++) {
+ // Deploy and start su
+ component.getServiceUnitManager().deploy("su1", path.getAbsolutePath());
+ component.getServiceUnitManager().init("su1", path.getAbsolutePath());
+ component.getServiceUnitManager().start("su1");
+
+ // Send message
+ InOut inout = client.createInOutExchange();
+ inout.setService(new QName("http://servicemix.org/demo/", "chained"));
+ client.send(inout);
+
+ // Stop and undeploy
+ component.getServiceUnitManager().stop("su1");
+ component.getServiceUnitManager().shutDown("su1");
+ component.getServiceUnitManager().undeploy("su1", path.getAbsolutePath());
+
+ // Send message
+ inout = client.createInOutExchange();
+ inout.setService(new QName("http://servicemix.org/demo/", "chained"));
+ try {
+ client.send(inout);
+ } catch (MessagingException e) {
+ // Ok, the lw component is undeployed
+ }
+
+ }
+ }
+
+ /*
+ * @see TestCase#tearDown()
+ */
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ container.stop();
+ container.shutDown();
+ deleteDir(tempRootDir);
+ }
+
+ public static boolean deleteDir(File dir) {
+ System.out.println("Deleting directory : " + dir.getAbsolutePath());
+ if (dir.isDirectory()) {
+ String[] children = dir.list();
+ for (int i = 0; i < children.length; i++) {
+ boolean success = deleteDir(new File(dir, children[i]));
+ if (!success) {
+ return false;
+ }
+ }
+ }
+ // The directory is now empty so delete it
+ return dir.delete();
+ }
+}
Copied: trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/au1-src (from rev 1017, trunk/core/src/test/resources/org/servicemix/components/servicemix/au1-src) ( => )
Copied: trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/au1.zip (from rev 1017, trunk/core/src/test/resources/org/servicemix/components/servicemix/au1.zip)
Copied: trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/build.sh (from rev 1017, trunk/core/src/test/resources/org/servicemix/components/servicemix/build.sh) ( => )
Copied: trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/component-src (from rev 1017, trunk/core/src/test/resources/org/servicemix/components/servicemix/component-src)
Copied: trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/component.zip (from rev 1017, trunk/core/src/test/resources/org/servicemix/components/servicemix/component.zip) ( => )
Copied: trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/example.xml (from rev 1017, trunk/core/src/test/resources/org/servicemix/components/servicemix/example.xml)
Copied: trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/su1-src (from rev 1017, trunk/core/src/test/resources/org/servicemix/components/servicemix/su1-src) ( => )
Modified: trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/su1-src/servicemix.xml
===================================================================
--- trunk/core/src/test/resources/org/servicemix/components/servicemix/su1-src/servicemix.xml 2005-12-06 13:01:23 UTC (rev 1017)
+++ trunk/servicemix-lwcontainer/src/test/resources/org/servicemix/lwcontainer/su1-src/servicemix.xml 2005-12-07 14:22:30 UTC (rev 1036)
@@ -1,38 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- START SNIPPET: servicemix -->
<beans xmlns:my="http://servicemix.org/demo/"
- xmlns:sm="http://servicemix.org/config/1.0">
+ xmlns:sm="http://servicemix.org/config/1.0">
- <sm:activationSpec service="my:echo">
- <sm:component>
- <bean class="org.servicemix.components.util.EchoComponent" />
- </sm:component>
- </sm:activationSpec>
+ <sm:serviceunit id="jbi">
+ <sm:activationSpecs>
+
+ <sm:activationSpec service="my:echo">
+ <sm:component>
+ <bean class="org.servicemix.components.util.EchoComponent" />
+ </sm:component>
+ </sm:activationSpec>
- <sm:activationSpec service="my:chained">
- <sm:component>
- <bean class="org.servicemix.components.util.ChainedComponent">
- <property name="services">
- <list>
- <bean
- class="javax.xml.namespace.QName">
- <constructor-arg value="http://servicemix.org/demo/" />
- <constructor-arg value="echo" />
- </bean>
- </list>
- </property>
- </bean>
- </sm:component>
- </sm:activationSpec>
+ <sm:activationSpec service="my:chained">
+ <sm:component>
+ <bean class="org.servicemix.components.util.ChainedComponent">
+ <property name="services">
+ <list>
+ <bean class="javax.xml.namespace.QName">
+ <constructor-arg value="http://servicemix.org/demo/" />
+ <constructor-arg value="echo" />
+ </bean>
+ </list>
+ </property>
+ </bean>
+ </sm:component>
+ </sm:activationSpec>
- <sm:activationSpec service="my:trace">
- <sm:component>
- <bean class="org.servicemix.components.util.TraceComponent" />
- </sm:component>
- <sm:subscriptions>
- <sm:subscriptionSpec service="my:chained"/>
- </sm:subscriptions>
- </sm:activationSpec>
+ <sm:activationSpec service="my:trace">
+ <sm:component>
+ <bean class="org.servicemix.components.util.TraceComponent" />
+ </sm:component>
+ <sm:subscriptions>
+ <sm:subscriptionSpec service="my:chained"/>
+ </sm:subscriptions>
+ </sm:activationSpec>
+ </sm:activationSpecs>
+ </sm:serviceunit>
+
</beans>
<!-- END SNIPPET: servicemix -->