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 2010/12/06 15:55:13 UTC

svn commit: r1042666 - in /incubator/ace/trunk: ace-client-repository-configuration/ ace-client-repository-helper-base/ ace-client-repository-helper-base/src/main/java/org/apache/ace/client/repository/helper/base/ ace-client-repository-impl/src/main/ja...

Author: marrs
Date: Mon Dec  6 14:55:12 2010
New Revision: 1042666

URL: http://svn.apache.org/viewvc?rev=1042666&view=rev
Log:
ACE-103 Initial implementation of this new feature.

Added:
    incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/GatewayPropertyResolver.java
    incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/RepoPropertyResolver.java
Modified:
    incubator/ace/trunk/ace-client-repository-configuration/osgi.bnd
    incubator/ace/trunk/ace-client-repository-helper-base/osgi.bnd
    incubator/ace/trunk/ace-client-repository-helper-base/pom.xml
    incubator/ace/trunk/ace-client-repository-helper-base/src/main/java/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java
    incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/ArtifactRepositoryImpl.java

Modified: incubator/ace/trunk/ace-client-repository-configuration/osgi.bnd
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-client-repository-configuration/osgi.bnd?rev=1042666&r1=1042665&r2=1042666&view=diff
==============================================================================
--- incubator/ace/trunk/ace-client-repository-configuration/osgi.bnd (original)
+++ incubator/ace/trunk/ace-client-repository-configuration/osgi.bnd Mon Dec  6 14:55:12 2010
@@ -10,3 +10,5 @@ Bundle-SymbolicName:\
 Export-Package:\
   ${bundle.namespace}; version="${pom.version}"
 
+Deployment-ProvidesResourceProcessor:\
+  org.osgi.deployment.rp.autoconf
\ No newline at end of file

Modified: incubator/ace/trunk/ace-client-repository-helper-base/osgi.bnd
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-client-repository-helper-base/osgi.bnd?rev=1042666&r1=1042665&r2=1042666&view=diff
==============================================================================
--- incubator/ace/trunk/ace-client-repository-helper-base/osgi.bnd (original)
+++ incubator/ace/trunk/ace-client-repository-helper-base/osgi.bnd Mon Dec  6 14:55:12 2010
@@ -50,4 +50,4 @@ Import-Package: \
 	*
 
 Embed-Dependency: \
-	velocity, xpp3
+	velocity, xpp3, commons-collections, commons-lang

Modified: incubator/ace/trunk/ace-client-repository-helper-base/pom.xml
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-client-repository-helper-base/pom.xml?rev=1042666&r1=1042665&r2=1042666&view=diff
==============================================================================
--- incubator/ace/trunk/ace-client-repository-helper-base/pom.xml (original)
+++ incubator/ace/trunk/ace-client-repository-helper-base/pom.xml Mon Dec  6 14:55:12 2010
@@ -78,6 +78,16 @@
             <artifactId>velocity</artifactId>
         </dependency>
         <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+            <version>3.2</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>2.4</version>
+        </dependency>
+        <dependency>
             <groupId>xpp3</groupId>
             <artifactId>xpp3</artifactId>
             <version>1.1.4c</version>

Modified: incubator/ace/trunk/ace-client-repository-helper-base/src/main/java/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-client-repository-helper-base/src/main/java/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java?rev=1042666&r1=1042665&r2=1042666&view=diff
==============================================================================
--- incubator/ace/trunk/ace-client-repository-helper-base/src/main/java/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java (original)
+++ incubator/ace/trunk/ace-client-repository-helper-base/src/main/java/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java Mon Dec  6 14:55:12 2010
@@ -217,7 +217,6 @@ public class VelocityArtifactPreprocesso
         }
 
         // process the template
-
         // first check: did we need any processing at all?
         if (Arrays.equals(result, input)) {
             return false;

Modified: incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/ArtifactRepositoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/ArtifactRepositoryImpl.java?rev=1042666&r1=1042665&r2=1042666&view=diff
==============================================================================
--- incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/ArtifactRepositoryImpl.java (original)
+++ incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/ArtifactRepositoryImpl.java Mon Dec  6 14:55:12 2010
@@ -32,17 +32,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.ace.client.repository.RepositoryObject;
 import org.apache.ace.client.repository.RepositoryUtil;
 import org.apache.ace.client.repository.helper.ArtifactHelper;
 import org.apache.ace.client.repository.helper.ArtifactPreprocessor;
 import org.apache.ace.client.repository.helper.ArtifactRecognizer;
-import org.apache.ace.client.repository.helper.PropertyResolver;
 import org.apache.ace.client.repository.helper.bundle.BundleHelper;
 import org.apache.ace.client.repository.object.ArtifactObject;
 import org.apache.ace.client.repository.object.GatewayObject;
-import org.apache.ace.client.repository.object.GroupObject;
-import org.apache.ace.client.repository.object.LicenseObject;
 import org.apache.ace.client.repository.repository.ArtifactRepository;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
@@ -495,70 +491,7 @@ public class ArtifactRepositoryImpl exte
             return preprocessor.needsNewVersion(artifact.getURL(), new GatewayPropertyResolver(gateway), gatewayID, fromVersion);
         }
     }
-
-    private static class GatewayPropertyResolver implements PropertyResolver {
-
-        private final GatewayObject m_go;
-
-        public GatewayPropertyResolver(GatewayObject go) {
-            m_go = go;
-        }
-
-        public String get(String key) {
-            return get(key, m_go);
-        }
-
-        private String get(String key, RepositoryObject ro) {
-            // Is it in this object?
-            String result = findKeyInObject(ro, key);
-            if (result != null) {
-                return result;
-            }
-
-            // Is it in one of the children?
-            List<RepositoryObject> children = getChildren(ro);
-            for (RepositoryObject child : children) {
-                result = findKeyInObject(child, key);
-                if (result != null) {
-                    return result;
-                }
-            }
-
-            // Not found yet? then continue to the next level recursively.
-            for (RepositoryObject child : children) {
-                result = get(key, child);
-                if (result != null) {
-                    return result;
-                }
-            }
-            return result;
-        }
-
-        private List getChildren(RepositoryObject ob) {
-            if (ob instanceof GatewayObject) {
-                return ((GatewayObject) ob).getLicenses();
-            }
-            else if (ob instanceof LicenseObject) {
-                return ((LicenseObject) ob).getGroups();
-            }
-            else if (ob instanceof GroupObject) {
-                return ((GroupObject) ob).getArtifacts();
-            }
-            return new ArrayList();
-        }
-
-        private String findKeyInObject(RepositoryObject ro, String key) {
-            String result;
-            if ((result = ro.getAttribute(key)) != null) {
-                return result;
-            }
-            if ((result = ro.getTag(key)) != null) {
-                return result;
-            }
-            return null;
-        }
-
-    }
+    
 
     public URL getObrBase() {
         return m_obrBase;

Added: incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/GatewayPropertyResolver.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/GatewayPropertyResolver.java?rev=1042666&view=auto
==============================================================================
--- incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/GatewayPropertyResolver.java (added)
+++ incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/GatewayPropertyResolver.java Mon Dec  6 14:55:12 2010
@@ -0,0 +1,81 @@
+package org.apache.ace.client.repository.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.ace.client.repository.RepositoryObject;
+import org.apache.ace.client.repository.helper.PropertyResolver;
+import org.apache.ace.client.repository.object.GatewayObject;
+
+
+
+/**
+ * 
+ * Top-level property resolver, also able to return collections
+ * of distributions, features and artifacts linked to this target
+ * repository object.
+ * 
+ * 
+ * @author dennisg
+ *
+ */
+public class GatewayPropertyResolver extends RepoPropertyResolver {
+
+		
+        public GatewayPropertyResolver(GatewayObject go) {
+        	super(go);
+        }
+
+
+        public Collection<PropertyResolver> getDistributions() {
+        	List<PropertyResolver> list = new ArrayList<PropertyResolver>();
+        	
+        	List<RepositoryObject> distributions = (List<RepositoryObject>)getChildren();
+        	
+        	for (RepositoryObject repo : distributions) {
+				list.add(new RepoPropertyResolver(repo));
+			}
+        	
+        	return list;
+        }
+        
+        public Collection<PropertyResolver> getFeatures() {
+        	List<PropertyResolver> list = new ArrayList<PropertyResolver>();
+        	
+        	List<RepositoryObject> features = new ArrayList<RepositoryObject>();
+        	
+        	for (RepositoryObject repositoryObject : getChildren()) {
+        		features.addAll(getChildren(repositoryObject));
+			}
+        	
+        	for (RepositoryObject repo : features) {
+				list.add(new RepoPropertyResolver(repo));
+			}
+        	return list;
+        }
+        
+        public Collection<PropertyResolver> getArtifacts() {
+        	List<PropertyResolver> list = new ArrayList<PropertyResolver>();
+        	
+        	List<RepositoryObject> artifacts = new ArrayList<RepositoryObject>();
+        	
+        	
+        	List<RepositoryObject> features = new ArrayList<RepositoryObject>();
+        	
+        	for (RepositoryObject repositoryObject : getChildren()) {
+        		features.addAll(getChildren(repositoryObject));
+			}        	
+        	
+        	for (RepositoryObject repositoryObject : features) {
+				artifacts.addAll(getChildren(repositoryObject));
+			}
+        	
+        	
+        	for (RepositoryObject repo : artifacts) {
+				list.add(new RepoPropertyResolver(repo));
+			}
+        	return list;
+        }
+
+}

Added: incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/RepoPropertyResolver.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/RepoPropertyResolver.java?rev=1042666&view=auto
==============================================================================
--- incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/RepoPropertyResolver.java (added)
+++ incubator/ace/trunk/ace-client-repository-impl/src/main/java/org/apache/ace/client/repository/impl/RepoPropertyResolver.java Mon Dec  6 14:55:12 2010
@@ -0,0 +1,88 @@
+package org.apache.ace.client.repository.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.ace.client.repository.RepositoryObject;
+import org.apache.ace.client.repository.helper.PropertyResolver;
+import org.apache.ace.client.repository.object.GatewayObject;
+import org.apache.ace.client.repository.object.GroupObject;
+import org.apache.ace.client.repository.object.LicenseObject;
+
+/**
+ * 
+ * This PropertyResolver first tries to resolve the key in the
+ * current repository object. If not found, it looks for the key
+ * in its children. 
+ * 
+ * @author dennisg
+ *
+ */
+public class RepoPropertyResolver implements PropertyResolver {
+	
+	private final RepositoryObject m_repo;
+	
+	public RepoPropertyResolver(RepositoryObject obj) {
+		m_repo = obj;
+	}
+	
+    public String get(String key) {
+		return get(key, m_repo);
+    }
+
+    private String get(String key, RepositoryObject ro) {
+        // Is it in this object?
+        String result = findKeyInObject(ro, key);
+        if (result != null) {
+            return result;
+        }
+
+        // Is it in one of the children?
+        List<? extends RepositoryObject> children = getChildren(ro);
+        for (RepositoryObject child : children) {
+            result = findKeyInObject(child, key);
+            if (result != null) {
+                return result;
+            }
+        }
+
+        // Not found yet? then continue to the next level recursively.
+        for (RepositoryObject child : children) {
+            result = get(key, child);
+            if (result != null) {
+                return result;
+            }
+        }
+        return result;
+    }
+
+    protected List<? extends RepositoryObject> getChildren() {
+    	return getChildren(m_repo);
+    }
+    
+    protected List<? extends RepositoryObject> getChildren(RepositoryObject ob) {
+        if (ob instanceof GatewayObject) {
+            return ((GatewayObject) ob).getLicenses();
+        }
+        else if (ob instanceof LicenseObject) {
+            return ((LicenseObject) ob).getGroups();
+        }
+        else if (ob instanceof GroupObject) {
+            return ((GroupObject) ob).getArtifacts();
+        }
+        return new ArrayList<RepositoryObject>();
+    }
+
+    private String findKeyInObject(RepositoryObject ro, String key) {
+        String result;
+        if ((result = ro.getAttribute(key)) != null) {
+            return result;
+        }
+        if ((result = ro.getTag(key)) != null) {
+            return result;
+        }
+        return null;
+    }	
+}
+
+