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/09/24 14:09:19 UTC

svn commit: r1627285 - in /felix/trunk: bundlerepository.osgi-ct/ bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/ bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/ main/

Author: davidb
Date: Wed Sep 24 12:09:19 2014
New Revision: 1627285

URL: http://svn.apache.org/r1627285
Log:
[FELIX-4640] Missing framework capabilities.

This commit fixes the issue. 
New unit test included.
Note that OBR still passes the OSGi R5 repository CT.

Modified:
    felix/trunk/bundlerepository.osgi-ct/pom.xml
    felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/LocalResourceImpl.java
    felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImplTest.java
    felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryXMLTest.java
    felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryAdminTest.java
    felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryImplTest.java
    felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/ResolverImplTest.java
    felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/StaxParserTest.java
    felix/trunk/main/pom.xml

Modified: felix/trunk/bundlerepository.osgi-ct/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository.osgi-ct/pom.xml?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/bundlerepository.osgi-ct/pom.xml (original)
+++ felix/trunk/bundlerepository.osgi-ct/pom.xml Wed Sep 24 12:09:19 2014
@@ -32,7 +32,7 @@
     how to prime the repository with the provided repository xml file.
   </description>
   <artifactId>org.apache.felix.bundlerepository.osgi-ct</artifactId>
-  <version>1.7.0-SNAPSHOT</version>
+  <version>2.0.3-SNAPSHOT</version>
   <scm>
     <connection>scm:svn:http://svn.apache.org/repos/asf/felix/trunk/bundlerepository.osgi-ct</connection>
     <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/trunk/bundlerepository.osgi-ct</developerConnection>

Modified: felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/LocalResourceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/LocalResourceImpl.java?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/LocalResourceImpl.java (original)
+++ felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/LocalResourceImpl.java Wed Sep 24 12:09:19 2014
@@ -20,6 +20,7 @@ package org.apache.felix.bundlerepositor
 
 import java.util.Dictionary;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 import java.util.StringTokenizer;
 
@@ -29,6 +30,7 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
+import org.osgi.framework.wiring.BundleRevision;
 
 public class LocalResourceImpl extends ResourceImpl
 {
@@ -87,49 +89,21 @@ public class LocalResourceImpl extends R
                 }
             }
 
-/* TODO: OBR - Fix system capabilities.
-            // Create a case-insensitive map.
-            Map map = new TreeMap(new Comparator() {
-                public int compare(Object o1, Object o2)
+            // Add all the OSGi capabilities from the system bundle as repo capabilities
+            BundleRevision br = m_bundle.adapt(BundleRevision.class);
+            for (org.osgi.resource.Capability cap : br.getCapabilities(null))
+            {
+                CapabilityImpl bcap = new CapabilityImpl(cap.getNamespace());
+                for (Map.Entry<String, Object> entry : cap.getAttributes().entrySet())
                 {
-                    return o1.toString().compareToIgnoreCase(o2.toString());
+                    bcap.addProperty(new FelixPropertyAdapter(entry));
                 }
-            });
-            map.put(
-                Constants.FRAMEWORK_VERSION,
-                m_context.getProperty(Constants.FRAMEWORK_VERSION));
-            map.put(
-                Constants.FRAMEWORK_VENDOR,
-                m_context.getProperty(Constants.FRAMEWORK_VENDOR));
-            map.put(
-                Constants.FRAMEWORK_LANGUAGE,
-                m_context.getProperty(Constants.FRAMEWORK_LANGUAGE));
-            map.put(
-                Constants.FRAMEWORK_OS_NAME,
-                m_context.getProperty(Constants.FRAMEWORK_OS_NAME));
-            map.put(
-                Constants.FRAMEWORK_OS_VERSION,
-                m_context.getProperty(Constants.FRAMEWORK_OS_VERSION));
-            map.put(
-                Constants.FRAMEWORK_PROCESSOR,
-                m_context.getProperty(Constants.FRAMEWORK_PROCESSOR));
-//                map.put(
-//                    FelixConstants.FELIX_VERSION_PROPERTY,
-//                    m_context.getProperty(FelixConstants.FELIX_VERSION_PROPERTY));
-            Map[] capMaps = (Map[]) bundleMap.get("capability");
-            if (capMaps == null)
-            {
-                capMaps = new Map[] { map };
-            }
-            else
-            {
-                Map[] newCaps = new Map[capMaps.length + 1];
-                newCaps[0] = map;
-                System.arraycopy(capMaps, 0, newCaps, 1, capMaps.length);
-                capMaps = newCaps;
+                for (Map.Entry<String, String> entry : cap.getDirectives().entrySet())
+                {
+                    bcap.addDirective(entry.getKey(), entry.getValue());
+                }
+                addCapability(bcap);
             }
-            bundleMap.put("capability", capMaps);
-*/
         }
     }
 

Modified: felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImplTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImplTest.java?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImplTest.java (original)
+++ felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryImplTest.java Wed Sep 24 12:09:19 2014
@@ -29,6 +29,8 @@ import java.util.Set;
 
 import junit.framework.TestCase;
 
+import org.apache.felix.bundlerepository.Reason;
+import org.apache.felix.bundlerepository.Resolver;
 import org.apache.felix.utils.log.Logger;
 import org.mockito.Mockito;
 import org.osgi.framework.Bundle;
@@ -37,6 +39,7 @@ import org.osgi.framework.Version;
 import org.osgi.framework.namespace.BundleNamespace;
 import org.osgi.framework.namespace.IdentityNamespace;
 import org.osgi.framework.namespace.PackageNamespace;
+import org.osgi.framework.wiring.BundleRevision;
 import org.osgi.resource.Capability;
 import org.osgi.resource.Requirement;
 import org.osgi.resource.Resource;
@@ -198,11 +201,40 @@ public class OSGiRepositoryImplTest exte
         assertTrue(Arrays.equals(expectedBytes, actualBytes));
     }
 
+    public void testSystemBundleCapabilities() throws Exception {
+        RepositoryAdminImpl repoAdmin = createRepositoryAdmin();
+        Resolver resolver = repoAdmin.resolver();
+        RequirementImpl req = new RequirementImpl("some.system.cap");
+        req.setFilter("(sys.cap=something)");
+        resolver.add(req);
+        ResourceImpl res = new ResourceImpl();
+        res.addRequire(req);
+
+        resolver.add(res);
+        assertTrue(resolver.resolve());
+
+        // This should add the system bundle repo to the resolved set.
+        org.apache.felix.bundlerepository.Resource sysBundleRes = repoAdmin.getSystemRepository().getResources()[0];
+        Reason[] reason = resolver.getReason(sysBundleRes);
+        assertTrue(reason.length >= 1);
+        assertEquals(req, reason[0].getRequirement());
+    }
+
     private RepositoryAdminImpl createRepositoryAdmin() throws Exception
     {
         Bundle sysBundle = Mockito.mock(Bundle.class);
         Mockito.when(sysBundle.getHeaders()).thenReturn(new Hashtable<String, String>());
 
+        BundleRevision br = Mockito.mock(BundleRevision.class);
+        Mockito.when(sysBundle.adapt(BundleRevision.class)).thenReturn(br);
+        Capability cap1 = new OSGiCapabilityImpl("some.system.cap",
+                Collections.<String, Object>singletonMap("sys.cap", "something"),
+                Collections.singletonMap("x", "y"));
+        Capability cap2 = new OSGiCapabilityImpl("some.system.cap",
+                Collections.<String, Object>singletonMap("sys.cap", "somethingelse"),
+                Collections.<String, String>emptyMap());
+        Mockito.when(br.getCapabilities(null)).thenReturn(Arrays.asList(cap1, cap2));
+
         BundleContext bc = Mockito.mock(BundleContext.class);
         Mockito.when(bc.getBundle(0)).thenReturn(sysBundle);
         Mockito.when(sysBundle.getBundleContext()).thenReturn(bc);

Modified: felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryXMLTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryXMLTest.java?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryXMLTest.java (original)
+++ felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/OSGiRepositoryXMLTest.java Wed Sep 24 12:09:19 2014
@@ -35,6 +35,7 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Version;
 import org.osgi.framework.namespace.IdentityNamespace;
+import org.osgi.framework.wiring.BundleRevision;
 import org.osgi.resource.Capability;
 import org.osgi.resource.Requirement;
 import org.osgi.resource.Resource;
@@ -135,6 +136,8 @@ public class OSGiRepositoryXMLTest exten
     {
         Bundle sysBundle = Mockito.mock(Bundle.class);
         Mockito.when(sysBundle.getHeaders()).thenReturn(new Hashtable<String, String>());
+        BundleRevision br = Mockito.mock(BundleRevision.class);
+        Mockito.when(sysBundle.adapt(BundleRevision.class)).thenReturn(br);
 
         BundleContext bc = Mockito.mock(BundleContext.class);
         Mockito.when(bc.getBundle(0)).thenReturn(sysBundle);

Modified: felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryAdminTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryAdminTest.java?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryAdminTest.java (original)
+++ felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryAdminTest.java Wed Sep 24 12:09:19 2014
@@ -19,9 +19,11 @@
 package org.apache.felix.bundlerepository.impl;
 
 import java.net.URL;
+import java.util.Collections;
 import java.util.Hashtable;
 
 import junit.framework.TestCase;
+
 import org.apache.felix.bundlerepository.Resource;
 import org.apache.felix.utils.filter.FilterImpl;
 import org.apache.felix.utils.log.Logger;
@@ -33,6 +35,8 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleListener;
 import org.osgi.framework.ServiceListener;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.resource.Capability;
 
 public class RepositoryAdminTest extends TestCase
 {
@@ -54,8 +58,9 @@ public class RepositoryAdminTest extends
 
     private RepositoryAdminImpl createRepositoryAdmin() throws Exception
     {
-        BundleContext bundleContext = (BundleContext) EasyMock.createMock(BundleContext.class);
-        Bundle systemBundle = (Bundle) EasyMock.createMock(Bundle.class);
+        BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+        Bundle systemBundle = EasyMock.createMock(Bundle.class);
+        BundleRevision systemBundleRevision = EasyMock.createMock(BundleRevision.class);
 
         Activator.setContext(bundleContext);
         EasyMock.expect(bundleContext.getProperty((String) EasyMock.anyObject())).andReturn(null).anyTimes();
@@ -64,6 +69,8 @@ public class RepositoryAdminTest extends
         EasyMock.expect(systemBundle.getRegisteredServices()).andReturn(null);
         EasyMock.expect(new Long(systemBundle.getBundleId())).andReturn(new Long(0)).anyTimes();
         EasyMock.expect(systemBundle.getBundleContext()).andReturn(bundleContext);
+        EasyMock.expect(systemBundleRevision.getCapabilities(null)).andReturn(Collections.<Capability>emptyList());
+        EasyMock.expect(systemBundle.adapt(BundleRevision.class)).andReturn(systemBundleRevision);
         bundleContext.addBundleListener((BundleListener) EasyMock.anyObject());
         bundleContext.addServiceListener((ServiceListener) EasyMock.anyObject());
         EasyMock.expect(bundleContext.getBundles()).andReturn(new Bundle[] { systemBundle });
@@ -73,7 +80,7 @@ public class RepositoryAdminTest extends
                 return FilterImpl.newInstance((String) c.getValue());
             }
         }).anyTimes();
-        EasyMock.replay(new Object[] { bundleContext, systemBundle });
+        EasyMock.replay(new Object[] { bundleContext, systemBundle, systemBundleRevision });
 
         RepositoryAdminImpl repoAdmin = new RepositoryAdminImpl(bundleContext, new Logger(bundleContext));
 

Modified: felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryImplTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryImplTest.java?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryImplTest.java (original)
+++ felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/RepositoryImplTest.java Wed Sep 24 12:09:19 2014
@@ -19,6 +19,7 @@
 package org.apache.felix.bundlerepository.impl;
 
 import java.net.URL;
+import java.util.Collections;
 import java.util.Dictionary;
 import java.util.Hashtable;
 import java.util.Map;
@@ -35,6 +36,8 @@ import org.osgi.framework.BundleListener
 import org.osgi.framework.Filter;
 import org.osgi.framework.ServiceListener;
 import org.osgi.framework.ServiceReference;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.resource.Capability;
 
 public class RepositoryImplTest extends TestCase
 {
@@ -96,6 +99,7 @@ public class RepositoryImplTest extends 
     {
         BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
         Bundle systemBundle = EasyMock.createMock(Bundle.class);
+        BundleRevision systemBundleRevision = EasyMock.createMock(BundleRevision.class);
 
         Activator.setContext(bundleContext);
         EasyMock.expect(bundleContext.getProperty((String) EasyMock.anyObject())).andReturn(null).anyTimes();
@@ -104,6 +108,8 @@ public class RepositoryImplTest extends 
         EasyMock.expect(systemBundle.getRegisteredServices()).andReturn(null);
         EasyMock.expect(new Long(systemBundle.getBundleId())).andReturn(new Long(0)).anyTimes();
         EasyMock.expect(systemBundle.getBundleContext()).andReturn(bundleContext);
+        EasyMock.expect(systemBundleRevision.getCapabilities(null)).andReturn(Collections.<Capability>emptyList());
+        EasyMock.expect(systemBundle.adapt(BundleRevision.class)).andReturn(systemBundleRevision);
         bundleContext.addBundleListener((BundleListener) EasyMock.anyObject());
         bundleContext.addServiceListener((ServiceListener) EasyMock.anyObject());
         EasyMock.expect(bundleContext.getBundles()).andReturn(new Bundle[] { systemBundle });
@@ -121,7 +127,7 @@ public class RepositoryImplTest extends 
                 return true;
             }
         }).anyTimes();
-        EasyMock.replay(new Object[] { bundleContext, systemBundle });
+        EasyMock.replay(new Object[] { bundleContext, systemBundle, systemBundleRevision });
 
         RepositoryAdminImpl repoAdmin = new RepositoryAdminImpl(bundleContext, new Logger(bundleContext));
 

Modified: felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/ResolverImplTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/ResolverImplTest.java?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/ResolverImplTest.java (original)
+++ felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/ResolverImplTest.java Wed Sep 24 12:09:19 2014
@@ -19,11 +19,14 @@
 package org.apache.felix.bundlerepository.impl;
 
 import java.net.URL;
+import java.util.Collections;
 import java.util.Hashtable;
 
 import junit.framework.TestCase;
 
+import org.apache.felix.bundlerepository.Repository;
 import org.apache.felix.bundlerepository.Requirement;
+import org.apache.felix.bundlerepository.Resolver;
 import org.apache.felix.bundlerepository.Resource;
 import org.apache.felix.utils.filter.FilterImpl;
 import org.apache.felix.utils.log.Logger;
@@ -35,8 +38,8 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleListener;
 import org.osgi.framework.ServiceListener;
-import org.apache.felix.bundlerepository.Repository;
-import org.apache.felix.bundlerepository.Resolver;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.resource.Capability;
 
 public class ResolverImplTest extends TestCase
 {
@@ -138,8 +141,9 @@ public class ResolverImplTest extends Te
 
     private RepositoryAdminImpl createRepositoryAdmin() throws Exception
     {
-        BundleContext bundleContext = (BundleContext) EasyMock.createMock(BundleContext.class);
-        Bundle systemBundle = (Bundle) EasyMock.createMock(Bundle.class);
+        BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+        Bundle systemBundle = EasyMock.createMock(Bundle.class);
+        BundleRevision systemBundleRevision = EasyMock.createMock(BundleRevision.class);
 
         Activator.setContext(bundleContext);
         EasyMock.expect(bundleContext.getProperty(RepositoryAdminImpl.REPOSITORY_URL_PROP))
@@ -150,6 +154,8 @@ public class ResolverImplTest extends Te
         EasyMock.expect(systemBundle.getRegisteredServices()).andReturn(null);
         EasyMock.expect(new Long(systemBundle.getBundleId())).andReturn(new Long(0)).anyTimes();
         EasyMock.expect(systemBundle.getBundleContext()).andReturn(bundleContext);
+        EasyMock.expect(systemBundleRevision.getCapabilities(null)).andReturn(Collections.<Capability>emptyList());
+        EasyMock.expect(systemBundle.adapt(BundleRevision.class)).andReturn(systemBundleRevision);
         bundleContext.addBundleListener((BundleListener) EasyMock.anyObject());
         bundleContext.addServiceListener((ServiceListener) EasyMock.anyObject());
         EasyMock.expect(bundleContext.getBundles()).andReturn(new Bundle[] { systemBundle });
@@ -159,7 +165,7 @@ public class ResolverImplTest extends Te
                 return FilterImpl.newInstance((String) c.getValue());
             }
         }).anyTimes();
-        EasyMock.replay(new Object[] { bundleContext, systemBundle });
+        EasyMock.replay(new Object[] { bundleContext, systemBundle, systemBundleRevision });
 
         RepositoryAdminImpl repoAdmin = new RepositoryAdminImpl(bundleContext, new Logger(bundleContext));
 

Modified: felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/StaxParserTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/StaxParserTest.java?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/StaxParserTest.java (original)
+++ felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/StaxParserTest.java Wed Sep 24 12:09:19 2014
@@ -19,13 +19,14 @@
 package org.apache.felix.bundlerepository.impl;
 
 import java.net.URL;
+import java.util.Collections;
 import java.util.Hashtable;
 
 import junit.framework.TestCase;
-import org.apache.felix.bundlerepository.impl.PullParser;
+
+import org.apache.felix.bundlerepository.Repository;
 import org.apache.felix.bundlerepository.Resolver;
 import org.apache.felix.bundlerepository.Resource;
-import org.apache.felix.bundlerepository.impl.StaxParser;
 import org.apache.felix.utils.filter.FilterImpl;
 import org.apache.felix.utils.log.Logger;
 import org.easymock.Capture;
@@ -36,7 +37,8 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleListener;
 import org.osgi.framework.ServiceListener;
-import org.apache.felix.bundlerepository.Repository;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.resource.Capability;
 
 public class StaxParserTest extends TestCase
 {
@@ -138,8 +140,9 @@ public class StaxParserTest extends Test
 
     private RepositoryAdminImpl createRepositoryAdmin(Class repositoryParser) throws Exception
     {
-        BundleContext bundleContext = (BundleContext) EasyMock.createMock(BundleContext.class);
-        Bundle systemBundle = (Bundle) EasyMock.createMock(Bundle.class);
+        BundleContext bundleContext = EasyMock.createMock(BundleContext.class);
+        Bundle systemBundle = EasyMock.createMock(Bundle.class);
+        BundleRevision systemBundleRevision = EasyMock.createMock(BundleRevision.class);
 
         Activator.setContext(bundleContext);
         EasyMock.expect(bundleContext.getProperty(RepositoryAdminImpl.REPOSITORY_URL_PROP))
@@ -152,6 +155,8 @@ public class StaxParserTest extends Test
         EasyMock.expect(systemBundle.getRegisteredServices()).andReturn(null);
         EasyMock.expect(new Long(systemBundle.getBundleId())).andReturn(new Long(0)).anyTimes();
         EasyMock.expect(systemBundle.getBundleContext()).andReturn(bundleContext);
+        EasyMock.expect(systemBundleRevision.getCapabilities(null)).andReturn(Collections.<Capability>emptyList());
+        EasyMock.expect(systemBundle.adapt(BundleRevision.class)).andReturn(systemBundleRevision);
         bundleContext.addBundleListener((BundleListener) EasyMock.anyObject());
         bundleContext.addServiceListener((ServiceListener) EasyMock.anyObject());
         EasyMock.expect(bundleContext.getBundles()).andReturn(new Bundle[] { systemBundle });
@@ -161,7 +166,7 @@ public class StaxParserTest extends Test
                 return FilterImpl.newInstance((String) c.getValue());
             }
         }).anyTimes();
-        EasyMock.replay(new Object[] { bundleContext, systemBundle });
+        EasyMock.replay(new Object[] { bundleContext, systemBundle, systemBundleRevision });
 
         RepositoryAdminImpl repoAdmin = new RepositoryAdminImpl(bundleContext, new Logger(bundleContext));
 

Modified: felix/trunk/main/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/main/pom.xml?rev=1627285&r1=1627284&r2=1627285&view=diff
==============================================================================
--- felix/trunk/main/pom.xml (original)
+++ felix/trunk/main/pom.xml Wed Sep 24 12:09:19 2014
@@ -47,7 +47,7 @@
     <gogo.runtime.version>0.12.1</gogo.runtime.version>
     <gogo.shell.version>0.10.0</gogo.shell.version>
     <gogo.command.version>0.14.0</gogo.command.version>
-    <obr.version>2.0.2</obr.version>
+    <obr.version>2.0.3-SNAPSHOT</obr.version>
   </properties>
   <profiles>
     <profile>