Author: dkulp
Date: Thu May 15 18:13:41 2014
New Revision: 1594998

URL: http://svn.apache.org/r1594998
Log:
Test: Verify component managed update functionality.

Modified:
    
aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/Foo.java
    
aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.java
    
aries/trunk/blueprint/blueprint-cm/src/test/resources/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.xml

Modified: 
aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/Foo.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/Foo.java?rev=1594998&r1=1594997&r2=1594998&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/Foo.java
 (original)
+++ 
aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/Foo.java
 Thu May 15 18:13:41 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.aries.blueprint.compendium.cm;
 
+import java.util.Map;
 import java.util.Properties;
 
 public class Foo implements FooInterface {
@@ -52,5 +53,23 @@ public class Foo implements FooInterface
     public void setProps(Properties props) {
         this.props = props;
     }
+    
+  public void update(Map<String, String> pMap) {
+    Properties properties = new Properties();
+
+    String value = pMap.get("a");
+    if (value != null) {
+      a = Integer.parseInt(value);
+      properties.put("a", a);
+    }
+
+    value = pMap.get("b");
+    if (value != null) {
+      b = value;
+      properties.put("b", b);
+    }
+
+    props = properties;
+  }
 }
 

Modified: 
aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.java?rev=1594998&r1=1594997&r2=1594998&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.java
 (original)
+++ 
aries/trunk/blueprint/blueprint-cm/src/test/java/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.java
 Thu May 15 18:13:41 2014
@@ -235,4 +235,67 @@ public class ManagedServiceFactoryTest e
         assertEquals("7", sr2.getProperty("a"));
         assertEquals("foo2", sr2.getProperty("b"));
     }
+
+  @Test
+  public void testCreateAndUpdateUsingUpdateMethod() throws Exception {
+    ConfigurationAdmin ca = getOsgiService(ConfigurationAdmin.class);
+
+    Configuration cf = 
ca.createFactoryConfiguration("blueprint-sample-managed-service-factory4", 
null);
+    Hashtable<String, String> props = new Hashtable<String, String>();
+    props.put("a", "5");
+    cf.update(props);
+
+    Configuration cf2 = 
ca.createFactoryConfiguration("blueprint-sample-managed-service-factory4", 
null);
+    Hashtable<String, String> props2 = new Hashtable<String, String>();
+    props2.put("a", "7");
+    cf2.update(props2);
+
+    BundleContext context = getBundleContext();
+    ServiceReference sr = Helper.getOsgiServiceReference(context, Foo.class, 
"(&(key=foo4)(a=5))", Helper.DEFAULT_TIMEOUT);
+    assertNotNull(sr);
+
+    ServiceReference sr2 = Helper.getOsgiServiceReference(context, Foo.class, 
"(&(key=foo4)(a=7))", Helper.DEFAULT_TIMEOUT);
+    assertNotNull(sr2);
+
+    Foo foo = (Foo) context.getService(sr);
+    assertNotNull(foo);
+    assertEquals(5, foo.getA());
+    assertEquals("default", foo.getB());
+    assertEquals("5", sr.getProperty("a"));
+    assertNull(sr.getProperty("b"));
+
+    Foo foo2 = (Foo) context.getService(sr2);
+    assertNotNull(foo2);
+    assertEquals(7, foo2.getA());
+    assertEquals("default", foo2.getB());
+    assertEquals("7", sr2.getProperty("a"));
+    assertNull(sr2.getProperty("b"));
+
+    props = new Hashtable<String, String>();
+    props.put("a", "5");
+    props.put("b", "foo");
+    cf.update(props);
+
+    props2 = new Hashtable<String, String>();
+    props2.put("a", "7");
+    props2.put("b", "foo2");
+    cf2.update(props2);
+
+    // Update after creation
+    Thread.sleep(500);
+    assertEquals(5, foo.getA());
+    assertEquals("foo", foo.getB());
+
+    // Update of service properties
+    assertEquals("5", sr.getProperty("a"));
+    assertEquals("foo", sr.getProperty("b"));
+
+    // 2a Update after creation
+    assertEquals(7, foo2.getA());
+    assertEquals("foo2", foo2.getB());
+
+    // 2b Update of service properties
+    assertEquals("7", sr2.getProperty("a"));
+    assertEquals("foo2", sr2.getProperty("b"));
+  }
 }

Modified: 
aries/trunk/blueprint/blueprint-cm/src/test/resources/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-cm/src/test/resources/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.xml?rev=1594998&r1=1594997&r2=1594998&view=diff
==============================================================================
--- 
aries/trunk/blueprint/blueprint-cm/src/test/resources/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.xml
 (original)
+++ 
aries/trunk/blueprint/blueprint-cm/src/test/resources/org/apache/aries/blueprint/compendium/cm/ManagedServiceFactoryTest.xml
 Thu May 15 18:13:41 2014
@@ -57,5 +57,19 @@
             <property name="b" value="default" />
         </cm:managed-component>
     </cm:managed-service-factory>
+    
+    <cm:managed-service-factory id="managed-service-factory4"
+                                
factory-pid="blueprint-sample-managed-service-factory4"
+                                
interface="org.apache.aries.blueprint.compendium.cm.Foo">
+        <service-properties>
+            <entry key="key" value="foo4" />
+            <cm:cm-properties persistent-id="" update="true"/>
+        </service-properties>
+        <cm:managed-component 
class="org.apache.aries.blueprint.compendium.cm.Foo">
+            <cm:managed-properties persistent-id="" 
update-strategy="component-managed" update-method="update" />
+            <property name="a" value="1" />
+            <property name="b" value="default" />
+        </cm:managed-component>
+    </cm:managed-service-factory>
 
 </blueprint>


Reply via email to