You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cl...@apache.org on 2010/11/13 16:07:27 UTC

svn commit: r1034778 - in /felix/trunk/ipojo/tests/core/factories/src/main: java/org/apache/felix/ipojo/test/scenarios/component/ java/org/apache/felix/ipojo/test/scenarios/factories/ resources/

Author: clement
Date: Sat Nov 13 15:07:27 2010
New Revision: 1034778

URL: http://svn.apache.org/viewvc?rev=1034778&view=rev
Log:
Add two tests where the lifecycle controller is configured with the config admin

Modified:
    felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ReconfigurableSimpleType.java
    felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ReconfigurationTest.java
    felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml

Modified: felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ReconfigurableSimpleType.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ReconfigurableSimpleType.java?rev=1034778&r1=1034777&r2=1034778&view=diff
==============================================================================
--- felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ReconfigurableSimpleType.java (original)
+++ felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ReconfigurableSimpleType.java Sat Nov 13 15:07:27 2010
@@ -25,4 +25,10 @@ public class ReconfigurableSimpleType {
 		}
 	}
 
+	public void setController(boolean p) {
+		if (p) {
+			System.out.println("OK !!!!");
+		}
+	}
+
 }

Modified: felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ReconfigurationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ReconfigurationTest.java?rev=1034778&r1=1034777&r2=1034778&view=diff
==============================================================================
--- felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ReconfigurationTest.java (original)
+++ felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ReconfigurationTest.java Sat Nov 13 15:07:27 2010
@@ -240,4 +240,96 @@ public class ReconfigurationTest extends
 
         Assert.assertEquals("Is valid ?", ComponentInstance.VALID, arch.getInstanceDescription().getState());
 	}
+
+	public void testRevalidationOnReconfigurationOfTheController() {
+		ComponentFactory factory = (ComponentFactory) Utils.getFactoryByName(getContext(),
+				"org.apache.felix.ipojo.test.scenarios.component.ReconfigurableSimpleType3");
+
+		// First inject a configuration triggering an exception of the validate method.
+		Properties props = new Properties();
+		props.put("controller", "false");
+		ComponentInstance ci = null;
+		try {
+			ci = factory.createComponentInstance(props);
+		} catch (UnacceptableConfiguration e) {
+			e.printStackTrace();
+		} catch (MissingHandlerException e) {
+			e.printStackTrace();
+		} catch (ConfigurationException e) {
+			e.printStackTrace();
+		}
+
+		assertNotNull(ci);
+		assertEquals("instance invalid", ComponentInstance.INVALID, ci.getState()); // Controller effect.
+
+		// Reconfigure
+		props = new Properties();
+		props.put("controller", "true");
+
+		ci.reconfigure(props);
+
+		assertNotNull(ci);
+		assertEquals("instance valid", ComponentInstance.VALID, ci.getState());
+	}
+
+	public void testRevalidationOnReconfigurationUsingConfigAdminOfTheController() throws InvalidSyntaxException {
+		Configuration configuration = null;
+        try {
+            configuration = admin.createFactoryConfiguration("org.apache.felix.ipojo.test.scenarios.component.ReconfigurableSimpleType3",
+            		null);
+        } catch (IOException e) {
+            fail(e.getMessage());
+        }
+        Dictionary props = configuration.getProperties();
+        if(props == null) {
+            props = new Properties();
+        }
+		// First inject a configuration triggering an exception of the validate method.
+		props.put("controller", "false");
+
+		try {
+            configuration.update(props);
+        } catch (IOException e) {
+            fail(e.getMessage());
+        }
+
+        String pid = configuration.getPid();
+
+        // Wait for the processing of the first configuration.
+        try {
+            Thread.sleep(UPDATE_WAIT_TIME);
+        } catch (InterruptedException e1) {
+            fail(e1.getMessage());
+        }
+
+        // Invalid ... controller effect
+        Assert.assertNotNull("architecture", getContext().getServiceReferences(Architecture.class.getName(), "(architecture.instance="+pid+")"));
+        Architecture arch = (Architecture) Utils.getServiceObject(getContext(), Architecture.class.getName(), "(architecture.instance="+pid+")");
+
+        Assert.assertEquals("Is invalid ?", ComponentInstance.INVALID, arch.getInstanceDescription().getState());
+
+		// Reconfigure
+		props = new Properties();
+		props.put("controller", "true");
+
+		try {
+            configuration.update(props);
+        } catch (IOException e) {
+            fail(e.getMessage());
+        }
+
+        pid = configuration.getPid();
+
+        // Wait for the processing of the first configuration.
+        try {
+            Thread.sleep(UPDATE_WAIT_TIME);
+        } catch (InterruptedException e1) {
+            fail(e1.getMessage());
+        }
+
+        Assert.assertNotNull("architecture", getContext().getServiceReferences(Architecture.class.getName(), "(architecture.instance="+pid+")"));
+        arch = (Architecture) Utils.getServiceObject(getContext(), Architecture.class.getName(), "(architecture.instance="+pid+")");
+
+        Assert.assertEquals("Is valid ?", ComponentInstance.VALID, arch.getInstanceDescription().getState());
+	}
 }

Modified: felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml?rev=1034778&r1=1034777&r2=1034778&view=diff
==============================================================================
--- felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml (original)
+++ felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml Sat Nov 13 15:07:27 2010
@@ -143,4 +143,12 @@
 		</properties>
 		<controller field="controller"/>
 	</component>
+	<component classname="org.apache.felix.ipojo.test.scenarios.component.ReconfigurableSimpleType"
+		name="org.apache.felix.ipojo.test.scenarios.component.ReconfigurableSimpleType3"
+		architecture="true" immediate="true">
+		<properties>
+			<property name="controller" method="setController" field="controller"/>
+		</properties>
+		<controller field="controller"/>
+	</component>
 </ipojo>