You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ja...@apache.org on 2016/01/22 15:44:52 UTC
svn commit: r1726222 [1/2] - in /ace/trunk: cnf/lib/ cnf/lib/commons-codec/
cnf/lib/commons-collections/ cnf/lib/commons-io/ cnf/lib/commons-lang/
cnf/lib/commons-logging/ cnf/lib/gson/ cnf/lib/javax.inject/ cnf/lib/junit/
cnf/lib/pax-exam-container-na...
Author: jawi
Date: Fri Jan 22 14:44:51 2016
New Revision: 1726222
URL: http://svn.apache.org/viewvc?rev=1726222&view=rev
Log:
Remove duplicate dependencies:
- moved all bundles from `cnf/lib` to `cnf/localrepo`;
- refacted the unit tests of the processlauncher project to use TestNG instead of JUnit;
- moved the itests from the processlauncher project to their own itest project;
- removed some redundant PAX exam libraries as we're using Bnd's integration test functionality.
Added:
ace/trunk/cnf/localrepo/javax.inject/
ace/trunk/cnf/localrepo/javax.inject/javax.inject-1.0.0.jar (with props)
ace/trunk/cnf/localrepo/org.apache.commons.codec/
ace/trunk/cnf/localrepo/org.apache.commons.codec/org.apache.commons.codec-1.4.0.jar (with props)
ace/trunk/cnf/localrepo/org.apache.commons.collections/
ace/trunk/cnf/localrepo/org.apache.commons.collections/org.apache.commons.collections-3.2.1.jar (with props)
ace/trunk/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.1.jar (with props)
ace/trunk/cnf/localrepo/org.apache.commons.lang/
ace/trunk/cnf/localrepo/org.apache.commons.lang/org.apache.commons.lang-2.4.0.jar (with props)
ace/trunk/org.apache.ace.processlauncher.itest/
ace/trunk/org.apache.ace.processlauncher.itest/.classpath (with props)
ace/trunk/org.apache.ace.processlauncher.itest/.project (with props)
ace/trunk/org.apache.ace.processlauncher.itest/bnd.bnd
ace/trunk/org.apache.ace.processlauncher.itest/build.xml (with props)
ace/trunk/org.apache.ace.processlauncher.itest/src/
ace/trunk/org.apache.ace.processlauncher.itest/src/org/
ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/
ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/
ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/
ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/
ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java (with props)
ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherServiceIntegrationTest.java (with props)
ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/TestUtil.java (with props)
Removed:
ace/trunk/cnf/lib/commons-codec/
ace/trunk/cnf/lib/commons-collections/
ace/trunk/cnf/lib/commons-io/
ace/trunk/cnf/lib/commons-lang/
ace/trunk/cnf/lib/commons-logging/
ace/trunk/cnf/lib/gson/
ace/trunk/cnf/lib/javax.inject/
ace/trunk/cnf/lib/junit/
ace/trunk/cnf/lib/pax-exam/
ace/trunk/cnf/lib/pax-exam-container-native/
ace/trunk/cnf/lib/pax-exam-inject/
ace/trunk/cnf/lib/pax-exam-junit4/
ace/trunk/cnf/lib/pax-exam-link-mvn/
ace/trunk/cnf/lib/pax-url-aether/
ace/trunk/cnf/lib/pax-url-assembly/
ace/trunk/cnf/lib/pax-url-link/
ace/trunk/cnf/lib/pax-url-wrap/
ace/trunk/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.0.jar
ace/trunk/cnf/localrepo/org.ops4j.base.store/
ace/trunk/cnf/localrepo/org.ops4j.pax.swissbox.tinybundles/
ace/trunk/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/osgi/
Modified:
ace/trunk/cnf/lib/index.xml.gz
ace/trunk/cnf/lib/repository.xml
ace/trunk/cnf/localrepo/index.xml
ace/trunk/cnf/localrepo/index.xml.sha
ace/trunk/org.apache.ace.deployment/bnd.bnd
ace/trunk/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java
ace/trunk/org.apache.ace.processlauncher/bnd.bnd
ace/trunk/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationFactoryTest.java
ace/trunk/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationTest.java
ace/trunk/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherServiceImplTest.java
ace/trunk/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherTest.java
ace/trunk/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessManagerImplTest.java
ace/trunk/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/StringSplitterTest.java
ace/trunk/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/util/InputStreamRedirectorTest.java
ace/trunk/org.apache.ace.test/src/org/apache/ace/test/utils/FileUtils.java
ace/trunk/org.apache.ace.verifier/bnd.bnd
ace/trunk/org.apache.ace.verifier/test/org/apache/ace/deployment/verifier/impl/VerifierTest.java
Modified: ace/trunk/cnf/lib/index.xml.gz
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/lib/index.xml.gz?rev=1726222&r1=1726221&r2=1726222&view=diff
==============================================================================
Binary files - no diff available.
Modified: ace/trunk/cnf/lib/repository.xml
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/lib/repository.xml?rev=1726222&r1=1726221&r2=1726222&view=diff
==============================================================================
--- ace/trunk/cnf/lib/repository.xml (original)
+++ ace/trunk/cnf/lib/repository.xml Fri Jan 22 14:44:51 2016
@@ -1,30 +1,167 @@
-<repository>
- <resource id='ant/1.8.4' symbolicname='ant' uri='ant/ant-1.8.4.jar' version='1.8.4'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='ant'/><p n='version' t='version' v='1.8.4'/></capability></resource>
- <resource id='aopalliance/1.0' symbolicname='aopalliance' uri='aopalliance/aopalliance-1.0.jar' version='1.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='aopalliance'/><p n='version' t='version' v='1.0'/></capability></resource>
- <resource id='bcprov-jdk14/1.40' symbolicname='bcprov-jdk14' uri='bcprov-jdk14/bcprov-jdk14-1.40.jar' version='1.40'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='bcprov-jdk14'/><p n='version' t='version' v='1.40'/></capability></resource>
- <resource id='commons-codec/1.4' symbolicname='commons-codec' uri='commons-codec/commons-codec-1.4.jar' version='1.4'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='commons-codec'/><p n='version' t='version' v='1.4'/></capability></resource>
- <resource id='commons-collections/3.2.1' symbolicname='commons-collections' uri='commons-collections/commons-collections-3.2.1.jar' version='3.2.1'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='commons-collections'/><p n='version' t='version' v='3.2.1'/></capability></resource>
- <resource id='commons-io/2.0.1' symbolicname='commons-io' uri='commons-io/commons-io-2.0.1.jar' version='2.0.1'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='commons-io'/><p n='version' t='version' v='2.0.1'/></capability></resource>
- <resource id='commons-lang/2.4' symbolicname='commons-lang' uri='commons-lang/commons-lang-2.4.jar' version='2.4'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='commons-lang'/><p n='version' t='version' v='2.4'/></capability></resource>
- <resource id='commons-logging/1.1.1' symbolicname='commons-logging' uri='commons-logging/commons-logging-1.1.1.jar' version='1.1.1'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='commons-logging'/><p n='version' t='version' v='1.1.1'/></capability></resource>
- <resource id='gson/1.7.1' symbolicname='gson' uri='gson/gson-1.7.1.jar' version='1.7.1'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='gson'/><p n='version' t='version' v='1.7.1'/></capability></resource>
- <resource id='javax.inject/1.0.0' symbolicname='javax.inject' uri='javax.inject/javax.inject-1.0.0.jar' version='1.0.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='javax.inject'/><p n='version' t='version' v='1.0.0'/></capability></resource>
- <resource id='jsr250-api/1.0' symbolicname='jsr250-api' uri='jsr250-api/jsr250-api-1.0.jar' version='1.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='jsr250-api'/><p n='version' t='version' v='1.0'/></capability></resource>
- <resource id='jsr305/1.3.9' symbolicname='jsr305' uri='jsr305/jsr305-1.3.9.jar' version='1.3.9'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='jsr305'/><p n='version' t='version' v='1.3.9'/></capability></resource>
- <resource id='junit/4.8.2' symbolicname='junit' uri='junit/junit-4.8.2.jar' version='4.8.2'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='junit'/><p n='version' t='version' v='4.8.2'/></capability></resource>
- <resource id='kxml2/2.3.0' symbolicname='kxml2' uri='kxml2/kxml2-2.3.0.jar' version='2.3.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='kxml2'/><p n='version' t='version' v='2.3.0'/></capability></resource>
- <resource id='oauth/20100527' symbolicname='oauth' uri='oauth/oauth-20100527.jar' version='20100527'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='oauth'/><p n='version' t='version' v='20100527'/></capability></resource>
- <resource id='pax-exam/2.3.0' symbolicname='pax-exam' uri='pax-exam/pax-exam-2.3.0.jar' version='2.3.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-exam'/><p n='version' t='version' v='2.3.0'/></capability></resource>
- <resource id='pax-exam-container-native/2.3.0' symbolicname='pax-exam-container-native' uri='pax-exam-container-native/pax-exam-container-native-2.3.0.jar' version='2.3.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-exam-container-native'/><p n='version' t='version' v='2.3.0'/></capability></resource>
- <resource id='pax-exam-inject/2.3.0' symbolicname='pax-exam-inject' uri='pax-exam-inject/pax-exam-inject-2.3.0.jar' version='2.3.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-exam-inject'/><p n='version' t='version' v='2.3.0'/></capability></resource>
- <resource id='pax-exam-junit4/2.3.0' symbolicname='pax-exam-junit4' uri='pax-exam-junit4/pax-exam-junit4-2.3.0.jar' version='2.3.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-exam-junit4'/><p n='version' t='version' v='2.3.0'/></capability></resource>
- <resource id='pax-exam-link-mvn/2.3.0' symbolicname='pax-exam-link-mvn' uri='pax-exam-link-mvn/pax-exam-link-mvn-2.3.0.jar' version='2.3.0'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-exam-link-mvn'/><p n='version' t='version' v='2.3.0'/></capability></resource>
- <resource id='pax-url-aether/1.3.5' symbolicname='pax-url-aether' uri='pax-url-aether/pax-url-aether-1.3.5.jar' version='1.3.5'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-url-aether'/><p n='version' t='version' v='1.3.5'/></capability></resource>
- <resource id='pax-url-assembly/1.3.5' symbolicname='pax-url-assembly' uri='pax-url-assembly/pax-url-assembly-1.3.5.jar' version='1.3.5'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-url-assembly'/><p n='version' t='version' v='1.3.5'/></capability></resource>
- <resource id='pax-url-link/1.3.5' symbolicname='pax-url-link' uri='pax-url-link/pax-url-link-1.3.5.jar' version='1.3.5'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-url-link'/><p n='version' t='version' v='1.3.5'/></capability></resource>
- <resource id='pax-url-wrap/1.3.5' symbolicname='pax-url-wrap' uri='pax-url-wrap/pax-url-wrap-1.3.5.jar' version='1.3.5'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='pax-url-wrap'/><p n='version' t='version' v='1.3.5'/></capability></resource>
- <resource id='testng/6.5.2' symbolicname='testng' uri='testng/testng-6.5.2.jar' version='6.5.2'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='testng'/><p n='version' t='version' v='6.5.2'/></capability></resource>
- <resource id='velocity/1.6.2' symbolicname='velocity' uri='velocity/velocity-1.6.2.jar' version='1.6.2'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='velocity'/><p n='version' t='version' v='1.6.2'/></capability></resource>
- <resource id='xpp3/1.1.4.c' symbolicname='xpp3' uri='xpp3/xpp3-1.1.4.c.jar' version='1.1.4.c'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='xpp3'/><p n='version' t='version' v='1.1.4.c'/></capability></resource>
- <resource id='xstream/1.2.2' symbolicname='xstream' uri='xstream/xstream-1.2.2.jar' version='1.2.2'><capability name='bundle'><p n='manifestversion' v='2'/><p n='symbolicname' v='xstream'/><p n='version' t='version' v='1.2.2'/></capability></resource>
-</repository>
+<?xml version='1.0' encoding='utf-8'?>
+<?xml-stylesheet type='text/xsl' href='http://www.osgi.org/www/obr2html.xsl'?>
+
+<repository lastmodified='20160122145511.091' name='Untitled'>
+ <resource id='Untitled--1059228687/0.0.0' symbolicname='Untitled--1059228687' uri='aopalliance/aopalliance-1.0.jar' version='0.0.0'>
+ <size>
+ 4467
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled--1059228687'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled--1877161092/0.0.0' symbolicname='Untitled--1877161092' uri='oauth/oauth-20100527.jar' version='0.0.0'>
+ <size>
+ 44209
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled--1877161092'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled--767182726/0.0.0' symbolicname='Untitled--767182726' uri='jsr305/jsr305-1.3.9.jar' version='0.0.0'>
+ <size>
+ 33015
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled--767182726'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled--93366089/0.0.0' symbolicname='Untitled--93366089' uri='kxml2/kxml2-2.3.0.jar' version='0.0.0'>
+ <size>
+ 43858
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled--93366089'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled--978492559/0.0.0' symbolicname='Untitled--978492559' uri='ant/ant-1.8.4.jar' version='0.0.0'>
+ <size>
+ 1941731
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled--978492559'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled-170591100/0.0.0' symbolicname='Untitled-170591100' uri='testng/testng-6.5.2.jar' version='0.0.0'>
+ <size>
+ 1273045
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled-170591100'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled-2104301348/0.0.0' symbolicname='Untitled-2104301348' uri='xstream/xstream-1.2.2.jar' version='0.0.0'>
+ <size>
+ 373194
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled-2104301348'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled-494417045/0.0.0' symbolicname='Untitled-494417045' uri='jsr250-api/jsr250-api-1.0.jar' version='0.0.0'>
+ <size>
+ 5848
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled-494417045'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled-522443489/0.0.0' symbolicname='Untitled-522443489' uri='velocity/velocity-1.6.2.jar' version='0.0.0'>
+ <size>
+ 420975
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled-522443489'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled-524384939/0.0.0' symbolicname='Untitled-524384939' uri='bcprov-jdk14/bcprov-jdk14-1.40.jar' version='0.0.0'>
+ <size>
+ 1589656
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled-524384939'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='Untitled-876183438/0.0.0' symbolicname='Untitled-876183438' uri='xpp3/xpp3-1.1.4.c.jar' version='0.0.0'>
+ <size>
+ 120069
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='1'/>
+ <p n='symbolicname' v='Untitled-876183438'/>
+ <p n='version' t='version' v='0.0.0'/>
+ </capability>
+ </resource>
+ <resource id='com.google.gson/1.7.0' presentationname='Gson' symbolicname='com.google.gson' uri='gson/gson-1.7.1.jar' version='1.7.0'>
+ <description>
+ Google Gson library
+ </description>
+ <size>
+ 173590
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='2'/>
+ <p n='presentationname' v='Gson'/>
+ <p n='symbolicname' v='com.google.gson'/>
+ <p n='version' t='version' v='1.7.0'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='com.google.gson'/>
+ <p n='version' t='version' v='1.7.1'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='com.google.gson.annotations'/>
+ <p n='version' t='version' v='1.7.1'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='com.google.gson.reflect'/>
+ <p n='version' t='version' v='1.7.1'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='com.google.gson.stream'/>
+ <p n='version' t='version' v='1.7.1'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='com.google.gson.internal'/>
+ <p n='version' t='version' v='1.7.1'/>
+ </capability>
+ <require extend='false' filter='(|(ee=J2SE-1.5))' multiple='false' name='ee' optional='false'>
+ Execution Environment (|(ee=J2SE-1.5))
+ </require>
+ </resource>
+ <resource id='javax.inject/1.0.0' presentationname='javax.inject' symbolicname='javax.inject' uri='javax.inject/javax.inject-1.0.0.jar' version='1.0.0'>
+ <size>
+ 2954
+ </size>
+ <capability name='bundle'>
+ <p n='manifestversion' v='2'/>
+ <p n='presentationname' v='javax.inject'/>
+ <p n='symbolicname' v='javax.inject'/>
+ <p n='version' t='version' v='1.0.0'/>
+ </capability>
+ <capability name='package'>
+ <p n='package' v='javax.inject'/>
+ <p n='version' t='version' v='1.0.0'/>
+ </capability>
+ </resource>
+</repository>
\ No newline at end of file
Modified: ace/trunk/cnf/localrepo/index.xml
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/localrepo/index.xml?rev=1726222&r1=1726221&r2=1726222&view=diff
==============================================================================
--- ace/trunk/cnf/localrepo/index.xml (original)
+++ ace/trunk/cnf/localrepo/index.xml Fri Jan 22 14:44:51 2016
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<repository increment="1453375031000" name="Local" xmlns="http://www.osgi.org/xmlns/repository/v1.0.0">
+<repository increment="1453471155000" name="Local" xmlns="http://www.osgi.org/xmlns/repository/v1.0.0">
<resource>
<capability namespace="osgi.identity">
<attribute name="osgi.identity" value="aws-common"/>
@@ -5003,6 +5003,33 @@
</resource>
<resource>
<capability namespace="osgi.identity">
+ <attribute name="osgi.identity" value="javax.inject"/>
+ <attribute name="type" value="osgi.bundle"/>
+ <attribute name="version" type="Version" value="1.0.0"/>
+ </capability>
+ <capability namespace="osgi.content">
+ <attribute name="osgi.content" value="210831b73725eb71d2311f87219947a17b42a86d5ec83d3dc2c350dcb85e8836"/>
+ <attribute name="url" value="javax.inject/javax.inject-1.0.0.jar"/>
+ <attribute name="size" type="Long" value="2954"/>
+ <attribute name="mime" value="application/vnd.osgi.bundle"/>
+ </capability>
+ <capability namespace="osgi.wiring.bundle">
+ <attribute name="osgi.wiring.bundle" value="javax.inject"/>
+ <attribute name="bundle-version" type="Version" value="1.0.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.host">
+ <attribute name="osgi.wiring.host" value="javax.inject"/>
+ <attribute name="bundle-version" type="Version" value="1.0.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="javax.inject"/>
+ <attribute name="version" type="Version" value="1.0.0"/>
+ <attribute name="bundle-symbolic-name" value="javax.inject"/>
+ <attribute name="bundle-version" type="Version" value="1.0.0"/>
+ </capability>
+ </resource>
+ <resource>
+ <capability namespace="osgi.identity">
<attribute name="osgi.identity" value="javax.servlet"/>
<attribute name="type" value="osgi.bundle"/>
<attribute name="version" type="Version" value="2.5.0.v200910301333"/>
@@ -6712,63 +6739,360 @@
</resource>
<resource>
<capability namespace="osgi.identity">
+ <attribute name="osgi.identity" value="org.apache.commons.codec"/>
+ <attribute name="type" value="osgi.bundle"/>
+ <attribute name="version" type="Version" value="1.4.0"/>
+ </capability>
+ <capability namespace="osgi.content">
+ <attribute name="osgi.content" value="6aa4234c74f3a1035751a25822545867c8c3727125a642b6e049665d1863631b"/>
+ <attribute name="url" value="org.apache.commons.codec/org.apache.commons.codec-1.4.0.jar"/>
+ <attribute name="size" type="Long" value="58160"/>
+ <attribute name="mime" value="application/vnd.osgi.bundle"/>
+ </capability>
+ <capability namespace="osgi.wiring.bundle">
+ <attribute name="osgi.wiring.bundle" value="org.apache.commons.codec"/>
+ <attribute name="bundle-version" type="Version" value="1.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.host">
+ <attribute name="osgi.wiring.host" value="org.apache.commons.codec"/>
+ <attribute name="bundle-version" type="Version" value="1.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.codec"/>
+ <attribute name="version" type="Version" value="1.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.codec"/>
+ <attribute name="bundle-version" type="Version" value="1.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.codec.net"/>
+ <attribute name="version" type="Version" value="1.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.codec"/>
+ <attribute name="bundle-version" type="Version" value="1.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.codec.language"/>
+ <attribute name="version" type="Version" value="1.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.codec"/>
+ <attribute name="bundle-version" type="Version" value="1.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.codec.digest"/>
+ <attribute name="version" type="Version" value="1.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.codec"/>
+ <attribute name="bundle-version" type="Version" value="1.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.codec.binary"/>
+ <attribute name="version" type="Version" value="1.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.codec"/>
+ <attribute name="bundle-version" type="Version" value="1.4.0"/>
+ </capability>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.codec)(version>=1.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.codec.binary)(version>=1.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.codec.digest)(version>=1.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.codec.language)(version>=1.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.codec.net)(version>=1.4.0))"/>
+ </requirement>
+ </resource>
+ <resource>
+ <capability namespace="osgi.identity">
+ <attribute name="osgi.identity" value="org.apache.commons.collections"/>
+ <attribute name="type" value="osgi.bundle"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.content">
+ <attribute name="osgi.content" value="87363a4c94eaabeefd8b930cb059f66b64c9f7d632862f23de3012da7660047b"/>
+ <attribute name="url" value="org.apache.commons.collections/org.apache.commons.collections-3.2.1.jar"/>
+ <attribute name="size" type="Long" value="575389"/>
+ <attribute name="mime" value="application/vnd.osgi.bundle"/>
+ </capability>
+ <capability namespace="osgi.wiring.bundle">
+ <attribute name="osgi.wiring.bundle" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.host">
+ <attribute name="osgi.wiring.host" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.map"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.buffer"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.comparators"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.collection"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.bag"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.iterators"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.bidimap"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.set"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.functors"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.list"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections.keyvalue"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.collections"/>
+ <attribute name="version" type="Version" value="3.2.1"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.collections"/>
+ <attribute name="bundle-version" type="Version" value="3.2.1"/>
+ </capability>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.bag)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.bidimap)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.buffer)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.collection)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.comparators)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.functors)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.iterators)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.keyvalue)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.list)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.map)(version>=3.2.1))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.collections.set)(version>=3.2.1))"/>
+ </requirement>
+ </resource>
+ <resource>
+ <capability namespace="osgi.identity">
<attribute name="osgi.identity" value="org.apache.commons.io"/>
<attribute name="type" value="osgi.bundle"/>
- <attribute name="version" type="Version" value="2.0.0"/>
+ <attribute name="version" type="Version" value="2.0.1"/>
</capability>
<capability namespace="osgi.content">
- <attribute name="osgi.content" value="c1cd4480f5201e5d2979fd97fa7949bde0e778b84c87b383aa133586bb17f4f1"/>
- <attribute name="url" value="org.apache.commons.io/org.apache.commons.io-2.0.0.jar"/>
- <attribute name="size" type="Long" value="161213"/>
+ <attribute name="osgi.content" value="2a3f5a206480863aae9dff03f53c930c3add6912f8785498d59442c7ebb98c5c"/>
+ <attribute name="url" value="org.apache.commons.io/org.apache.commons.io-2.0.1.jar"/>
+ <attribute name="size" type="Long" value="159509"/>
<attribute name="mime" value="application/vnd.osgi.bundle"/>
</capability>
<capability namespace="osgi.wiring.bundle">
<attribute name="osgi.wiring.bundle" value="org.apache.commons.io"/>
- <attribute name="bundle-version" type="Version" value="2.0.0"/>
+ <attribute name="bundle-version" type="Version" value="2.0.1"/>
</capability>
<capability namespace="osgi.wiring.host">
<attribute name="osgi.wiring.host" value="org.apache.commons.io"/>
- <attribute name="bundle-version" type="Version" value="2.0.0"/>
+ <attribute name="bundle-version" type="Version" value="2.0.1"/>
</capability>
<capability namespace="osgi.wiring.package">
<attribute name="osgi.wiring.package" value="org.apache.commons.io.output"/>
- <attribute name="version" type="Version" value="2.0.0"/>
+ <attribute name="version" type="Version" value="2.0.1"/>
<attribute name="bundle-symbolic-name" value="org.apache.commons.io"/>
- <attribute name="bundle-version" type="Version" value="2.0.0"/>
+ <attribute name="bundle-version" type="Version" value="2.0.1"/>
</capability>
<capability namespace="osgi.wiring.package">
<attribute name="osgi.wiring.package" value="org.apache.commons.io.comparator"/>
- <attribute name="version" type="Version" value="2.0.0"/>
+ <attribute name="version" type="Version" value="2.0.1"/>
<attribute name="bundle-symbolic-name" value="org.apache.commons.io"/>
- <attribute name="bundle-version" type="Version" value="2.0.0"/>
+ <attribute name="bundle-version" type="Version" value="2.0.1"/>
</capability>
<capability namespace="osgi.wiring.package">
<attribute name="osgi.wiring.package" value="org.apache.commons.io"/>
- <attribute name="version" type="Version" value="2.0.0"/>
+ <attribute name="version" type="Version" value="2.0.1"/>
<attribute name="bundle-symbolic-name" value="org.apache.commons.io"/>
- <attribute name="bundle-version" type="Version" value="2.0.0"/>
+ <attribute name="bundle-version" type="Version" value="2.0.1"/>
</capability>
<capability namespace="osgi.wiring.package">
<attribute name="osgi.wiring.package" value="org.apache.commons.io.monitor"/>
- <attribute name="version" type="Version" value="2.0.0"/>
+ <attribute name="version" type="Version" value="2.0.1"/>
<attribute name="bundle-symbolic-name" value="org.apache.commons.io"/>
- <attribute name="bundle-version" type="Version" value="2.0.0"/>
+ <attribute name="bundle-version" type="Version" value="2.0.1"/>
</capability>
<capability namespace="osgi.wiring.package">
<attribute name="osgi.wiring.package" value="org.apache.commons.io.input"/>
- <attribute name="version" type="Version" value="2.0.0"/>
+ <attribute name="version" type="Version" value="2.0.1"/>
<attribute name="bundle-symbolic-name" value="org.apache.commons.io"/>
- <attribute name="bundle-version" type="Version" value="2.0.0"/>
+ <attribute name="bundle-version" type="Version" value="2.0.1"/>
</capability>
<capability namespace="osgi.wiring.package">
<attribute name="osgi.wiring.package" value="org.apache.commons.io.filefilter"/>
- <attribute name="version" type="Version" value="2.0.0"/>
+ <attribute name="version" type="Version" value="2.0.1"/>
<attribute name="bundle-symbolic-name" value="org.apache.commons.io"/>
- <attribute name="bundle-version" type="Version" value="2.0.0"/>
+ <attribute name="bundle-version" type="Version" value="2.0.1"/>
</capability>
</resource>
<resource>
<capability namespace="osgi.identity">
+ <attribute name="osgi.identity" value="org.apache.commons.lang"/>
+ <attribute name="type" value="osgi.bundle"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.content">
+ <attribute name="osgi.content" value="2c73b940c91250bc98346926270f13a6a10bb6e29d2c9316a70d134e382c873e"/>
+ <attribute name="url" value="org.apache.commons.lang/org.apache.commons.lang-2.4.0.jar"/>
+ <attribute name="size" type="Long" value="261809"/>
+ <attribute name="mime" value="application/vnd.osgi.bundle"/>
+ </capability>
+ <capability namespace="osgi.wiring.bundle">
+ <attribute name="osgi.wiring.bundle" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.host">
+ <attribute name="osgi.wiring.host" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang.math"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang.enums"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang.builder"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang.exception"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang.enum"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang.mutable"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang.text"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang.time"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <capability namespace="osgi.wiring.package">
+ <attribute name="osgi.wiring.package" value="org.apache.commons.lang"/>
+ <attribute name="version" type="Version" value="2.4.0"/>
+ <attribute name="bundle-symbolic-name" value="org.apache.commons.lang"/>
+ <attribute name="bundle-version" type="Version" value="2.4.0"/>
+ </capability>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang)(version>=2.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang.builder)(version>=2.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang.enum)(version>=2.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang.enums)(version>=2.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang.exception)(version>=2.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang.math)(version>=2.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang.mutable)(version>=2.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang.text)(version>=2.4.0))"/>
+ </requirement>
+ <requirement namespace="osgi.wiring.package">
+ <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.lang.time)(version>=2.4.0))"/>
+ </requirement>
+ </resource>
+ <resource>
+ <capability namespace="osgi.identity">
<attribute name="osgi.identity" value="org.apache.felix.configadmin"/>
<attribute name="type" value="osgi.bundle"/>
<attribute name="version" type="Version" value="1.8.0"/>
@@ -8223,110 +8547,6 @@
</requirement>
</resource>
<resource>
- <capability namespace="osgi.identity">
- <attribute name="osgi.identity" value="org.ops4j.base.store"/>
- <attribute name="type" value="osgi.bundle"/>
- <attribute name="version" type="Version" value="1.2.2"/>
- </capability>
- <capability namespace="osgi.content">
- <attribute name="osgi.content" value="653b19a591c28fcb8d5d89f4e61064a711362fdd73f0a05a01e1596b8a7901c3"/>
- <attribute name="url" value="org.ops4j.base.store/org.ops4j.base.store-1.2.2.jar"/>
- <attribute name="size" type="Long" value="7323"/>
- <attribute name="mime" value="application/vnd.osgi.bundle"/>
- </capability>
- <capability namespace="osgi.wiring.bundle">
- <attribute name="osgi.wiring.bundle" value="org.ops4j.base.store"/>
- <attribute name="bundle-version" type="Version" value="1.2.2"/>
- </capability>
- <capability namespace="osgi.wiring.host">
- <attribute name="osgi.wiring.host" value="org.ops4j.base.store"/>
- <attribute name="bundle-version" type="Version" value="1.2.2"/>
- </capability>
- <capability namespace="osgi.wiring.package">
- <attribute name="osgi.wiring.package" value="org.ops4j.store.intern"/>
- <attribute name="version" type="Version" value="1.2.2"/>
- <attribute name="bundle-symbolic-name" value="org.ops4j.base.store"/>
- <attribute name="bundle-version" type="Version" value="1.2.2"/>
- <directive name="uses" value="org.ops4j.store,org.ops4j.io,org.apache.commons.logging"/>
- </capability>
- <capability namespace="osgi.wiring.package">
- <attribute name="osgi.wiring.package" value="org.ops4j.store"/>
- <attribute name="version" type="Version" value="1.2.2"/>
- <attribute name="bundle-symbolic-name" value="org.ops4j.base.store"/>
- <attribute name="bundle-version" type="Version" value="1.2.2"/>
- <directive name="uses" value="org.ops4j.store.intern"/>
- </capability>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(osgi.wiring.package=org.apache.commons.logging)"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.ops4j.io)(version>=1.2.2))"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.ops4j.store)(version>=1.2.2))"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.ops4j.store.intern)(version>=1.2.2))"/>
- </requirement>
- </resource>
- <resource>
- <capability namespace="osgi.identity">
- <attribute name="osgi.identity" value="org.ops4j.pax.swissbox.tinybundles"/>
- <attribute name="type" value="osgi.bundle"/>
- <attribute name="version" type="Version" value="1.3.1"/>
- <directive name="singleton" value="true"/>
- </capability>
- <capability namespace="osgi.content">
- <attribute name="osgi.content" value="062d7f19cfd92453993def343a0938c31e368a2f29671cd91bfe2e605c3cc679"/>
- <attribute name="url" value="org.ops4j.pax.swissbox.tinybundles/org.ops4j.pax.swissbox.tinybundles-1.3.1.jar"/>
- <attribute name="size" type="Long" value="29253"/>
- <attribute name="mime" value="application/vnd.osgi.bundle"/>
- </capability>
- <capability namespace="osgi.wiring.bundle">
- <attribute name="osgi.wiring.bundle" value="org.ops4j.pax.swissbox.tinybundles"/>
- <attribute name="bundle-version" type="Version" value="1.3.1"/>
- </capability>
- <capability namespace="osgi.wiring.host">
- <attribute name="osgi.wiring.host" value="org.ops4j.pax.swissbox.tinybundles"/>
- <attribute name="bundle-version" type="Version" value="1.3.1"/>
- </capability>
- <capability namespace="osgi.wiring.package">
- <attribute name="osgi.wiring.package" value="org.ops4j.pax.swissbox.tinybundles.core"/>
- <attribute name="version" type="Version" value="1.3.1"/>
- <attribute name="bundle-symbolic-name" value="org.ops4j.pax.swissbox.tinybundles"/>
- <attribute name="bundle-version" type="Version" value="1.3.1"/>
- <directive name="uses" value="org.ops4j.store"/>
- </capability>
- <capability namespace="osgi.wiring.package">
- <attribute name="osgi.wiring.package" value="org.ops4j.pax.swissbox.tinybundles.dp"/>
- <attribute name="version" type="Version" value="1.3.1"/>
- <attribute name="bundle-symbolic-name" value="org.ops4j.pax.swissbox.tinybundles"/>
- <attribute name="bundle-version" type="Version" value="1.3.1"/>
- <directive name="uses" value="org.osgi.framework,org.ops4j.store,org.ops4j.pax.swissbox.tinybundles.core"/>
- </capability>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.apache.commons.logging)(version>=1.0.0)(!(version>=2.0.0)))"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.ops4j.io)(version>=1.2.0)(!(version>=2.0.0)))"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(osgi.wiring.package=org.ops4j.pax.swissbox.bnd)"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.ops4j.pax.swissbox.tinybundles.core)(version>=1.3.0)(!(version>=2.0.0)))"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.ops4j.pax.swissbox.tinybundles.dp)(version>=1.3.0)(!(version>=2.0.0)))"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.ops4j.store)(version>=1.2.0)(!(version>=2.0.0)))"/>
- </requirement>
- <requirement namespace="osgi.wiring.package">
- <directive name="filter" value="(&(osgi.wiring.package=org.osgi.framework)(version>=1.3.0)(!(version>=2.0.0)))"/>
- </requirement>
- </resource>
- <resource>
<capability namespace="osgi.identity">
<attribute name="osgi.identity" value="org.osgi.impl.bundle.bindex"/>
<attribute name="type" value="osgi.bundle"/>
Modified: ace/trunk/cnf/localrepo/index.xml.sha
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/localrepo/index.xml.sha?rev=1726222&r1=1726221&r2=1726222&view=diff
==============================================================================
--- ace/trunk/cnf/localrepo/index.xml.sha (original)
+++ ace/trunk/cnf/localrepo/index.xml.sha Fri Jan 22 14:44:51 2016
@@ -1 +1 @@
-7baf16715ecdbf5757c81d49267876c78f1c0cd1c0010d9e6f2ab13f04624bc8
\ No newline at end of file
+268ea703ab955c27bac260c994c9c12aaa72566cddf6b7ac053fbc8d34cf9d05
\ No newline at end of file
Added: ace/trunk/cnf/localrepo/javax.inject/javax.inject-1.0.0.jar
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/localrepo/javax.inject/javax.inject-1.0.0.jar?rev=1726222&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ace/trunk/cnf/localrepo/javax.inject/javax.inject-1.0.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: ace/trunk/cnf/localrepo/org.apache.commons.codec/org.apache.commons.codec-1.4.0.jar
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/localrepo/org.apache.commons.codec/org.apache.commons.codec-1.4.0.jar?rev=1726222&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ace/trunk/cnf/localrepo/org.apache.commons.codec/org.apache.commons.codec-1.4.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: ace/trunk/cnf/localrepo/org.apache.commons.collections/org.apache.commons.collections-3.2.1.jar
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/localrepo/org.apache.commons.collections/org.apache.commons.collections-3.2.1.jar?rev=1726222&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ace/trunk/cnf/localrepo/org.apache.commons.collections/org.apache.commons.collections-3.2.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: ace/trunk/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.1.jar
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.1.jar?rev=1726222&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ace/trunk/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: ace/trunk/cnf/localrepo/org.apache.commons.lang/org.apache.commons.lang-2.4.0.jar
URL: http://svn.apache.org/viewvc/ace/trunk/cnf/localrepo/org.apache.commons.lang/org.apache.commons.lang-2.4.0.jar?rev=1726222&view=auto
==============================================================================
Binary file - no diff available.
Propchange: ace/trunk/cnf/localrepo/org.apache.commons.lang/org.apache.commons.lang-2.4.0.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: ace/trunk/org.apache.ace.deployment/bnd.bnd
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.deployment/bnd.bnd?rev=1726222&r1=1726221&r2=1726222&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.deployment/bnd.bnd (original)
+++ ace/trunk/org.apache.ace.deployment/bnd.bnd Fri Jan 22 14:44:51 2016
@@ -1,11 +1,9 @@
--buildpath: ${^-buildpath},\
+-buildpath: \
+ ${^-buildpath},\
osgi.core,\
osgi.cmpn,\
javax.servlet,\
org.apache.felix.dependencymanager,\
- org.ops4j.pax.swissbox.tinybundles,\
- org.ops4j.base.store,\
- commons-logging,\
com.vaadin,\
org.apache.ace.authentication.api;version=latest,\
org.apache.ace.identification.api;version=latest,\
Modified: ace/trunk/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java?rev=1726222&r1=1726221&r2=1726222&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java (original)
+++ ace/trunk/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java Fri Jan 22 14:44:51 2016
@@ -20,10 +20,7 @@ package org.apache.ace.deployment.stream
import static org.apache.ace.test.utils.TestUtils.BROKEN;
import static org.apache.ace.test.utils.TestUtils.UNIT;
-import static org.ops4j.pax.swissbox.tinybundles.core.TinyBundles.newBundle;
-import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -41,6 +38,7 @@ import org.apache.ace.connectionfactory.
import org.apache.ace.deployment.provider.DeploymentProvider;
import org.apache.ace.deployment.util.test.TestProvider;
import org.apache.ace.test.constants.TestConstants;
+import org.apache.ace.test.utils.FileUtils;
import org.apache.ace.test.utils.TestUtils;
import org.osgi.service.log.LogService;
import org.osgi.service.useradmin.User;
@@ -60,23 +58,10 @@ public class StreamTest {
protected void setUp() throws Exception {
m_generator = new StreamGeneratorImpl();
m_provider = new TestProvider();
- InputStream is = newBundle().build(); // TODO this is a very trivial bundle, put more data in?
- File temp = File.createTempFile("bundle", "jar");
- temp.deleteOnExit();
- FileOutputStream fos = new FileOutputStream(temp);
- byte[] buf = new byte[4096];
- int b = is.read(buf);
- while (b != -1) {
- fos.write(buf, 0, b);
- b = is.read(buf);
- }
- fos.close();
- is.close();
- URL url = temp.toURI().toURL();
-
- m_provider.addData("A1.jar", "A1", url, "1.0.0", true);
- m_provider.addData("A2.jar", "A2", url, "1.0.0", false);
- m_provider.addData("A3.jar", "A3", url, "1.0.0", true);
+
+ m_provider.addData("A1.jar", "A1", FileUtils.createEmptyBundle(null, "org.apache.ace.test.bundle.A1").toURI().toURL(), "1.0.0", true);
+ m_provider.addData("A2.jar", "A2", FileUtils.createEmptyBundle(null, "org.apache.ace.test.bundle.A2").toURI().toURL(), "1.0.0", false);
+ m_provider.addData("A3.jar", "A3", FileUtils.createEmptyBundle(null, "org.apache.ace.test.bundle.A3").toURI().toURL(), "1.0.0", true);
TestUtils.configureObject(m_generator, DeploymentProvider.class, m_provider);
TestUtils.configureObject(m_generator, LogService.class);
TestUtils.configureObject(m_generator, ConnectionFactory.class, new MockConnectionFactory());
Added: ace/trunk/org.apache.ace.processlauncher.itest/.classpath
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.processlauncher.itest/.classpath?rev=1726222&view=auto
==============================================================================
--- ace/trunk/org.apache.ace.processlauncher.itest/.classpath (added)
+++ ace/trunk/org.apache.ace.processlauncher.itest/.classpath Fri Jan 22 14:44:51 2016
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="bin" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="con" path="aQute.bnd.classpath.container"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Propchange: ace/trunk/org.apache.ace.processlauncher.itest/.classpath
------------------------------------------------------------------------------
svn:eol-style = native
Added: ace/trunk/org.apache.ace.processlauncher.itest/.project
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.processlauncher.itest/.project?rev=1726222&view=auto
==============================================================================
--- ace/trunk/org.apache.ace.processlauncher.itest/.project (added)
+++ ace/trunk/org.apache.ace.processlauncher.itest/.project Fri Jan 22 14:44:51 2016
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.apache.ace.processlauncher.itest</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>bndtools.core.bndbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>bndtools.core.bndnature</nature>
+ </natures>
+</projectDescription>
Propchange: ace/trunk/org.apache.ace.processlauncher.itest/.project
------------------------------------------------------------------------------
svn:eol-style = native
Added: ace/trunk/org.apache.ace.processlauncher.itest/bnd.bnd
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.processlauncher.itest/bnd.bnd?rev=1726222&view=auto
==============================================================================
--- ace/trunk/org.apache.ace.processlauncher.itest/bnd.bnd (added)
+++ ace/trunk/org.apache.ace.processlauncher.itest/bnd.bnd Fri Jan 22 14:44:51 2016
@@ -0,0 +1,24 @@
+Test-Cases: ${classes;CONCRETE;EXTENDS;org.apache.ace.it.IntegrationTestBase}
+-buildpath: \
+ ${^-buildpath},\
+ org.apache.felix.dependencymanager,\
+ junit.osgi,\
+ osgi.core,\
+ osgi.cmpn,\
+ org.apache.ace.test;version=latest,\
+ org.apache.ace.processlauncher;version=latest
+-runfw: org.apache.felix.framework;version='[4,5)'
+-runvm: -ea
+-runbundles: \
+ osgi.cmpn,\
+ org.apache.felix.log,\
+ org.apache.felix.dependencymanager,\
+ org.apache.felix.configadmin,\
+ org.apache.ace.test;version=latest,\
+ org.apache.ace.processlauncher;version=latest
+Private-Package: org.apache.ace.processlauncher.itest
+Bundle-Version: 1.0.0
+Bundle-Name: Apache ACE ProcessLauncher Integration Test
+Bundle-Description: Registers a service factory and ProcessLauncher service
+Bundle-Category: itest
+-baseline:
Added: ace/trunk/org.apache.ace.processlauncher.itest/build.xml
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.processlauncher.itest/build.xml?rev=1726222&view=auto
==============================================================================
--- ace/trunk/org.apache.ace.processlauncher.itest/build.xml (added)
+++ ace/trunk/org.apache.ace.processlauncher.itest/build.xml Fri Jan 22 14:44:51 2016
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="project" default="build">
+ <import file="../cnf/build.xml"/>
+</project>
Propchange: ace/trunk/org.apache.ace.processlauncher.itest/build.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ace/trunk/org.apache.ace.processlauncher.itest/build.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java?rev=1726222&view=auto
==============================================================================
--- ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java (added)
+++ ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java Fri Jan 22 14:44:51 2016
@@ -0,0 +1,379 @@
+/*
+ * 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 org.apache.ace.processlauncher.itest;
+
+import static org.apache.ace.processlauncher.itest.TestUtil.getOSName;
+import static org.apache.ace.processlauncher.itest.TestUtil.sleep;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Properties;
+
+import org.apache.ace.it.IntegrationTestBase;
+import org.apache.ace.processlauncher.LaunchConfiguration;
+import org.apache.ace.processlauncher.ProcessLauncherService;
+import org.apache.ace.processlauncher.ProcessLifecycleListener;
+import org.apache.ace.processlauncher.ProcessStreamListener;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.util.tracker.ServiceTracker;
+
+import junit.framework.AssertionFailedError;
+
+/**
+ * Integration test for {@link ProcessLauncherService}.
+ */
+public class ProcessLauncherRespawnIntegrationTest extends IntegrationTestBase {
+
+ private final BundleContext m_context = FrameworkUtil.getBundle(getClass()).getBundleContext();
+
+ /**
+ * Tests that a new process will be respawned if its exit value is non-equal to two.
+ *
+ * @throws Exception not part of this test case.
+ */
+ public void testRespawnProcessWithExitValueTwoOnUnixBasedHostsOk() throws Exception {
+ // Test will not work on Windows!
+ if (getOSName().contains("windows")) {
+ return;
+ }
+
+ File tmpFile = createEmptyTempFile();
+
+ doTestRespawnProcess(tmpFile, "2", null /* psFilter */, null /* lcFilter */);
+
+ String contents = TestUtil.slurpFile(tmpFile);
+ assertTrue(contents, contents.matches("(?s)0.+1.+2.+"));
+ }
+
+ /**
+ * Tests that a new process will be respawned if its exit value is non-zero.
+ *
+ * @throws Exception not part of this test case.
+ */
+ public void testRespawnProcessWithExitValueZeroOnUnixBasedHostsOk() throws Exception {
+ // Test will not work on Windows!
+ if (getOSName().contains("windows")) {
+ return;
+ }
+
+ File tmpFile = createEmptyTempFile();
+
+ doTestRespawnProcess(tmpFile, "0", null /* psFilter */, null /* lcFilter */);
+
+ String contents = TestUtil.slurpFile(tmpFile);
+ assertTrue(contents, contents.matches("(?s)0.+1.+2.+3.+4.+"));
+ }
+
+ /**
+ * Tests that a new process will be respawned, and its process stream listener is called for
+ * each respawn.
+ *
+ * @throws Exception not part of this test case.
+ */
+ public void testRespawnProcessWithProcessStreamListenersOnUnixBasedHostsOk() throws Exception {
+ // Test will not work on Windows!
+ if (getOSName().contains("windows")) {
+ return;
+ }
+
+ File tmpFile = createEmptyTempFile();
+
+ TestProcessStreamListener psl = new TestProcessStreamListener();
+ String filter = registerProcessStreamListener(psl, "baz", "bam");
+
+ doTestRespawnProcess(tmpFile, "0", filter, null /* lcFilter */);
+
+ // Check whether our PSL is obtained and called...
+ assertEquals(5, psl.m_setStdoutCallCount);
+ assertEquals(5, psl.m_setStdinCallCount);
+
+ String contents = TestUtil.slurpFile(tmpFile);
+ assertTrue(contents, contents.matches("(?s)0.+1.+2.+3.+4.+"));
+ }
+
+ /**
+ * Tests that a new process will be respawned, and its process lifecycle listener is called for
+ * each respawn.
+ *
+ * @throws Exception not part of this test case.
+ */
+ public void testRespawnProcessWithProcessLifecycleListenersOnUnixBasedHostsOk() throws Exception {
+ // Test will not work on Windows!
+ if (getOSName().contains("windows")) {
+ return;
+ }
+
+ File tmpFile = createEmptyTempFile();
+
+ TestProcessLifecycleListener pll = new TestProcessLifecycleListener();
+ String filter = registerProcessLifecycleListener(pll, "bar", "foo");
+
+ doTestRespawnProcess(tmpFile, "0", null /* psFilter */, filter);
+
+ // Check whether our PSL is obtained and called...
+ assertEquals(5, pll.m_afterCallCount);
+ assertEquals(5, pll.m_beforeCallCount);
+
+ String contents = TestUtil.slurpFile(tmpFile);
+ assertTrue(contents, contents.matches("(?s)0.+1.+2.+3.+4.+"));
+ }
+
+ /**
+ * Creates an empty temporary file, that is deleted on exit of the JVM.
+ *
+ * @return a file instance pointing to a new temporary file.
+ * @throws IOException in case of I/O problems.
+ */
+ private File createEmptyTempFile() throws IOException {
+ File tmpFile = File.createTempFile("pls", null);
+ tmpFile.deleteOnExit();
+ return tmpFile;
+ }
+
+ /**
+ * Actual test implementation for <tt>#testRespawnProcessWithExitValue*<tt>.
+ *
+ * @param tmpFile the temporary file to write the script results to;
+ * @param normalExitValue the exit value that should be considered as normal.
+ * @throws IOException in case of I/O problems.
+ */
+ private void doTestRespawnProcess(File tmpFile, String normalExitValue, String psFilter, String lcFilter)
+ throws IOException {
+
+ int count = 4;
+ String tmpFilename = tmpFile.getAbsolutePath();
+
+ // Seems daunting, but what this command does is simply count the number
+ // of lines in a given file (= tmpFile), and append this to that same
+ // file; it uses this number to create an exit value, which counts from
+ // <count> back to 0. This way, we can test whether the respawn
+ // functionality works, as this currently checks for certain exit
+ // values...
+ String args =
+ String.format("-c L=$(cat\\ %1$s\\ |\\ wc\\ -l)\\ &&\\ echo\\ $L\\ >>\\ %1$s\\ &&\\ exit\\ $((%2$d-$L))",
+ tmpFilename, count);
+
+ Properties launchConfig = new Properties();
+ launchConfig.put("instance.count", "1");
+ launchConfig.put("executable.name", "/bin/bash");
+ launchConfig.put("executable.args", args);
+ launchConfig.put("executable.workingDir", "/tmp");
+ launchConfig.put("executable.respawnAutomatically", "true");
+ launchConfig.put("executable.normalExitValue", normalExitValue);
+ if (psFilter != null) {
+ launchConfig.put("executable.processStreamListener", psFilter);
+ }
+ if (lcFilter != null) {
+ launchConfig.put("executable.processLifecycleListener", lcFilter);
+ }
+
+ configureFactory(ProcessLauncherService.PID, launchConfig);
+
+ // Wait until the processes are done...
+ sleep(1000);
+ }
+
+ /**
+ * Registers a given process stream listener and returns the filter clause to obtain that same
+ * instance through OSGi.
+ *
+ * @param processStreamListener the process stream listener to register, cannot be
+ * <code>null</code>.
+ * @return the filter clause to obtain the exact same process stream listener through OSGi,
+ * never <code>null</code>.
+ */
+ private String registerProcessStreamListener(TestProcessStreamListener processStreamListener, String... properties) {
+ assertEquals("Number of properties not a multiple of two!", 0, properties.length % 2);
+
+ String className = ProcessStreamListener.class.getName();
+ String extraFilter = "";
+
+ Properties props = new Properties();
+ for (int i = 0; i < properties.length; i += 2) {
+ String key = properties[i];
+ String value = properties[i + 1];
+
+ extraFilter = String.format("%s(%s=%s)", extraFilter, key, value);
+ props.setProperty(key, value);
+ }
+
+ m_dependencyManager.add(m_dependencyManager.createComponent().setInterface(className, props)
+ .setImplementation(processStreamListener));
+
+ if (extraFilter.trim().isEmpty()) {
+ return String.format("(%s=%s)", Constants.OBJECTCLASS, className);
+ }
+ return String.format("(&(%s=%s)%s)", Constants.OBJECTCLASS, className, extraFilter);
+ }
+
+ /**
+ * Registers a given process lifecycle listener and returns the filter clause to obtain that
+ * same instance through OSGi.
+ *
+ * @param processLifecycleListener the process lifecycle listener to register, cannot be
+ * <code>null</code>.
+ * @return the filter clause to obtain the exact same process stream listener through OSGi,
+ * never <code>null</code>.
+ */
+ private String registerProcessLifecycleListener(TestProcessLifecycleListener processLifecycleListener,
+ String... properties) {
+ assertEquals("Number of properties not a multiple of two!", 0, properties.length % 2);
+
+ String className = ProcessLifecycleListener.class.getName();
+ String extraFilter = "";
+
+ Properties props = new Properties();
+ for (int i = 0; i < properties.length; i += 2) {
+ String key = properties[i];
+ String value = properties[i + 1];
+
+ extraFilter = String.format("%s(%s=%s)", extraFilter, key, value);
+ props.setProperty(key, value);
+ }
+
+ m_dependencyManager.add(m_dependencyManager.createComponent().setInterface(className, props)
+ .setImplementation(processLifecycleListener));
+
+ if (extraFilter.trim().isEmpty()) {
+ return String.format("(%s=%s)", Constants.OBJECTCLASS, className);
+ }
+ return String.format("(&(%s=%s)%s)", Constants.OBJECTCLASS, className, extraFilter);
+ }
+
+ /**
+ * Lazily initializes the configuration admin service and returns it.
+ *
+ * @return the {@link ConfigurationAdmin} instance, never <code>null</code>.
+ * @throws AssertionFailedError in case the {@link ConfigurationAdmin} service couldn't be
+ * obtained.
+ */
+ private ConfigurationAdmin getConfigAdmin() {
+ ServiceTracker serviceTracker = new ServiceTracker(m_context, ConfigurationAdmin.class.getName(), null);
+
+ ConfigurationAdmin instance = null;
+
+ serviceTracker.open();
+ try {
+ instance = (ConfigurationAdmin) serviceTracker.waitForService(2 * 1000);
+
+ if (instance == null) {
+ fail("ConfigurationAdmin service not found!");
+ }
+ else {
+ return instance;
+ }
+ }
+ catch (InterruptedException e) {
+ // Make sure the thread administration remains correct!
+ Thread.currentThread().interrupt();
+
+ e.printStackTrace();
+ fail("ConfigurationAdmin service not available: " + e.toString());
+ }
+
+ return instance;
+ }
+
+ /**
+ * Creates a factory configuration with the given properties, just like {@link #configure}.
+ *
+ * @param factoryPid the PID of the factory that should be used to create a configuration;
+ * @param properties the new configuration properties to configure, can be <code>null</code>.
+ * @return The PID of newly created configuration.
+ * @throws IOException when the configuration couldn't be set/updated.
+ * @throws AssertionFailedError in case the {@link ConfigurationAdmin} service couldn't be
+ * obtained.
+ */
+ private String configureFactory(String factoryPid, Properties properties) throws IOException {
+ assertNotNull("Parameter factoryPid cannot be null!", factoryPid);
+
+ org.osgi.service.cm.Configuration config = getConfigAdmin().createFactoryConfiguration(factoryPid, null);
+ config.update(properties);
+
+ // Delay a bit to allow configuration to be propagated...
+ sleep(500);
+
+ return config.getPid();
+ }
+
+ /**
+ * Testing implementation of {@link ProcessLifecycleListener}.
+ */
+ static final class TestProcessLifecycleListener implements ProcessLifecycleListener {
+ private volatile int m_beforeCallCount = 0;
+ private volatile int m_afterCallCount = 0;
+
+ /**
+ * {@inheritDoc}
+ */
+ public void afterProcessEnd(LaunchConfiguration configuration) {
+ m_afterCallCount++;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Properties beforeProcessStart(LaunchConfiguration configuration) {
+ m_beforeCallCount++;
+ return null;
+ }
+ }
+
+ /**
+ * Testing implementation of {@link ProcessStreamListener}.
+ */
+ static class TestProcessStreamListener implements ProcessStreamListener {
+
+ private volatile int m_setStdinCallCount = 0;
+ private volatile int m_setStdoutCallCount = 0;
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setStdin(LaunchConfiguration launchConfiguration, OutputStream outputStream) {
+ m_setStdinCallCount++;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setStdout(LaunchConfiguration launchConfiguration, InputStream inputStream) {
+ m_setStdoutCallCount++;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean wantsStdin() {
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean wantsStdout() {
+ return true;
+ }
+ }
+}
Propchange: ace/trunk/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java
------------------------------------------------------------------------------
svn:eol-style = native