Added: ace/sandbox/paulb/acerepository/cnf/cache/.obr/http%3A%2F%2Fbundles.bndtools.org/repository.xml.etag URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/cache/.obr/http%253A%252F%252Fbundles.bndtools.org/repository.xml.etag?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/cnf/cache/.obr/http%3A%2F%2Fbundles.bndtools.org/repository.xml.etag (added) +++ ace/sandbox/paulb/acerepository/cnf/cache/.obr/http%3A%2F%2Fbundles.bndtools.org/repository.xml.etag Thu Jun 14 16:38:53 2012 @@ -0,0 +1 @@ +"e5dbe01fd92232a6b3b7c939c63c518e" \ No newline at end of file
Added: ace/sandbox/paulb/acerepository/cnf/cache/OSGI-OPT/bnd.bnd URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/cache/OSGI-OPT/bnd.bnd?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/cnf/cache/OSGI-OPT/bnd.bnd (added) +++ ace/sandbox/paulb/acerepository/cnf/cache/OSGI-OPT/bnd.bnd Thu Jun 14 16:38:53 2012 @@ -0,0 +1,8 @@ +#Generated by BND, at Wed Jun 13 10:12:57 CEST 2012 +#Wed Jun 13 10:12:57 CEST 2012 +Bundle-Version=1.1.0.RC2-120613-1012 +-includeresource= +-resourceonly=true +Service-Component= +Include-Resource=biz.aQute.launcher/\=${repo;biz.aQute.launcher;[1.0.3,2)},biz.aQute.junit/\=${repo;biz.aQute.junit;[1.0.3,2)} +project.dir=/Users/paul/work/bndtools-master/org.bndtools.embeddedrepo Added: ace/sandbox/paulb/acerepository/cnf/cache/biz.aQute.junit/biz.aQute.junit-1.1.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/cache/biz.aQute.junit/biz.aQute.junit-1.1.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/cnf/cache/biz.aQute.junit/biz.aQute.junit-1.1.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/cnf/cache/biz.aQute.launcher/biz.aQute.launcher-1.0.3.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/cache/biz.aQute.launcher/biz.aQute.launcher-1.0.3.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/cnf/cache/biz.aQute.launcher/biz.aQute.launcher-1.0.3.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/cnf/ext/defaults.bnd URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/ext/defaults.bnd?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/cnf/ext/defaults.bnd (added) +++ ace/sandbox/paulb/acerepository/cnf/ext/defaults.bnd Thu Jun 14 16:38:53 2012 @@ -0,0 +1,29 @@ +# General Options +project.dependson = ${p-dependson;:} +project.bootclasspath = ${p-bootclasspath;:} +project.buildpath = ${p-buildpath;:} +project.sourcepath = ${p-sourcepath;:} +project.allsourcepath = ${p-allsourcepath;:} +project.output = ${p-output} +project.testpath = ${p-testpath;:} + +-verbose: true +project: ${basedir} +src: src +bin: bin +target-dir: generated +target: ${project}/${target-dir} +build: ${workspace}/cnf +p: ${basename;${project}} +project.name: ${p} + +# Java Compiler Options +java: java +javac: javac +javac.source: 1.5 +javac.target: 1.5 +javac.debug: on + +# Bnd Options +-sources: true +-sourcepath: ${project}/src Added: ace/sandbox/paulb/acerepository/cnf/ext/repositories.bnd URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/ext/repositories.bnd?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/cnf/ext/repositories.bnd (added) +++ ace/sandbox/paulb/acerepository/cnf/ext/repositories.bnd Thu Jun 14 16:38:53 2012 @@ -0,0 +1,18 @@ +plugindir: ${workspace}/cnf/plugins + +-pluginpath:\ + ${plugindir}/biz.aQute.repository/biz.aQute.repository-1.0.0.jar,\ + ${plugindir}/org.osgi.impl.bundle.bindex/org.osgi.impl.bundle.bindex-2.2.0.jar,\ + ${workspace}/org.apache.ace.bnd.repository/generated/org.apache.ace.bnd.repository.jar + + +-plugin:\ + aQute.lib.deployer.obr.LocalOBR; name='Release'; local=${workspace}/cnf/releaserepo,\ + aQute.lib.deployer.FileRepo; name=Build; location=${workspace}/cnf/buildrepo;,\ + aQute.lib.deployer.obr.LocalOBR; name='Local'; local=${workspace}/cnf/localrepo,\ + aQute.lib.deployer.obr.OBR; name='Bndtools Hub'; locations='http://bundles.bndtools.org/repository.xml',\ + org.osgi.impl.bundle.bindex.BundleIndexerImpl,\ + org.apache.ace.bnd.repository.AceRepository;name='Apache ACE'; location='http://localhost:8080' + + +-releaserepo: Release \ No newline at end of file Added: ace/sandbox/paulb/acerepository/cnf/localrepo/com.springsource.org.apache.commons.httpclient/com.springsource.org.apache.commons.httpclient-3.1.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/localrepo/com.springsource.org.apache.commons.httpclient/com.springsource.org.apache.commons.httpclient-3.1.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/cnf/localrepo/com.springsource.org.apache.commons.httpclient/com.springsource.org.apache.commons.httpclient-3.1.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/cnf/localrepo/jackson-core-asl/jackson-core-asl-1.9.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/localrepo/jackson-core-asl/jackson-core-asl-1.9.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/cnf/localrepo/jackson-core-asl/jackson-core-asl-1.9.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/cnf/localrepo/jackson-mapper-asl/jackson-mapper-asl-1.9.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/localrepo/jackson-mapper-asl/jackson-mapper-asl-1.9.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/cnf/localrepo/jackson-mapper-asl/jackson-mapper-asl-1.9.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/cnf/localrepo/repository.xml URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/localrepo/repository.xml?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/cnf/localrepo/repository.xml (added) +++ ace/sandbox/paulb/acerepository/cnf/localrepo/repository.xml Thu Jun 14 16:38:53 2012 @@ -0,0 +1,297 @@ +<?xml version='1.0' encoding='utf-8'?> +<?xml-stylesheet type='text/xsl' href='http://www.osgi.org/www/obr2html.xsl'?> + +<repository lastmodified='20120613163632.099' name='Local'> + <resource id='com.springsource.org.apache.commons.httpclient/3.1.0' presentationname='Apache Commons HTTP Client' symbolicname='com.springsource.org.apache.commons.httpclient' uri='com.springsource.org.apache.commons.httpclient/com.springsource.org.apache.commons.httpclient-3.1.0.jar' version='3.1.0'> + <size> + 308181 + </size> + <capability name='bundle'> + <p n='manifestversion' v='2'/> + <p n='presentationname' v='Apache Commons HTTP Client'/> + <p n='symbolicname' v='com.springsource.org.apache.commons.httpclient'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.apache.commons.httpclient'/> + <p n='uses' v='org.apache.commons.httpclient.auth,org.apache.commons.httpclient.cookie,org.apache.commons.httpclient.params,org.apache.commons.httpclient.protocol,org.apache.commons.logging'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.apache.commons.httpclient.auth'/> + <p n='uses' v='org.apache.commons.httpclient,org.apache.commons.httpclient.params'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.apache.commons.httpclient.cookie'/> + <p n='uses' v='org.apache.commons.httpclient'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.apache.commons.httpclient.methods'/> + <p n='uses' v='org.apache.commons.httpclient,org.apache.commons.httpclient.methods.multipart'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.apache.commons.httpclient.methods.multipart'/> + <p n='uses' v='org.apache.commons.httpclient.params'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.apache.commons.httpclient.params'/> + <p n='uses' v='org.apache.commons.httpclient'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.apache.commons.httpclient.protocol'/> + <p n='uses' v='org.apache.commons.httpclient,org.apache.commons.httpclient.params'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.apache.commons.httpclient.util'/> + <p n='uses' v='org.apache.commons.httpclient'/> + <p n='version' t='version' v='3.1.0'/> + </capability> + <require extend='false' filter='(&(package=javax.crypto)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package javax.crypto + </require> + <require extend='false' filter='(&(package=javax.crypto.spec)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package javax.crypto.spec + </require> + <require extend='false' filter='(&(package=javax.net)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package javax.net + </require> + <require extend='false' filter='(&(package=javax.net.ssl)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package javax.net.ssl + </require> + <require extend='false' filter='(&(package=org.apache.commons.codec)(version>=1.3.0)(!(version>=2.0.0)))' multiple='false' name='package' optional='false'> + Import package org.apache.commons.codec ;version=[1.3.0,2.0.0) + </require> + <require extend='false' filter='(&(package=org.apache.commons.codec.binary)(version>=1.3.0)(!(version>=2.0.0)))' multiple='false' name='package' optional='false'> + Import package org.apache.commons.codec.binary ;version=[1.3.0,2.0.0) + </require> + <require extend='false' filter='(&(package=org.apache.commons.codec.net)(version>=1.3.0)(!(version>=2.0.0)))' multiple='false' name='package' optional='false'> + Import package org.apache.commons.codec.net ;version=[1.3.0,2.0.0) + </require> + <require extend='false' filter='(&(package=org.apache.commons.logging)(version>=1.1.1)(!(version>=2.0.0)))' multiple='false' name='package' optional='false'> + Import package org.apache.commons.logging ;version=[1.1.1,2.0.0) + </require> + </resource> + <resource id='jackson-core-asl/1.9.0' presentationname='Jackson JSON processor' symbolicname='jackson-core-asl' uri='jackson-core-asl/jackson-core-asl-1.9.0.jar' version='1.9.0'> + <size> + 228294 + </size> + <license> + http://www.apache.org/licenses/LICENSE-2.0.txt + </license> + <capability name='bundle'> + <p n='manifestversion' v='2'/> + <p n='presentationname' v='Jackson JSON processor'/> + <p n='symbolicname' v='jackson-core-asl'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.format'/> + <p n='uses' v='org.codehaus.jackson.io,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.io'/> + <p n='uses' v='org.codehaus.jackson.util,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.sym'/> + <p n='uses' v='org.codehaus.jackson.util'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.util'/> + <p n='uses' v='org.codehaus.jackson.io,org.codehaus.jackson.impl,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.annotate'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.impl'/> + <p n='uses' v='org.codehaus.jackson.format,org.codehaus.jackson.io,org.codehaus.jackson.sym,org.codehaus.jackson.util,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson'/> + <p n='uses' v='org.codehaus.jackson.format,org.codehaus.jackson.sym,org.codehaus.jackson.annotate,org.codehaus.jackson.impl,org.codehaus.jackson.type,org.codehaus.jackson.io,org.codehaus.jackson.util'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.type'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <require extend='false' filter='(&(package=org.codehaus.jackson)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.annotate)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.annotate ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.format)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.format ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.impl)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.impl ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.io)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.io ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.sym)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.sym ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.type)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.type ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.util)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.util ;version=1.9.0 + </require> + <require extend='false' filter='(|(ee=J2SE-1.5)(ee=JavaSE-1.6))' multiple='false' name='ee' optional='false'> + Execution Environment (|(ee=J2SE-1.5)(ee=JavaSE-1.6)) + </require> + </resource> + <resource id='jackson-mapper-asl/1.9.0' presentationname='Data mapper for Jackson JSON processor' symbolicname='jackson-mapper-asl' uri='jackson-mapper-asl/jackson-mapper-asl-1.9.0.jar' version='1.9.0'> + <size> + 764083 + </size> + <license> + http://www.apache.org/licenses/LICENSE-2.0.txt + </license> + <capability name='bundle'> + <p n='manifestversion' v='2'/> + <p n='presentationname' v='Data mapper for Jackson JSON processor'/> + <p n='symbolicname' v='jackson-mapper-asl'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.schema'/> + <p n='uses' v='org.codehaus.jackson.node,org.codehaus.jackson.map,org.codehaus.jackson.annotate,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.deser.impl'/> + <p n='uses' v='org.codehaus.jackson.map.type,org.codehaus.jackson.type,org.codehaus.jackson.map.deser,org.codehaus.jackson.map,org.codehaus.jackson.util,org.codehaus.jackson.map.introspect,org.codehaus.jackson.map.util,org.codehaus.jackson.map.deser.std,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.exc'/> + <p n='uses' v='org.codehaus.jackson.map,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.annotate'/> + <p n='uses' v='org.codehaus.jackson.map,org.codehaus.jackson.annotate'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.ser.impl'/> + <p n='uses' v='org.codehaus.jackson.io,org.codehaus.jackson.map,org.codehaus.jackson.map.ser.std,org.codehaus.jackson,org.codehaus.jackson.map.ser,org.codehaus.jackson.type'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.ser.std'/> + <p n='uses' v='org.codehaus.jackson.schema,org.codehaus.jackson.map.annotate,org.codehaus.jackson.map.ser.impl,org.codehaus.jackson.map.type,org.codehaus.jackson.type,org.codehaus.jackson.io,org.codehaus.jackson.node,org.codehaus.jackson.map,org.codehaus.jackson.util,org.codehaus.jackson.map.introspect,org.codehaus.jackson.map.util,org.codehaus.jackson,org.codehaus.jackson.map.ser'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.type'/> + <p n='uses' v='org.codehaus.jackson.map,org.codehaus.jackson.map.util,org.codehaus.jackson,org.codehaus.jackson.type'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.module'/> + <p n='uses' v='org.codehaus.jackson.map.deser,org.codehaus.jackson.map,org.codehaus.jackson.map.type,org.codehaus.jackson,org.codehaus.jackson.type'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.node'/> + <p n='uses' v='org.codehaus.jackson.io,org.codehaus.jackson.map,org.codehaus.jackson.util,org.codehaus.jackson.impl,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map'/> + <p n='uses' v='org.codehaus.jackson.format,org.codehaus.jackson.schema,org.codehaus.jackson.map.annotate,org.codehaus.jackson.annotate,org.codehaus.jackson.map.type,org.codehaus.jackson.type,org.codehaus.jackson.io,org.codehaus.jackson.node,org.codehaus.jackson.map.deser,org.codehaus.jackson.util,org.codehaus.jackson.map.introspect,org.codehaus.jackson.map.jsontype,org.codehaus.jackson.map.util,org.codehaus.jackson,org.codehaus.jackson.map.ser,org.codehaus.jackson.map.jsontype.impl'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.deser'/> + <p n='uses' v='org.codehaus.jackson.map.exc,org.codehaus.jackson.map.deser.impl,org.codehaus.jackson.map.annotate,org.codehaus.jackson.annotate,org.codehaus.jackson.map.type,org.codehaus.jackson.type,org.codehaus.jackson.io,org.codehaus.jackson.node,org.codehaus.jackson.map,org.codehaus.jackson.util,org.codehaus.jackson.map.introspect,org.codehaus.jackson.map.jsontype,org.codehaus.jackson.map.util,org.codehaus.jackson,org.codehaus.jackson.map.deser.std'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.introspect'/> + <p n='uses' v='org.codehaus.jackson.map.annotate,org.codehaus.jackson.map.ser.std,org.codehaus.jackson.annotate,org.codehaus.jackson.map.type,org.codehaus.jackson.type,org.codehaus.jackson.map,org.codehaus.jackson.map.jsontype,org.codehaus.jackson.map.util,org.codehaus.jackson.map.jsontype.impl'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.jsontype'/> + <p n='uses' v='org.codehaus.jackson.map,org.codehaus.jackson.annotate,org.codehaus.jackson.map.introspect,org.codehaus.jackson.type'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.util'/> + <p n='uses' v='org.codehaus.jackson.io,org.codehaus.jackson.map,org.codehaus.jackson.map.type,org.codehaus.jackson.map.introspect,org.codehaus.jackson,org.codehaus.jackson.type'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.deser.std'/> + <p n='uses' v='org.codehaus.jackson.map.deser.impl,org.codehaus.jackson.map.annotate,org.codehaus.jackson.map.type,org.codehaus.jackson.type,org.codehaus.jackson.io,org.codehaus.jackson.node,org.codehaus.jackson.map,org.codehaus.jackson.map.deser,org.codehaus.jackson.util,org.codehaus.jackson.map.introspect,org.codehaus.jackson,org.codehaus.jackson.map.util'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.jsontype.impl'/> + <p n='uses' v='org.codehaus.jackson.annotate,org.codehaus.jackson.map.type,org.codehaus.jackson.type,org.codehaus.jackson.map,org.codehaus.jackson.util,org.codehaus.jackson.map.introspect,org.codehaus.jackson.map.jsontype,org.codehaus.jackson,org.codehaus.jackson.map.util'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <capability name='package'> + <p n='package' v='org.codehaus.jackson.map.ser'/> + <p n='uses' v='org.codehaus.jackson.schema,org.codehaus.jackson.map.annotate,org.codehaus.jackson.map.ser.impl,org.codehaus.jackson.map.ser.std,org.codehaus.jackson.map.type,org.codehaus.jackson.type,org.codehaus.jackson.node,org.codehaus.jackson.io,org.codehaus.jackson.map,org.codehaus.jackson.util,org.codehaus.jackson.map.introspect,org.codehaus.jackson.map.jsontype,org.codehaus.jackson.map.util,org.codehaus.jackson'/> + <p n='version' t='version' v='1.9.0'/> + </capability> + <require extend='false' filter='(&(package=javax.xml.datatype)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package javax.xml.datatype + </require> + <require extend='false' filter='(&(package=javax.xml.namespace)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package javax.xml.namespace + </require> + <require extend='false' filter='(&(package=javax.xml.parsers)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package javax.xml.parsers + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.annotate)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.annotate ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.format)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.format ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.impl)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.impl ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.io)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.io ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.type)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.type ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.codehaus.jackson.util)(version>=1.9.0))' multiple='false' name='package' optional='false'> + Import package org.codehaus.jackson.util ;version=1.9.0 + </require> + <require extend='false' filter='(&(package=org.w3c.dom)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package org.w3c.dom + </require> + <require extend='false' filter='(&(package=org.xml.sax)(version>=0.0.0))' multiple='false' name='package' optional='false'> + Import package org.xml.sax + </require> + <require extend='false' filter='(|(ee=J2SE-1.5)(ee=JavaSE-1.6))' multiple='false' name='ee' optional='false'> + Execution Environment (|(ee=J2SE-1.5)(ee=JavaSE-1.6)) + </require> + </resource> +</repository> \ No newline at end of file Added: ace/sandbox/paulb/acerepository/cnf/plugins/biz.aQute.bnd/biz.aQute.bnd-1.52.3.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/plugins/biz.aQute.bnd/biz.aQute.bnd-1.52.3.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/cnf/plugins/biz.aQute.bnd/biz.aQute.bnd-1.52.3.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/cnf/plugins/biz.aQute.repository/biz.aQute.repository-1.0.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/plugins/biz.aQute.repository/biz.aQute.repository-1.0.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/cnf/plugins/biz.aQute.repository/biz.aQute.repository-1.0.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/cnf/plugins/org.osgi.impl.bundle.bindex/org.osgi.impl.bundle.bindex-2.2.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/plugins/org.osgi.impl.bundle.bindex/org.osgi.impl.bundle.bindex-2.2.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/cnf/plugins/org.osgi.impl.bundle.bindex/org.osgi.impl.bundle.bindex-2.2.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/cnf/releaserepo/repository.xml URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/cnf/releaserepo/repository.xml?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/cnf/releaserepo/repository.xml (added) +++ ace/sandbox/paulb/acerepository/cnf/releaserepo/repository.xml Thu Jun 14 16:38:53 2012 @@ -0,0 +1,2 @@ +<?xml version='1.0' encoding='UTF-8'?> +<repository name='Release' lastmodified='0' xmlns='http://www.osgi.org/xmlns/obr/v1.0.0'/> \ No newline at end of file Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/.classpath URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/.classpath?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/.classpath (added) +++ ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/.classpath Thu Jun 14 16:38:53 2012 @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" output="bin_test" path="test"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/OSGi%Minimum-1.2"/> + <classpathentry kind="con" path="aQute.bnd.classpath.container"/> + <classpathentry kind="lib" path="libs/com.springsource.org.apache.commons.codec-1.3.0.jar"/> + <classpathentry kind="lib" path="libs/com.springsource.org.apache.commons.httpclient-3.1.0.jar"/> + <classpathentry kind="lib" path="libs/com.springsource.org.apache.commons.logging-1.1.1.jar"/> + <classpathentry kind="lib" path="libs/gson-1.7.1.jar"/> + <classpathentry kind="lib" path="libs/org.amdatu.ace.client-0.0.1-SNAPSHOT.jar"/> + <classpathentry kind="lib" path="libs/org.apache.commons.io-2.1.0.jar"/> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> + <classpathentry kind="output" path="bin"/> +</classpath> Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/.project URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/.project?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/.project (added) +++ ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/.project Thu Jun 14 16:38:53 2012 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.apache.ace.bnd.repository</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> Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/bnd.bnd URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/bnd.bnd?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/bnd.bnd (added) +++ ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/bnd.bnd Thu Jun 14 16:38:53 2012 @@ -0,0 +1,9 @@ +-includeresource: @libs/com.springsource.org.apache.commons.codec-1.3.0.jar,\ + @libs/com.springsource.org.apache.commons.httpclient-3.1.0.jar,\ + @libs/com.springsource.org.apache.commons.logging-1.1.1.jar,\ + @libs/gson-1.7.1.jar,\ + @libs/org.amdatu.ace.client-0.0.1-SNAPSHOT.jar,\ + @libs/org.apache.commons.io-2.1.0.jar +Private-Package: org.apache.ace.bnd.repository +-buildpath: biz.aQute.bndlib;version=1.44,\ + org.mockito.mockito-all \ No newline at end of file Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/build.xml URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/build.xml?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/build.xml (added) +++ ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/build.xml Thu Jun 14 16:38:53 2012 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="project" default="build"> + + <!-- --> + + <import file="../cnf/build.xml"/> +</project> Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.codec-1.3.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.codec-1.3.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.codec-1.3.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.httpclient-3.1.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.httpclient-3.1.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.httpclient-3.1.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.logging-1.1.1.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.logging-1.1.1.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/com.springsource.org.apache.commons.logging-1.1.1.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/gson-1.7.1.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/gson-1.7.1.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/gson-1.7.1.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/org.amdatu.ace.client-0.0.1-SNAPSHOT.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/org.amdatu.ace.client-0.0.1-SNAPSHOT.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/org.amdatu.ace.client-0.0.1-SNAPSHOT.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/org.apache.commons.io-2.1.0.jar URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/org.apache.commons.io-2.1.0.jar?rev=1350321&view=auto ============================================================================== Binary file - no diff available. Propchange: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/libs/org.apache.commons.io-2.1.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRemoteRepository.java URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRemoteRepository.java?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRemoteRepository.java (added) +++ ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRemoteRepository.java Thu Jun 14 16:38:53 2012 @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ace.bnd.repository; + +import java.io.File; +import java.util.List; + +import org.amdatu.ace.client.model.Artifact; + +import aQute.lib.osgi.Jar; +/** + * Interface that contains the required methods to communicate with an actual ACE server. + */ +public interface AceRemoteRepository { + + List<Artifact> listArtifacts(); + + File downloadRemoteArtifact(String url, String obrDir); + + Artifact uploadArtifact(Jar jar, String obrUrl); +} \ No newline at end of file Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRemoteRepositoryClientDefaultImpl.java URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRemoteRepositoryClientDefaultImpl.java?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRemoteRepositoryClientDefaultImpl.java (added) +++ ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRemoteRepositoryClientDefaultImpl.java Thu Jun 14 16:38:53 2012 @@ -0,0 +1,145 @@ +/* + * 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.bnd.repository; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import org.amdatu.ace.client.AceClient; +import org.amdatu.ace.client.AceClientException; +import org.amdatu.ace.client.AceClientWorkspace; +import org.amdatu.ace.client.model.Artifact; +import org.amdatu.ace.client.model.ArtifactBuilder; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.URI; +import org.apache.commons.httpclient.methods.InputStreamRequestEntity; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.RequestEntity; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; + +import aQute.lib.osgi.Jar; + +/** + * Implementation that does the actual communication with the ACE server using the REST interface and the OBR directly. + */ +public class AceRemoteRepositoryClientDefaultImpl implements AceRemoteRepository { + private String m_aceUrl; + + public AceRemoteRepositoryClientDefaultImpl(String aceUrl) { + m_aceUrl = aceUrl; + } + + @Override + public List<Artifact> listArtifacts() { + try { + AceClient aceClient = new AceClient(m_aceUrl + "/client/work"); + AceClientWorkspace workspace = aceClient.createNewWorkspace(); + Artifact[] resources = workspace.getResources(Artifact.class); + List<Artifact> result = new ArrayList<Artifact>(); + + for (Artifact artifact : resources) { + if (artifact.getBundleSymbolicName() != null) { + result.add(artifact); + } + } + + workspace.remove(); + return result; + } catch (AceClientException e) { + throw new RuntimeException(e); + } + } + + @Override + public File downloadRemoteArtifact(String url, String obrDir) { + File artifactFile = new File(obrDir, url.substring(url.lastIndexOf("/"))); + if (!artifactFile.exists()) { + InputStream inputStream = null; + + try { + inputStream = new URL(url).openConnection().getInputStream(); + FileUtils.writeByteArrayToFile(artifactFile, IOUtils.toByteArray(inputStream)); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + } + + return artifactFile; + } + + public Artifact uploadArtifact(Jar jar, String obrUrl) { + HttpClient httpClient = new HttpClient(); + PostMethod post = new PostMethod(); + + try { + String generatedJarName = jar.getBsn() + "-" + jar.getVersion() + ".jar"; + String fileUrl = obrUrl + generatedJarName; + post.setURI(new URI(fileUrl, false)); + Artifact artifact = new ArtifactBuilder().setBundleSymbolicName(jar.getBsn()) + .setBundleVersion(jar.getVersion()).setBundleName(jar.getName()).setUrl(fileUrl) + .setName(generatedJarName).setMimeType("application/vnd.osgi.bundle").build(); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + jar.write(out); + InputStream decodedInput = new ByteArrayInputStream(((ByteArrayOutputStream) out).toByteArray()); + + RequestEntity requestEntity = new InputStreamRequestEntity(decodedInput); + + post.setRequestEntity(requestEntity); + httpClient.executeMethod(post); + AceClient aceClient = new AceClient(m_aceUrl + "/client/work"); + try { + AceClientWorkspace workspace = aceClient.createNewWorkspace(); + workspace.createResource(artifact); + workspace.commit(); + workspace.remove(); + } catch (AceClientException e) { + e.printStackTrace(); + } + + return artifact; + + } catch (Exception e) { + throw new RuntimeException(e); + + } finally { + } + + } +} Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRepository.java URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRepository.java?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRepository.java (added) +++ ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/src/org/apache/ace/bnd/repository/AceRepository.java Thu Jun 14 16:38:53 2012 @@ -0,0 +1,192 @@ +/* + * 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.bnd.repository; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.SortedMap; +import java.util.TreeMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.amdatu.ace.client.model.Artifact; + +import aQute.bnd.service.Plugin; +import aQute.bnd.service.RepositoryPlugin; +import aQute.lib.osgi.Jar; +import aQute.libg.reporter.Reporter; +import aQute.libg.version.Version; +import aQute.libg.version.VersionRange; + +/** + * Implementation of the RepositoryPlugin interface as used by BND. + */ +public class AceRepository implements RepositoryPlugin, Plugin { + private static final String ACEURL_PROPERTY = "aceurl"; + private static final String OBR_DIR_PROPERTY = "obrdir"; + private static final String NAME_PROPERTY = "name"; + private String m_obrCacheDir; + private AceRemoteRepository m_remoteRepository; + private String m_name; + private String m_aceUrl; + + public AceRepository() { + + } + + public AceRepository(AceRemoteRepository aceRemoteRepository) { + m_remoteRepository = aceRemoteRepository; + } + + @Override + public void setProperties(Map<String, String> map) { + m_aceUrl = map.containsKey(ACEURL_PROPERTY) ? map.get(ACEURL_PROPERTY) : "http://localhost:8080"; + String obrCacheDir = map.containsKey(OBR_DIR_PROPERTY) ? map.get(OBR_DIR_PROPERTY) : System.getProperty("java.io.tmpdir"); + obrCacheDir += "/obr"; + + m_obrCacheDir = obrCacheDir; + + m_name = map.containsKey(NAME_PROPERTY) ? map.get(NAME_PROPERTY) : "Apache ACE"; + m_remoteRepository = new AceRemoteRepositoryClientDefaultImpl(m_aceUrl); + } + + @Override + public void setReporter(Reporter processor) { + + } + + @Override + public File[] get(String bsn, String range) throws Exception { + SortedMap<Version, File> foundVersion = new TreeMap<Version, File>(); + for (Artifact artifact : m_remoteRepository.listArtifacts()) { + Version version = new Version(artifact.getBundleVersion()); + boolean exact = range.matches("[0-9]+\\.[0-9]+\\.[0-9]+"); + if ("latest".equals(range) || matchVersion(range, version, exact)) { + File downloadedFile = m_remoteRepository.downloadRemoteArtifact(artifact.getUrl(), m_obrCacheDir); + foundVersion.put(version, downloadedFile); + } + } + + File[] result = new File[foundVersion.size()]; + result = foundVersion.values().toArray(result); + if (!"latest".equals(range)) { + return result; + } else { + if (result.length > 0) { + return new File[] { result[0] }; + } else { + return new File[0]; + } + } + } + + @Override + public File get(String bsn, String range, Strategy strategy, Map<String, String> properties) throws Exception { + File[] files = get(bsn, range); + + if (files.length == 0) { + return null; + } + + if (strategy == Strategy.EXACT) { + return files[0]; + } else if (strategy == Strategy.HIGHEST) { + return files[files.length - 1]; + } else if (strategy == Strategy.LOWEST) { + return files[0]; + } + + return null; + } + + private boolean matchVersion(String range, Version version, boolean exact) { + if (range == null || range.trim().length() == 0) + return true; + VersionRange vr = new VersionRange(range); + + boolean result; + if (exact) { + if (vr.isRange()) + result = false; + else + result = vr.getHigh().equals(version); + } else { + result = vr.includes(version); + } + return result; + } + + @Override + public boolean canWrite() { + return true; + } + + @Override + public File put(Jar jar) throws Exception { + Artifact artifact = m_remoteRepository.uploadArtifact(jar, m_aceUrl + "/obr/"); + + list(null); + return m_remoteRepository.downloadRemoteArtifact(artifact.getUrl(), m_obrCacheDir); + } + + @Override + public List<String> list(String regex) throws Exception { + List<String> names = new ArrayList<String>(); + + for (Artifact artifact : m_remoteRepository.listArtifacts()) { + String bsn = artifact.getBundleSymbolicName(); + if (regex != null) { + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(bsn); + if (matcher.matches()) { + if(!names.contains(bsn)) { + names.add(bsn); + } + } + } else { + if(!names.contains(bsn)) { + names.add(bsn); + } + } + } + + return names; + } + + @Override + public List<Version> versions(String bsn) throws Exception { + List<Version> versions = new ArrayList<Version>(); + + for (Artifact artifact : m_remoteRepository.listArtifacts()) { + if (artifact.getBundleSymbolicName().equals(bsn)) { + versions.add(new Version(artifact.getBundleVersion())); + } + } + + return versions; + } + + @Override + public String getName() { + return m_name; + } + +} Added: ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/test/org/apache/ace/bnd/repository/AceRepositoryTest.java URL: http://svn.apache.org/viewvc/ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/test/org/apache/ace/bnd/repository/AceRepositoryTest.java?rev=1350321&view=auto ============================================================================== --- ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/test/org/apache/ace/bnd/repository/AceRepositoryTest.java (added) +++ ace/sandbox/paulb/acerepository/org.apache.ace.bnd.repository/test/org/apache/ace/bnd/repository/AceRepositoryTest.java Thu Jun 14 16:38:53 2012 @@ -0,0 +1,154 @@ +package org.apache.ace.bnd.repository; + +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.when; + +import java.io.File; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import junit.framework.Assert; + +import org.amdatu.ace.client.model.ArtifactBuilder; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import aQute.bnd.service.RepositoryPlugin.Strategy; +import aQute.libg.version.Version; + +@RunWith(MockitoJUnitRunner.class) +public class AceRepositoryTest { + @Mock private AceRemoteRepository aceRemoteRepository; + private AceRepository aceRepository; + + @Before + public void before() throws Exception{ + aceRepository = new AceRepository(aceRemoteRepository); + + when(aceRemoteRepository.listArtifacts()).thenReturn( + Arrays.asList( + new ArtifactBuilder().setBundleSymbolicName("a").setBundleVersion("2.0.0").setUrl("a-2.0.0.jar").build(), + new ArtifactBuilder().setBundleSymbolicName("a").setBundleVersion("1.0.0").setUrl("a-1.0.0.jar").build(), + new ArtifactBuilder().setBundleSymbolicName("a").setBundleVersion("1.0.1").setUrl("a-1.0.1.jar").build(), + new ArtifactBuilder().setBundleSymbolicName("a").setBundleVersion("1.1.0").setUrl("a-1.1.0.jar").build(), + new ArtifactBuilder().setBundleSymbolicName("b").setBundleVersion("2.0.0").setUrl("a-2.0.0.jar").build(), + new ArtifactBuilder().setBundleSymbolicName("b").setBundleVersion("2.0.1").setUrl("a-2.0.1.jar").build())); + + aceRepository.setProperties(new HashMap<String, String>()); + } + + @Test + public void testGetSingleExact() throws Exception { + File[] files = aceRepository.get("a", "1.0.0"); + assertThat(files.length, is(1)); + } + + @Test + public void testRange() throws Exception { + File[] files = aceRepository.get("a", "[1.0,2)"); + assertThat(files.length, is(3)); + } + + @Test + public void testRangeMinor() throws Exception { + File[] files = aceRepository.get("a", "[1.1,2)"); + assertThat(files.length, is(1)); + } + + @Test + public void testGetLatest() throws Exception { + + File file = new File("test.jar"); + when(aceRemoteRepository.downloadRemoteArtifact(any(String.class), any(String.class))).thenReturn(file); + aceRepository.setProperties(new HashMap<String, String>()); + + File[] files = aceRepository.get("a", "latest"); + assertThat(files.length, is(1)); + assertThat(files[0].getName(), is("test.jar")); + } + + @Test + public void testGetSingleHighest() throws Exception { + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.0.0.jar"), any(String.class))).thenReturn(new File("a-1.0.0.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.0.1.jar"), any(String.class))).thenReturn(new File("a-1.0.1.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.1.0.jar"), any(String.class))).thenReturn(new File("a-1.1.0.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-2.0.0.jar"), any(String.class))).thenReturn(new File("a-2.0.0.jar")); + + File result = aceRepository.get("a", "[1.0.0,2)", Strategy.HIGHEST, null); + Assert.assertNotNull(result); + assertThat(result.getName(), is("a-1.1.0.jar")); + } + + @Test + public void testGetSingleLowest() throws Exception { + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.0.0.jar"), any(String.class))).thenReturn(new File("a-1.0.0.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.0.1.jar"), any(String.class))).thenReturn(new File("a-1.0.1.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.1.0.jar"), any(String.class))).thenReturn(new File("a-1.1.0.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-2.0.0.jar"), any(String.class))).thenReturn(new File("a-2.0.0.jar")); + + File result = aceRepository.get("a", "[1.0.0,2)", Strategy.LOWEST, null); + Assert.assertNotNull(result); + assertThat(result.getName(), is("a-1.0.0.jar")); + } + + @Test + public void testGetExact() throws Exception { + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.0.0.jar"), any(String.class))).thenReturn(new File("a-1.0.0.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.0.1.jar"), any(String.class))).thenReturn(new File("a-1.0.1.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-1.1.0.jar"), any(String.class))).thenReturn(new File("a-1.1.0.jar")); + when(aceRemoteRepository.downloadRemoteArtifact(eq("a-2.0.0.jar"), any(String.class))).thenReturn(new File("a-2.0.0.jar")); + + File result = aceRepository.get("a", "1.0.1", Strategy.EXACT, null); + Assert.assertNotNull(result); + assertThat(result.getName(), is("a-1.0.1.jar")); + } + + @Test + public void testCanWrite() { + assertThat(aceRepository.canWrite(), is(true)); + } + + @Test + public void testList() throws Exception { + List<String> list = aceRepository.list(null); + assertThat(list.size(), is(2)); + } + + @Test + public void testVersions() throws Exception { + when(aceRemoteRepository.listArtifacts()).thenReturn( + Arrays.asList( + new ArtifactBuilder().setBundleSymbolicName("a").setBundleVersion("1.0.0").build(), + new ArtifactBuilder().setBundleSymbolicName("a").setBundleVersion("1.0.1").build(), + new ArtifactBuilder().setBundleSymbolicName("b").build())); + + aceRepository.setProperties(new HashMap<String, String>()); + + List<Version> list = aceRepository.versions("a"); + assertThat(list.size(), is(2)); + assertThat(list.get(0).getMicro(), is(0)); + assertThat(list.get(1).getMicro(), is(1)); + } + + @Test + public void testGetDefaultName() { + assertThat(aceRepository.getName(), is("Apache ACE")); + } + + @Test + public void testGetName() { + Map<String, String> map = new HashMap<String, String>(); + map.put("name", "test"); + aceRepository.setProperties(map); + assertThat(aceRepository.getName(), is("test")); + } + +}
