You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ma...@apache.org on 2012/07/05 14:10:06 UTC

svn commit: r1357570 [28/34] - in /ace/sandbox/marrs: cnf/ cnf/ext/ cnf/lib/ cnf/releaserepo/ cnf/repo/ cnf/repo/.obrcache/ cnf/repo/.obrcache/http%3A%2F%2Fbundles.bndtools.org.s3.amazonaws.com%2Fcom.jcraft.jsch/ cnf/repo/.obrcache/http%3A%2F%2Fbundles...

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.deployment.provider.repositorybased.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.deployment.provider.repositorybased.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.deployment.provider.repositorybased.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.deployment.provider.repositorybased.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,3 @@
+url = http://localhost:8080/repository
+name = deployment
+customer = apache

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.deployment.servlet.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.deployment.servlet.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.deployment.servlet.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.deployment.servlet.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,2 @@
+org.apache.ace.server.servlet.endpoint=/deployment
+authentication.enabled = false

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.discovery.property.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.discovery.property.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.discovery.property.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.discovery.property.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1 @@
+serverURL = http://localhost:8080
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.distribution.servlet.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.distribution.servlet.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.distribution.servlet.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.distribution.servlet.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,5 @@
+targetRepository = target
+storeRepository = shop
+customerName = apache
+hostName = http://localhost:8080/repository
+org.apache.ace.server.servlet.endpoint	= /distribution

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.http.redirector.factory/root-to-ace.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.http.redirector.factory/root-to-ace.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.http.redirector.factory/root-to-ace.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.http.redirector.factory/root-to-ace.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,2 @@
+org.apache.ace.server.servlet.endpoint=/
+org.apache.ace.webui.vaadin.redirect=/ace/

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.nodelauncher.amazon.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.nodelauncher.amazon.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.nodelauncher.amazon.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.nodelauncher.amazon.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,33 @@
+#
+# Sample configuration file. You need to uncomment all the properties
+# and change some of the placeholders for this configuration to work.
+#
+
+# Configure your server here
+#server=http://your.ace.machine:8080
+
+# Note that AMIs are specific to an Amazon availability zone
+#amiId=ami-6a31041e
+#location=eu-west-1
+
+# Your access key ID and secret access key (AWS console, top right menu "Security Credentials")
+#accessKeyid=Your_access_key_here!
+#secretAccessKey=Your_secret_key_here!
+
+# Tag prefix for instance names
+#tagPrefix=default
+
+# Use this bootstrap to use a Sun VM instead of the OpenJDK one provided by Amazon
+#nodeBootstrap=cd ~; wget -Ojava.bin http://javadl.sun.com/webapps/download/AutoDL?BundleId=43871 ;chmod +x java.bin;./java.bin /y; export PATH=`pwd`/jre1.6.0_23/bin:$PATH
+
+# Open up any extra ports (comma separated list)
+#extraPorts=9090
+
+# Should we run the process as root? This only works if your account is in the sudoers file.
+#runAsRoot=true
+
+# A comma separated list of extra artifacts that will be downloaded from the OBR (just list their filenames here)
+#additionalObrDownloads=
+
+# A comma separated list of extra artifacts that will be downloaded from the specified URLs (list full URLs here)
+#externalDownloadUrls=

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.obr.servlet.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.obr.servlet.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.obr.servlet.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.obr.servlet.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,2 @@
+org.apache.ace.server.servlet.endpoint=/obr
+authentication.enabled = false

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.obr.storage.file.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.obr.storage.file.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.obr.storage.file.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.obr.storage.file.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1 @@
+fileLocation=store
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.repository.servlet.RepositoryReplicationServlet.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.repository.servlet.RepositoryReplicationServlet.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.repository.servlet.RepositoryReplicationServlet.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.repository.servlet.RepositoryReplicationServlet.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,2 @@
+org.apache.ace.server.servlet.endpoint=/replication
+authentication.enabled = false

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.repository.servlet.RepositoryServlet.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.repository.servlet.RepositoryServlet.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.repository.servlet.RepositoryServlet.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.repository.servlet.RepositoryServlet.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,2 @@
+org.apache.ace.server.servlet.endpoint=/repository
+authentication.enabled = false

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.scheduler.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.scheduler.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.scheduler.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.scheduler.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,2 @@
+auditlog = 2000
+org.apache.ace.configurator.useradmin.task.UpdateUserAdminTask = 2000
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.activation.impl.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.activation.impl.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.activation.impl.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.activation.impl.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,14 @@
+registerTargetFilter       = (id=*)
+approveTargetFilter        = (id=*)
+autoApproveTargetFilter    = (id=*)
+commitRepositories         = true
+targetRepository           = target
+deploymentRepository       = deployment
+storeRepository            = shop
+customerName               = apache
+hostName                   = http://localhost:8080
+endpoint                   = /repository
+obrUrl                     = http://localhost:8080/obr/
+activationInfoRepository   = activationinfo
+activationInfoTimeout      = 604800000
+checkoutInterval           = 5000

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.log.servlet.factory/auditlog.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.log.servlet.factory/auditlog.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.log.servlet.factory/auditlog.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.log.servlet.factory/auditlog.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,3 @@
+org.apache.ace.server.servlet.endpoint=/auditlog
+name = auditlog
+authentication.enabled = false

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.log.store.factory/auditlog.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.log.store.factory/auditlog.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.log.store.factory/auditlog.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.log.store.factory/auditlog.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1 @@
+name=auditlog
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-activation.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-activation.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-activation.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-activation.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,3 @@
+name=activation
+customer=apache
+master=true
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-activationinfo.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-activationinfo.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-activationinfo.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-activationinfo.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,3 @@
+name=activationinfo
+customer=apache
+master=true
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-deployment.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-deployment.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-deployment.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-deployment.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,3 @@
+name=deployment
+customer=apache
+master=true
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-shop.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-shop.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-shop.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-shop.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,3 @@
+name=shop
+customer=apache
+master=true
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-target.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-target.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-target.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-target.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,3 @@
+name=target
+customer=apache
+master=true
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-user.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-user.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-user.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.server.repository.factory/ace-user.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,308 @@
+name=user
+customer=apache
+master=true
+initial=<roles> \
+       <group name="createArtifact"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="updateArtifact"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="removeArtifact"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="viewArtifact"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="editArtifact"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="createFeature"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="removeFeature"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="associateArtifactToFeature"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="associateFeatureToDistribution"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="removeArtifactToFeatureAssociation"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="removeFeatureToDistributionAssociation"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="viewFeature"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="editFeature"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="viewDistribution"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="editDistribution"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="createDistribution"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="removeDistribution"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="associateDistributionToTarget"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="viewTarget"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="editTarget"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="createTarget"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="removeTarget"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="approveTarget"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="registerTarget"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="removeDistributionToTargetAssociation"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="mock"> \
+           <properties> \
+               <type>permissionGroup</type> \
+           </properties> \
+       </group> \
+       <group name="TestGroup"> \
+           <properties> \
+               <type>userGroup</type> \
+           </properties> \
+           <memberof>createArtifact</memberof> \
+           <memberof>updateArtifact</memberof> \
+           <memberof>removeArtifact</memberof> \
+           <memberof>viewArtifact</memberof> \
+           <memberof>editArtifact</memberof> \
+           <memberof>createFeature</memberof> \
+           <memberof>removeFeature</memberof> \
+           <memberof>associateArtifactToFeature</memberof> \
+           <memberof>associateFeatureToDistribution</memberof> \
+           <memberof>removeArtifactToFeatureAssociation</memberof> \
+           <memberof>removeFeatureToDistributionAssociation</memberof> \
+           <memberof>viewFeature</memberof> \
+           <memberof>editFeature</memberof> \
+           <memberof>viewDistribution</memberof> \
+           <memberof>editDistribution</memberof> \
+           <memberof>createDistribution</memberof> \
+           <memberof>removeDistribution</memberof> \
+           <memberof>associateDistributionToTarget</memberof> \
+           <memberof>viewTarget</memberof> \
+           <memberof>editTarget</memberof> \
+           <memberof>createTarget</memberof> \
+           <memberof>removeTarget</memberof> \
+           <memberof>approveTarget</memberof> \
+           <memberof>registerTarget</memberof> \
+           <memberof>removeDistributionToTargetAssociation</memberof> \
+           <memberof>mock</memberof> \
+       </group> \
+       <group name="Target Operator"> \
+           <properties> \
+               <type>userGroup</type> \
+           </properties> \
+           <memberof>viewArtifact</memberof> \
+           <memberof>viewFeature</memberof> \
+           <memberof>viewDistribution</memberof> \
+           <memberof>viewTarget</memberof> \
+           <memberof>approveTarget</memberof> \
+       </group> \
+       <group name="Distribution Manager"> \
+           <properties> \
+               <type>userGroup</type> \
+           </properties> \
+           <memberof>viewArtifact</memberof> \
+           <memberof>viewFeature</memberof> \
+           <memberof>viewDistribution</memberof> \
+           <memberof>editDistribution</memberof> \
+           <memberof>createDistribution</memberof> \
+           <memberof>removeDistribution</memberof> \
+           <memberof>associateDistributionToTarget</memberof> \
+           <memberof>viewTarget</memberof> \
+           <memberof>removeDistributionToTargetAssociation</memberof> \
+       </group> \
+       <group name="Release Manager"> \
+           <properties> \
+               <type>userGroup</type> \
+           </properties> \
+           <memberof>createArtifact</memberof> \
+           <memberof>updateArtifact</memberof> \
+           <memberof>removeArtifact</memberof> \
+           <memberof>viewArtifact</memberof> \
+           <memberof>editArtifact</memberof> \
+           <memberof>createFeature</memberof> \
+           <memberof>removeFeature</memberof> \
+           <memberof>associateArtifactToFeature</memberof> \
+           <memberof>associateFeatureToDistribution</memberof> \
+           <memberof>removeArtifactToFeatureAssociation</memberof> \
+           <memberof>removeFeatureToDistributionAssociation</memberof> \
+           <memberof>viewFeature</memberof> \
+           <memberof>editFeature</memberof> \
+           <memberof>viewDistribution</memberof> \
+           <memberof>viewTarget</memberof> \
+       </group> \
+       <group name="Target Manager"> \
+           <properties> \
+               <type>userGroup</type> \
+           </properties> \
+           <memberof>viewArtifact</memberof> \
+           <memberof>viewFeature</memberof> \
+           <memberof>viewDistribution</memberof> \
+           <memberof>viewTarget</memberof> \
+           <memberof>editTarget</memberof> \
+           <memberof>createTarget</memberof> \
+           <memberof>removeTarget</memberof> \
+           <memberof>registerTarget</memberof> \
+       </group> \
+       <group name="External Distribution Manager"> \
+           <properties> \
+               <type>userGroup</type> \
+           </properties> \
+           <memberof>createArtifact</memberof> \
+           <memberof>updateArtifact</memberof> \
+           <memberof>removeArtifact</memberof> \
+           <memberof>viewArtifact</memberof> \
+           <memberof>editArtifact</memberof> \
+           <memberof>createFeature</memberof> \
+           <memberof>removeFeature</memberof> \
+           <memberof>associateArtifactToFeature</memberof> \
+           <memberof>associateFeatureToDistribution</memberof> \
+           <memberof>removeArtifactToFeatureAssociation</memberof> \
+           <memberof>removeFeatureToDistributionAssociation</memberof> \
+           <memberof>viewFeature</memberof> \
+           <memberof>editFeature</memberof> \
+           <memberof>viewDistribution</memberof> \
+           <memberof>editDistribution</memberof> \
+           <memberof>createDistribution</memberof> \
+           <memberof>removeDistribution</memberof> \
+           <memberof>associateDistributionToTarget</memberof> \
+           <memberof>viewTarget</memberof> \
+           <memberof>editTarget</memberof> \
+           <memberof>createTarget</memberof> \
+           <memberof>removeTarget</memberof> \
+           <memberof>approveTarget</memberof> \
+           <memberof>registerTarget</memberof> \
+           <memberof>removeDistributionToTargetAssociation</memberof> \
+           <memberof>mock</memberof> \
+       </group> \
+       <user name="d"> \
+           <properties> \
+               <username>d</username> \
+           </properties> \
+           <credentials> \
+               <password>f</password> \
+           </credentials> \
+           <memberof>TestGroup</memberof> \
+       </user> \
+       <user name="lm"> \
+           <properties> \
+               <username>lm</username> \
+           </properties> \
+           <credentials> \
+               <password>lm</password> \
+           </credentials> \
+           <memberof>Distribution Manager</memberof> \
+       </user> \
+       <user name="go"> \
+           <properties> \
+               <username>go</username> \
+           </properties> \
+           <credentials> \
+               <password>go</password> \
+           </credentials> \
+           <memberof>Target Operator</memberof> \
+       </user> \
+       <user name="rm"> \
+           <properties> \
+               <username>rm</username> \
+           </properties> \
+           <credentials> \
+               <password>rm</password> \
+           </credentials> \
+           <memberof>Release Manager</memberof> \
+       </user> \
+       <user name="gm"> \
+           <properties> \
+               <username>gm</username> \
+           </properties> \
+           <credentials> \
+               <password>gm</password> \
+           </credentials> \
+           <memberof>Target Manager</memberof> \
+       </user> \
+       <user name="elm"> \
+           <properties> \
+               <username>elm</username> \
+           </properties> \
+           <credentials> \
+               <password>elm</password> \
+           </credentials> \
+           <memberof>External Distribution Manager</memberof> \
+       </user> \
+</roles>

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.webui.vaadin.cfg
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.webui.vaadin.cfg?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.webui.vaadin.cfg (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/conf/org.apache.ace.webui.vaadin.cfg Thu Jul  5 12:09:30 2012
@@ -0,0 +1,10 @@
+# The endpoint of the Vaadin UI
+org.apache.ace.server.servlet.endpoint = /ace
+# Vaadin UI settings
+ui.authentication.enabled = true
+#ui.authentication.user.name = d
+#ui.authentication.user.password = f
+# ACE MS settings
+ace.host = http://localhost:8080/
+# OBR settings
+obr.url = http://localhost:8080/obr/

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/debug.bat
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/debug.bat?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/debug.bat (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/debug.bat Thu Jul  5 12:09:30 2012
@@ -0,0 +1,2 @@
+@echo off
+call java -jar pax-runner.jar --vmOptions="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y" --ups --workingDirectory=. scan-dir:required-bundles scan-dir:ace-bundles scan-file:file:platform.properties %1 %2 %3
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/debug.sh
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/debug.sh?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/debug.sh (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/debug.sh Thu Jul  5 12:09:30 2012
@@ -0,0 +1 @@
+java -jar pax-runner.jar --vmOptions="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y" --ups --workingDirectory=. scan-dir:required-bundles scan-dir:ace-bundles scan-file:file:platform.properties
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/platform.properties
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/platform.properties?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/platform.properties (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/platform.properties Thu Jul  5 12:09:30 2012
@@ -0,0 +1,10 @@
+-Dorg.apache.ace.configurator.CONFIG_DIR=conf
+-Dorg.apache.felix.http.nio=true
+-Dorg.apache.felix.http.enable=true
+-Dorg.osgi.service.http.port=8080
+-Dorg.apache.felix.https.enable=false
+-Dorg.osgi.service.http.port.secure=8443
+-Dorg.apache.felix.http.debug=false
+-Dorg.osgi.framework.bundle.parent=framework
+-Dorg.osgi.framework.bootdelegation=com.sun.*,sun.*
+-Dorg.apache.felix.eventadmin.Timeout=0

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/run.bat
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/run.bat?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/run.bat (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/run.bat Thu Jul  5 12:09:30 2012
@@ -0,0 +1,2 @@
+@echo off
+call java -jar pax-runner.jar --ups --workingDirectory=. scan-dir:required-bundles scan-dir:ace-bundles scan-file:file:platform.properties %1 %2 %3
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/run.sh
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/run.sh?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/run.sh (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/old/main/resources/run.sh Thu Jul  5 12:09:30 2012
@@ -0,0 +1 @@
+java -jar pax-runner.jar --ups --workingDirectory=. scan-dir:required-bundles scan-dir:ace-bundles scan-file:file:platform.properties
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.target.devserver/pom.xml
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.devserver/pom.xml?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.devserver/pom.xml (added)
+++ ace/sandbox/marrs/org.apache.ace.target.devserver/pom.xml Thu Jul  5 12:09:30 2012
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.ace</groupId>
+        <artifactId>ace-pom</artifactId>
+        <version>0.8.1-SNAPSHOT</version>
+        <relativePath>../pom/pom.xml</relativePath>
+    </parent>
+
+    <version>0.8.1-SNAPSHOT</version>
+    <artifactId>org.apache.ace.target.devserver</artifactId>
+    <packaging>pom</packaging>
+
+    <name>Apache ACE :: Target :: Dev Server</name>
+    <description/>
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/ace/trunk/ace-target-devserver</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/ace/trunk/ace-target-devserver
+        </developerConnection>
+        <url>http://svn.apache.org/repos/asf/ace/trunk/ace-target-devserver</url>
+    </scm>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>2.2-beta-5</version>
+                <executions>
+                    <execution>
+                        <id>create-target</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attached</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/main/assembly/assembly.xml</descriptor>
+                            </descriptors>
+                            <archiveBaseDirectory>${project.outputDirectory}</archiveBaseDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>copy</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>${pom.groupId}</groupId>
+                                    <artifactId>org.apache.ace.launcher</artifactId>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.basedir}/store</outputDirectory>
+                                    <destFileName>ace-launcher.jar</destFileName>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>${pom.groupId}</groupId>
+                                    <artifactId>ace-glassfish-launcher</artifactId>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.basedir}/store</outputDirectory>
+                                    <destFileName>ace-glassfish-launcher.jar</destFileName>
+                                </artifactItem>
+                                <artifactItem>
+                                    <groupId>${pom.groupId}</groupId>
+                                    <artifactId>org.apache.ace.managementagent</artifactId>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.basedir}/store</outputDirectory>
+                                    <destFileName>ace-managementagent.jar</destFileName>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.ops4j.pax.runner</groupId>
+            <artifactId>pax-runner</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.configadmin</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.eventadmin</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.dependencymanager</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.dependencymanager.shell</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.prefs</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.http.jetty</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.knopflerfish</groupId>
+            <artifactId>log</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.knopflerfish.bundle</groupId>
+            <artifactId>useradmin</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.range.api</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.connectionfactory</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.authentication</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.authenticationprocessor.password</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.authenticationprocessor.basicauth</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.client.repository.api</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.client.repository.impl</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.client.repository.helper.base</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.client.repository.helper.bundle</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.client.repository.helper.configuration</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.client.repository.helper.base</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.client.rest</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.configurator</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.configurator.useradmin.task</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.configurator.serveruseradmin</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.consolelogger</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.deployment.provider.api</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.deployment.provider.repositorybased</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.deployment.servlet</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.deployment.streamgenerator</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.deployment.verifier</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.deployment.verifier.ui</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.discovery.api</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.discovery.property</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.httplistener</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.http.redirector</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.obr.metadata</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.obr.servlet</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.obr.storage</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.repository.api</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.repository.servlet</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.repository.impl</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.resourceprocessor.useradmin</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.scheduler</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.server.log.store</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.webconsole.plugin</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.log</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.log.servlet</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.server.log.ui</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.webui.vaadin</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.tageditor</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.nodelauncher.api</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.nodelauncher.ui</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.nodelauncher.amazon</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.target.mgmt.ui</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+    </dependencies>
+</project>

Added: ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/pom.xml
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/pom.xml?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/pom.xml (added)
+++ ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/pom.xml Thu Jul  5 12:09:30 2012
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.ace</groupId>
+        <artifactId>ace-pom</artifactId>
+        <version>0.8.1-SNAPSHOT</version>
+        <relativePath>../pom/pom.xml</relativePath>
+    </parent>
+
+    <version>0.8.1-SNAPSHOT</version>
+    <artifactId>org.apache.ace.target.mgmt.ui</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>Apache ACE :: Target :: Management :: UI</name>
+    <description />
+
+   <properties>
+        <private.package>
+            org.apache.ace.target.management.ui
+        </private.package>
+        <bundle.activator>
+            org.apache.ace.target.management.ui.Activator
+        </bundle.activator>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.dependencymanager</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.client.repository.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.webui.vaadin</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.vaadin</groupId>
+            <artifactId>vaadin</artifactId>
+        </dependency>
+    </dependencies>
+</project>

Added: ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/src/org/apache/ace/target/management/ui/Activator.java
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/src/org/apache/ace/target/management/ui/Activator.java?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/src/org/apache/ace/target/management/ui/Activator.java (added)
+++ ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/src/org/apache/ace/target/management/ui/Activator.java Thu Jul  5 12:09:30 2012
@@ -0,0 +1,50 @@
+/*
+ * 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.target.management.ui;
+
+import java.util.Properties;
+
+import org.apache.ace.client.repository.RepositoryAdmin;
+import org.apache.ace.webui.UIExtensionFactory;
+import org.apache.felix.dm.DependencyActivatorBase;
+import org.apache.felix.dm.DependencyManager;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+
+public class Activator extends DependencyActivatorBase {
+
+    @Override
+    public void init(BundleContext context, DependencyManager manager) throws Exception {
+        Properties props = new Properties();
+        props.put(UIExtensionFactory.EXTENSION_POINT_KEY, UIExtensionFactory.EXTENSION_POINT_VALUE_TARGET);
+        props.put(Constants.SERVICE_RANKING, Integer.valueOf(200));
+
+        manager.add(createComponent().setInterface(UIExtensionFactory.class.getName(), props)
+            .setImplementation(TargetManagementExtension.class)
+            .add(createServiceDependency()
+                .setService(RepositoryAdmin.class)
+                .setRequired(true))
+            );
+    }
+
+    @Override
+    public void destroy(BundleContext context, DependencyManager manager) throws Exception {
+        // Nop
+    }
+}

Added: ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/src/org/apache/ace/target/management/ui/TargetManagementExtension.java
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/src/org/apache/ace/target/management/ui/TargetManagementExtension.java?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/src/org/apache/ace/target/management/ui/TargetManagementExtension.java (added)
+++ ace/sandbox/marrs/org.apache.ace.target.mgmt.ui/src/org/apache/ace/target/management/ui/TargetManagementExtension.java Thu Jul  5 12:09:30 2012
@@ -0,0 +1,121 @@
+/*
+ * 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.target.management.ui;
+
+import java.util.Map;
+
+import org.apache.ace.client.repository.RepositoryObject;
+import org.apache.ace.client.repository.stateful.StatefulTargetObject;
+import org.apache.ace.webui.NamedObject;
+import org.apache.ace.webui.UIExtensionFactory;
+
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.Label;
+
+/**
+ * Provides a simple management UI for targets.
+ */
+public class TargetManagementExtension implements UIExtensionFactory {
+
+    private static final String CAPTION = "Management";
+
+    /**
+     * {@inheritDoc}
+     */
+    public Component create(Map<String, Object> context) {
+        GridLayout result = new GridLayout(1, 4);
+        result.setCaption(CAPTION);
+
+        result.setMargin(true);
+        result.setSpacing(true);
+        result.setSizeFull();
+
+        RepositoryObject object = getRepositoryObjectFromContext(context);
+        if (!(object instanceof StatefulTargetObject)) {
+            result.addComponent(new Label("This target is not a stateful gateway object."));
+            return result;
+        }
+
+        final StatefulTargetObject target = (StatefulTargetObject) object;
+
+        final CheckBox registerCB = new CheckBox("Registered?");
+        registerCB.setImmediate(true);
+        registerCB.setEnabled(!target.isRegistered());
+        registerCB.setValue(Boolean.valueOf(target.isRegistered()));
+
+        result.addComponent(registerCB);
+
+        final CheckBox autoApproveCB = new CheckBox("Auto approve?");
+        autoApproveCB.setImmediate(true);
+        autoApproveCB.setEnabled(target.isRegistered());
+        autoApproveCB.setValue(Boolean.valueOf(target.getAutoApprove()));
+
+        result.addComponent(autoApproveCB);
+
+
+        final Button approveButton = new Button("Approve changes");
+        approveButton.setImmediate(true);
+        approveButton.setEnabled(target.needsApprove());
+
+        result.addComponent(approveButton);
+        
+        // Add a spacer that fill the remainder of the available space...
+        result.addComponent(new Label(" "));
+        result.setRowExpandRatio(3, 1.0f);
+        
+        // Add all listeners...
+        registerCB.addListener(new Button.ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                if (event.getButton().booleanValue()) {
+                    target.register();
+                    registerCB.setEnabled(!target.isRegistered());
+                    autoApproveCB.setEnabled(target.isRegistered());
+                }
+            }
+        });
+        autoApproveCB.addListener(new Button.ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                target.setAutoApprove(event.getButton().booleanValue());
+                approveButton.setEnabled(target.needsApprove());
+            }
+        });
+        approveButton.addListener(new Button.ClickListener() {
+            public void buttonClick(ClickEvent event) {
+                target.approve();
+                approveButton.setEnabled(target.needsApprove());
+            }
+        });
+
+        return result;
+    }
+
+    private RepositoryObject getRepositoryObjectFromContext(Map<String, Object> context) {
+        Object contextObject = context.get("object");
+        if (contextObject == null) {
+            throw new IllegalStateException("No context object found");
+        }
+
+        return (contextObject instanceof NamedObject ? ((NamedObject) contextObject).getObject()
+            : (RepositoryObject) contextObject);
+    }
+}

Added: ace/sandbox/marrs/org.apache.ace.util/.classpath
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/.classpath?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/.classpath (added)
+++ ace/sandbox/marrs/org.apache.ace.util/.classpath Thu Jul  5 12:09:30 2012
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="aQute.bnd.classpath.container"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

Added: ace/sandbox/marrs/org.apache.ace.util/.project
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/.project?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/.project (added)
+++ ace/sandbox/marrs/org.apache.ace.util/.project Thu Jul  5 12:09:30 2012
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.apache.ace.util</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/marrs/org.apache.ace.util/bnd.bnd
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/bnd.bnd?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/bnd.bnd (added)
+++ ace/sandbox/marrs/org.apache.ace.util/bnd.bnd Thu Jul  5 12:09:30 2012
@@ -0,0 +1,7 @@
+-buildpath: osgi.cmpn,\
+	org.apache.ace.deployment.provider.api;version=latest,\
+	osgi.core
+Export-Package: org.apache.ace.test.constants,\
+	org.apache.ace.test.utils,\
+	org.apache.ace.test.utils.deployment,\
+	org.apache.ace.util
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.util/build.xml
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/build.xml?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/build.xml (added)
+++ ace/sandbox/marrs/org.apache.ace.util/build.xml Thu Jul  5 12:09:30 2012
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="project" default="build"> 
+	<import file="../cnf/build.xml"/>
+</project>

Added: ace/sandbox/marrs/org.apache.ace.util/pom.xml
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/pom.xml?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/pom.xml (added)
+++ ace/sandbox/marrs/org.apache.ace.util/pom.xml Thu Jul  5 12:09:30 2012
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.ace</groupId>
+        <artifactId>ace-pom</artifactId>
+        <version>0.8.1-SNAPSHOT</version>
+        <relativePath>../pom/pom.xml</relativePath>
+    </parent>
+
+    <version>0.8.1-SNAPSHOT</version>
+    <artifactId>org.apache.ace.util</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>Apache ACE :: Util</name>
+    <description />
+
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/ace/trunk/ace-util</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/ace/trunk/ace-util</developerConnection>
+        <url>http://svn.apache.org/repos/asf/ace/trunk/ace-target-devserver</url>
+    </scm>
+
+    <properties>
+        <export.package>
+            org.apache.ace.util;version=${project.version},
+            org.apache.ace.test*;version=${project.version}
+        </export.package>
+        <import.package>
+            !org.apache.ace.util,
+            !org.apache.ace.test*,
+            *
+        </import.package>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.ace</groupId>
+            <artifactId>org.apache.ace.deployment.provider.api</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

Added: ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/constants/TestConstants.java
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/constants/TestConstants.java?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/constants/TestConstants.java (added)
+++ ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/constants/TestConstants.java Thu Jul  5 12:09:30 2012
@@ -0,0 +1,29 @@
+/*
+ * 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.test.constants;
+
+/**
+ * Constants for global test parameters. Use these throughout the test
+ * codebase. Make sure to only use public static finals here, which
+ * can be inlined by the compiler.
+ */
+public interface TestConstants {
+    /** The port the webserver is running on for testing. */
+    public static final int PORT = 9000;
+}

Added: ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/constants/packageinfo
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/constants/packageinfo?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/constants/packageinfo (added)
+++ ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/constants/packageinfo Thu Jul  5 12:09:30 2012
@@ -0,0 +1 @@
+version 1.0
\ No newline at end of file

Added: ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/FileUtils.java
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/FileUtils.java?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/FileUtils.java (added)
+++ ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/FileUtils.java Thu Jul  5 12:09:30 2012
@@ -0,0 +1,62 @@
+/*
+ * 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.test.utils;
+
+import java.io.File;
+import java.io.IOException;
+
+public class FileUtils {
+
+    /**
+     * Convenience method for creating temp files.
+     * It creates a temp file, and then deletes it. This is done so the same (unique) filename can be used to create a directory.
+     *
+     * If you use null as the baseDirectoryName, a tempfile is created in the platform specific temp directory.
+     * @throws IOException
+     */
+    public static File createTempFile(File baseDirectory) throws IOException {
+        return createTempFile(baseDirectory, "");
+    }
+
+    public static File createTempFile(File baseDirectory, String extension) throws IOException {
+        File tempFile = File.createTempFile("test", extension, baseDirectory);
+        tempFile.delete();
+        return tempFile;
+    }
+
+    /**
+     * Remove the given directory and all it's files and subdirectories
+     * @param directory the name of the directory to remove
+     */
+    public static void removeDirectoryWithContent(File directory) {
+        if ((directory == null) || !directory.exists()) {
+            return;
+        }
+        File[] filesAndSubDirs = directory.listFiles();
+        for (int i=0; i < filesAndSubDirs.length; i++) {
+            File file = filesAndSubDirs[i];
+            if (file.isDirectory()) {
+                removeDirectoryWithContent(file);
+            }
+            // else just remove the file
+            file.delete();
+        }
+        directory.delete();
+    }
+}

Added: ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/NetUtils.java
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/NetUtils.java?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/NetUtils.java (added)
+++ ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/NetUtils.java Thu Jul  5 12:09:30 2012
@@ -0,0 +1,64 @@
+/*
+ * 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.test.utils;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * Class containing utility methods concerning network related stuff.
+ */
+public class NetUtils {
+
+    /**
+     * Waits for a HTTP URL to become 'available', will retry every 100 milliseconds until it is available or timeout
+     * has been exceeded. Available in this context means the specified status code is returned when accessing the URL.
+     *
+     * @param url HTTP URL that should be tested for availability.
+     * @param responseCode The response code to be expected on the specified URL when it is available.
+     * @param timeout Amount of milliseconds to keep trying to access the URL.
+     * @return True if the response of the URL has the specified status code within the specified timeout delay, false otherwise.
+     * @throws IllegalArgumentException If the specified URL does not use the HTTP protocol.
+     */
+    public static boolean waitForURL(URL url, int responseCode, int timeout) {
+        long deadline = System.currentTimeMillis() + timeout;
+        while (System.currentTimeMillis() < deadline) {
+            try {
+                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+                connection.connect();
+                if (connection.getResponseCode() == responseCode) {
+                    return true;
+                }
+            } catch (ClassCastException cce) {
+                throw new IllegalArgumentException("Expected url to be an HTTP url, not: " + url.toString(), cce);
+            }
+            catch (IOException ioe) {
+                // retry
+            }
+            try {
+                Thread.sleep(100);
+            }
+            catch (InterruptedException ie) {
+                return false;
+            }
+        }
+        return false;
+    }
+}

Added: ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/TestUtils.java
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/TestUtils.java?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/TestUtils.java (added)
+++ ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/TestUtils.java Thu Jul  5 12:09:30 2012
@@ -0,0 +1,166 @@
+/*
+ * 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.test.utils;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
+/**
+ * Utility class that injects dependencies. Can be used to unit test service implementations.
+ */
+public class TestUtils {
+    public static final String UNIT = "unit";
+    public static final String INTEGRATION = "integration";
+    public static final String SMOKE = "smoke";
+    public static final String PERFORMANCE = "performance";
+    public static final String UI = "ui";
+    public static final String BROKEN = "broken";
+    /**
+     * Configures an object to use a null object for the specified service interface.
+     *
+     * @param object the object
+     * @param iface the service interface
+     */
+    public static <T> void configureObject(Object object, Class<T> iface) {
+        configureObject(object, iface, createNullObject(iface));
+    }
+
+    /**
+     * Creates a null object for a service interface.
+     *
+     * @param iface the service interface
+     * @return a null object
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> T createNullObject(Class<T> iface) {
+        return (T) Proxy.newProxyInstance(iface.getClassLoader(), new Class[] { iface }, new NullObject());
+    }
+
+    /**
+     * Wraps the given handler in an adapter that will try to pass on received invocations to the hander if that has
+     * an applicable methods else it defaults to a NullObject.
+     *
+     * @param iface the service interface
+     * @param handler the handler to pass invocations to.
+     * @return an adapter that will try to pass on received invocations to the given handler
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> T createMockObjectAdapter(Class<T> iface, final Object handler) {
+        return (T) Proxy.newProxyInstance(iface.getClassLoader(), new Class[] { iface }, new NullObject() {
+
+            @Override
+            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+                try {
+                    Method bridge = handler.getClass().getMethod(method.getName(), method.getParameterTypes());
+                    bridge.setAccessible(true);
+                    return bridge.invoke(handler, args);
+                }
+                catch (NoSuchMethodException ex) {
+                    return super.invoke(proxy, method, args);
+                }
+                catch (InvocationTargetException ex) {
+                    throw ex.getCause();
+                }
+            }
+        });
+    }
+
+    /**
+     * Configures an object to use a specific implementation for the specified service interface.
+     *
+     * @param object the object
+     * @param iface the service interface
+     * @param instance the implementation
+     */
+    @SuppressWarnings("unchecked")
+    public static void configureObject(Object object, Class iface, Object instance) {
+        Class serviceClazz = object.getClass();
+
+        while (serviceClazz != null) {
+            Field[] fields = serviceClazz.getDeclaredFields();
+            AccessibleObject.setAccessible(fields, true);
+            for (int j = 0; j < fields.length; j++) {
+                if (fields[j].getType().equals(iface)) {
+                    try {
+                        // synchronized makes sure the field is actually written to immediately
+                        synchronized (new Object()) {
+                            fields[j].set(object, instance);
+                        }
+                    }
+                    catch (Exception e) {
+                        throw new IllegalStateException("Could not set field " + fields[j].getName() + " on " + object);
+                    }
+                }
+            }
+            serviceClazz = serviceClazz.getSuperclass();
+        }
+    }
+
+    static class NullObject implements InvocationHandler {
+        private static final Boolean DEFAULT_BOOLEAN = Boolean.FALSE;
+
+        private static final Byte DEFAULT_BYTE = new Byte((byte) 0);
+
+        private static final Short DEFAULT_SHORT = new Short((short) 0);
+
+        private static final Integer DEFAULT_INT = new Integer(0);
+
+        private static final Long DEFAULT_LONG = new Long(0);
+
+        private static final Float DEFAULT_FLOAT = new Float(0.0f);
+
+        private static final Double DEFAULT_DOUBLE = new Double(0.0);
+
+        /**
+         * Invokes a method on this null object. The method will return a default value without doing anything.
+         */
+        @SuppressWarnings("unchecked")
+        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+            Class returnType = method.getReturnType();
+            if (returnType.equals(Boolean.class) || returnType.equals(Boolean.TYPE)) {
+                return DEFAULT_BOOLEAN;
+            }
+            else if (returnType.equals(Byte.class) || returnType.equals(Byte.TYPE)) {
+                return DEFAULT_BYTE;
+            }
+            else if (returnType.equals(Short.class) || returnType.equals(Short.TYPE)) {
+                return DEFAULT_SHORT;
+            }
+            else if (returnType.equals(Integer.class) || returnType.equals(Integer.TYPE)) {
+                return DEFAULT_INT;
+            }
+            else if (returnType.equals(Long.class) || returnType.equals(Long.TYPE)) {
+                return DEFAULT_LONG;
+            }
+            else if (returnType.equals(Float.class) || returnType.equals(Float.TYPE)) {
+                return DEFAULT_FLOAT;
+            }
+            else if (returnType.equals(Double.class) || returnType.equals(Double.TYPE)) {
+                return DEFAULT_DOUBLE;
+            }
+            else {
+                return null;
+            }
+        }
+    }
+}

Added: ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/Util.java
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/Util.java?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/Util.java (added)
+++ ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/Util.java Thu Jul  5 12:09:30 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.test.utils;
+
+import java.util.Properties;
+
+public class Util {
+
+    /**
+     * Creates a Properties object from a list of key-value pairs, e.g.
+     * <pre>
+     * properties("key", "value", "key2", "value2");
+     * </pre>
+     */
+    public static Properties properties(String... values) {
+        Properties props = new Properties();
+        for (int i = 0; i < values.length; i += 2) {
+            props.put(values[i], values[i+1]);
+        }
+        return props;
+    }
+}

Added: ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/deployment/BundleStreamGenerator.java
URL: http://svn.apache.org/viewvc/ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/deployment/BundleStreamGenerator.java?rev=1357570&view=auto
==============================================================================
--- ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/deployment/BundleStreamGenerator.java (added)
+++ ace/sandbox/marrs/org.apache.ace.util/src/org/apache/ace/test/utils/deployment/BundleStreamGenerator.java Thu Jul  5 12:09:30 2012
@@ -0,0 +1,67 @@
+/*
+ * 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.test.utils.deployment;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+
+import org.apache.ace.deployment.provider.ArtifactData;
+import org.osgi.framework.Constants;
+
+public class BundleStreamGenerator {
+
+    public static Manifest getBundleManifest(String symbolicname, String version, Map<String, String> additionalHeaders) {
+        Manifest manifest = new Manifest();
+        manifest.getMainAttributes().putValue("Manifest-Version", "1");
+        manifest.getMainAttributes().putValue(Constants.BUNDLE_MANIFESTVERSION, "2");
+        manifest.getMainAttributes().putValue(Constants.BUNDLE_SYMBOLICNAME, symbolicname);
+        manifest.getMainAttributes().putValue(Constants.BUNDLE_VERSION, version.toString());
+        for (Map.Entry<String, String> entry : additionalHeaders.entrySet()) {
+            manifest.getMainAttributes().putValue(entry.getKey(), entry.getValue());
+        }
+        return manifest;
+    }
+
+    public static void generateBundle(ArtifactData data, Map<String, String> additionalHeaders) throws IOException {
+        OutputStream bundleStream = null;
+        try {
+            File dataFile = new File(data.getUrl().toURI());
+            OutputStream fileStream = new FileOutputStream(dataFile);
+            bundleStream = new JarOutputStream(fileStream, getBundleManifest(data.getSymbolicName(), data.getVersion(), additionalHeaders));
+            bundleStream.flush();
+        } catch (URISyntaxException e) {
+            throw new IOException();
+        } finally {
+            if (bundleStream != null) {
+                bundleStream.close();
+            }
+        }
+    }
+
+    public static void generateBundle(ArtifactData data) throws IOException {
+        generateBundle(data, new HashMap<String, String>());
+    }
+}