summaryrefslogtreecommitdiffstats
path: root/sandbox
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2011-03-15 13:16:11 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2011-03-15 13:16:11 +0000
commit010614153f2b109a9a65abf2b9151b7cd9d82627 (patch)
tree6b43dbc3bf769f0ecd91f519353d41744190947f /sandbox
parentb265b544fedd3e442e17111e27558ffa51e9e359 (diff)
Take a copy from 2.x trunk as I'm going to remove it from there shortly.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1081768 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sandbox')
-rw-r--r--sandbox/slaws/bundle/commands.txt227
-rw-r--r--sandbox/slaws/bundle/obr/repository.xml52
-rw-r--r--sandbox/slaws/bundle/pom.xml265
-rw-r--r--sandbox/slaws/bundle/src/main/java/sample/Helloworld.java28
-rw-r--r--sandbox/slaws/bundle/src/main/java/sample/impl/HelloworldImpl.java43
-rw-r--r--sandbox/slaws/bundle/src/main/java/sample/impl/SampleActivator.java45
-rw-r--r--sandbox/slaws/bundle/src/main/resources/META-INF/sca-contribution.xml25
-rw-r--r--sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor20
-rw-r--r--sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions17
-rw-r--r--sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.PolicyProviderFactory18
-rw-r--r--sandbox/slaws/bundle/src/main/resources/definitions.xml60
-rw-r--r--sandbox/slaws/bundle/src/main/resources/helloworld.composite50
-rw-r--r--sandbox/slaws/bundle/src/test/java/sample/HelloworldTestCase.java216
13 files changed, 1066 insertions, 0 deletions
diff --git a/sandbox/slaws/bundle/commands.txt b/sandbox/slaws/bundle/commands.txt
new file mode 100644
index 0000000000..b784087833
--- /dev/null
+++ b/sandbox/slaws/bundle/commands.txt
@@ -0,0 +1,227 @@
+// Show the test bundle resolving against the Tuscany base repo
+
+java -jar bin/felix.jar
+
+obr:repos add file:///D:/sca-java-2.x/unreleased/testing/itest/bundle/target/repository.xml
+
+obr:list
+
+Apache Felix Bundle Repository (1.4.3, ...)
+Apache Felix Configuration Admin Service (1.2.4, ...)
+Apache Felix Declarative Services (1.6.0, ...)
+Apache Felix EventAdmin (1.0.0)
+Apache Felix File Install (3.0.2, ...)
+Apache Felix Gogo Command (0.8.0, ...)
+Apache Felix Gogo Runtime (0.8.0, ...)
+Apache Felix Gogo Shell (0.8.0, ...)
+Apache Felix Gogo Shell Commands (0.2.0)
+Apache Felix Gogo Shell Console (0.2.0)
+Apache Felix Gogo Shell Launcher (0.2.0)
+Apache Felix Gogo Shell Runtime (0.2.0)
+Apache Felix Http Api (2.0.4)
+Apache Felix Http Base (2.0.4)
+Apache Felix Http Bridge (2.0.4)
+Apache Felix Http Bundle (2.0.4)
+Apache Felix Http Jetty (2.0.4)
+Apache Felix Http Proxy (2.0.4)
+Apache Felix Http Samples - Filter (2.0.4)
+Apache Felix Http Samples - Whiteboard (2.0.4)
+Apache Felix HTTP Service Jetty (1.0.1, ...)
+Apache Felix Http Whiteboard (2.0.4)
+Apache Felix iPOJO (1.8.0, ...)
+Apache Felix iPOJO (0.8.0)
+Apache Felix iPOJO API (1.6.0, ...)
+Apache Felix iPOJO Arch Command (1.6.0, ...)
+Apache Felix iPOJO Composite (1.8.0, ...)
+Apache Felix iPOJO Composite (1.0.0, ...)
+Apache Felix iPOJO Event Admin Handler (1.6.0, ...)
+Apache Felix iPOJO Extender Pattern Handler (1.4.0, ...)
+Apache Felix iPOJO Extender Pattern Handler (1.0.0, ...)
+Apache Felix iPOJO Gogo Command (1.0.1, ...)
+Apache Felix iPOJO JMX Handler (1.4.0, ...)
+Apache Felix iPOJO Temporal Service Dependency Handler (1.6.0,
+Apache Felix iPOJO URL Handler (1.6.0, ...)
+Apache Felix iPOJO WebConsole Plugins (1.6.0, ...)
+Apache Felix iPOJO White Board Pattern Handler (1.2.0, ...)
+Apache Felix iPOJO White Board Pattern Handler (1.4.0)
+Apache Felix Log Service (1.0.0)
+Apache Felix Metatype Service (1.0.2, ...)
+Apache Felix Prefrences Service (1.0.2)
+Apache Felix Remote Shell (1.0.4, ...)
+Apache Felix Remote Shell (1.1.2, ...)
+Apache Felix Shell Service (1.4.2, ...)
+Apache Felix Shell TUI (1.4.1, ...)
+Apache Felix UPnP Base Driver (0.8.0)
+Apache Felix UPnP Extra (0.4.0)
+Apache Felix UPnP Tester (0.4.0)
+Apache Felix Web Console Event Plugin (1.0.2)
+Apache Felix Web Console Memory Usage Plugin (1.0.0)
+Apache Felix Web Console Memory Usage Plugin (1.0.2)
+Apache Felix Web Console UPnP Plugin (1.0.0)
+Apache Felix Web Management Console (3.1.2, ...)
+Apache Felix Web Management Console (3.1.2, ...)
+Apache Tuscany Java Interface for JAXWS (2.0.0)
+Apache Tuscany Launcher (2.0.0)
+Apache Tuscany Python Implementation Model (2.0.0)
+Apache Tuscany SCA API (2.0.0)
+Apache Tuscany SCA Assembly Model (2.0.0)
+Apache Tuscany SCA Assembly Model XML Schemas (2.0.0)
+Apache Tuscany SCA Atom Feed Binding Extension (2.0.0)
+Apache Tuscany SCA BPEL Implementation Model (2.0.0)
+Apache Tuscany SCA Client Impl (2.0.0)
+Apache Tuscany SCA Comet Binding Model (2.0.0)
+Apache Tuscany SCA Common HTTP (2.0.0)
+Apache Tuscany SCA Common Java (2.0.0)
+Apache Tuscany SCA Common XML (2.0.0)
+Apache Tuscany SCA Contribution Model (2.0.0)
+Apache Tuscany SCA CORBA Binding Extension (2.0.0)
+Apache Tuscany SCA CORBA Host Extension Point (2.0.0)
+Apache Tuscany SCA Core Runtime (2.0.0)
+Apache Tuscany SCA Core SPI (2.0.0)
+Apache Tuscany SCA Core/DataBinding Integration (2.0.0)
+Apache Tuscany SCA Data API (2.0.0)
+Apache Tuscany SCA Data Binding for JAXB (2.0.0)
+Apache Tuscany SCA DataBinding Framework (2.0.0)
+Apache Tuscany SCA Default Binding Model (2.0.0)
+Apache Tuscany SCA Deployment (2.0.0)
+Apache Tuscany SCA EJB Binding Model (2.0.0)
+Apache Tuscany SCA Extensibility (2.0.0)
+Apache Tuscany SCA HTTP Binding Model (2.0.0)
+Apache Tuscany SCA HTTP Servlet Host Extension Point (2.0.0)
+Apache Tuscany SCA Java Implementation Model (2.0.0)
+Apache Tuscany SCA Java Implementation Model (2.0.0)
+Apache Tuscany SCA Java Interface Model (2.0.0)
+Apache Tuscany SCA JAX-RS Implementation Model (2.0.0)
+Apache Tuscany SCA JAXWS RI based WS Binding Extension (2.0.0)
+Apache Tuscany SCA JAXWS-based WS Binding Extension (2.0.0)
+Apache Tuscany SCA Jetty Servlet Host Extension (2.0.0)
+Apache Tuscany SCA JMS Binding Model (2.0.0)
+Apache Tuscany SCA JSON-RPC Binding Model (2.0.0)
+Apache Tuscany SCA JSONP Binding Model (2.0.0)
+Apache Tuscany SCA Model Builders (2.0.0)
+Apache Tuscany SCA Monitor (2.0.0)
+Apache Tuscany SCA Node API (2.0.0)
+Apache Tuscany SCA Node Implementation (2.0.0)
+Apache Tuscany SCA REST Binding Model (2.0.0)
+Apache Tuscany SCA RMI Binding Model (2.0.0)
+Apache Tuscany SCA Script Implementation Model (2.0.0)
+Apache Tuscany SCA Shell (2.0.0)
+Apache Tuscany SCA Spring Implementation Model (2.0.0)
+Apache Tuscany SCA Web Implementation Web Model (2.0.0)
+Apache Tuscany SCA Web Implementation Web Runtime (2.0.0)
+Apache Tuscany SCA Web Service binding WSDL Generator (2.0.0)
+Apache Tuscany SCA Webapp Host (2.0.0)
+Apache Tuscany SCA Widget Implementation Model (2.0.0)
+Apache Tuscany SCA Wink (2.0.0)
+Apache Tuscany SCA WS Binding Model (2.0.0)
+Apache Tuscany SCA WSDL Interface Model (2.0.0)
+Apache Tuscany SCA XML Assembly Model (2.0.0)
+Apache Tuscany SCA XSD Model (2.0.0)
+Apache Tuscany Security Policy Model (2.0.0)
+asm.asm (3.1.0)
+cglib.cglib (2.2.0)
+jsr311-api (1.1.1)
+OSGi OBR Service API (1.0.0)
+OSGi R4 Compendium Bundle (4.0.0)
+Servlet 2.1 API (1.0.0)
+wsdl4j.wsdl4j (1.6.2)
+XmlSchema (1.4.3)
+
+obr:repos list
+
+file:/D:/sca-java-2.x/unreleased/testing/itest/bundle/target/repository.xml
+http://felix.apache.org/obr/releases.xml
+
+
+//install file:///D:/sca-java-2.x/modules/sca-api/target/tuscany-sca-api-2.0-SNAPSHOT.jar
+//start #
+
+install file:///D:/sca-java-2.x/unreleased/testing/itest/bundle/target/bundle-2.0-SNAPSHOT.jar
+start #
+
+
+// Create repository.xml for a maven resource or repository
+
+mvn org.apache.felix:maven-bundle-plugin:2.1.0:install-file -DpomFile=pom.xml -Dfile=target\bundle-2.0-SNAPSHOT.jar
+mvn org.apache.felix:maven-bundle-plugin:2.1.0:install-file -DpomFile=pom.xml -Dfile=target\tuscany-sca-api-2.0-SNAPSHOT.jar
+
+mvn org.apache.felix:maven-bundle-plugin:2.1.0:index -DurlTemplate=maven
+~/.m2/repository/repository.xml
+
+
+// problems getting OBR to work
+
+g! obr:info "Apache Tuscany SCA API"
+----------------------
+Apache Tuscany SCA API
+----------------------
+id: org.apache.tuscany.sca.api/2.0.0
+symbolicname: org.apache.tuscany.sca.api
+presentationname: Apache Tuscany SCA API
+uri: file:/D:/sca-java-2.x/unreleased/testing/itest/bundle/target/../../../../..
+/distribution/all/target/modules/tuscany-sca-api-2.0-SNAPSHOT.jar
+version: 2.0.0
+Requires:
+ (&(package=org.oasisopen.sca.annotation)(version>=2.0.0))
+ (&(package=org.oasisopen.sca)(version>=2.0.0))
+ (&(package=org.oasisopen.sca.client)(version>=2.0.0))
+ (&(package=javax.security.auth))
+Capabilities:
+ {symbolicname=org.apache.tuscany.sca.api, presentationname=Apache Tuscany SCA
+ API, bundle-manifestversion=2, version=2.0.0}
+ {bundle-version=2.0.0, package=org.oasisopen.sca, bundle-symbolic-name=org.ap
+ache.tuscany.sca.api, uses:=javax.security.auth, version=2.0.0}
+ {bundle-version=2.0.0, package=org.oasisopen.sca.annotation, bundle-symbolic-
+name=org.apache.tuscany.sca.api, version=2.0.0}
+ {bundle-version=2.0.0, package=org.oasisopen.sca.client, bundle-symbolic-name
+=org.apache.tuscany.sca.api, version=2.0.0}
+g! lb
+START LEVEL 1
+ ID|State |Level|Name
+ 0|Active | 0|System Bundle (3.0.8)
+ 1|Active | 1|Apache Felix Bundle Repository (1.6.2)
+ 2|Active | 1|Apache Felix Gogo Command (0.8.0)
+ 3|Active | 1|Apache Felix Gogo Runtime (0.8.0)
+ 4|Active | 1|Apache Felix Gogo Shell (0.8.0)
+ 20|Installed | 1|Apache Tuscany SCA iTest Bundle (2.0.0.SNAPSHOT)
+g! start 20
+org.osgi.framework.BundleException: Unresolved constraint in bundle org.apache.t
+uscany.sca.bundle [20]: Unable to resolve 20.0: missing requirement [20.0] packa
+ge; (&(package=org.oasisopen.sca.annotation)(version>=2.0.0))
+g!
+
+
+g! obr:deploy "Apache Tuscany SCA API"
+Target resource(s):
+-------------------
+ Apache Tuscany SCA API (2.0.0)
+
+Deploying...done.
+g! lb
+START LEVEL 1
+ ID|State |Level|Name
+ 0|Active | 0|System Bundle (3.0.8)
+ 1|Active | 1|Apache Felix Bundle Repository (1.6.2)
+ 2|Active | 1|Apache Felix Gogo Command (0.8.0)
+ 3|Active | 1|Apache Felix Gogo Runtime (0.8.0)
+ 4|Active | 1|Apache Felix Gogo Shell (0.8.0)
+ 20|Installed | 1|Apache Tuscany SCA iTest Bundle (2.0.0.SNAPSHOT)
+ 21|Installed | 1|Apache Tuscany SCA API (2.0.0)
+g! start 21
+g! lb
+START LEVEL 1
+ ID|State |Level|Name
+ 0|Active | 0|System Bundle (3.0.8)
+ 1|Active | 1|Apache Felix Bundle Repository (1.6.2)
+ 2|Active | 1|Apache Felix Gogo Command (0.8.0)
+ 3|Active | 1|Apache Felix Gogo Runtime (0.8.0)
+ 4|Active | 1|Apache Felix Gogo Shell (0.8.0)
+ 20|Installed | 1|Apache Tuscany SCA iTest Bundle (2.0.0.SNAPSHOT)
+ 21|Active | 1|Apache Tuscany SCA API (2.0.0)
+g! start 20
+14-Mar-2011 14:31:45 sample.impl.SampleActivator start
+INFO: Starting org.apache.tuscany.sca.bundle [20]
+14-Mar-2011 14:31:45 sample.impl.SampleActivator start
+INFO: Hello Fred Bloggs->null
+
+
diff --git a/sandbox/slaws/bundle/obr/repository.xml b/sandbox/slaws/bundle/obr/repository.xml
new file mode 100644
index 0000000000..ffa152fd13
--- /dev/null
+++ b/sandbox/slaws/bundle/obr/repository.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<repository lastmodified='20110302114746.328'>
+ <resource id='org.apache.tuscany.sca.api/2.0.0' symbolicname='org.apache.tuscany.sca.api' presentationname='Apache Tuscany SCA API' uri='file:/D:/sca-java-2.x/modules/sca-api/target/tuscany-sca-api-2.0-SNAPSHOT.jar' version='2.0.0'>
+ <description>API classes for the Service Component Architecture</description>
+ <size>38075</size>
+ <documentation>http://www.apache.org/</documentation>
+ <license>http://www.apache.org/licenses/LICENSE-2.0.txt</license>
+ <capability name='bundle'>
+ <p n='symbolicname' v='org.apache.tuscany.sca.api'/>
+ <p n='presentationname' v='Apache Tuscany SCA API'/>
+ <p n='version' t='version' v='2.0.0'/>
+ <p n='manifestversion' v='2'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='org.oasisopen.sca'/>
+ <p n='version' t='version' v='2.0.0'/>
+ <p n='uses:' v='javax.security.auth'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='org.oasisopen.sca.annotation'/>
+ <p n='version' t='version' v='2.0.0'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='org.oasisopen.sca.client'/>
+ <p n='version' t='version' v='2.0.0'/>
+ </capability>
+ <require name='package' filter='(&amp;(package=javax.security.auth))' extend='false' multiple='false' optional='false'>Import package javax.security.auth</require>
+ <require name='package' filter='(&amp;(package=org.oasisopen.sca)(version&gt;=2.0.0))' extend='false' multiple='false' optional='false'>Import package org.oasisopen.sca;version=2.0.0</require>
+ <require name='package' filter='(&amp;(package=org.oasisopen.sca.annotation)(version&gt;=2.0.0))' extend='false' multiple='false' optional='false'>Import package org.oasisopen.sca.annotation;version=2.0.0</require>
+ <require name='package' filter='(&amp;(package=org.oasisopen.sca.client)(version&gt;=2.0.0))' extend='false' multiple='false' optional='false'>Import package org.oasisopen.sca.client;version=2.0.0</require>
+ </resource>
+ <resource id='org.apache.tuscany.sca.bundle/2.0.0.SNAPSHOT' symbolicname='org.apache.tuscany.sca.bundle' presentationname='Apache Tuscany SCA iTest Bundle' uri='file:/D:/sca-java-2.x/unreleased/testing/itest/bundle/target/bundle-2.0-SNAPSHOT.jar' version='2.0.0.SNAPSHOT'>
+ <description>The Apache Software Foundation provides support for the Apache community of open-source software projects. The Apache projects are characterized by a collaborative, consensus based development process, an open and pragmatic software license, and a desire to create high quality software that leads the way in its field. We consider ourselves not simply a group of projects sharing a server, but rather a community of developers and users.</description>
+ <size>15096</size>
+ <documentation>http://www.apache.org/</documentation>
+ <license>http://www.apache.org/licenses/LICENSE-2.0.txt</license>
+ <capability name='bundle'>
+ <p n='symbolicname' v='org.apache.tuscany.sca.bundle'/>
+ <p n='presentationname' v='Apache Tuscany SCA iTest Bundle'/>
+ <p n='version' t='version' v='2.0.0.SNAPSHOT'/>
+ <p n='manifestversion' v='2'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='sample'/>
+ <p n='version' t='version' v='0.0.0'/>
+ <p n='uses:' v='org.oasisopen.sca.annotation'/>
+ </capability>
+ <require name='package' filter='(&amp;(package=org.oasisopen.sca.annotation)(version&gt;=2.0.0))' extend='false' multiple='false' optional='false'>Import package org.oasisopen.sca.annotation;version=2.0</require>
+ <require name='package' filter='(&amp;(package=org.osgi.framework)(version&gt;=1.5.0))' extend='false' multiple='false' optional='false'>Import package org.osgi.framework;version=1.5</require>
+ <require name='package' filter='(&amp;(package=sample))' extend='false' multiple='false' optional='false'>Import package sample</require>
+ </resource>
+</repository>
diff --git a/sandbox/slaws/bundle/pom.xml b/sandbox/slaws/bundle/pom.xml
new file mode 100644
index 0000000000..8551971700
--- /dev/null
+++ b/sandbox/slaws/bundle/pom.xml
@@ -0,0 +1,265 @@
+<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-itest</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>bundle</artifactId>
+ <name>Apache Tuscany SCA iTest Bundle</name>
+ <packaging>bundle</packaging>
+
+ <properties>
+ <tuscany.version>2.0-SNAPSHOT</tuscany.version>
+ </properties>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.eclipse</groupId>
+ <artifactId>osgi</artifactId>
+ <version>3.5.0-v20090520</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-sca-api</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.application</groupId>
+ <artifactId>org.apache.aries.application.api</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.application</groupId>
+ <artifactId>org.apache.aries.application.management</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.application</groupId>
+ <artifactId>org.apache.aries.application.modeller</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.application</groupId>
+ <artifactId>org.apache.aries.application.resolver.obr</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!-- Test dependencies -->
+<!--
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+-->
+
+ <!-- Pax Exam test runtime -->
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam</artifactId>
+ <version>1.2.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-junit</artifactId>
+ <version>1.2.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-container-default</artifactId>
+ <version>1.2.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.ops4j.pax.logging</groupId>
+ <artifactId>pax-logging-api</artifactId>
+ <version>1.6.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.ops4j.pax.logging</groupId>
+ <artifactId>pax-logging-service</artifactId>
+ <version>1.6.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.ops4j.pax.url</groupId>
+ <artifactId>pax-url-mvn</artifactId>
+ <version>1.2.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- extra bundles that will be loaded -->
+
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.bundlerepository</artifactId>
+ <version>1.6.2</version>
+ <scope>test</scope>
+ </dependency>
+
+<!--
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.configadmin</artifactId>
+ <version>1.2.4</version>
+ <scope>test</scope>
+ </dependency>
+-->
+
+ <dependency>
+ <groupId>org.apache.aries</groupId>
+ <artifactId>org.apache.aries.util</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>org.apache.aries.blueprint</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.proxy</groupId>
+ <artifactId>org.apache.aries.proxy</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.application</groupId>
+ <artifactId>org.apache.aries.application.runtime</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.application</groupId>
+ <artifactId>org.apache.aries.application.default.local.platform</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.aries.application</groupId>
+ <artifactId>org.apache.aries.application.runtime.itest.interfaces</artifactId>
+ <version>0.4-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm-all</artifactId>
+ <version>3.3.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>4.2.0</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.2.0</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+<!-- create a repositoy.xml file for this bundle
+ <executions>
+ <execution>
+ <id>generate-obr</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>install</goal>
+ </goals>
+ </execution>
+ </executions>
+-->
+ <configuration>
+<!--
+ <obrRepository>target/obr</obrRepository>
+-->
+ <instructions>
+ <Export-Package>sample</Export-Package>
+ <Private-Package>sample.impl</Private-Package>
+ <Bundle-Activator>sample.impl.SampleActivator</Bundle-Activator>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.servicemix.tooling</groupId>
+ <artifactId>depends-maven-plugin</artifactId>
+ <version>1.2</version>
+ <executions>
+ <execution>
+ <id>generate-depends-file</id>
+ <goals>
+ <goal>generate-depends-file</goal>
+ </goals>
+ <configuration>
+ <outputFile>${project.build.directory}/test-classes/META-INF/maven/dependencies.properties</outputFile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/sandbox/slaws/bundle/src/main/java/sample/Helloworld.java b/sandbox/slaws/bundle/src/main/java/sample/Helloworld.java
new file mode 100644
index 0000000000..f4e8c50448
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/java/sample/Helloworld.java
@@ -0,0 +1,28 @@
+/*
+ * 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 sample;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface Helloworld {
+
+ String sayHello(String name);
+
+}
diff --git a/sandbox/slaws/bundle/src/main/java/sample/impl/HelloworldImpl.java b/sandbox/slaws/bundle/src/main/java/sample/impl/HelloworldImpl.java
new file mode 100644
index 0000000000..0e6d3cb1c7
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/java/sample/impl/HelloworldImpl.java
@@ -0,0 +1,43 @@
+/*
+ * 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 sample.impl;
+
+import org.oasisopen.sca.annotation.Property;
+import org.oasisopen.sca.annotation.Reference;
+
+import sample.Helloworld;
+
+public class HelloworldImpl implements Helloworld {
+
+ @Reference(required=false)
+ protected Helloworld hwRef;
+
+ @Property
+ protected String componentName;
+
+ public String sayHello(String name) {
+ String returnString = "Hello " + name + "->" + componentName;
+ if (hwRef != null){
+ return hwRef.sayHello(returnString);
+ } else {
+ return returnString;
+ }
+ }
+
+}
diff --git a/sandbox/slaws/bundle/src/main/java/sample/impl/SampleActivator.java b/sandbox/slaws/bundle/src/main/java/sample/impl/SampleActivator.java
new file mode 100644
index 0000000000..4838b534db
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/java/sample/impl/SampleActivator.java
@@ -0,0 +1,45 @@
+/*
+ * 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 sample.impl;
+
+import java.util.logging.Logger;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+import sample.Helloworld;
+
+public class SampleActivator implements BundleActivator {
+ private Logger logger = Logger.getLogger(SampleActivator.class.getName());
+
+
+ public void start(BundleContext context) throws Exception {
+ logger.info("Starting " + context.getBundle());
+
+ Helloworld hw = new HelloworldImpl();
+ logger.info(hw.sayHello("Fred Bloggs"));
+ }
+
+ public void stop(BundleContext context) throws Exception {
+ logger.info("Stopping " + context.getBundle());
+ // Registered services will be automatically unregistered
+ }
+
+}
diff --git a/sandbox/slaws/bundle/src/main/resources/META-INF/sca-contribution.xml b/sandbox/slaws/bundle/src/main/resources/META-INF/sca-contribution.xml
new file mode 100644
index 0000000000..95c32fb5bf
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/resources/META-INF/sca-contribution.xml
@@ -0,0 +1,25 @@
+<?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.
+-->
+<contribution xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:sample="http://sample">
+
+ <deployable composite="sample:helloworld-contribution" />
+
+</contribution>
diff --git a/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
new file mode 100644
index 0000000000..e3f31ae8d7
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
@@ -0,0 +1,20 @@
+# 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.
+
+sample.ImplementationGenericPolicyProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#implementationGenericPolicy,model=sample.ImplementationGenericPolicy
+sample.InteractionGenericPolicyProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#interactionGenericPolicy,model=sample.InteractionGenericPolicy
+sample.InteractionBindingWSPolicyProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#interactionBindingWSPolicy,model=sample.InteractionBindingWSPolicy \ No newline at end of file
diff --git a/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions b/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions
new file mode 100644
index 0000000000..f362b64a1f
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions
@@ -0,0 +1,17 @@
+# 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.
+definitions.xml
diff --git a/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.PolicyProviderFactory b/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.PolicyProviderFactory
new file mode 100644
index 0000000000..cbfb70c346
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.PolicyProviderFactory
@@ -0,0 +1,18 @@
+# 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.
+
+sample.InteractionBindingWSPolicyProviderFactory;model=sample.InteractionBindingWSPolicy \ No newline at end of file
diff --git a/sandbox/slaws/bundle/src/main/resources/definitions.xml b/sandbox/slaws/bundle/src/main/resources/definitions.xml
new file mode 100644
index 0000000000..f37fde76ab
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/resources/definitions.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+ * 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.
+-->
+<definitions xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ targetNamespace="http://tuscany.apache.org/xmlns/sca/1.1"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1">
+
+ <intent name="implementation.generic" constrains="implementation">
+ <description>
+ An intent that targets policy interceptors at the implementation
+ </description>
+ </intent>
+
+ <intent name="interaction.generic" constrains="binding">
+ <description>
+ An intent that targets policy interceptors at the binding generically
+ </description>
+ </intent>
+
+ <intent name="interaction.bindingws" constrains="binding.ws">
+ <description>
+ An intent that targets policy interceptors at binding.ws
+ </description>
+ </intent>
+
+ <policySet name="ImplementationGeneric"
+ provides="tuscany:implementation.generic"
+ appliesTo="//implementation">
+ <tuscany:implementationGenericPolicy name="ImplementationGeneric"/>
+ </policySet>
+
+ <policySet name="InteractionGeneric"
+ provides="tuscany:interaction.generic"
+ appliesTo="//binding">
+ <tuscany:interactionGenericPolicy name="InteractionGeneric"/>
+ </policySet>
+
+ <policySet name="InteractionBindingWS"
+ provides="tuscany:interaction.bindingws"
+ appliesTo="//binding.ws">
+ <tuscany:interactionBindingWSPolicy name="InteractionBindingWS"/>
+ </policySet>
+
+</definitions> \ No newline at end of file
diff --git a/sandbox/slaws/bundle/src/main/resources/helloworld.composite b/sandbox/slaws/bundle/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..47488f8bbd
--- /dev/null
+++ b/sandbox/slaws/bundle/src/main/resources/helloworld.composite
@@ -0,0 +1,50 @@
+<?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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://sample"
+ name="helloworld-contribution">
+
+ <component name="HelloworldComponent1">
+ <implementation.java class="sample.HelloworldImpl"/>
+ <reference name="hwRef"
+ target="HelloworldComponent2"
+ requires="tuscany:interaction.bindingws"
+ policySets="tuscany:InteractionBindingWS"/>
+ <property name="componentName" value="HelloworldComponent1"/>
+ </component>
+
+ <component name="HelloworldComponent2">
+ <implementation.java class="sample.HelloworldImpl"/>
+ <service name="Helloworld"
+ requires="tuscany:interaction.bindingws"
+ policySets="tuscany:InteractionBindingWS">
+ <binding.ws/>
+ </service>
+ <reference name="hwRef" target="HelloworldComponent3"/>
+ <property name="componentName" value="HelloworldComponent2"/>
+ </component>
+
+ <component name="HelloworldComponent3">
+ <implementation.java class="sample.HelloworldImpl"/>
+ <property name="componentName" value="HelloworldComponent3"/>
+ </component>
+
+</composite>
diff --git a/sandbox/slaws/bundle/src/test/java/sample/HelloworldTestCase.java b/sandbox/slaws/bundle/src/test/java/sample/HelloworldTestCase.java
new file mode 100644
index 0000000000..4c3f0271fa
--- /dev/null
+++ b/sandbox/slaws/bundle/src/test/java/sample/HelloworldTestCase.java
@@ -0,0 +1,216 @@
+/*
+ * 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 sample;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.ops4j.pax.exam.CoreOptions.equinox;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+
+import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.workingDirectory;
+
+import org.apache.aries.application.filesystem.IDirectory;
+import org.apache.aries.application.management.spi.repository.RepositoryGenerator;
+import org.apache.aries.application.modelling.ModelledResourceManager;
+import org.apache.aries.application.modelling.ModelledResource;
+import org.apache.aries.application.utils.filesystem.FileSystem;
+
+import org.apache.felix.bundlerepository.Repository;
+import org.apache.felix.bundlerepository.RepositoryAdmin;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.ops4j.pax.exam.CoreOptions;
+import org.ops4j.pax.exam.Inject;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.container.def.options.WorkingDirectoryOption;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.ops4j.pax.exam.options.MavenArtifactProvisionOption;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Filter;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.util.tracker.ServiceTracker;
+
+/* For debugging, uncomment the next two lines and add these imports:
+ */
+import static org.ops4j.pax.exam.CoreOptions.waitForFrameworkStartup;
+import static org.ops4j.pax.exam.container.def.PaxRunnerOptions.vmOption;
+
+
+/**
+ * Note that much of the technical detail/instruction comes from...
+ *
+ * http://svn.apache.org/repos/asf/aries/trunk/application/application-itests/src/test/java/org/apache/aries/application/runtime/itests/OBRResolverTest.java
+ *
+ */
+
+@RunWith( JUnit4TestRunner.class )
+public class HelloworldTestCase {
+
+ public static final long DEFAULT_TIMEOUT = 30000;
+
+ @Inject
+ protected BundleContext bundleContext;
+
+ @Configuration
+ public static Option[] configuration() {
+ Option[] options = options(
+ mavenBundle("org.ops4j.pax.logging", "pax-logging-api"),
+ mavenBundle("org.ops4j.pax.logging", "pax-logging-service"),
+ systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
+
+// mavenBundle("org.apache.felix", "org.apache.felix.configadmin"),
+ mavenBundle("org.ops4j.pax.url", "pax-url-mvn"),
+
+ mavenBundle("org.apache.aries.blueprint", "org.apache.aries.blueprint"),
+ mavenBundle("asm", "asm-all"),
+ mavenBundle("org.apache.aries.proxy", "org.apache.aries.proxy"),
+ mavenBundle("org.apache.aries", "org.apache.aries.util"),
+
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.api"),
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.utils"),
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.modeller"),
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.default.local.platform"),
+ mavenBundle("org.apache.felix", "org.apache.felix.bundlerepository"),
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.resolver.obr"),
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.deployment.management"),
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.management"),
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.runtime"),
+ mavenBundle("org.apache.aries.application", "org.apache.aries.application.runtime.itest.interfaces"),
+ mavenBundle("org.osgi", "org.osgi.compendium"),
+ mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit"),
+
+ mavenBundle("org.apache.tuscany.sca", "tuscany-sca-api"),
+
+ mavenBundle("org.apache.tuscany.sca", "bundle"),
+
+ /* For debugging, uncomment the next two lines
+ vmOption("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=7777"),
+ waitForFrameworkStartup(),
+ */
+
+ workingDirectory("D://sca-java-2.x//unreleased//testing//itest//bundle//target"),
+
+ equinox().version("3.5.0"));
+
+ return options;
+ }
+
+ @Test
+ public void testSayHello() {
+ System.out.println("testSayHello - start");
+ System.out.println("test dir = " + System.getProperty("user.dir"));
+ System.out.println("current dir = " + this.getClass().getProtectionDomain().getCodeSource().getLocation());
+
+ // get the OBR repository admin service
+ RepositoryAdmin respositoryAdminService = getOsgiService(RepositoryAdmin.class);
+
+ // print currently registered repos
+ Repository[] repos = respositoryAdminService.listRepositories();
+ System.out.println("initial repos");
+ for (Repository repo : repos) {
+ System.out.println("Repo >>> " + repo.getName());
+ }
+
+ // get the repository generator service
+ System.out.println("get RepositoryGenerator service =");
+ RepositoryGenerator repositoryGenerator = getOsgiService(RepositoryGenerator.class);
+ System.out.println(repositoryGenerator);
+
+ System.out.println("get ModelledResourceManager service =");
+ ModelledResourceManager modelledResourceManager = getOsgiService(ModelledResourceManager.class);
+ System.out.println(modelledResourceManager);
+
+ Set<ModelledResource> mrs = new HashSet<ModelledResource>();
+
+ try {
+ // create mrs based on base runtime
+ populateMRS(modelledResourceManager,
+ mrs,
+ "../../../../../distribution/all/target/features/tuscany-base-runtime-pom/which-jars",
+ "../../../../../distribution/all/target/modules");
+ //File outFile = new File("D://sca-java-2.x//unreleased//testing//itest//bundle//target//myrepository.xml");
+ //File outFile = new File(".//target//myrepository.xml");
+ //FileOutputStream fout = new FileOutputStream(outFile);
+ FileOutputStream fout = new FileOutputStream("repository.xml");
+ repositoryGenerator.generateRepository("Test repo description", mrs, fout);
+ fout.close();
+
+ } catch(Exception ex) {
+ ex.printStackTrace();
+ }
+
+ System.out.println("testSayHello - end");
+ }
+
+ private void populateMRS(ModelledResourceManager modelledResourceManager,
+ Set<ModelledResource> mrs,
+ String whichJars,
+ String modules){
+ try {
+ BufferedReader in = new BufferedReader(new FileReader(whichJars));
+ String line;
+ while ((line = in.readLine()) != null) {
+ if (line.endsWith(".jar")){
+ int dirSeparatorIndex = line.indexOf("/");
+ if (dirSeparatorIndex > 0){
+ line = line.substring(0, dirSeparatorIndex);
+ }
+ System.out.println("Processing - " + line);
+ File bundleFile = new File(modules + "\\" + line);
+ IDirectory jarDir = FileSystem.getFSRoot(bundleFile);
+ mrs.add(modelledResourceManager.getModelledResource(bundleFile.toURI().toString(), jarDir));
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ private <T> T getOsgiService(Class<T> type) {
+ try {
+ String filterString = "(" + Constants.OBJECTCLASS + "=" + type.getName() + ")";
+ Filter osgiFilter = FrameworkUtil.createFilter(filterString);
+ ServiceTracker tracker = new ServiceTracker(bundleContext, osgiFilter, null);
+ tracker.open();
+ Object tmp = tracker.waitForService(DEFAULT_TIMEOUT);
+ return type.cast(tmp);
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static MavenArtifactProvisionOption mavenBundle(String groupId, String artifactId) {
+ return CoreOptions.mavenBundle().groupId(groupId).artifactId(artifactId).versionAsInProject();
+ }
+}
+
+