You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by da...@apache.org on 2012/02/20 18:05:56 UTC
svn commit: r1291374 - in /aries/trunk/spi-fly/spi-fly-core/src:
main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java
Author: davidb
Date: Mon Feb 20 17:05:56 2012
New Revision: 1291374
URL: http://svn.apache.org/viewvc?rev=1291374&view=rev
Log:
Added extra functionality and testing for provided-spi directive.
Modified:
aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
aries/trunk/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java
Modified: aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java?rev=1291374&r1=1291373&r2=1291374&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java (original)
+++ aries/trunk/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java Mon Feb 20 17:05:56 2012
@@ -205,15 +205,15 @@ public class ProviderBundleTrackerCustom
if (SpiFlyConstants.PROVIDED_SPI_DIRECTIVE.equals(entry.getKey())) {
if (entry.getValue() != null) {
- serviceNames.add(entry.getValue());
- // TODO split string
+ for (String s : entry.getValue().split(",")) {
+ serviceNames.add(s.trim());
+ }
}
} else {
directives.put(entry.getKey(), entry.getValue());
}
}
- // directives.putAll(cap.getDirectives());
return serviceNames;
}
return null;
Modified: aries/trunk/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java?rev=1291374&r1=1291373&r2=1291374&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java (original)
+++ aries/trunk/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java Mon Feb 20 17:05:56 2012
@@ -30,9 +30,11 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Dictionary;
+import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.aries.spifly.api.SpiFlyConstants;
import org.apache.aries.spifly.impl1.MySPIImpl1;
@@ -103,7 +105,7 @@ public class ProviderBundleTrackerCustom
BundleContext implBC = mockSPIBundleContext(sreg);
Bundle implBundle = mockSPIBundle(implBC, SpiFlyConstants.PROVIDER_REQUIREMENT +
- "; service-registry:=true; approval=global");
+ "; " + SpiFlyConstants.SERVICE_REGISTRY_DIRECTIVE + ":=true; approval=global");
List<ServiceRegistration> registrations = customizer.addingBundle(implBundle, null);
assertEquals(1, registrations.size());
@@ -140,6 +142,34 @@ public class ProviderBundleTrackerCustom
}
@Test
+ public void testProvidedSPIDirective() throws Exception {
+ Bundle spiBundle = EasyMock.createMock(Bundle.class);
+ EasyMock.replay(spiBundle);
+
+ BaseActivator activator = new BaseActivator() {
+ @Override
+ public void start(BundleContext context) throws Exception {}
+ };
+
+ ProviderBundleTrackerCustomizer customizer = new ProviderBundleTrackerCustomizer(activator, spiBundle);
+
+ BundleContext implBC = mockSPIBundleContext4();
+ Bundle implBundle =
+ mockSPIBundle4(implBC, SpiFlyConstants.PROVIDER_REQUIREMENT + "; " + SpiFlyConstants.PROVIDED_SPI_DIRECTIVE + ":=\"org.apache.aries.mytest.MySPI,org.apache.aries.mytest.MySPI2\"; approval=global");
+
+ List<ServiceRegistration> registrations = customizer.addingBundle(implBundle, null);
+ assertEquals("Expected 3 registrations, one for MySPI and 2 for MySPI2", 3, registrations.size());
+ Set<String> expectedObjectClasses = new HashSet<String>(Arrays.asList("org.apache.aries.mytest.MySPI", "org.apache.aries.mytest.MySPI2"));
+ Set<String> actualObjectClasses = new HashSet<String>();
+ for (ServiceRegistration sr : registrations) {
+ actualObjectClasses.add((String) sr.getReference().getProperty(Constants.OBJECTCLASS));
+ assertNotNull(sr.getReference().getProperty(SpiFlyConstants.SPI_PROVIDER_URL_PROPERTY));
+ assertEquals("global", sr.getReference().getProperty("approval"));
+ }
+ assertEquals(expectedObjectClasses, actualObjectClasses);
+ }
+
+ @Test
public void testMultipleServiceInstancesAndTypes() throws Exception {
Bundle spiBundle = EasyMock.createMock(Bundle.class);
EasyMock.replay(spiBundle);
@@ -195,7 +225,8 @@ public class ProviderBundleTrackerCustom
EasyMock.replay(sreg);
BundleContext implBC = mockSPIBundleContext(sreg);
- Bundle implBundle = mockSPIBundle(implBC, SpiFlyConstants.PROVIDER_REQUIREMENT + "; service-registry:=false");
+ Bundle implBundle = mockSPIBundle(implBC, SpiFlyConstants.PROVIDER_REQUIREMENT +
+ "; " + SpiFlyConstants.SERVICE_REGISTRY_DIRECTIVE + ":=false");
List<ServiceRegistration> registrations = customizer.addingBundle(implBundle, null);
assertEquals(0, registrations.size());