Author: clement
Date: Wed Aug  6 02:16:01 2008
New Revision: 683189

URL: http://svn.apache.org/viewvc?rev=683189&view=rev
Log:
Add some tests checking that instances are consistently created and disposed 
according to their factories validity / invalidity.

Added:
    
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/SimpleType.java
Modified:
    
felix/trunk/ipojo/tests/core/external-handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandler.java
    
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ObedienceTest.java
    
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
    felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml

Modified: 
felix/trunk/ipojo/tests/core/external-handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandler.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/external-handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandler.java?rev=683189&r1=683188&r2=683189&view=diff
==============================================================================
--- 
felix/trunk/ipojo/tests/core/external-handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandler.java
 (original)
+++ 
felix/trunk/ipojo/tests/core/external-handlers/src/main/java/org/apache/felix/ipojo/test/scenarios/component/CheckServiceHandler.java
 Wed Aug  6 02:16:01 2008
@@ -86,9 +86,11 @@
        }
        
        public void stateChanged(int state) {
-               changes++;
-               props.put("changes", new Integer(changes));
-               sr.setProperties(props);
+               if (sr != null) {
+                   changes++;
+                   props.put("changes", new Integer(changes));
+                   sr.setProperties(props);
+               }
        }
 
        public String getName() {

Added: 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/SimpleType.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/SimpleType.java?rev=683189&view=auto
==============================================================================
--- 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/SimpleType.java
 (added)
+++ 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/component/SimpleType.java
 Wed Aug  6 02:16:01 2008
@@ -0,0 +1,7 @@
+package org.apache.felix.ipojo.test.scenarios.component;
+
+public class SimpleType {
+    
+    private boolean m_controller;
+
+}

Modified: 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ObedienceTest.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ObedienceTest.java?rev=683189&r1=683188&r2=683189&view=diff
==============================================================================
--- 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ObedienceTest.java
 (original)
+++ 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/factories/ObedienceTest.java
 Wed Aug  6 02:16:01 2008
@@ -22,9 +22,13 @@
 
 import org.apache.felix.ipojo.ComponentFactory;
 import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.HandlerManagerFactory;
+import org.apache.felix.ipojo.architecture.Architecture;
 import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
 import org.apache.felix.ipojo.test.scenarios.factories.service.FooService;
 import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
 
 /**
  * Check that instances are disposed when the factory is stopped.
@@ -65,5 +69,48 @@
                factory.start();
                assertNull("Check no foo service", 
context.getServiceReference(FooService.class.getName()));
        }
+       
+       public void testDisposeAfterFactoryInvalidation() {
+           ComponentFactory cf = (ComponentFactory) 
Utils.getFactoryByName(context, 
"org.apache.felix.ipojo.test.scenarios.component.SimpleType");
+           assertNotNull("Check factory availability -1", cf);
+           assertEquals("Check factory state -1", Factory.VALID, 
cf.getState());
+           
+           ServiceReference ref_arch = 
Utils.getServiceReferenceByName(context, Architecture.class.getName(), 
"SimpleInstance");
+           assertNotNull("Check Architecture availability -1", ref_arch);
+           
+        HandlerManagerFactory hf = (HandlerManagerFactory) 
Utils.getHandlerFactoryByName(context, "controller");
+        assertNotNull("Check handler availability -1", hf);
+        assertEquals("Check handler state -1", Factory.VALID, hf.getState());
+        
+        // Stop the handler
+        hf.stop();
+        HandlerManagerFactory hf2 = (HandlerManagerFactory) 
Utils.getHandlerFactoryByName(context, "controller");
+        assertNull("Check handler availability -2", hf2);
+        
+        // Check the factory invalidity
+        cf = (ComponentFactory) Utils.getFactoryByName(context, 
"org.apache.felix.ipojo.test.scenarios.component.SimpleType");
+        assertNotNull("Check factory availability -2", cf);
+        assertEquals("Check factory state -2", Factory.INVALID, cf.getState());
+        
+        // Check the instance disparition
+        ref_arch = Utils.getServiceReferenceByName(context, 
Architecture.class.getName(), "SimpleInstance");
+        assertNull("Check Architecture availability -1", ref_arch);
+        
+        // Restart the handler
+        hf.start();
+        hf2 = (HandlerManagerFactory) Utils.getHandlerFactoryByName(context, 
"controller");
+        assertNotNull("Check handler availability -3", hf2);
+        
+        // Check the factory state
+        cf = (ComponentFactory) Utils.getFactoryByName(context, 
"org.apache.felix.ipojo.test.scenarios.component.SimpleType");
+        assertNotNull("Check factory availability -3", cf);
+        assertEquals("Check factory state -3", Factory.VALID, cf.getState());
+        
+        
+        // Check the instance re-creation
+        ref_arch = Utils.getServiceReferenceByName(context, 
Architecture.class.getName(), "SimpleInstance");
+        assertNotNull("Check Architecture availability -3", ref_arch);
+        
+       }
 
 }

Modified: 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java?rev=683189&r1=683188&r2=683189&view=diff
==============================================================================
--- 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
 (original)
+++ 
felix/trunk/ipojo/tests/core/factories/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
 Wed Aug  6 02:16:01 2008
@@ -26,9 +26,10 @@
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.Factory;
 import org.apache.felix.ipojo.Handler;
+import org.apache.felix.ipojo.HandlerFactory;
 import org.apache.felix.ipojo.HandlerManagerFactory;
 import org.apache.felix.ipojo.ServiceContext;
-//import org.apache.felix.ipojo.composite.CompositeManager;
+import org.apache.felix.ipojo.architecture.Architecture;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
 import org.osgi.framework.ServiceReference;
@@ -54,7 +55,7 @@
     public static HandlerManagerFactory getHandlerFactoryByName(BundleContext 
bc, String factoryName) {
         ServiceReference[] refs;
         try {
-            refs = bc.getServiceReferences(Factory.class.getName(), "(" + 
Handler.HANDLER_NAME_PROPERTY + "=" + factoryName + ")");
+            refs = bc.getServiceReferences(HandlerFactory.class.getName(), "(" 
+ Handler.HANDLER_NAME_PROPERTY + "=" + factoryName + ")");
             if (refs == null) {
                 System.err.println("Cannot get the factory " + factoryName);
                 return null;
@@ -141,6 +142,8 @@
         String filter = null;
         if (itf.equals(Factory.class.getName()) || 
itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
+        } else if (itf.equals(Architecture.class.getName())) {
+            filter = "(" + "architecture.instance" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }

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=683189&r1=683188&r2=683189&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 Wed 
Aug  6 02:16:01 2008
@@ -66,4 +66,10 @@
                        <property name="bar" field="m_bar" />
                </properties>
        </component>
+       
+       <!-- type & instance used to check instance lifecycle against factory 
validation & invalidation -->
+       <component 
classname="org.apache.felix.ipojo.test.scenarios.component.SimpleType" 
architecture="true">
+               <controller field="m_controller"/>
+       </component>
+       <instance 
component="org.apache.felix.ipojo.test.scenarios.component.SimpleType" 
name="SimpleInstance"/>
 </ipojo>


Reply via email to