You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2014/05/02 13:58:20 UTC
svn commit: r1591880 - in
/felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl:
FelixResourceAdapter.java OSGiRepositoryImpl.java SpecXMLPullParser.java
Author: davidb
Date: Fri May 2 11:58:20 2014
New Revision: 1591880
URL: http://svn.apache.org/r1591880
Log:
[FELIX-4371] Last Repository 1.0 failure fixed.
These code changes make the Felix Repository pass all the CT tests.
Modified:
felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/FelixResourceAdapter.java
felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImpl.java
felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/SpecXMLPullParser.java
Modified: felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/FelixResourceAdapter.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/FelixResourceAdapter.java?rev=1591880&r1=1591879&r2=1591880&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/FelixResourceAdapter.java (original)
+++ felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/FelixResourceAdapter.java Fri May 2 11:58:20 2014
@@ -47,7 +47,7 @@ public class FelixResourceAdapter implem
}
if (namespace == null || namespace.equals(ContentNamespace.CONTENT_NAMESPACE))
{
- OSGiCapabilityImpl c = OSGiRepositoryImpl.newOSGiContentCapability(resource.getURI(), resource.getSize());
+ OSGiCapabilityImpl c = OSGiRepositoryImpl.newOSGiContentCapability(resource);
c.setResource(this);
result.add(c);
}
Modified: felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImpl.java?rev=1591880&r1=1591879&r2=1591880&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImpl.java (original)
+++ felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImpl.java Fri May 2 11:58:20 2014
@@ -33,6 +33,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
import org.apache.felix.bundlerepository.RepositoryAdmin;
+import org.apache.felix.bundlerepository.Resource;
import org.apache.felix.bundlerepository.impl.LazyHashMap.LazyValue;
import org.osgi.framework.Filter;
import org.osgi.framework.FrameworkUtil;
@@ -132,8 +133,9 @@ class OSGiRepositoryImpl implements Repo
return new OSGiCapabilityImpl(IdentityNamespace.IDENTITY_NAMESPACE, idAttrs, Collections.<String, String> emptyMap());
}
- static OSGiCapabilityImpl newOSGiContentCapability(final String uri, long size)
+ static OSGiCapabilityImpl newOSGiContentCapability(Resource resource)
{
+ final String uri = resource.getURI();
LazyValue<String, Object> lazyValue =
new LazyValue<String, Object>(ContentNamespace.CONTENT_NAMESPACE, new Callable<Object>()
{
@@ -143,9 +145,14 @@ class OSGiRepositoryImpl implements Repo
return OSGiRepositoryImpl.getSHA256(uri);
}
});
+
+ Object mime = resource.getProperties().get("mime");
+ if (mime == null)
+ mime = "application/vnd.osgi.bundle";
+
Map<String, Object> contentAttrs = new LazyHashMap<String, Object>(Collections.singleton(lazyValue));
- contentAttrs.put(ContentNamespace.CAPABILITY_MIME_ATTRIBUTE, "application/vnd.osgi.bundle"); // TODO support other types
- contentAttrs.put(ContentNamespace.CAPABILITY_SIZE_ATTRIBUTE, size);
+ contentAttrs.put(ContentNamespace.CAPABILITY_MIME_ATTRIBUTE, mime);
+ contentAttrs.put(ContentNamespace.CAPABILITY_SIZE_ATTRIBUTE, resource.getSize());
contentAttrs.put(ContentNamespace.CAPABILITY_URL_ATTRIBUTE, uri);
return new OSGiCapabilityImpl(ContentNamespace.CONTENT_NAMESPACE, contentAttrs, Collections.<String, String> emptyMap());
}
Modified: felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/SpecXMLPullParser.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/SpecXMLPullParser.java?rev=1591880&r1=1591879&r2=1591880&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/SpecXMLPullParser.java (original)
+++ felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/SpecXMLPullParser.java Fri May 2 11:58:20 2014
@@ -129,8 +129,14 @@ public class SpecXMLPullParser
}
if (ContentNamespace.CONTENT_NAMESPACE.equals(namespace))
{
- parseContentNamespace(reader, resource);
- return null;
+ if (resource.getURI() == null)
+ {
+ parseContentNamespace(reader, resource);
+ return null;
+ }
+ // if the URI is already set, this is a second osgi.content capability.
+ // The first content capability, which is the main one, is stored in the Resource.
+ // Subsequent content capabilities are stored are ordinary capabilities.
}
CapabilityImpl capability = new CapabilityImpl();