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.
git-svn-id: https://svn.apache.org/repos/asf/ace/trunk@1726222 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/cnf/lib/commons-logging/commons-logging-1.1.1.jar b/cnf/lib/commons-logging/commons-logging-1.1.1.jar
deleted file mode 100644
index 1deef14..0000000
--- a/cnf/lib/commons-logging/commons-logging-1.1.1.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/gson/gson-1.7.1.jar b/cnf/lib/gson/gson-1.7.1.jar
deleted file mode 100644
index eb54274..0000000
--- a/cnf/lib/gson/gson-1.7.1.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/index.xml.gz b/cnf/lib/index.xml.gz
index c84ec82..e26148a 100644
--- a/cnf/lib/index.xml.gz
+++ b/cnf/lib/index.xml.gz
Binary files differ
diff --git a/cnf/lib/junit/junit-4.8.2.jar b/cnf/lib/junit/junit-4.8.2.jar
deleted file mode 100644
index 5b4bb84..0000000
--- a/cnf/lib/junit/junit-4.8.2.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-exam-container-native/pax-exam-container-native-2.3.0.jar b/cnf/lib/pax-exam-container-native/pax-exam-container-native-2.3.0.jar
deleted file mode 100644
index d855db8..0000000
--- a/cnf/lib/pax-exam-container-native/pax-exam-container-native-2.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-exam-inject/pax-exam-inject-2.3.0.jar b/cnf/lib/pax-exam-inject/pax-exam-inject-2.3.0.jar
deleted file mode 100644
index 5085904..0000000
--- a/cnf/lib/pax-exam-inject/pax-exam-inject-2.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-exam-junit4/pax-exam-junit4-2.3.0.jar b/cnf/lib/pax-exam-junit4/pax-exam-junit4-2.3.0.jar
deleted file mode 100644
index 5257ab0..0000000
--- a/cnf/lib/pax-exam-junit4/pax-exam-junit4-2.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-exam-link-mvn/pax-exam-link-mvn-2.3.0.jar b/cnf/lib/pax-exam-link-mvn/pax-exam-link-mvn-2.3.0.jar
deleted file mode 100644
index d1bb571..0000000
--- a/cnf/lib/pax-exam-link-mvn/pax-exam-link-mvn-2.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-exam/pax-exam-2.3.0.jar b/cnf/lib/pax-exam/pax-exam-2.3.0.jar
deleted file mode 100644
index fcd5410..0000000
--- a/cnf/lib/pax-exam/pax-exam-2.3.0.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-url-aether/pax-url-aether-1.3.5.jar b/cnf/lib/pax-url-aether/pax-url-aether-1.3.5.jar
deleted file mode 100644
index 7408917..0000000
--- a/cnf/lib/pax-url-aether/pax-url-aether-1.3.5.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-url-assembly/pax-url-assembly-1.3.5.jar b/cnf/lib/pax-url-assembly/pax-url-assembly-1.3.5.jar
deleted file mode 100644
index 1285478..0000000
--- a/cnf/lib/pax-url-assembly/pax-url-assembly-1.3.5.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-url-link/pax-url-link-1.3.5.jar b/cnf/lib/pax-url-link/pax-url-link-1.3.5.jar
deleted file mode 100644
index 724ec5a..0000000
--- a/cnf/lib/pax-url-link/pax-url-link-1.3.5.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/pax-url-wrap/pax-url-wrap-1.3.5.jar b/cnf/lib/pax-url-wrap/pax-url-wrap-1.3.5.jar
deleted file mode 100644
index 2d076a1..0000000
--- a/cnf/lib/pax-url-wrap/pax-url-wrap-1.3.5.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/repository.xml b/cnf/lib/repository.xml
index 6446fad..ff560aa 100644
--- a/cnf/lib/repository.xml
+++ b/cnf/lib/repository.xml
@@ -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
diff --git a/cnf/localrepo/index.xml b/cnf/localrepo/index.xml
index 7bc5b7e..ba130a0 100644
--- a/cnf/localrepo/index.xml
+++ b/cnf/localrepo/index.xml
@@ -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.io"/>
+ <attribute name="osgi.identity" value="org.apache.commons.codec"/>
<attribute name="type" value="osgi.bundle"/>
- <attribute name="version" type="Version" value="2.0.0"/>
+ <attribute name="version" type="Version" value="1.4.0"/>
</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="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.1"/>
+ </capability>
+ <capability namespace="osgi.content">
+ <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"/>
@@ -8224,110 +8548,6 @@
</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"/>
<attribute name="version" type="Version" value="2.2.0"/>
diff --git a/cnf/localrepo/index.xml.sha b/cnf/localrepo/index.xml.sha
index c5f629a..b4ae48b 100644
--- a/cnf/localrepo/index.xml.sha
+++ b/cnf/localrepo/index.xml.sha
@@ -1 +1 @@
-7baf16715ecdbf5757c81d49267876c78f1c0cd1c0010d9e6f2ab13f04624bc8
\ No newline at end of file
+268ea703ab955c27bac260c994c9c12aaa72566cddf6b7ac053fbc8d34cf9d05
\ No newline at end of file
diff --git a/cnf/lib/javax.inject/javax.inject-1.0.0.jar b/cnf/localrepo/javax.inject/javax.inject-1.0.0.jar
similarity index 100%
rename from cnf/lib/javax.inject/javax.inject-1.0.0.jar
rename to cnf/localrepo/javax.inject/javax.inject-1.0.0.jar
Binary files differ
diff --git a/cnf/lib/commons-codec/commons-codec-1.4.jar b/cnf/localrepo/org.apache.commons.codec/org.apache.commons.codec-1.4.0.jar
similarity index 100%
rename from cnf/lib/commons-codec/commons-codec-1.4.jar
rename to cnf/localrepo/org.apache.commons.codec/org.apache.commons.codec-1.4.0.jar
Binary files differ
diff --git a/cnf/lib/commons-collections/commons-collections-3.2.1.jar b/cnf/localrepo/org.apache.commons.collections/org.apache.commons.collections-3.2.1.jar
similarity index 100%
rename from cnf/lib/commons-collections/commons-collections-3.2.1.jar
rename to cnf/localrepo/org.apache.commons.collections/org.apache.commons.collections-3.2.1.jar
Binary files differ
diff --git a/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.0.jar b/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.0.jar
deleted file mode 100644
index dac59d8..0000000
--- a/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.0.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/lib/commons-io/commons-io-2.0.1.jar b/cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.1.jar
similarity index 100%
rename from cnf/lib/commons-io/commons-io-2.0.1.jar
rename to cnf/localrepo/org.apache.commons.io/org.apache.commons.io-2.0.1.jar
Binary files differ
diff --git a/cnf/lib/commons-lang/commons-lang-2.4.jar b/cnf/localrepo/org.apache.commons.lang/org.apache.commons.lang-2.4.0.jar
similarity index 100%
rename from cnf/lib/commons-lang/commons-lang-2.4.jar
rename to cnf/localrepo/org.apache.commons.lang/org.apache.commons.lang-2.4.0.jar
Binary files differ
diff --git a/cnf/localrepo/org.ops4j.base.store/org.ops4j.base.store-1.2.2.jar b/cnf/localrepo/org.ops4j.base.store/org.ops4j.base.store-1.2.2.jar
deleted file mode 100644
index 0209ed5..0000000
--- a/cnf/localrepo/org.ops4j.base.store/org.ops4j.base.store-1.2.2.jar
+++ /dev/null
Binary files differ
diff --git a/cnf/localrepo/org.ops4j.pax.swissbox.tinybundles/org.ops4j.pax.swissbox.tinybundles-1.3.1.jar b/cnf/localrepo/org.ops4j.pax.swissbox.tinybundles/org.ops4j.pax.swissbox.tinybundles-1.3.1.jar
deleted file mode 100644
index 6a5855c..0000000
--- a/cnf/localrepo/org.ops4j.pax.swissbox.tinybundles/org.ops4j.pax.swissbox.tinybundles-1.3.1.jar
+++ /dev/null
Binary files differ
diff --git a/org.apache.ace.deployment/bnd.bnd b/org.apache.ace.deployment/bnd.bnd
index 25728c7..f5e7097 100644
--- a/org.apache.ace.deployment/bnd.bnd
+++ b/org.apache.ace.deployment/bnd.bnd
@@ -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,\
diff --git a/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java b/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java
index 8c1eb22..5c0b0e4 100644
--- a/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java
+++ b/org.apache.ace.deployment/test/org/apache/ace/deployment/streamgenerator/impl/StreamTest.java
@@ -20,10 +20,7 @@
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.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 @@
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());
diff --git a/org.apache.ace.processlauncher.itest/.classpath b/org.apache.ace.processlauncher.itest/.classpath
new file mode 100644
index 0000000..efeacc9
--- /dev/null
+++ b/org.apache.ace.processlauncher.itest/.classpath
@@ -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>
diff --git a/org.apache.ace.processlauncher.itest/.project b/org.apache.ace.processlauncher.itest/.project
new file mode 100644
index 0000000..3d0a3b7
--- /dev/null
+++ b/org.apache.ace.processlauncher.itest/.project
@@ -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>
diff --git a/org.apache.ace.processlauncher.itest/bnd.bnd b/org.apache.ace.processlauncher.itest/bnd.bnd
new file mode 100644
index 0000000..40536ee
--- /dev/null
+++ b/org.apache.ace.processlauncher.itest/bnd.bnd
@@ -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:
diff --git a/org.apache.ace.processlauncher.itest/build.xml b/org.apache.ace.processlauncher.itest/build.xml
new file mode 100644
index 0000000..23063e2
--- /dev/null
+++ b/org.apache.ace.processlauncher.itest/build.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="project" default="build">
+ <import file="../cnf/build.xml"/>
+</project>
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/osgi/ProcessLauncherRespawnIntegrationTest.java b/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java
similarity index 83%
rename from org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/osgi/ProcessLauncherRespawnIntegrationTest.java
rename to org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java
index f81a009..08a433f 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/osgi/ProcessLauncherRespawnIntegrationTest.java
+++ b/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherRespawnIntegrationTest.java
@@ -16,19 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.ace.processlauncher.test.osgi;
+package org.apache.ace.processlauncher.itest;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertTrue;
-import static junit.framework.Assert.fail;
-import static org.apache.ace.processlauncher.test.impl.TestUtil.getOSName;
-import static org.apache.ace.processlauncher.test.impl.TestUtil.sleep;
-import static org.ops4j.pax.exam.CoreOptions.cleanCaches;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.CoreOptions.options;
-import static org.ops4j.pax.exam.CoreOptions.provision;
+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;
@@ -36,73 +27,31 @@
import java.io.OutputStream;
import java.util.Properties;
-import javax.inject.Inject;
-
-import junit.framework.AssertionFailedError;
-
+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.apache.ace.processlauncher.impl.ProcessLauncherServiceImpl;
-import org.apache.ace.processlauncher.test.impl.TestUtil;
-import org.apache.felix.dm.DependencyManager;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.Configuration;
-import org.ops4j.pax.exam.junit.JUnit4TestRunner;
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}.
*/
-@RunWith(JUnit4TestRunner.class)
-public class ProcessLauncherRespawnIntegrationTest {
+public class ProcessLauncherRespawnIntegrationTest extends IntegrationTestBase {
- @Inject
- private BundleContext m_context;
- private DependencyManager m_dependencyManager;
-
- /**
- * @return the PAX-exam configuration, never <code>null</code>.
- */
- @Configuration
- public Option[] config() {
- // Craft the correct options for PAX-URL wrap: to use Bnd and make a correct bundle...
- String bndOptions =
- String.format("Bundle-Activator=%1$s.osgi.Activator&" + "Export-Package=%1$s,%1$s.util&"
- + "Private-Package=%1$s.impl,%1$s.osgi", ProcessLauncherService.class.getPackage().getName());
-
- return options(cleanCaches(),
- junitBundles(),
- provision(mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.log").version("1.0.1")), //
- provision(mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.dependencymanager")
- .version("3.0.0")), //
- provision(mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.configadmin")
- .version("1.2.8")), //
- provision("wrap:assembly:./target/classes$" + bndOptions) //
- );
- }
-
- /**
- * Common set up for each test case.
- */
- @Before
- public void setUp() {
- m_dependencyManager = new DependencyManager(m_context);
- }
+ 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.
*/
- @Test
public void testRespawnProcessWithExitValueTwoOnUnixBasedHostsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -122,7 +71,6 @@
*
* @throws Exception not part of this test case.
*/
- @Test
public void testRespawnProcessWithExitValueZeroOnUnixBasedHostsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -143,7 +91,6 @@
*
* @throws Exception not part of this test case.
*/
- @Test
public void testRespawnProcessWithProcessStreamListenersOnUnixBasedHostsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -171,7 +118,6 @@
*
* @throws Exception not part of this test case.
*/
- @Test
public void testRespawnProcessWithProcessLifecycleListenersOnUnixBasedHostsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -242,7 +188,7 @@
launchConfig.put("executable.processLifecycleListener", lcFilter);
}
- configureFactory(ProcessLauncherServiceImpl.PID, launchConfig);
+ configureFactory(ProcessLauncherService.PID, launchConfig);
// Wait until the processes are done...
sleep(1000);
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/osgi/ProcessLauncherServiceIntegrationTest.java b/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherServiceIntegrationTest.java
similarity index 85%
rename from org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/osgi/ProcessLauncherServiceIntegrationTest.java
rename to org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherServiceIntegrationTest.java
index c80d9f3..34cde2c 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/osgi/ProcessLauncherServiceIntegrationTest.java
+++ b/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/ProcessLauncherServiceIntegrationTest.java
@@ -16,84 +16,36 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.ace.processlauncher.test.osgi;
+package org.apache.ace.processlauncher.itest;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.fail;
-import static org.apache.ace.processlauncher.test.impl.TestUtil.getOSName;
-import static org.apache.ace.processlauncher.test.impl.TestUtil.sleep;
-import static org.ops4j.pax.exam.CoreOptions.cleanCaches;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.CoreOptions.options;
-import static org.ops4j.pax.exam.CoreOptions.provision;
+import static org.apache.ace.processlauncher.itest.TestUtil.getOSName;
+import static org.apache.ace.processlauncher.itest.TestUtil.sleep;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
-import javax.inject.Inject;
-
-import junit.framework.AssertionFailedError;
-
+import org.apache.ace.it.IntegrationTestBase;
import org.apache.ace.processlauncher.LaunchConfiguration;
import org.apache.ace.processlauncher.ProcessLauncherService;
import org.apache.ace.processlauncher.ProcessStreamListener;
-import org.apache.ace.processlauncher.impl.ProcessLauncherServiceImpl;
-import org.apache.felix.dm.DependencyManager;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.Configuration;
-import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.apache.felix.dm.Component;
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}.
*/
-@RunWith(JUnit4TestRunner.class)
-public class ProcessLauncherServiceIntegrationTest {
+public class ProcessLauncherServiceIntegrationTest extends IntegrationTestBase {
- @Inject
- private BundleContext m_context;
- @Inject
+ private final BundleContext m_context = FrameworkUtil.getBundle(getClass()).getBundleContext();
private ProcessLauncherService m_instance;
- private DependencyManager m_dependencyManager;
-
- /**
- * @return the PAX-exam configuration, never <code>null</code>.
- */
- @Configuration
- public Option[] config() {
- // Craft the correct options for PAX-URL wrap: to use Bnd and make a correct bundle...
- String bndOptions =
- String.format("Bundle-Activator=%1$s.osgi.Activator&" + "Export-Package=%1$s,%1$s.util&"
- + "Private-Package=%1$s.impl,%1$s.osgi", ProcessLauncherService.class.getPackage().getName());
-
- return options(cleanCaches(),
- junitBundles(),
- provision(mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.log").version("1.0.1")), //
- provision(mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.dependencymanager")
- .version("3.0.0")), //
- provision(mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.configadmin")
- .version("1.2.8")), //
- provision("wrap:assembly:./target/classes$" + bndOptions) //
- );
- }
-
- /**
- * Common set up for each test case.
- */
- @Before
- public void setUp() {
- m_dependencyManager = new DependencyManager(m_context);
- }
/**
* Tests that manually providing a launch configuration to a {@link ProcessLauncherService} will
@@ -101,7 +53,6 @@
*
* @throws Exception not part of this test case.
*/
- @Test
public void testLaunchProcessWithExitValueOneOnUnixBasedHostsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -136,12 +87,11 @@
}
/**
- * Tests that manually providing a launch configuration to a {@link ProcessLauncherServiceImpl}
+ * Tests that manually providing a launch configuration to a {@link ProcessLauncherService}
* will cause a new process to be started and terminated.
*
* @throws Exception not part of this test case.
*/
- @Test
public void testLaunchProcessWithExitValueZeroOnUnixBasedHostsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -181,7 +131,6 @@
*
* @throws Exception not part of this test case.
*/
- @Test
public void testLaunchProcessWithMultipleRegisteredProcessStreamListenerOnUnixBasedHostsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -233,7 +182,6 @@
*
* @throws Exception not part of this test case.
*/
- @Test
public void testLaunchProcessWithoutRegisteredProcessStreamListenerOnUnixBasedHostsFail() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -282,7 +230,6 @@
*
* @throws Exception not part of this test case.
*/
- @Test
public void testLaunchProcessWithRegisteredProcessStreamListenerOnUnixBasedHostsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -347,9 +294,8 @@
extraFilter = String.format("%s(%s=%s)", extraFilter, key, value);
props.setProperty(key, value);
}
-
- m_dependencyManager.add(m_dependencyManager.createComponent().setInterface(className, props)
- .setImplementation(processStreamListener));
+
+ m_context.registerService(className, processStreamListener, props);
if (extraFilter.trim().isEmpty()) {
return String.format("(%s=%s)", Constants.OBJECTCLASS, className);
@@ -391,6 +337,15 @@
return instance;
}
+ @Override
+ protected Component[] getDependencies() {
+ return new Component[] {
+ createComponent()
+ .setImplementation(this)
+ .add(createServiceDependency().setService(ProcessLauncherService.class).setRequired(true))
+ };
+ }
+
/**
* Creates a factory configuration with the given properties, just like {@link #configure}.
*
diff --git a/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/TestUtil.java b/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/TestUtil.java
new file mode 100644
index 0000000..63f5300
--- /dev/null
+++ b/org.apache.ace.processlauncher.itest/src/org/apache/ace/processlauncher/itest/TestUtil.java
@@ -0,0 +1,125 @@
+/*
+ * 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 java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+/**
+ * Provides some convenience methods commonly used in the unit tests of ace-launcher.
+ */
+public final class TestUtil {
+
+ /**
+ * Creates a new {@link TestUtil} instance, not used.
+ */
+ private TestUtil() {
+ // No-op
+ }
+
+ /**
+ * Returns the name of the running operating system.
+ *
+ * @return the OS-name, in lower case.
+ */
+ public static String getOSName() {
+ return System.getProperty("os.name", "").toLowerCase();
+ }
+
+ /**
+ * Obtains the file denoted by the given path as resource, and treats it as properties file.
+ *
+ * @param path the path to the resource to load, cannot be <code>null</code>.
+ * @return a properties file, never <code>null</code>.
+ * @throws IOException in case of I/O problems reading the properties file;
+ * @throws RuntimeException in case the given path is not a valid resource file.
+ */
+ public static Properties getProperties(String path) throws IOException {
+ InputStream is = TestUtil.class.getResourceAsStream(path);
+ if (is == null) {
+ throw new RuntimeException("File not found: " + path);
+ }
+ try {
+ Properties props = new Properties();
+ props.load(is);
+ return props;
+ }
+ finally {
+ is.close();
+ }
+ }
+
+ /**
+ * Sleeps for a given amount of milliseconds.
+ *
+ * @param delayInMillis the delay to sleep, in milliseconds.
+ */
+ public static void sleep(int delayInMillis) {
+ try {
+ Thread.sleep(delayInMillis);
+ }
+ catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ /**
+ * Reads an entire file denoted by the given argument and returns its content as string.
+ *
+ * @param file the file to read, cannot be <code>null</code>.
+ * @return the file contents, never <code>null</code>.
+ * @throws IOException in case of I/O problems reading the file.
+ */
+ public static String slurpFile(File file) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ FileReader fr = new FileReader(file);
+ int ch;
+ try {
+ while ((ch = fr.read()) >= 0) {
+ sb.append((char) ch);
+ }
+ }
+ finally {
+ fr.close();
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Creates a unique temporary directory.
+ *
+ * @return the unique temporary directory
+ */
+ public static File createTempDir() throws IOException {
+
+ File baseDir = new File(System.getProperty("java.io.tmpdir"));
+ String baseName = System.currentTimeMillis() + "-";
+
+ for (int counter = 0; counter < 1000; counter++) {
+ File tempDir = new File(baseDir, baseName + counter);
+ if (tempDir.mkdir()) {
+ return tempDir;
+ }
+ }
+ throw new IOException("Failed to create tmp directory");
+ }
+}
diff --git a/org.apache.ace.processlauncher/bnd.bnd b/org.apache.ace.processlauncher/bnd.bnd
index 6716e2c..395bf7e 100644
--- a/org.apache.ace.processlauncher/bnd.bnd
+++ b/org.apache.ace.processlauncher/bnd.bnd
@@ -1,25 +1,17 @@
--buildpath: ${^-buildpath},\
+-buildpath: \
+ ${^-buildpath},\
org.apache.felix.dependencymanager,\
org.mockito.mockito-all,\
osgi.core,\
osgi.cmpn,\
- junit;version=4.8.2,\
- javax.inject;version=1.0.0,\
- org.ops4j.pax.exam;version=2.3.0,\
- pax-exam-container-native;version=2.3.0,\
- org.ops4j.pax.exam.inject;version=2.3.0,\
- pax-exam-junit4;version=2.3.0,\
- pax-exam-link-mvn;version=2.3.0,\
- org.ops4j.pax.url.mvn;version=1.3.5,\
- org.ops4j.pax.url.assembly;version=1.3.5,\
- org.ops4j.pax.url.link;version=1.3.5,\
- org.ops4j.pax.url.wrap;version=1.3.5,\
- slf4j.simple,\
org.apache.ace.test;version=latest
-Private-Package: org.apache.ace.processlauncher.osgi,\
+Private-Package: \
+ org.apache.ace.processlauncher.osgi,\
org.apache.ace.processlauncher.impl
-Bundle-Activator: org.apache.ace.processlauncher.osgi.Activator
-Export-Package: org.apache.ace.processlauncher,\
+Bundle-Activator: \
+ org.apache.ace.processlauncher.osgi.Activator
+Export-Package: \
+ org.apache.ace.processlauncher,\
org.apache.ace.processlauncher.util
Bundle-Version: 1.0.1
Bundle-Name: Apache ACE ProcessLauncher
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationFactoryTest.java b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationFactoryTest.java
index 57c7276..b374c5f 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationFactoryTest.java
+++ b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationFactoryTest.java
@@ -18,23 +18,29 @@
*/
package org.apache.ace.processlauncher.test.impl;
-import java.util.Properties;
+import static org.apache.ace.test.utils.TestUtils.UNIT;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.fail;
-import junit.framework.TestCase;
+import java.util.Properties;
import org.apache.ace.processlauncher.LaunchConfiguration;
import org.apache.ace.processlauncher.impl.LaunchConfigurationFactory;
import org.osgi.service.cm.ConfigurationException;
+import org.testng.annotations.Test;
/**
* Test cases for {@link LaunchConfigurationFactory}.
*/
-public final class LaunchConfigurationFactoryTest extends TestCase {
+public final class LaunchConfigurationFactoryTest {
private static void assertArrayEquals(Object[] expected, Object[] actual) {
- assertEquals("Array length mismatch!", expected.length, actual.length);
+ assertEquals(expected.length, actual.length, "Array length mismatch!");
for (int i = 0; i < expected.length; i++) {
- assertEquals("Array element (" + i + ") mismatch!", expected[i], actual[i]);
+ assertEquals(expected[i], actual[i], "Array element (" + i + ") mismatch!");
}
}
@@ -43,6 +49,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCreateLaunchConfigurationBasedOnPropertiesFileOk() throws Exception {
Properties props = TestUtil.getProperties("launch.properties");
assertNotNull(props);
@@ -62,6 +69,7 @@
*
* @throws ConfigurationException not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCreateWithCompleteConfigOk() throws ConfigurationException {
Properties props = new Properties();
props.put(LaunchConfigurationFactory.INSTANCE_COUNT, "1");
@@ -85,6 +93,7 @@
/**
* Tests that an incomplete configuration causes an exception.
*/
+ @Test(groups = { UNIT })
public void testCreateWithEmptyExecutableNameFail() {
Properties props = new Properties();
props.put(LaunchConfigurationFactory.INSTANCE_COUNT, "1");
@@ -104,6 +113,7 @@
/**
* Tests that an incomplete configuration causes an exception.
*/
+ @Test(groups = { UNIT })
public void testCreateWithInvalidInstanceCountFail() {
Properties props = new Properties();
props.put(LaunchConfigurationFactory.INSTANCE_COUNT, "0");
@@ -125,6 +135,7 @@
*
* @throws ConfigurationException not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCreateWithInvalidProcessStreamListenerFilterFail() throws ConfigurationException {
Properties props = new Properties();
props.put(LaunchConfigurationFactory.INSTANCE_COUNT, "1");
@@ -167,6 +178,7 @@
/**
* Tests that an incomplete configuration causes an exception.
*/
+ @Test(groups = { UNIT })
public void testCreateWithNonNumericInstanceCountFail() {
Properties props = new Properties();
props.put(LaunchConfigurationFactory.INSTANCE_COUNT, "foo");
@@ -188,6 +200,7 @@
*
* @throws ConfigurationException not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCreateWithNullConfigFail() throws ConfigurationException {
try {
LaunchConfigurationFactory.create(null);
@@ -201,6 +214,7 @@
/**
* Tests that an incomplete configuration causes an exception.
*/
+ @Test(groups = { UNIT })
public void testCreateWithNullExecutableArgumentsFail() {
Properties props = new Properties();
props.put(LaunchConfigurationFactory.INSTANCE_COUNT, "1");
@@ -219,6 +233,7 @@
/**
* Tests that an incomplete configuration causes an exception.
*/
+ @Test(groups = { UNIT })
public void testCreateWithNullExecutableNameFail() {
Properties props = new Properties();
props.put(LaunchConfigurationFactory.INSTANCE_COUNT, "1");
@@ -237,6 +252,7 @@
/**
* Tests that an incomplete configuration causes an exception.
*/
+ @Test(groups = { UNIT })
public void testCreateWithNullInstanceCountFail() {
Properties props = new Properties();
props.put(LaunchConfigurationFactory.EXECUTABLE_NAME, "/path/to/foo");
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationTest.java b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationTest.java
index 46b6065..a965036 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationTest.java
+++ b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/LaunchConfigurationTest.java
@@ -18,19 +18,27 @@
*/
package org.apache.ace.processlauncher.test.impl;
-import junit.framework.TestCase;
+import static org.apache.ace.test.utils.TestUtils.UNIT;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
import org.apache.ace.processlauncher.LaunchConfiguration;
import org.apache.ace.processlauncher.impl.LaunchConfigurationImpl;
+import org.testng.annotations.Test;
/**
* Test cases for {@link LaunchConfigurationImpl}.
*/
-public final class LaunchConfigurationTest extends TestCase {
+public final class LaunchConfigurationTest {
/**
* Test that creating a valid {@link LaunchConfigurationImpl} works.
*/
+ @Test(groups = { UNIT })
public void testCreateLaunchConfigurationOk() {
LaunchConfiguration launchConfig = new LaunchConfigurationImpl(1, "/path/to/foo", new String[0], null, false);
assertNotNull(launchConfig);
@@ -40,6 +48,7 @@
* Test that the {@link LaunchConfigurationImpl} constructor validates the executable name
* properly.
*/
+ @Test(groups = { UNIT })
public void testCreateLaunchConfigurationWithEmptyExecutableNameFail() {
try {
new LaunchConfigurationImpl(1, "", new String[0], null, false);
@@ -54,6 +63,7 @@
* Test that the {@link LaunchConfigurationImpl} constructor validates the instance count
* properly.
*/
+ @Test(groups = { UNIT })
public void testCreateLaunchConfigurationWithNegativeInstanceCountFail() {
try {
new LaunchConfigurationImpl(-1, "/path/to/foo", new String[0], null, false);
@@ -68,6 +78,7 @@
* Test that the {@link LaunchConfigurationImpl} constructor validates the executable arguments
* properly.
*/
+ @Test(groups = { UNIT })
public void testCreateLaunchConfigurationWithNullExecutableArgsFail() {
try {
new LaunchConfigurationImpl(1, "/path/to/foo", null, null, false);
@@ -82,6 +93,7 @@
* Test that the {@link LaunchConfigurationImpl} constructor validates the executable name
* properly.
*/
+ @Test(groups = { UNIT })
public void testCreateLaunchConfigurationWithNullExecutableNameFail() {
try {
new LaunchConfigurationImpl(1, null, new String[0], null, false);
@@ -96,6 +108,7 @@
* Test that the {@link LaunchConfigurationImpl} constructor validates the instance count
* properly.
*/
+ @Test(groups = { UNIT })
public void testCreateLaunchConfigurationWithZeroInstanceCountFail() {
try {
new LaunchConfigurationImpl(0, "/path/to/foo", new String[0], null, false);
@@ -110,6 +123,7 @@
* Test that the {@link LaunchConfigurationImpl#getCommandLine()} method works properly when one
* executable arguments are given.
*/
+ @Test(groups = { UNIT })
public void testGetCommandLineWithOneArgumentsOk() {
LaunchConfiguration launchConfig =
new LaunchConfigurationImpl(1, "/path/to/foo", new String[] { "-bar" }, null, false);
@@ -126,6 +140,7 @@
* Test that the {@link LaunchConfigurationImpl#getCommandLine()} method works properly when no
* executable arguments are given.
*/
+ @Test(groups = { UNIT })
public void testGetCommandLineWithoutArgumentsOk() {
LaunchConfiguration launchConfig =
new LaunchConfigurationImpl(1, "cwd", "/path/to/foo", new String[0], 0, "(foo=bar)", "(qux=quu)", false);
@@ -144,6 +159,7 @@
* Test that the {@link LaunchConfigurationImpl#getCommandLine()} method works properly when two
* executable arguments are given.
*/
+ @Test(groups = { UNIT })
public void testGetCommandLineWithTwoArgumentsOk() {
LaunchConfiguration launchConfig =
new LaunchConfigurationImpl(1, "/path/to/foo", new String[] { "-qux", "-bar" }, null, true);
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherServiceImplTest.java b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherServiceImplTest.java
index e9912c3..34e4821 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherServiceImplTest.java
+++ b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherServiceImplTest.java
@@ -18,14 +18,17 @@
*/
package org.apache.ace.processlauncher.test.impl;
+import static org.apache.ace.test.utils.TestUtils.UNIT;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
import java.util.Dictionary;
import java.util.Properties;
-import junit.framework.TestCase;
-
import org.apache.ace.processlauncher.impl.LaunchConfigurationFactory;
import org.apache.ace.processlauncher.impl.ProcessLauncherServiceImpl;
import org.apache.ace.processlauncher.impl.ProcessManager;
@@ -33,11 +36,13 @@
import org.apache.ace.test.utils.TestUtils;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.log.LogService;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
/**
* Test cases for {@link ProcessLauncherServiceImpl}.
*/
-public class ProcessLauncherServiceImplTest extends TestCase {
+public class ProcessLauncherServiceImplTest {
private ProcessLauncherServiceImpl m_service;
private Dictionary<Object, Object> m_launchConfig;
@@ -48,6 +53,7 @@
*
* @throws ConfigurationException not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testAddConfigurationWorksOk() throws ConfigurationException {
final String pid = "existing-pid";
@@ -62,6 +68,7 @@
*
* @throws ConfigurationException not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testDeleteExistingConfigurationOk() throws ConfigurationException {
final String pid = "existing-pid";
@@ -75,6 +82,7 @@
/**
* Tests that deleting a non-existing launch configuration doesn't cause an exception.
*/
+ @Test(groups = { UNIT })
public void testDeleteNonExistingConfigurationOk() {
m_service.deleted("non-existing-pid");
}
@@ -82,6 +90,7 @@
/**
* Tests that the getName method doesn't return <code>null</code>.
*/
+ @Test(groups = { UNIT })
public void testGetNameOk() {
assertNotNull(m_service.getName());
}
@@ -91,6 +100,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testGetRunningProcessCountOk() throws Exception {
final String pid = "existing-pid";
@@ -104,6 +114,7 @@
*
* @throws ConfigurationException not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testReplacingConfigurationWorksOk() throws ConfigurationException {
final String pid = "existing-pid";
@@ -122,6 +133,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testShutdownRemovesAllConfigurationsOk() throws Exception {
assertEquals(0, m_service.getLaunchConfigurationCount());
@@ -141,6 +153,7 @@
*
* @throws ConfigurationException not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testUpdateConfigurationWorksOk() throws ConfigurationException {
final String pid = "existing-pid";
@@ -158,7 +171,7 @@
*
* @throws Exception not part of this test case.
*/
- @Override
+ @BeforeMethod
protected void setUp() throws Exception {
m_service = new ProcessLauncherServiceImpl();
m_service.setLogger(TestUtils.createNullObject(LogService.class));
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherTest.java b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherTest.java
index 6a9ee3e..5b8a65e 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherTest.java
+++ b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessLauncherTest.java
@@ -20,6 +20,13 @@
import static org.apache.ace.processlauncher.test.impl.TestUtil.getOSName;
import static org.apache.ace.processlauncher.test.impl.TestUtil.sleep;
+import static org.apache.ace.test.utils.TestUtils.UNIT;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -28,19 +35,18 @@
import java.io.OutputStream;
import java.util.Properties;
-import junit.framework.TestCase;
-
import org.apache.ace.processlauncher.LaunchConfiguration;
import org.apache.ace.processlauncher.ProcessLifecycleListener;
import org.apache.ace.processlauncher.ProcessStreamListener;
import org.apache.ace.processlauncher.impl.LaunchConfigurationImpl;
import org.apache.ace.processlauncher.impl.ProcessLauncher;
import org.apache.ace.processlauncher.util.InputStreamRedirector;
+import org.testng.annotations.Test;
/**
* Test cases for {@link ProcessLauncher}.
*/
-public class ProcessLauncherTest extends TestCase {
+public class ProcessLauncherTest {
/**
* Tests that an existing executable (Java) can be called with valid arguments and its output
@@ -48,6 +54,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCallAlreadyRunningProcessCausesExceptionFail() throws Exception {
String execName = determineJavaExecutable();
@@ -71,6 +78,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testLifecycleMethodsAreCalledOk() throws Exception {
String execName = determineJavaExecutable();
@@ -95,6 +103,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCallCleanupOnRunningProcessFails() throws Exception {
String execName = determineJavaExecutable();
@@ -119,6 +128,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCallCleanupOnTerminatedProcessOk() throws Exception {
String execName = determineJavaExecutable();
@@ -139,6 +149,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCallExistingExecutableWithoutArgumentOk() throws Exception {
String execName = determineJavaExecutable();
@@ -150,7 +161,7 @@
Integer exitValue = launcher.waitForTermination();
assertNotNull(exitValue);
- assertEquals(0, exitValue.intValue());
+ assertEquals(1, exitValue.intValue());
// Both methods should return the same exit value!
assertEquals(exitValue, launcher.getExitValue());
@@ -160,7 +171,7 @@
// Make sure the test doesn't fail when the usage text is translated or
// something...
- assertTrue(stdout, stdout.contains("Usage: java"));
+ assertTrue(stdout.contains("Usage: java"), stdout);
}
/**
@@ -169,6 +180,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCallExistingExecutableWithUnknownArgumentsOk() throws Exception {
String execName = determineJavaExecutable();
String execArgs = "-nonExistingArg";
@@ -190,6 +202,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCallExistingExecutableWithValidArgumentOk() throws Exception {
String execName = determineJavaExecutable();
String execArgs = "-version";
@@ -210,7 +223,7 @@
// Make sure the test doesn't fail when the usage text is translated or
// something...
- assertTrue(stdout, stdout.contains("java version"));
+ assertTrue(stdout.contains("java version"), stdout);
}
/**
@@ -218,6 +231,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testCallNonExistingExecutableOk() throws Exception {
String execName = "/path/to/java";
String execArgs = "-version";
@@ -237,6 +251,7 @@
* Tests that attempting to create a new {@link ProcessLauncher} without a valid launch
* configuration yields an exception.
*/
+ @Test(groups = { UNIT })
public void testCreateProcessLauncherWithoutLaunchConfigurationFail() {
try {
new ProcessLauncher(null);
@@ -251,6 +266,7 @@
* Tests that attempting to obtain the exit value without a launched process yields a null
* value.
*/
+ @Test(groups = { UNIT })
public void testGetExitValueWithoutLaunchedProcessReturnsNull() {
String execName = determineJavaExecutable();
String execArgs = "-version";
@@ -266,6 +282,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testInteractWithProcessOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -304,6 +321,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testInteractWithProcessThroughArgumentsOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -341,6 +359,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testProcessStdinIsProperlyClosedOk() throws Exception {
// Test will not work on Windows!
if (getOSName().contains("windows")) {
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessManagerImplTest.java b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessManagerImplTest.java
index 9b9b719..b55cf40 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessManagerImplTest.java
+++ b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/ProcessManagerImplTest.java
@@ -21,22 +21,25 @@
import static org.apache.ace.processlauncher.test.impl.TestUtil.createTempDir;
import static org.apache.ace.processlauncher.test.impl.TestUtil.getOSName;
import static org.apache.ace.processlauncher.test.impl.TestUtil.sleep;
+import static org.apache.ace.test.utils.TestUtils.UNIT;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
import java.io.File;
-import junit.framework.TestCase;
-
import org.apache.ace.processlauncher.LaunchConfiguration;
import org.apache.ace.processlauncher.impl.LaunchConfigurationImpl;
import org.apache.ace.processlauncher.impl.ProcessManager;
import org.apache.ace.processlauncher.impl.ProcessManagerImpl;
import org.apache.ace.test.utils.TestUtils;
import org.osgi.service.log.LogService;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
/**
* Test cases for {@link ProcessManager}.
*/
-public class ProcessManagerImplTest extends TestCase {
+public class ProcessManagerImplTest {
private ProcessManagerImpl m_processManager;
@@ -45,6 +48,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testLaunchProcessOnUnixDerivativeOk() throws Exception {
// This test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -77,6 +81,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testLaunchProcessOnWindowsOk() throws Exception {
// This test will only work on Windows!
if (!getOSName().contains("windows")) {
@@ -109,6 +114,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testRespawnProcessOnUnixDerivativeOk() throws Exception {
// This test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -146,7 +152,7 @@
assertEquals(processCountBefore, m_processManager.getRunningProcessesCount());
String testResult = TestUtil.slurpFile(tmpFile);
- assertTrue(testResult, testResult.matches("(?s)^0\n1\n2\n$"));
+ assertTrue(testResult.matches("(?s)^0\n1\n2\n$"), testResult);
}
/**
@@ -154,6 +160,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testShutdownOnUnixDerivativeOk() throws Exception {
// This test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -187,6 +194,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testShutdownOnWindowsOk() throws Exception {
// This test will only work on Windows!
if (!getOSName().contains("windows")) {
@@ -220,6 +228,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testTerminateProcessOnUnixDerivativeOk() throws Exception {
// This test will not work on Windows!
if (getOSName().contains("windows")) {
@@ -252,6 +261,7 @@
*
* @throws Exception not part of this test case.
*/
+ @Test(groups = { UNIT })
public void testTerminateProcessOnWindowsOk() throws Exception {
// This test will not work on Windows!
if (!getOSName().contains("windows")) {
@@ -282,7 +292,7 @@
/**
* Set up for this test case.
*/
- @Override
+ @BeforeTest
protected void setUp() {
m_processManager = new ProcessManagerImpl();
TestUtils.configureObject(m_processManager, LogService.class);
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/StringSplitterTest.java b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/StringSplitterTest.java
index 60ef495..033a7f7 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/StringSplitterTest.java
+++ b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/impl/StringSplitterTest.java
@@ -19,19 +19,21 @@
package org.apache.ace.processlauncher.test.impl;
import static org.apache.ace.processlauncher.impl.StringSplitter.split;
+import static org.apache.ace.test.utils.TestUtils.UNIT;
+import static org.testng.Assert.assertEquals;
import org.apache.ace.processlauncher.impl.StringSplitter;
-
-import junit.framework.TestCase;
+import org.testng.annotations.Test;
/**
* Test cases for {@link StringSplitter}.
*/
-public class StringSplitterTest extends TestCase {
+public class StringSplitterTest {
/**
* Test double quoted command line argument.
*/
+ @Test(groups = { UNIT })
public void testDoubleQuotedCommandLineArgumentOk() {
String[] result =
split("\\\"fwOption=org.osgi.framework.system.packages.extra=org.w3c.dom.tral,org.w3c.dom.html,org.w3c.dom.ranges,sun.reflect,org.osgi.service.deploymentadmin;version=\"1.0\",org.osgi.service.deploymentadmin.spi;version=\"1.0\",org.osgi.service.cm;version=\"1.3\",org.osgi.service.event;version=\"1.2\",org.osgi.service.log;version=\"1.3\",org.osgi.service.metatype;version=\"1.1\",org.apache.ace.log;version=\"0.8.0\"\\\"");
@@ -43,6 +45,7 @@
/**
* Test double quoted string.
*/
+ @Test(groups = { UNIT })
public void testDoubleQuotedStringOk() {
String[] result = split("\"hello world\"");
assertArrayEquals(new String[] { "\"hello world\"" }, result);
@@ -51,6 +54,7 @@
/**
* Test double quoted string with trailing text.
*/
+ @Test(groups = { UNIT })
public void testDoubleQuotedStringWithTrailingTextOk() {
String[] result = split("\"hello world\" foo-bar");
assertArrayEquals(new String[] { "\"hello world\"", "foo-bar" }, result);
@@ -59,6 +63,7 @@
/**
* Test double quoted words.
*/
+ @Test(groups = { UNIT })
public void testDoubleQuotedWordsOk() {
String[] result = split("\"hello\" \"world\"");
assertArrayEquals(new String[] { "\"hello\"", "\"world\"" }, result);
@@ -67,6 +72,7 @@
/**
* Test double quoted words omit quotes.
*/
+ @Test(groups = { UNIT })
public void testDoubleQuotedWordsOmitQuotesOk() {
String[] result = split("\"hello\" \"world\"", false /* includeQuotes */);
assertArrayEquals(new String[] { "hello", "world" }, result);
@@ -75,6 +81,7 @@
/**
* Test escaped backslash in string.
*/
+ @Test(groups = { UNIT })
public void testEscapedBackslashInStringOk() {
String[] result = split("hello\\\\ world");
assertArrayEquals(new String[] { "hello\\", "world" }, result);
@@ -83,6 +90,7 @@
/**
* Test escaped backslash string in double quotes.
*/
+ @Test(groups = { UNIT })
public void testEscapedBackslashStringInDoubleQuotesOk() {
String[] result = split("\"hello\\\\ world\"");
assertArrayEquals(new String[] { "\"hello\\ world\"" }, result);
@@ -91,6 +99,7 @@
/**
* Test escaped double quoted in single quoted string.
*/
+ @Test(groups = { UNIT })
public void testEscapedDoubleQuotedInSingleQuotedStringOk() {
String[] result = split("'\"hello world\"'");
assertArrayEquals(new String[] { "'\"hello world\"'" }, result);
@@ -99,6 +108,7 @@
/**
* Test escaped double quoted string.
*/
+ @Test(groups = { UNIT })
public void testEscapedDoubleQuotedStringOk() {
String[] result = split("\\\"hello world\\\"");
assertArrayEquals(new String[] { "\"hello", "world\"" }, result);
@@ -107,6 +117,7 @@
/**
* Test escaped key value pair.
*/
+ @Test(groups = { UNIT })
public void testEscapedKeyValuePairOk() {
String[] result = split("key=\\'qux qoo\\'");
assertArrayEquals(new String[] { "key='qux", "qoo'" }, result);
@@ -115,6 +126,7 @@
/**
* Test escaped single quoted in double quoted string.
*/
+ @Test(groups = { UNIT })
public void testEscapedSingleQuotedInDoubleQuotedStringOk() {
String[] result = split("\"\\'hello world\\'\"");
assertArrayEquals(new String[] { "\"'hello world'\"" }, result);
@@ -123,6 +135,7 @@
/**
* Test escaped single quoted string.
*/
+ @Test(groups = { UNIT })
public void testEscapedSingleQuotedStringOk() {
String[] result = split("\\'hello world\\'");
assertArrayEquals(new String[] { "\'hello", "world\'" }, result);
@@ -131,6 +144,7 @@
/**
* Test escaped space string in double quotes.
*/
+ @Test(groups = { UNIT })
public void testEscapedSpaceStringInDoubleQuotesOk() {
String[] result = split("\"hello\\ world\"");
assertArrayEquals(new String[] { "\"hello world\"" }, result);
@@ -139,6 +153,7 @@
/**
* Test escaped space string.
*/
+ @Test(groups = { UNIT })
public void testEscapedSpaceStringOk() {
String[] result = split("hello\\ world");
assertArrayEquals(new String[] { "hello world" }, result);
@@ -147,6 +162,7 @@
/**
* Test key value pair in double quotes.
*/
+ @Test(groups = { UNIT })
public void testKeyValuePairInDoubleQuotesOk() {
String[] result = split("\"key=\\\"qux qoo\\\"\"");
assertArrayEquals(new String[] { "\"key=\"qux qoo\"\"" }, result);
@@ -155,6 +171,7 @@
/**
* Test key value pair.
*/
+ @Test(groups = { UNIT })
public void testKeyValuePairOk() {
String[] result = split("key='qux qoo'");
assertArrayEquals(new String[] { "key='qux qoo'" }, result);
@@ -163,6 +180,7 @@
/**
* Test os gi import package value.
*/
+ @Test(groups = { UNIT })
public void testOSGiImportPackageValueOk() {
String[] result = split("\"org.foo.bar;version=\"1\",org.qux.quu;version=\"2\"\"");
assertArrayEquals(new String[] { "\"org.foo.bar;version=\"1\",org.qux.quu;version=\"2\"\"" }, result);
@@ -171,6 +189,7 @@
/**
* Test single quoted string.
*/
+ @Test(groups = { UNIT })
public void testSingleQuotedStringOk() {
String[] result = split("'hello world'");
assertArrayEquals(new String[] { "'hello world'" }, result);
@@ -179,6 +198,7 @@
/**
* Test single quoted words.
*/
+ @Test(groups = { UNIT })
public void testSingleQuotedWordsOk() {
String[] result = split("'hello' 'world'");
assertArrayEquals(new String[] { "'hello'", "'world'" }, result);
@@ -187,6 +207,7 @@
/**
* Test single quoted words omit quotes.
*/
+ @Test(groups = { UNIT })
public void testSingleQuotedWordsOmitQuotesOk() {
String[] result = split("'hello' 'world'", false /* includeQuotes */);
assertArrayEquals(new String[] { "hello", "world" }, result);
@@ -195,6 +216,7 @@
/**
* Test split empty string.
*/
+ @Test(groups = { UNIT })
public void testSplitEmptyStringOk() {
String[] result = split("");
assertArrayEquals(new String[0], result);
@@ -203,6 +225,7 @@
/**
* Test split null value.
*/
+ @Test(groups = { UNIT })
public void testSplitNullValueOk() {
String[] result = split(null);
assertArrayEquals(new String[0], result);
@@ -211,6 +234,7 @@
/**
* Test split on tab.
*/
+ @Test(groups = { UNIT })
public void testSplitOnTabOk() {
String[] result = split("hello\tworld");
assertArrayEquals(new String[] { "hello", "world" }, result);
@@ -219,6 +243,7 @@
/**
* Test split whitespaces only.
*/
+ @Test(groups = { UNIT })
public void testSplitWhitespacesOnlyOk() {
String[] result = split(" \t ");
assertArrayEquals(new String[0], result);
@@ -227,6 +252,7 @@
/**
* Test unquoted command line argument.
*/
+ @Test(groups = { UNIT })
public void testUnquotedCommandLineArgumentOk() {
String[] result =
split("fwOption=org.osgi.framework.system.packages.extra=org.w3c.dom.tral,org.w3c.dom.html,org.w3c.dom.ranges,sun.reflect,org.osgi.service.deploymentadmin;version=\"1.0\",org.osgi.service.deploymentadmin.spi;version=\"1.0\",org.osgi.service.cm;version=\"1.3\",org.osgi.service.event;version=\"1.2\",org.osgi.service.log;version=\"1.3\",org.osgi.service.metatype;version=\"1.1\",org.apache.ace.log;version=\"0.8.0\"");
@@ -238,6 +264,7 @@
/**
* Test unquoted string.
*/
+ @Test(groups = { UNIT })
public void testUnquotedStringOk() {
String[] result = split("hello world");
assertArrayEquals(new String[] { "hello", "world" }, result);
diff --git a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/util/InputStreamRedirectorTest.java b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/util/InputStreamRedirectorTest.java
index fd7eae3..412f1a6 100644
--- a/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/util/InputStreamRedirectorTest.java
+++ b/org.apache.ace.processlauncher/test/org/apache/ace/processlauncher/test/util/InputStreamRedirectorTest.java
@@ -18,14 +18,15 @@
*/
package org.apache.ace.processlauncher.test.util;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertTrue;
import static org.apache.ace.processlauncher.test.impl.TestUtil.sleep;
+import static org.apache.ace.test.utils.TestUtils.UNIT;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -34,8 +35,8 @@
import java.io.OutputStream;
import org.apache.ace.processlauncher.util.InputStreamRedirector;
-import org.junit.Test;
import org.mockito.Mockito;
+import org.testng.annotations.Test;
/**
* Test cases for {@link InputStreamRedirector}.
@@ -47,7 +48,7 @@
*
* @throws IOException not part of this test case.
*/
- @Test
+ @Test(groups = { UNIT })
public void testInputStreamEOFCausesOutputStreamToBeClosedOk() throws IOException {
InputStream myIS = new ByteArrayInputStream("hello world!".getBytes());
OutputStream mockOS = mock(OutputStream.class);
@@ -63,7 +64,7 @@
*
* @throws IOException not part of this test case.
*/
- @Test
+ @Test(groups = { UNIT })
public void testInputStreamIsVerbatimelyCopiedToOutputStreamOk() throws IOException {
String input = "hello world!";
@@ -81,7 +82,7 @@
*
* @throws Exception not part of this test case.
*/
- @Test
+ @Test(groups = { UNIT })
public void testInterruptRedirectorOk() throws Exception {
InputStream myIS = createBlockingInputStream();
OutputStream myOS = mock(OutputStream.class);
@@ -108,7 +109,7 @@
*
* @throws Exception not part of this test case.
*/
- @Test
+ @Test(groups = { UNIT })
public void testRecoverFromExceptionInInputStreamWithoutOutputStreamOk() throws Exception {
InputStream myIS = createExceptionThrowingInputStream();
ByteArrayOutputStream myOS = new ByteArrayOutputStream();
@@ -130,7 +131,7 @@
*
* @throws Exception not part of this test case.
*/
- @Test
+ @Test(groups = { UNIT })
public void testRecoverFromExceptionInInputStreamWithOutputStreamOk() throws Exception {
InputStream myIS = createExceptionThrowingInputStream();
OutputStream myOS = mock(OutputStream.class);
@@ -148,7 +149,7 @@
*
* @throws Exception not part of this test case.
*/
- @Test
+ @Test(groups = { UNIT })
public void testWithoutOutputStreamOk() throws Exception {
InputStream myIS = new ByteArrayInputStream("hello world!".getBytes());
diff --git a/org.apache.ace.test/src/org/apache/ace/test/utils/FileUtils.java b/org.apache.ace.test/src/org/apache/ace/test/utils/FileUtils.java
index 36b938f..78146dd 100644
--- a/org.apache.ace.test/src/org/apache/ace/test/utils/FileUtils.java
+++ b/org.apache.ace.test/src/org/apache/ace/test/utils/FileUtils.java
@@ -23,6 +23,8 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
public class FileUtils {
@@ -44,6 +46,18 @@
return tempFile;
}
+ public static File createEmptyBundle(File baseDirectory, String bsn) throws IOException {
+ File result = createTempFile(baseDirectory, ".jar");
+
+ Manifest m = new Manifest();
+ m.getMainAttributes().putValue("Bundle-ManifestVersion", "2");
+ m.getMainAttributes().putValue("Bundle-SymbolicName", bsn);
+
+ try (FileOutputStream fos = new FileOutputStream(result); JarOutputStream jos = new JarOutputStream(fos, m)) {
+ }
+ return result;
+ }
+
public static void copy(File input, File output) throws IOException {
FileInputStream fis = new FileInputStream(input);
FileOutputStream fos = new FileOutputStream(output);
diff --git a/org.apache.ace.verifier/bnd.bnd b/org.apache.ace.verifier/bnd.bnd
index 08e0653..d0cc878 100644
--- a/org.apache.ace.verifier/bnd.bnd
+++ b/org.apache.ace.verifier/bnd.bnd
@@ -3,9 +3,6 @@
osgi.cmpn;version=4.3.1,\
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,\
diff --git a/org.apache.ace.verifier/test/org/apache/ace/deployment/verifier/impl/VerifierTest.java b/org.apache.ace.verifier/test/org/apache/ace/deployment/verifier/impl/VerifierTest.java
index 0b65639..87d911e 100644
--- a/org.apache.ace.verifier/test/org/apache/ace/deployment/verifier/impl/VerifierTest.java
+++ b/org.apache.ace.verifier/test/org/apache/ace/deployment/verifier/impl/VerifierTest.java
@@ -37,113 +37,113 @@
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
-@SuppressWarnings({"deprecation"})
+@SuppressWarnings({ "deprecation" })
public class VerifierTest {
@Test(groups = { UNIT })
- public void testResolve() throws BundleException {
- VerifierService verifier = new VerifierServiceImpl();
- VerifyEnvironment env = verifier.createEnvironment(new HashMap<String, String>() {
- {
- put(Constants.FRAMEWORK_EXECUTIONENVIRONMENT, VerifierService.EE_1_6);
- put(Constants.FRAMEWORK_OS_NAME, "macosx");
- put(Constants.FRAMEWORK_OS_VERSION, "10.5");
- }
- }, new VerifyReporter() {
-
- public void reportWire(BundleRevision importer,
- BundleRequirement reqirement, BundleRevision exporter,
- BundleCapability capability) {
- System.out.println("WIRE: " + importer + " - " + reqirement + " - " + capability + " -> " + exporter);
- }
-
- public void reportLog(LogEntry logEntry) {
- System.out.println("Log(" + logEntry.getTime() + "): " + logEntry.getLevel() + " " + logEntry.getMessage());
- if (logEntry.getException() != null) {
- logEntry.getException().printStackTrace();
- }
- }
-
- public void reportException(Exception ex) {
- ex.printStackTrace();
- }
- });
- Set<BundleRevision> bundles = new HashSet<BundleRevision>();
- bundles.add(env.addBundle(0, new HashMap<String, String>(){
- {
- put(Constants.BUNDLE_MANIFESTVERSION, "2");
- put(Constants.BUNDLE_SYMBOLICNAME, FelixConstants.SYSTEM_BUNDLE_SYMBOLICNAME);
- put(Constants.EXPORT_PACKAGE, VerifierService.SYSTEM_PACKAGES + "," + VerifierService.JRE_1_6_PACKAGES);
- }
- }));
- bundles.add(env.addBundle(1, new HashMap<String, String>() {
- {
- put(Constants.BUNDLE_MANIFESTVERSION, "2");
- put(Constants.BUNDLE_SYMBOLICNAME, "org.test.foo");
- put(Constants.IMPORT_PACKAGE, "org.foo, org.osgi.framework");
- }
- }));
- bundles.add(env.addBundle(2, new HashMap<String, String>() {
- {
- put(Constants.BUNDLE_MANIFESTVERSION, "2");
- put(Constants.BUNDLE_SYMBOLICNAME, "org.test.foo2");
- put(Constants.EXPORT_PACKAGE, "org.foo" +
- "");
- }
- }));
- AssertJUnit.assertTrue(" Unable to resolve resolvable state.", env.verifyResolve(bundles, null, null));
- }
-
+ public void testResolve() throws BundleException {
+ VerifierService verifier = new VerifierServiceImpl();
+ VerifyEnvironment env = verifier.createEnvironment(new HashMap<String, String>() {
+ {
+ put(Constants.FRAMEWORK_EXECUTIONENVIRONMENT, VerifierService.EE_1_6);
+ put(Constants.FRAMEWORK_OS_NAME, "macosx");
+ put(Constants.FRAMEWORK_OS_VERSION, "10.5");
+ }
+ }, new VerifyReporter() {
+
+ public void reportWire(BundleRevision importer,
+ BundleRequirement reqirement, BundleRevision exporter,
+ BundleCapability capability) {
+ System.out.println("WIRE: " + importer + " - " + reqirement + " - " + capability + " -> " + exporter);
+ }
+
+ public void reportLog(LogEntry logEntry) {
+ System.out.println("Log(" + logEntry.getTime() + "): " + logEntry.getLevel() + " " + logEntry.getMessage());
+ if (logEntry.getException() != null) {
+ logEntry.getException().printStackTrace();
+ }
+ }
+
+ public void reportException(Exception ex) {
+ ex.printStackTrace();
+ }
+ });
+ Set<BundleRevision> bundles = new HashSet<BundleRevision>();
+ bundles.add(env.addBundle(0, new HashMap<String, String>() {
+ {
+ put(Constants.BUNDLE_MANIFESTVERSION, "2");
+ put(Constants.BUNDLE_SYMBOLICNAME, FelixConstants.SYSTEM_BUNDLE_SYMBOLICNAME);
+ put(Constants.EXPORT_PACKAGE, VerifierService.SYSTEM_PACKAGES + "," + VerifierService.JRE_1_6_PACKAGES);
+ }
+ }));
+ bundles.add(env.addBundle(1, new HashMap<String, String>() {
+ {
+ put(Constants.BUNDLE_MANIFESTVERSION, "2");
+ put(Constants.BUNDLE_SYMBOLICNAME, "org.test.foo");
+ put(Constants.IMPORT_PACKAGE, "org.foo, org.osgi.framework");
+ }
+ }));
+ bundles.add(env.addBundle(2, new HashMap<String, String>() {
+ {
+ put(Constants.BUNDLE_MANIFESTVERSION, "2");
+ put(Constants.BUNDLE_SYMBOLICNAME, "org.test.foo2");
+ put(Constants.EXPORT_PACKAGE, "org.foo" +
+ "");
+ }
+ }));
+ AssertJUnit.assertTrue(" Unable to resolve resolvable state.", env.verifyResolve(bundles, null, null));
+ }
+
@Test(groups = { UNIT })
- public void testResolveFail() throws BundleException {
- VerifierService verifier = new VerifierServiceImpl();
- VerifyEnvironment env = verifier.createEnvironment(new HashMap<String, String>(){
- {
- put(Constants.FRAMEWORK_EXECUTIONENVIRONMENT, VerifierService.EE_1_6);
- put(Constants.FRAMEWORK_OS_NAME, "macosx");
- put(Constants.FRAMEWORK_OS_VERSION, "10.5");
- }
- }, new VerifyReporter() {
-
- public void reportWire(BundleRevision importer,
- BundleRequirement reqirement, BundleRevision exporter,
- BundleCapability capability) {
- System.out.println("WIRE: " + importer + " - " + reqirement + " - " + capability + " -> " + exporter);
- }
-
- public void reportLog(LogEntry logEntry) {
- System.out.println("Log(" + logEntry.getTime() + "): " + logEntry.getLevel() + " " + logEntry.getMessage());
- if (logEntry.getException() != null) {
- logEntry.getException().printStackTrace();
- }
- }
-
- public void reportException(Exception ex) {
- ex.printStackTrace();
- }
- });
- Set<BundleRevision> bundles = new HashSet<BundleRevision>();
- bundles.add(env.addBundle(0, new HashMap<String, String>(){
- {
- put(Constants.BUNDLE_MANIFESTVERSION, "2");
- put(Constants.BUNDLE_SYMBOLICNAME, FelixConstants.SYSTEM_BUNDLE_SYMBOLICNAME);
- put(Constants.EXPORT_PACKAGE, VerifierService.SYSTEM_PACKAGES + "," + VerifierService.JRE_1_6_PACKAGES);
- }
- }));
- bundles.add(env.addBundle(1, new HashMap<String, String>() {
- {
- put(Constants.BUNDLE_MANIFESTVERSION, "2");
- put(Constants.BUNDLE_SYMBOLICNAME, "org.test.foo");
- put(Constants.IMPORT_PACKAGE, "org.foo");
- }
- }));
- bundles.add(env.addBundle(2, new HashMap<String, String>() {
- {
- put(Constants.BUNDLE_MANIFESTVERSION, "2");
- put(Constants.BUNDLE_SYMBOLICNAME, "org.test.foo2");
- put(Constants.EXPORT_PACKAGE, "org.foo2" +
- "");
- }
- }));
- AssertJUnit.assertFalse("Resolving unresolvable", env.verifyResolve(bundles, null, null));
- }
+ public void testResolveFail() throws BundleException {
+ VerifierService verifier = new VerifierServiceImpl();
+ VerifyEnvironment env = verifier.createEnvironment(new HashMap<String, String>() {
+ {
+ put(Constants.FRAMEWORK_EXECUTIONENVIRONMENT, VerifierService.EE_1_6);
+ put(Constants.FRAMEWORK_OS_NAME, "macosx");
+ put(Constants.FRAMEWORK_OS_VERSION, "10.5");
+ }
+ }, new VerifyReporter() {
+
+ public void reportWire(BundleRevision importer,
+ BundleRequirement reqirement, BundleRevision exporter,
+ BundleCapability capability) {
+ System.out.println("WIRE: " + importer + " - " + reqirement + " - " + capability + " -> " + exporter);
+ }
+
+ public void reportLog(LogEntry logEntry) {
+ System.out.println("Log(" + logEntry.getTime() + "): " + logEntry.getLevel() + " " + logEntry.getMessage());
+ if (logEntry.getException() != null) {
+ logEntry.getException().printStackTrace();
+ }
+ }
+
+ public void reportException(Exception ex) {
+ ex.printStackTrace();
+ }
+ });
+ Set<BundleRevision> bundles = new HashSet<BundleRevision>();
+ bundles.add(env.addBundle(0, new HashMap<String, String>() {
+ {
+ put(Constants.BUNDLE_MANIFESTVERSION, "2");
+ put(Constants.BUNDLE_SYMBOLICNAME, FelixConstants.SYSTEM_BUNDLE_SYMBOLICNAME);
+ put(Constants.EXPORT_PACKAGE, VerifierService.SYSTEM_PACKAGES + "," + VerifierService.JRE_1_6_PACKAGES);
+ }
+ }));
+ bundles.add(env.addBundle(1, new HashMap<String, String>() {
+ {
+ put(Constants.BUNDLE_MANIFESTVERSION, "2");
+ put(Constants.BUNDLE_SYMBOLICNAME, "org.test.foo");
+ put(Constants.IMPORT_PACKAGE, "org.foo");
+ }
+ }));
+ bundles.add(env.addBundle(2, new HashMap<String, String>() {
+ {
+ put(Constants.BUNDLE_MANIFESTVERSION, "2");
+ put(Constants.BUNDLE_SYMBOLICNAME, "org.test.foo2");
+ put(Constants.EXPORT_PACKAGE, "org.foo2" +
+ "");
+ }
+ }));
+ AssertJUnit.assertFalse("Resolving unresolvable", env.verifyResolve(bundles, null, null));
+ }
}