Author: davidb
Date: Tue Dec  8 18:44:21 2015
New Revision: 1718671

URL: http://svn.apache.org/viewvc?rev=1718671&view=rev
Log:
FELIX-5112 ClassCastException when deploying an OBR Resource already present in 
the runtime

Added test for deploy method
Committed on behalf of @skahmann with many thanks. Contributed via 
https://github.com/apache/felix/pull/44

Modified:
    
felix/trunk/bundlerepository/src/test/java/org/apache/felix/bundlerepository/impl/ResolverImplTest.java

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=1718671&r1=1718670&r2=1718671&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
 Tue Dec  8 18:44:21 2015
@@ -18,8 +18,10 @@
  */
 package org.apache.felix.bundlerepository.impl;
 
+import java.io.InputStream;
 import java.net.URL;
 import java.util.Collections;
+import java.util.Dictionary;
 import java.util.Hashtable;
 
 import junit.framework.TestCase;
@@ -34,10 +36,7 @@ import org.easymock.Capture;
 import org.easymock.EasyMock;
 import org.easymock.IAnswer;
 import org.easymock.internal.matchers.Captures;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleListener;
-import org.osgi.framework.ServiceListener;
+import org.osgi.framework.*;
 import org.osgi.framework.wiring.BundleRevision;
 import org.osgi.resource.Capability;
 
@@ -134,6 +133,29 @@ public class ResolverImplTest extends Te
 
     }
 
+    public void testFindUpdatableLocalResource() throws Exception {
+        RepositoryAdminImpl repoAdmin = createRepositoryAdmin();
+        
repoAdmin.addRepository(getClass().getResource("/repo_for_mandatory.xml"));
+
+        Resolver resolver = repoAdmin.resolver();
+
+        Resource resource = EasyMock.createMock(Resource.class);
+        
EasyMock.expect(resource.getSymbolicName()).andReturn("com.test.bundleA").anyTimes();
+        EasyMock.expect(resource.getRequirements()).andReturn(null).anyTimes();
+        
EasyMock.expect(resource.getURI()).andReturn("http://test.com";).anyTimes();
+        EasyMock.replay(resource);
+
+        resolver.add(resource);
+
+        boolean exceptionThrown = false;
+        try {
+            resolver.resolve();
+        } catch (Exception e) {
+            exceptionThrown = true;
+        }
+        assertFalse(exceptionThrown);
+    }
+
     public static void main(String[] args) throws Exception
     {
         new ResolverImplTest().testReferral1();
@@ -150,7 +172,10 @@ public class ResolverImplTest extends Te
                     
.andReturn(getClass().getResource("/referred.xml").toExternalForm());
         EasyMock.expect(bundleContext.getProperty((String) 
EasyMock.anyObject())).andReturn(null).anyTimes();
         EasyMock.expect(bundleContext.getBundle(0)).andReturn(systemBundle);
-        EasyMock.expect(systemBundle.getHeaders()).andReturn(new Hashtable());
+        EasyMock.expect(bundleContext.installBundle((String) 
EasyMock.anyObject(), (InputStream) 
EasyMock.anyObject())).andReturn(systemBundle);
+        EasyMock.expect(systemBundle.getHeaders()).andReturn(new 
Hashtable()).anyTimes();
+        systemBundle.start();
+        EasyMock.expectLastCall().anyTimes();
         EasyMock.expect(systemBundle.getRegisteredServices()).andReturn(null);
         EasyMock.expect(new Long(systemBundle.getBundleId())).andReturn(new 
Long(0)).anyTimes();
         
EasyMock.expect(systemBundle.getBundleContext()).andReturn(bundleContext);


Reply via email to