looking at the practicalities of running 1.x and 2.x runtimes in the same JVM. Doesn't do anything interesting yet.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835512 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7f9ab2a980
commit
0e6af7f88e
9 changed files with 456 additions and 0 deletions
BIN
sandbox/slaws/runtimecompat/1xcalculator.jar
Normal file
BIN
sandbox/slaws/runtimecompat/1xcalculator.jar
Normal file
Binary file not shown.
62
sandbox/slaws/runtimecompat/1xlauncher/pom.xml
Normal file
62
sandbox/slaws/runtimecompat/1xlauncher/pom.xml
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-sca</artifactId>
|
||||
<version>1.6-SNAPSHOT</version>
|
||||
</parent><version>1.0-SNAPSHOT</version>
|
||||
<artifactId>1x-launcher</artifactId>
|
||||
<name>Apache Tuscany SCA 1.x Launcher</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-node-api</artifactId>
|
||||
<version>1.6-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-implementation-java-runtime</artifactId>
|
||||
<version>1.6-SNAPSHOT</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-implementation-node-runtime</artifactId>
|
||||
<version>1.6-SNAPSHOT</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${artifactId}</finalName>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* 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 launcher;
|
||||
|
||||
import org.apache.tuscany.sca.node.SCAContribution;
|
||||
import org.apache.tuscany.sca.node.SCANode;
|
||||
import org.apache.tuscany.sca.node.SCANodeFactory;
|
||||
|
||||
public class OneXLauncher {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
SCANode node = SCANodeFactory.newInstance().createSCANode("Calculator.composite",
|
||||
new SCAContribution("calculator", "../1xcalculator.jar"));
|
||||
|
||||
node.start();
|
||||
|
||||
node.stop();
|
||||
}
|
||||
}
|
||||
BIN
sandbox/slaws/runtimecompat/2xcalculator.jar
Normal file
BIN
sandbox/slaws/runtimecompat/2xcalculator.jar
Normal file
Binary file not shown.
63
sandbox/slaws/runtimecompat/2xlauncher/pom.xml
Normal file
63
sandbox/slaws/runtimecompat/2xlauncher/pom.xml
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-sca</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<artifactId>2x-launcher</artifactId>
|
||||
<name>Apache Tuscany SCA 2.x Launcher</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-node-api</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-node-impl</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-implementation-java-runtime</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${artifactId}</finalName>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* 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 launcher;
|
||||
|
||||
import org.apache.tuscany.sca.node.Contribution;
|
||||
import org.apache.tuscany.sca.node.Node;
|
||||
import org.apache.tuscany.sca.node.NodeFactory;
|
||||
|
||||
|
||||
public class TwoXLauncher {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
Node node = NodeFactory.newInstance().createNode("Calculator.composite",
|
||||
new Contribution("calculator", "../2xcalculator.jar"));
|
||||
|
||||
node.start();
|
||||
|
||||
|
||||
node.stop();
|
||||
}
|
||||
}
|
||||
61
sandbox/slaws/runtimecompat/combinedlauncher/pom.xml
Normal file
61
sandbox/slaws/runtimecompat/combinedlauncher/pom.xml
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-sca</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<artifactId>combined-launcher</artifactId>
|
||||
<name>Apache Tuscany SCA Combined Launcher</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-node-launcher-equinox</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<!-- dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-node-api</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-node-api</artifactId>
|
||||
<version>1.6-SNAPSHOT</version>
|
||||
</dependency -->
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${artifactId}</finalName>
|
||||
</build>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* 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 launcher;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URL;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.tuscany.sca.node.equinox.launcher.EquinoxHost;
|
||||
import org.osgi.framework.Bundle;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
|
||||
public class CombinedLauncher {
|
||||
|
||||
private static final String TWO_X_NODE_LAUNCHER_EQUINOX_BUNDLE = "org.apache.tuscany.sca.node.launcher.equinox";
|
||||
private static final String TWO_X_NODE_LAUNCHER_UTIL = "org.apache.tuscany.sca.node.equinox.launcher.NodeLauncherUtil";
|
||||
private static final String TWO_X_CONTRIBUTION = "org.apache.tuscany.sca.node.equinox.launcher.Contribution";
|
||||
|
||||
private static final String TWO_X_NODE_API_BUNDLE = "org.apache.tuscany.sca.node.api";
|
||||
private static final String TWO_X_NODE = "org.apache.tuscany.sca.node.Node";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
// fire up the equinox host for the core set of Tuscany bundles
|
||||
// enough to run the calculator sample
|
||||
|
||||
// set TUSCANY_HOME environment variable to get
|
||||
// equinox host to load all the 2.x Tuscany
|
||||
// bundles + dependencies
|
||||
// Hack so that I don't have to remember to
|
||||
// set the environment variable. Don't do this at home
|
||||
System.setProperty("TUSCANY_HOME",
|
||||
"../../../java-2.x/distribution/all/target/apache-tuscany-sca-all-2.0-SNAPSHOT-dir/tuscany-sca-2.0-SNAPSHOT");
|
||||
EquinoxHost equinoxHost = new EquinoxHost();
|
||||
BundleContext bundleContext = equinoxHost.start();
|
||||
|
||||
// need to add in the 1.x bundle(s) also
|
||||
// TODO
|
||||
|
||||
// load 2xcalculator?
|
||||
// find the the 2.x node launcher util
|
||||
// Get the node runtime bundle.
|
||||
Bundle bundle = null;
|
||||
for (Bundle b : bundleContext.getBundles()) {
|
||||
if (TWO_X_NODE_LAUNCHER_EQUINOX_BUNDLE.equals(b.getSymbolicName())) {
|
||||
bundle = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (bundle == null) {
|
||||
throw new IllegalStateException("Bundle " + TWO_X_NODE_LAUNCHER_EQUINOX_BUNDLE + " is not installed");
|
||||
}
|
||||
|
||||
// All this reflection not strictly needed given the current
|
||||
// module dependencies. Just experimenting
|
||||
Class<?> contributionClass = bundle.loadClass(TWO_X_CONTRIBUTION);
|
||||
Constructor<?> constructor = contributionClass.getConstructor(String.class, String.class);
|
||||
|
||||
Class<?> bootstrapClass = bundle.loadClass(TWO_X_NODE_LAUNCHER_UTIL);
|
||||
Class<?> contributionArrayClass = Array.newInstance(contributionClass, 0).getClass();
|
||||
Method nodeMethod = bootstrapClass.getMethod("node", String.class, String.class, String.class, contributionArrayClass, BundleContext.class);
|
||||
|
||||
bundle = null;
|
||||
for (Bundle b : bundleContext.getBundles()) {
|
||||
if (TWO_X_NODE_API_BUNDLE.equals(b.getSymbolicName())) {
|
||||
bundle = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (bundle == null) {
|
||||
throw new IllegalStateException("Bundle " + TWO_X_NODE_API_BUNDLE + " is not installed");
|
||||
}
|
||||
|
||||
Class<?> nodeClass = bundle.loadClass(TWO_X_NODE);
|
||||
Method startMethod = nodeClass.getMethod("start");
|
||||
|
||||
String configurationURI = null;
|
||||
String compositeURI = null;
|
||||
String compositeContent = null;
|
||||
Object contribution = constructor.newInstance("calculator", "../2xcalculator.jar");
|
||||
Object[] contributions = (Object[])Array.newInstance(contributionClass, 1);
|
||||
contributions[0] = contribution;
|
||||
|
||||
Object node = nodeMethod.invoke(null,
|
||||
configurationURI,
|
||||
compositeURI,
|
||||
compositeContent,
|
||||
contributionArrayClass.cast(contributions),
|
||||
bundleContext);
|
||||
|
||||
startMethod.invoke(node);
|
||||
|
||||
System.out.println("2.x Started");
|
||||
|
||||
// load 1xcalculator?
|
||||
// find the the 1.x node launcher
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Node node = NodeFactory.newInstance().createNode("Calculator.composite",
|
||||
new Contribution("calculator", "../2xcalculator.jar"));
|
||||
|
||||
node.start();
|
||||
node.stop();
|
||||
*/
|
||||
equinoxHost.stop();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
65
sandbox/slaws/runtimecompat/pom.xml
Normal file
65
sandbox/slaws/runtimecompat/pom.xml
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* 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.
|
||||
-->
|
||||
<project>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.apache.tuscany.sca</groupId>
|
||||
<artifactId>tuscany-sca</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>tuscany-itest-runtime-compatibility</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Apache Tuscany SCA Integration Test Runtime Compatibility</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.5</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.easymock</groupId>
|
||||
<artifactId>easymock</artifactId>
|
||||
<version>2.4</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
<profiles>
|
||||
|
||||
<profile>
|
||||
<id>default</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>1xlauncher</module>
|
||||
<module>2xlauncher</module>
|
||||
<module>combinedlauncher</module>
|
||||
</modules>
|
||||
</profile>
|
||||
|
||||
</profiles>
|
||||
|
||||
</project>
|
||||
Loading…
Add table
Add a link
Reference in a new issue