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 2011/11/28 10:38:42 UTC

svn commit: r1207036 - in /aries/trunk/spi-fly/spi-fly-core/src: main/java/org/apache/aries/spifly/ test/java/org/apache/aries/spifly/ test/resources/org/apache/aries/spifly/impl4/META-INF/services/

Author: davidb
Date: Mon Nov 28 09:38:41 2011
New Revision: 1207036

URL: http://svn.apache.org/viewvc?rev=1207036&view=rev
Log:
Add custom properties to service registrations.

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
    aries/trunk/spi-fly/spi-fly-core/src/test/resources/org/apache/aries/spifly/impl4/META-INF/services/org.apache.aries.mytest.MySPI2

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=1207036&r1=1207035&r2=1207036&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 Nov 28 09:38:41 2011
@@ -140,6 +140,7 @@ public class ProviderBundleTrackerCustom
 
                         Hashtable<String, Object> props = new Hashtable<String, Object>();
                         props.put(SpiFlyConstants.SPI_PROVIDER_URL, serviceFile);
+                        props.putAll(customAttributes);
 
                         ServiceRegistration reg = bundle.getBundleContext()
                                 .registerService(registrationClassName, o, props);

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=1207036&r1=1207035&r2=1207036&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 Nov 28 09:38:41 2011
@@ -33,6 +33,7 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.aries.spifly.api.SpiFlyConstants;
 import org.apache.aries.spifly.impl1.MySPIImpl1;
 import org.apache.aries.spifly.impl2.MySPIImpl2a;
 import org.apache.aries.spifly.impl2.MySPIImpl2b;
@@ -111,7 +112,7 @@ public class ProviderBundleTrackerCustom
     }
 
     @Test
-    public void testServiceSubsetSelection() throws Exception {
+    public void testServiceSubsetSelectionAndRegistrationProperties() throws Exception {
         Bundle spiBundle = EasyMock.createMock(Bundle.class);
         EasyMock.replay(spiBundle);
 
@@ -132,6 +133,8 @@ public class ProviderBundleTrackerCustom
         List<ServiceRegistration> registrations = customizer.addingBundle(implBundle, null);
         assertEquals(1, registrations.size());
         assertEquals("org.apache.aries.mytest.MySPI", registrations.iterator().next().getReference().getProperty(Constants.OBJECTCLASS));
+        assertNotNull(registrations.iterator().next().getReference().getProperty(SpiFlyConstants.SPI_PROVIDER_URL));
+        assertEquals("global", registrations.iterator().next().getReference().getProperty("approval"));
     }
 
     @Test
@@ -273,13 +276,27 @@ public class ProviderBundleTrackerCustom
         BundleContext implBC = EasyMock.createNiceMock(BundleContext.class);
 
         EasyMock.expect(implBC.
-            registerService((String) EasyMock.anyObject(), EasyMock.anyObject(), (Dictionary<?,?>)EasyMock.anyObject())).
+            registerService((String) EasyMock.anyObject(), EasyMock.anyObject(), (Dictionary<String,?>)EasyMock.anyObject())).
             andAnswer(new IAnswer<ServiceRegistration>() {
                 @Override
+                @SuppressWarnings("unchecked")
                 public ServiceRegistration answer() throws Throwable {
+                    final String className = (String) EasyMock.getCurrentArguments()[0];
+                    final Dictionary<String,?> registrationProps =
+                            (Dictionary<String, ?>) EasyMock.getCurrentArguments()[2];
+
                     ServiceReference sref = EasyMock.createMock(ServiceReference.class);
-                    EasyMock.expect(sref.getProperty(Constants.OBJECTCLASS)).andReturn(
-                        EasyMock.getCurrentArguments()[0]);
+                    EasyMock.expect(sref.getProperty(EasyMock.anyObject(String.class))).andAnswer(new IAnswer<Object>() {
+                        @Override
+                        public Object answer() throws Throwable {
+                            Object prop = EasyMock.getCurrentArguments()[0];
+                            if (Constants.OBJECTCLASS.equals(prop)) {
+                                return className;
+                            } else {
+                                return registrationProps.get(prop);
+                        }
+                        }
+                    }).anyTimes();
                     EasyMock.replay(sref);
 
                     ServiceRegistration sreg = EasyMock.createMock(ServiceRegistration.class);

Modified: aries/trunk/spi-fly/spi-fly-core/src/test/resources/org/apache/aries/spifly/impl4/META-INF/services/org.apache.aries.mytest.MySPI2
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-core/src/test/resources/org/apache/aries/spifly/impl4/META-INF/services/org.apache.aries.mytest.MySPI2?rev=1207036&r1=1207035&r2=1207036&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-core/src/test/resources/org/apache/aries/spifly/impl4/META-INF/services/org.apache.aries.mytest.MySPI2 (original)
+++ aries/trunk/spi-fly/spi-fly-core/src/test/resources/org/apache/aries/spifly/impl4/META-INF/services/org.apache.aries.mytest.MySPI2 Mon Nov 28 09:38:41 2011
@@ -1,2 +1,5 @@
+# A comment
 org.apache.aries.spifly.impl4.MySPIImpl4b
-org.apache.aries.spifly.impl4.MySPIImpl4c
\ No newline at end of file
+# Another comment
+org.apache.aries.spifly.impl4.MySPIImpl4c
+# A final comment
\ No newline at end of file