You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ja...@apache.org on 2013/10/10 16:11:14 UTC

svn commit: r1530984 [3/5] - in /ace/trunk: org.apache.ace.agent.itest/ org.apache.ace.agent.itest/src/org/apache/ace/agent/itest/ org.apache.ace.agent.update.itest/ org.apache.ace.agent.update.itest/conf/ org.apache.ace.agent.update.itest/src/org/apac...

Modified: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositorySerializer.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositorySerializer.java?rev=1530984&r1=1530983&r2=1530984&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositorySerializer.java (original)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositorySerializer.java Thu Oct 10 14:11:13 2013
@@ -35,20 +35,16 @@ import com.thoughtworks.xstream.io.Hiera
 
 /**
  * Helper class that takes a RepositorySet<br>
- * TODO We might move out xstream at some time in the future; before that
- * time, it could be a smart idea to wrap xstream's writer in a delegate
- * object, so this will not require changes to the repositories
- * and objects.
+ * TODO We might move out xstream at some time in the future; before that time, it could be a smart idea to wrap
+ * xstream's writer in a delegate object, so this will not require changes to the repositories and objects.
  */
 class RepositorySerializer implements Converter {
-    @SuppressWarnings("unchecked")
     private final Map<String, ObjectRepositoryImpl> m_tagToRepo = new HashMap<String, ObjectRepositoryImpl>();
 
     private final RepositorySet m_set;
 
     private final XStream m_stream;
 
-    @SuppressWarnings("unchecked")
     RepositorySerializer(RepositorySet set) {
         m_set = set;
         for (ObjectRepositoryImpl repo : m_set.getRepos()) {
@@ -59,16 +55,14 @@ class RepositorySerializer implements Co
         m_stream.registerConverter(this);
     }
 
-    @SuppressWarnings("unchecked")
     public void marshal(Object target, HierarchicalStreamWriter writer, MarshallingContext context) {
         for (ObjectRepositoryImpl repo : m_set.getRepos()) {
             repo.marshal(writer);
         }
     }
 
-    @SuppressWarnings("unchecked")
     public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
-        while(reader.hasMoreChildren()) {
+        while (reader.hasMoreChildren()) {
             reader.moveDown();
             String nodeName = reader.getNodeName();
             ObjectRepositoryImpl o = m_tagToRepo.get(nodeName);
@@ -78,18 +72,16 @@ class RepositorySerializer implements Co
         return this;
     }
 
-    @SuppressWarnings("unchecked")
     public boolean canConvert(Class target) {
         return target == getClass();
     }
 
-    @SuppressWarnings("unchecked")
     public void toXML(OutputStream out) throws IOException {
         for (ObjectRepositoryImpl repo : m_set.getRepos()) {
             repo.setBusy(true);
         }
         try {
-        	GZIPOutputStream zout = new GZIPOutputStream(out);
+            GZIPOutputStream zout = new GZIPOutputStream(out);
             m_stream.toXML(this, zout);
             zout.finish();
         }
@@ -102,11 +94,11 @@ class RepositorySerializer implements Co
     }
 
     /**
-     * Reads the repositories with which this RepositoryRoot had been initialized with from the
-     * given XML file.
-     * @param in The input stream.
+     * Reads the repositories with which this RepositoryRoot had been initialized with from the given XML file.
+     * 
+     * @param in
+     *            The input stream.
      */
-    @SuppressWarnings("unchecked")
     public void fromXML(InputStream in) {
         // The repositories get cleared, since a user *could* add stuff before
         // checking out.
@@ -118,7 +110,7 @@ class RepositorySerializer implements Co
         try {
             Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
             if (in.available() > 0) {
-            	in = new GZIPInputStream(in);
+                in = new GZIPInputStream(in);
                 m_stream.fromXML(in, this);
             }
         }

Modified: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositorySet.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositorySet.java?rev=1530984&r1=1530983&r2=1530984&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositorySet.java (original)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositorySet.java Thu Oct 10 14:11:13 2013
@@ -58,7 +58,6 @@ class RepositorySet {
 
     private final User m_user;
     private final Preferences m_prefs;
-    @SuppressWarnings("unchecked")
     private final ObjectRepositoryImpl[] m_repos;
     private final CachedRepository m_repository;
     private final String m_name;
@@ -73,7 +72,6 @@ class RepositorySet {
      * Basics
      * ********/
 
-    @SuppressWarnings("unchecked")
     /**
      * Creates a new <code>RepositorySet</code>. Notes:
      * <ul>
@@ -116,7 +114,6 @@ class RepositorySet {
         return m_user;
     }
 
-    @SuppressWarnings("unchecked")
     ObjectRepositoryImpl[] getRepos() {
         return m_repos;
     }
@@ -151,6 +148,7 @@ class RepositorySet {
     /**
      * Only call this after the repository has been deserialized.
      */
+    @SuppressWarnings("unchecked")
     void loadPreferences() {
         Preferences workingNode = m_prefs.node(PREFS_LOCAL_WORKING_STATE);
         Map<String, WorkingState> entries = new HashMap<String, WorkingState>();
@@ -247,7 +245,6 @@ class RepositorySet {
         return m_repository.isCurrent();
     }
 
-    @SuppressWarnings("unchecked")
     void clearRepositories() {
         for (ObjectRepositoryImpl repo : getRepos()) {
             repo.setBusy(true);
@@ -284,7 +281,7 @@ class RepositorySet {
         if (m_modifiedHandler != null) {
             throw new IllegalStateException("A handler is already registered; only one can be used at a time.");
         }
-        Dictionary topic = new Hashtable();
+        Dictionary<String, Object> topic = new Hashtable<String, Object>();
         topic.put(EventConstants.EVENT_TOPIC, topics);
         topic.put(EventConstants.EVENT_FILTER, "(" + SessionFactory.SERVICE_SID + "=" + sessionID + ")");
         m_modifiedHandler = context.registerService(EventHandler.class.getName(), new ModifiedHandler(), topic);
@@ -304,6 +301,7 @@ class RepositorySet {
         return result;
     }
 
+    @SuppressWarnings("unchecked")
     private void resetModified(boolean fill) {
         m_workingState.clear();
         if (fill) {

Modified: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/TargetPropertyResolver.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/TargetPropertyResolver.java?rev=1530984&r1=1530983&r2=1530984&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/TargetPropertyResolver.java (original)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/TargetPropertyResolver.java Thu Oct 10 14:11:13 2013
@@ -25,9 +25,8 @@ import org.apache.ace.client.repository.
 import org.apache.ace.client.repository.object.TargetObject;
 
 /**
- * Top-level property resolver, also able to return collections
- * of distributions, features and artifacts linked to this target
- * repository object.
+ * Top-level property resolver, also able to return collections of distributions, features and artifacts linked to this
+ * target repository object.
  */
 public class TargetPropertyResolver extends RepositoryPropertyResolver {
 
@@ -35,10 +34,11 @@ public class TargetPropertyResolver exte
         super(to);
     }
 
+    @SuppressWarnings("unchecked")
     public Collection<PropertyResolver> getDistributions() {
         List<PropertyResolver> list = new ArrayList<PropertyResolver>();
 
-        List<RepositoryObject> distributions = (List<RepositoryObject>)getChildren();
+        List<RepositoryObject> distributions = (List<RepositoryObject>) getChildren();
 
         for (RepositoryObject repo : distributions) {
             list.add(new RepositoryPropertyResolver(repo));

Modified: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/TargetRepositoryImpl.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/TargetRepositoryImpl.java?rev=1530984&r1=1530983&r2=1530984&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/TargetRepositoryImpl.java (original)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/TargetRepositoryImpl.java Thu Oct 10 14:11:13 2013
@@ -21,6 +21,7 @@ package org.apache.ace.client.repository
 import java.util.Map;
 
 import org.apache.ace.client.repository.object.TargetObject;
+import org.apache.ace.client.repository.repository.RepositoryConfiguration;
 import org.apache.ace.client.repository.repository.TargetRepository;
 
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
@@ -32,8 +33,8 @@ import com.thoughtworks.xstream.io.Hiera
 public class TargetRepositoryImpl extends ObjectRepositoryImpl<TargetObjectImpl, TargetObject> implements TargetRepository {
     private final static String XML_NODE = "targets";
 
-    public TargetRepositoryImpl(ChangeNotifier notifier) {
-        super(notifier, XML_NODE);
+    public TargetRepositoryImpl(ChangeNotifier notifier, RepositoryConfiguration repoConfig) {
+        super(notifier, XML_NODE, repoConfig);
     }
 
     @Override
@@ -42,11 +43,6 @@ public class TargetRepositoryImpl extend
     }
 
     @Override
-    TargetObjectImpl createNewInhabitant(Map<String, String> attributes) {
-        return new TargetObjectImpl(attributes, this);
-    }
-
-    @Override
     TargetObjectImpl createNewInhabitant(HierarchicalStreamReader reader) {
         return new TargetObjectImpl(reader, this);
     }

Modified: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/ArtifactRepository.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/ArtifactRepository.java?rev=1530984&r1=1530983&r2=1530984&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/ArtifactRepository.java (original)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/ArtifactRepository.java Thu Oct 10 14:11:13 2013
@@ -95,15 +95,4 @@ public interface ArtifactRepository exte
      * @throws IOException
      */
     public boolean needsNewVersion(ArtifactObject artifact, TargetObject target, String targetID, String fromVersion);
-
-	/**
-	 * Sets the OBR that this artifact repository should use to upload artifacts to.
-	 */
-	public void setObrBase(URL obrBase);
-
-    /**
-     * Gets the OBR that this artifact repository should use to upload artifacts to.
-     * Note that this method may return <code>null</code> if no base was set earlier.
-     */
-    public URL getObrBase();
 }

Added: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConfiguration.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConfiguration.java?rev=1530984&view=auto
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConfiguration.java (added)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConfiguration.java Thu Oct 10 14:11:13 2013
@@ -0,0 +1,47 @@
+/*
+ * 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.client.repository.repository;
+
+import java.net.URL;
+
+/**
+ * Provides the configuration options for several of the repositories.
+ */
+public interface RepositoryConfiguration {
+
+    /**
+     * @return the number of deployment versions to retain per target, can be <tt>-1</tt> (the default) if the number of
+     *         deployment versions per target is unbounded.
+     */
+    int getDeploymentVersionLimit();
+
+    /**
+     * @return the URL where the OBR can be accessed to store artifacts, never <code>null</code>. Defaults to
+     *         <tt>http://localhost:8080/obr/</tt>.
+     */
+    URL getOBRLocation();
+
+    /**
+     * @return <code>true</code> (the default) if unregistered targets should be shown in the target repository,
+     *         <code>false</code> to only show (pre-)registered targets.
+     */
+    boolean isShowUnregisteredTargets();
+
+}

Propchange: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConfiguration.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConstants.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConstants.java?rev=1530984&view=auto
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConstants.java (added)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConstants.java Thu Oct 10 14:11:13 2013
@@ -0,0 +1,49 @@
+/*
+ * 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.client.repository.repository;
+
+import java.net.URL;
+
+/**
+ * Constants used for the repository.
+ */
+public interface RepositoryConstants {
+    /**
+     * Configuration key for hiding or showing unregistered targets. The value should either be a {@link Boolean} or a
+     * {@link String} containing <tt>true</tt> (= the default value) or <tt>false</tt>.
+     */
+    String KEY_SHOW_UNREGISTERED_TARGETS = "showunregisteredtargets";
+
+    /**
+     * Configuration key for limiting the number of deployment versions per target. In case the number of deployment
+     * versions for a target hits this limit, the oldest deployment versions will be purged for this target. The value
+     * should be an {@link Integer} or a {@link String} representing the integer value. A value of <tt>-1</tt> (= the
+     * default in case no value is supplied) means that no limit is imposed, and that <em>all</em> deployment versions
+     * are retained for each target.
+     */
+    String KEY_DEPLOYMENT_VERSION_LIMITS = "deploymentversionlimit";
+
+    /**
+     * Configuration key for defining where the OBR is located to store artifacts in. The value should either be a
+     * {@link URL} or a String representing a valid URL. Defaults to <tt>http://localhost:8080/obr/</tt>.
+     */
+    String KEY_OBR_LOCATION = "obrlocation";
+
+}

Propchange: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/repository/RepositoryConstants.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetRepositoryImpl.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetRepositoryImpl.java?rev=1530984&r1=1530983&r2=1530984&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetRepositoryImpl.java (original)
+++ ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetRepositoryImpl.java Thu Oct 10 14:11:13 2013
@@ -46,6 +46,7 @@ import org.apache.ace.client.repository.
 import org.apache.ace.client.repository.object.DistributionObject;
 import org.apache.ace.client.repository.repository.ArtifactRepository;
 import org.apache.ace.client.repository.repository.DeploymentVersionRepository;
+import org.apache.ace.client.repository.repository.RepositoryConfiguration;
 import org.apache.ace.client.repository.repository.TargetRepository;
 import org.apache.ace.client.repository.stateful.StatefulTargetObject;
 import org.apache.ace.client.repository.stateful.StatefulTargetObject.ApprovalState;
@@ -62,8 +63,8 @@ import org.osgi.service.event.EventHandl
 import org.osgi.service.log.LogService;
 
 /**
- * Implements the StatefulTargetRepository. If an <code>AuditLogStore</code> is present,
- * it will be used; it is assumed that the auditlog store is up to date.
+ * Implements the StatefulTargetRepository. If an <code>AuditLogStore</code> is present, it will be used; it is assumed
+ * that the auditlog store is up to date.
  */
 public class StatefulTargetRepositoryImpl implements StatefulTargetRepository, EventHandler, PreCommitMember {
     private BundleContext m_context; /* Injected by dependency manager */
@@ -77,13 +78,14 @@ public class StatefulTargetRepositoryImp
     // TODO: Make the concurrencyLevel of this concurrent hashmap settable?
     private Map<String, StatefulTargetObjectImpl> m_repository = new ConcurrentHashMap<String, StatefulTargetObjectImpl>();
     private Map<String, StatefulTargetObjectImpl> m_index = new ConcurrentHashMap<String, StatefulTargetObjectImpl>();
+
     private final String m_sessionID;
+    private final RepositoryConfiguration m_repoConfig;
     private boolean m_holdEvents = false;
-	private boolean m_showUnregisteredTargets;
 
-    public StatefulTargetRepositoryImpl(String sessionID, boolean showUnregisteredTargets) {
+    public StatefulTargetRepositoryImpl(String sessionID, RepositoryConfiguration repoConfig) {
         m_sessionID = sessionID;
-		m_showUnregisteredTargets = showUnregisteredTargets;
+        m_repoConfig = repoConfig;
     }
 
     public StatefulTargetObject create(Map<String, String> attributes, Map<String, String> tags)
@@ -154,12 +156,13 @@ public class StatefulTargetRepositoryImp
     /**
      * Gets the <code>TargetObject</code> which is identified by the <code>targetID</code>.
      * 
-     * @param targetID A string representing a target ID.
-     * @return The <code>TargetObject</code> from the <code>TargetRepository</code> which has the given
-     *         ID, or <code>null</code> if none can be found.
+     * @param targetID
+     *            A string representing a target ID.
+     * @return The <code>TargetObject</code> from the <code>TargetRepository</code> which has the given ID, or
+     *         <code>null</code> if none can be found.
      */
     TargetObject getTargetObject(String targetID) {
-// synchronized(m_repository) {
+        // synchronized(m_repository) {
         try {
             List<TargetObject> targets =
                 m_targetRepository.get(m_context.createFilter("(" + TargetObject.KEY_ID + "="
@@ -175,15 +178,16 @@ public class StatefulTargetRepositoryImp
             // The filter syntax is illegal, probably a bad target ID.
             return null;
         }
-// }
+        // }
     }
 
     /**
      * Gets the stateful representation of the given target ID.
      * 
-     * @param targetID A string representing a target ID.
-     * @return The <code>StatefulTargetyObjectImpl</code> which handles the given ID,
-     *         or <code>null</code> if none can be found.
+     * @param targetID
+     *            A string representing a target ID.
+     * @return The <code>StatefulTargetyObjectImpl</code> which handles the given ID, or <code>null</code> if none can
+     *         be found.
      */
     StatefulTargetObjectImpl getStatefulTargetObject(String targetID) {
         synchronized (m_repository) {
@@ -194,7 +198,8 @@ public class StatefulTargetRepositoryImp
     /**
      * Creates and registers a new stateful target object based on the given ID.
      * 
-     * @param targetID A string representing a target ID.
+     * @param targetID
+     *            A string representing a target ID.
      * @return The newly created and registered <code>StatefulTargetObjectImpl</code>.
      */
     private StatefulTargetObjectImpl createStateful(String targetID) {
@@ -210,10 +215,10 @@ public class StatefulTargetRepositoryImp
     }
 
     /**
-     * Removes the given entity from this object's repository, and notifies
-     * interested parties of this.
+     * Removes the given entity from this object's repository, and notifies interested parties of this.
      * 
-     * @param entity The StatefulTargetObjectImpl to be removed.
+     * @param entity
+     *            The StatefulTargetObjectImpl to be removed.
      */
     void removeStateful(StatefulTargetObjectImpl entity) {
         synchronized (m_repository) {
@@ -224,12 +229,12 @@ public class StatefulTargetRepositoryImp
     }
 
     /**
-     * Adds the given stateful object to this object's repository, and notifies
-     * interested parties of this change.
+     * Adds the given stateful object to this object's repository, and notifies interested parties of this change.
      * 
-     * @param stoi A <code>StatefulTargetObjectImpl</code> to be registered.
-     * @return <code>true</code> when this object has been added to the repository
-     *         and listeners have been notified, <code>false</code> otherwise.
+     * @param stoi
+     *            A <code>StatefulTargetObjectImpl</code> to be registered.
+     * @return <code>true</code> when this object has been added to the repository and listeners have been notified,
+     *         <code>false</code> otherwise.
      */
     boolean add(StatefulTargetObjectImpl stoi) {
         if (!m_repository.containsKey(stoi)) {
@@ -246,9 +251,10 @@ public class StatefulTargetRepositoryImp
     /**
      * Gets all auditlog events which are related to a given target ID.
      * 
-     * @param targetID A string representing a target ID.
-     * @return a list of <code>AuditEvent</code>s related to this target ID,
-     *         ordered in the order they happened. If no events can be found, and empty list will be returned.
+     * @param targetID
+     *            A string representing a target ID.
+     * @return a list of <code>AuditEvent</code>s related to this target ID, ordered in the order they happened. If no
+     *         events can be found, and empty list will be returned.
      */
     List<Event> getAuditEvents(String targetID) {
         return getAuditEvents(getAllDescriptors(targetID));
@@ -257,7 +263,8 @@ public class StatefulTargetRepositoryImp
     /**
      * Gets all auditlog descriptors which are related to a given target.
      * 
-     * @param targetID The target ID
+     * @param targetID
+     *            The target ID
      * @return A list of LogDescriptors, in no particular order.
      */
     List<Descriptor> getAllDescriptors(String targetID) {
@@ -278,12 +285,13 @@ public class StatefulTargetRepositoryImp
     /**
      * Gets all audit log events for a target is has not yet 'seen'.
      * 
-     * @param all A list of all <code>LogDescriptor</code> from which to filter
-     *        the new ones.
-     * @param seen A list of <code>LogDescriptor</code> objects, which indicate
-     *        the items the target has already processed.
-     * @return All AuditLog events that are in the audit store, but are not identified
-     *         by <code>oldDescriptors</code>, ordered by 'happened-before'.
+     * @param all
+     *            A list of all <code>LogDescriptor</code> from which to filter the new ones.
+     * @param seen
+     *            A list of <code>LogDescriptor</code> objects, which indicate the items the target has already
+     *            processed.
+     * @return All AuditLog events that are in the audit store, but are not identified by <code>oldDescriptors</code>,
+     *         ordered by 'happened-before'.
      */
     List<Event> getAuditEvents(List<Descriptor> events) {
         // Get all events from the audit log store, if possible.
@@ -326,13 +334,12 @@ public class StatefulTargetRepositoryImp
     }
 
     /**
-     * Based on the information in this stateful object, creates a <code>TargetObject</code>
-     * in the <code>TargetRepository</code>.
-     * This function is intended to be used for targets which are not yet represented
-     * in the <code>TargetRepository</code>; if they already are, an <code>IllegalArgumentException</code>
-     * will be thrown.
+     * Based on the information in this stateful object, creates a <code>TargetObject</code> in the
+     * <code>TargetRepository</code>. This function is intended to be used for targets which are not yet represented in
+     * the <code>TargetRepository</code>; if they already are, an <code>IllegalArgumentException</code> will be thrown.
      * 
-     * @param targetID A string representing the ID of the new target.
+     * @param targetID
+     *            A string representing the ID of the new target.
      */
     void register(String targetID) {
         Map<String, String> attr = new HashMap<String, String>();
@@ -345,10 +352,13 @@ public class StatefulTargetRepositoryImp
     /**
      * Notifies interested parties of a change to a <code>StatefulTargetObject</code>.
      * 
-     * @param stoi The <code>StatefulTargetObject</code> which has changed.
-     * @param topic A topic string for posting the event.
-     * @param additionalProperties A Properties event, already containing some extra properties. If
-     *        RepositoryObject.EVENT_ENTITY is used, it will be overwritten.
+     * @param stoi
+     *            The <code>StatefulTargetObject</code> which has changed.
+     * @param topic
+     *            A topic string for posting the event.
+     * @param additionalProperties
+     *            A Properties event, already containing some extra properties. If RepositoryObject.EVENT_ENTITY is
+     *            used, it will be overwritten.
      */
     void notifyChanged(StatefulTargetObject stoi, String topic, Properties additionalProperties) {
         additionalProperties.put(RepositoryObject.EVENT_ENTITY, stoi);
@@ -359,13 +369,19 @@ public class StatefulTargetRepositoryImp
     /**
      * Notifies interested parties of a change to a <code>StatefulTargetObject</code>.
      * 
-     * @param stoi The <code>StatefulTargetObject</code> which has changed.
-     * @param topic A topic string for posting the event.
+     * @param stoi
+     *            The <code>StatefulTargetObject</code> which has changed.
+     * @param topic
+     *            A topic string for posting the event.
      */
     void notifyChanged(StatefulTargetObject stoi, String topic) {
         notifyChanged(stoi, topic, new Properties());
     }
 
+    private boolean isShowUnregisteredTargets() {
+        return m_repoConfig.isShowUnregisteredTargets();
+    }
+
     /**
      * Reads the information sources to generate the stateful objects.
      */
@@ -373,8 +389,8 @@ public class StatefulTargetRepositoryImp
         synchronized (m_repository) {
             List<StatefulTargetObjectImpl> touched = new ArrayList<StatefulTargetObjectImpl>();
             touched.addAll(parseTargetRepository());
-            if (m_showUnregisteredTargets) {
-            	touched.addAll(parseAuditLog());
+            if (isShowUnregisteredTargets()) {
+                touched.addAll(parseAuditLog());
             }
 
             // Now, it is possible we have not touched all objects. Find out which these are, and make
@@ -396,11 +412,11 @@ public class StatefulTargetRepositoryImp
     }
 
     /**
-     * Checks all inhabitants of the <code>TargetRepository</code> to see
-     * whether we already have a stateful representation of them.
+     * Checks all inhabitants of the <code>TargetRepository</code> to see whether we already have a stateful
+     * representation of them.
      * 
-     * @param needsVerify states whether the objects which are 'touched' by this
-     *        actions should verify their existence.
+     * @param needsVerify
+     *            states whether the objects which are 'touched' by this actions should verify their existence.
      * @return A list of all the target objects that have been touched by this action.
      */
     private List<StatefulTargetObjectImpl> parseTargetRepository() {
@@ -419,11 +435,10 @@ public class StatefulTargetRepositoryImp
     }
 
     /**
-     * Checks the audit log to see whether we already have a
-     * stateful object for all targets mentioned there.
+     * Checks the audit log to see whether we already have a stateful object for all targets mentioned there.
      * 
-     * @param needsVerify states whether the objects which are 'touched' by this
-     *        actions should verify their existence.
+     * @param needsVerify
+     *            states whether the objects which are 'touched' by this actions should verify their existence.
      */
     private List<StatefulTargetObjectImpl> parseAuditLog() {
         List<StatefulTargetObjectImpl> result = new ArrayList<StatefulTargetObjectImpl>();
@@ -445,9 +460,8 @@ public class StatefulTargetRepositoryImp
         }
 
         /*
-         * Note: the parsing of the audit log and the creation/notification of the
-         * stateful objects has been separated, to prevent calling updateAuditEvents()
-         * multiple times on targets which have more than one log.
+         * Note: the parsing of the audit log and the creation/notification of the stateful objects has been separated,
+         * to prevent calling updateAuditEvents() multiple times on targets which have more than one log.
          */
         synchronized (m_repository) {
             for (String targetID : targetIDs) {
@@ -465,12 +479,14 @@ public class StatefulTargetRepositoryImp
     }
 
     /**
-     * Approves the changes that will happen to the target based on the
-     * changes in the shop by generating a new deployment version.
+     * Approves the changes that will happen to the target based on the changes in the shop by generating a new
+     * deployment version.
      * 
-     * @param targetID A string representing a target ID.
+     * @param targetID
+     *            A string representing a target ID.
      * @return The version identifier of the new deployment package.
-     * @throws java.io.IOException When there is a problem generating the deployment version.
+     * @throws java.io.IOException
+     *             When there is a problem generating the deployment version.
      */
     String approve(String targetID) throws IOException {
         DeploymentVersionObject mostRecentDeploymentVersion = getMostRecentDeploymentVersion(targetID);
@@ -482,19 +498,19 @@ public class StatefulTargetRepositoryImp
             nextVersion = nextVersion(mostRecentDeploymentVersion.getVersion());
         }
         return nextVersion;
-//        return generateDeploymentVersion(targetID).getVersion();
+        // return generateDeploymentVersion(targetID).getVersion();
     }
 
     /**
-     * Generates an array of bundle URLs which have to be deployed on
-     * the target, given the current state of the shop.
-     * TODO: In the future, we want to add support for multiple shops.
-     * TODO: Is this prone to concurrency issues with changes distribution- and
-     * feature objects?
+     * Generates an array of bundle URLs which have to be deployed on the target, given the current state of the shop.
+     * TODO: In the future, we want to add support for multiple shops. TODO: Is this prone to concurrency issues with
+     * changes distribution- and feature objects?
      * 
-     * @param targetID A string representing a target.
+     * @param targetID
+     *            A string representing a target.
      * @return An array of artifact URLs.
-     * @throws java.io.IOException When there is a problem processing an artifact for deployment.
+     * @throws java.io.IOException
+     *             When there is a problem processing an artifact for deployment.
      */
     DeploymentArtifact[] getNecessaryDeploymentArtifacts(String targetID, String version) throws IOException {
         TargetObject to = getTargetObject(targetID);
@@ -638,7 +654,7 @@ public class StatefulTargetRepositoryImp
                             ArtifactObject processor = allProcessors.get(processorPID);
                             if (processor == null) {
                                 // this means we cannot create a useful version; return null.
-                            	m_log.log(LogService.LOG_ERROR, "Cannot gather necessary artifacts: failed to find resource processor named '" + artifact.getProcessorPID() + "' for artifact '" + artifact.getName() + "'!");
+                                m_log.log(LogService.LOG_ERROR, "Cannot gather necessary artifacts: failed to find resource processor named '" + artifact.getProcessorPID() + "' for artifact '" + artifact.getName() + "'!");
                                 return null;
                             }
                             result.add(processor);
@@ -652,13 +668,14 @@ public class StatefulTargetRepositoryImp
     }
 
     /**
-     * Generates a new deployment version for the the given target,
-     * based on the artifacts it is linked to by the distributions it is
-     * associated to.
+     * Generates a new deployment version for the the given target, based on the artifacts it is linked to by the
+     * distributions it is associated to.
      * 
-     * @param targetID A string representing a target.
+     * @param targetID
+     *            A string representing a target.
      * @return A new DeploymentVersionObject, representing this new version for the target.
-     * @throws java.io.IOException When there is a problem determining the artifacts to be deployed.
+     * @throws java.io.IOException
+     *             When there is a problem determining the artifacts to be deployed.
      */
     DeploymentVersionObject generateDeploymentVersion(String targetID) throws IOException {
         Map<String, String> attr = new HashMap<String, String>();
@@ -691,13 +708,12 @@ public class StatefulTargetRepositoryImp
     }
 
     /**
-     * Generates the next version, based on the version passed in.
-     * The version is assumed to be an OSGi-version; for now, the next
-     * 'major' version is generated. In the future, we might want to do
-     * 'smarter' things here, like checking the impact of a new version
-     * and use the minor and micro versions, or attach some qualifier.
+     * Generates the next version, based on the version passed in. The version is assumed to be an OSGi-version; for
+     * now, the next 'major' version is generated. In the future, we might want to do 'smarter' things here, like
+     * checking the impact of a new version and use the minor and micro versions, or attach some qualifier.
      * 
-     * @param version A string representing a deployment version's version.
+     * @param version
+     *            A string representing a deployment version's version.
      * @return A string representing the next version.
      */
     private static String nextVersion(String version) {
@@ -763,7 +779,7 @@ public class StatefulTargetRepositoryImp
                 }
             }
         }
-        
+
         if (RepositoryAdmin.PRIVATE_TOPIC_LOGIN.equals(topic) || RepositoryAdmin.PRIVATE_TOPIC_REFRESH.equals(topic)) {
             m_holdEvents = false;
             synchronized (m_repository) {
@@ -787,7 +803,7 @@ public class StatefulTargetRepositoryImp
             }
         }
     }
-    
+
     @Override
     public void reset() {
         synchronized (m_repository) {
@@ -808,8 +824,8 @@ public class StatefulTargetRepositoryImp
         }
         return false;
     }
-    
+
     private boolean preCommitHasChanges(StatefulTargetObjectImpl stoi) {
         return stoi.getApprovalState().equals(ApprovalState.Approved) && stoi.needsApprove();
     }
-}
\ No newline at end of file
+}

Modified: ace/trunk/org.apache.ace.client.repository/test/org/apache/ace/client/repository/impl/ArtifactTest.java
URL: http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/test/org/apache/ace/client/repository/impl/ArtifactTest.java?rev=1530984&r1=1530983&r2=1530984&view=diff
==============================================================================
--- ace/trunk/org.apache.ace.client.repository/test/org/apache/ace/client/repository/impl/ArtifactTest.java (original)
+++ ace/trunk/org.apache.ace.client.repository/test/org/apache/ace/client/repository/impl/ArtifactTest.java Thu Oct 10 14:11:13 2013
@@ -54,7 +54,7 @@ public class ArtifactTest {
             }
         });
 
-        m_artifactRepository = new ArtifactRepositoryImpl(TestUtils.createNullObject(ChangeNotifier.class));
+        m_artifactRepository = new ArtifactRepositoryImpl(TestUtils.createNullObject(ChangeNotifier.class), new RepositoryConfigurationImpl());
         TestUtils.configureObject(m_artifactRepository, LogService.class);
         TestUtils.configureObject(m_artifactRepository, BundleContext.class, bc);
     }