You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2010/12/20 11:52:44 UTC

svn commit: r1051054 - in /ant/ivy/core/trunk/src/java/org/apache/ivy/osgi: core/BundleInfoAdapter.java obr/OBRResolver.java repo/BundleRepoResolver.java

Author: hibou
Date: Mon Dec 20 10:52:44 2010
New Revision: 1051054

URL: http://svn.apache.org/viewvc?rev=1051054&view=rev
Log:
- make the osgi metadata loaded only one per resolve
- add a namespace to the osgi extra attribute

Modified:
    ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfoAdapter.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfoAdapter.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfoAdapter.java?rev=1051054&r1=1051053&r2=1051054&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfoAdapter.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/core/BundleInfoAdapter.java Mon Dec 20 10:52:44 2010
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.ivy.Ivy;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.Configuration;
 import org.apache.ivy.core.module.descriptor.Configuration.Visibility;
@@ -64,7 +65,7 @@ public class BundleInfoAdapter {
 
     public static final String CONF_USE_PREFIX = "use_";
 
-    public static final String EXTRA_ATTRIBUTE_NAME = "osgi";
+    public static final String EXTRA_ATTRIBUTE_NAME = "o:type";
 
     public static final Map/* <String, String> */OSGI_BUNDLE = Collections.singletonMap(
         EXTRA_ATTRIBUTE_NAME, BundleInfo.BUNDLE_TYPE);
@@ -78,6 +79,7 @@ public class BundleInfoAdapter {
     public static DefaultModuleDescriptor toModuleDescriptor(BundleInfo bundle,
             ExecutionEnvironmentProfileProvider profileProvider) throws ProfileNotFoundException {
         DefaultModuleDescriptor md = new DefaultModuleDescriptor(null, null);
+        md.addExtraAttributeNamespace("o", Ivy.getIvyHomeURL() + "osgi");
         ModuleRevisionId mrid = asMrid(bundle.getSymbolicName(), bundle.getVersion(), OSGI_BUNDLE);
         md.setResolvedPublicationDate(new Date());
         md.setModuleRevisionId(mrid);

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java?rev=1051054&r1=1051053&r2=1051054&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/obr/OBRResolver.java Mon Dec 20 10:52:44 2010
@@ -46,7 +46,7 @@ public class OBRResolver extends BundleR
         this.repoXmlURL = repositoryXmlURL;
     }
 
-    protected void ensureInit() {
+    protected void init() {
         if (repoXmlFile != null && repoXmlURL != null) {
             throw new RuntimeException("The OBR repository resolver " + getName()
                     + " couldn't be configured: repoXmlFile and repoXmlUrl cannot be set both");

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java?rev=1051054&r1=1051053&r2=1051054&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/osgi/repo/BundleRepoResolver.java Mon Dec 20 10:52:44 2010
@@ -62,7 +62,7 @@ import org.apache.ivy.plugins.version.Ve
 import org.apache.ivy.util.Message;
 import org.xml.sax.SAXException;
 
-public class BundleRepoResolver extends BasicResolver {
+public abstract class BundleRepoResolver extends BasicResolver {
 
     private Repository repository = null;
 
@@ -111,12 +111,13 @@ public class BundleRepoResolver extends 
     }
 
     protected void ensureInit() {
-        if (repoDescriptor != null || repository != null) {
-            throw new IllegalStateException("The osgi repository resolver " + getName()
-                    + " wasn't correctly configured, see previous error in the logs");
+        if (repoDescriptor == null || repository == null) {
+            init();
         }
     }
 
+    abstract protected void init();
+
     public Repository getRepository() {
         ensureInit();
         return repository;
@@ -143,7 +144,7 @@ public class BundleRepoResolver extends 
     private DefaultModuleDescriptor getDependencyMD(DependencyDescriptor dd, ResolveData data) {
         ModuleRevisionId mrid = dd.getDependencyRevisionId();
 
-        String osgiAtt = mrid.getAttribute(BundleInfoAdapter.EXTRA_ATTRIBUTE_NAME);
+        String osgiAtt = mrid.getExtraAttribute(BundleInfoAdapter.EXTRA_ATTRIBUTE_NAME);
         Map/* <String, Set<BundleCapabilityAndLocation>> */bundleCapabilities = (Map) getRepoDescriptor()
                 .getBundleByCapabilities().get(osgiAtt);
         if (bundleCapabilities == null) {
@@ -268,7 +269,7 @@ public class BundleRepoResolver extends 
 
         BundleCandidate found = (BundleCandidate) founds.get(0);
 
-        String osgiAtt = mrid.getAttribute(BundleInfoAdapter.EXTRA_ATTRIBUTE_NAME);
+        String osgiAtt = mrid.getExtraAttribute(BundleInfoAdapter.EXTRA_ATTRIBUTE_NAME);
         // for non bundle requirement : log the selected bundle
         if (!BundleInfo.BUNDLE_TYPE.equals(osgiAtt)) {
             // several candidates with different symbolic name : make an warning about the ambiguity