Added: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/ProxyTest.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/ProxyTest.java?rev=893960&view=auto
==============================================================================
--- 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/ProxyTest.java
 (added)
+++ 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/ProxyTest.java
 Sat Dec 26 11:15:42 2009
@@ -0,0 +1,196 @@
+package org.apache.felix.ipojo.test.scenarios.service.dependency;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.ConfigurationException;
+import org.apache.felix.ipojo.MissingHandlerException;
+import org.apache.felix.ipojo.UnacceptableConfiguration;
+import org.apache.felix.ipojo.handlers.dependency.DependencyHandler;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+
+public class ProxyTest extends OSGiTestCase {
+
+
+    public void testDelegation() throws UnacceptableConfiguration, 
MissingHandlerException, ConfigurationException {
+        Properties prov = new Properties();
+        prov.put("instance.name","FooProvider1-Proxy");
+        ComponentInstance fooProvider1 = Utils.getFactoryByName(getContext(), 
"FooProviderType-1").createComponentInstance(prov);
+        
+        
+        Properties i1 = new Properties();
+        i1.put("instance.name","Delegator");
+        ComponentInstance instance1 = Utils.getFactoryByName(getContext(), 
+                
"org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceDelegator").createComponentInstance(i1);
+        
+        
+        ServiceReference ref = Utils.getServiceReferenceByName(context, 
CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull(ref);
+        CheckService cs = (CheckService) context.getService(ref);
+        
+        Properties props = cs.getProps();
+        FooService helper = (FooService) props.get("helper.fs");
+        assertNotNull(helper);
+        assertTrue(helper.toString().contains("$$Proxy")); // This is the 
suffix.
+        
+        assertTrue(cs.check());
+        
+        fooProvider1.dispose();
+        instance1.dispose();
+    }
+    
+    public void testDelegationOnNullable() throws UnacceptableConfiguration, 
MissingHandlerException, ConfigurationException {
+        Properties i1 = new Properties();
+        i1.put("instance.name","DelegatorNullable");
+        ComponentInstance instance1 = Utils.getFactoryByName(getContext(), 
+                
"org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceDelegator").createComponentInstance(i1);
+        
+        
+        ServiceReference ref = Utils.getServiceReferenceByName(context, 
CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull(ref);
+        CheckService cs = (CheckService) context.getService(ref);
+        
+        Properties props = cs.getProps();
+        FooService helper = (FooService) props.get("helper.fs");
+        assertNotNull(helper);
+        assertTrue(helper.toString().contains("$$Proxy")); // This is the 
suffix.
+        
+        assertFalse(cs.check()); // Nullable.
+        
+        instance1.dispose();
+    }
+    
+    
+    public void testGetAndDelegation() throws UnacceptableConfiguration, 
MissingHandlerException, ConfigurationException {
+        Properties prov = new Properties();
+        prov.put("instance.name","FooProvider1-Proxy");
+        ComponentInstance fooProvider1 = Utils.getFactoryByName(getContext(), 
"FooProviderType-1").createComponentInstance(prov);
+        
+        
+        Properties i1 = new Properties();
+        i1.put("instance.name","Delegator");
+        ComponentInstance instance1 = Utils.getFactoryByName(getContext(), 
+                
"org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceGetAndDelegate").createComponentInstance(i1);
+        
+        
+        ServiceReference ref = Utils.getServiceReferenceByName(context, 
CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull(ref);
+        CheckService cs = (CheckService) context.getService(ref);
+        
+        Properties props = cs.getProps();
+        FooService helper = (FooService) props.get("helper.fs");
+        assertNotNull(helper);
+        assertTrue(helper.toString().contains("$$Proxy")); // This is the 
suffix.
+
+        
+        assertTrue(cs.check());
+        
+        fooProvider1.dispose();
+        instance1.dispose();
+    }
+    
+    public void testGetAndDelegationOnNullable() throws 
UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
+        Properties i1 = new Properties();
+        i1.put("instance.name","DelegatorNullable");
+        ComponentInstance instance1 = Utils.getFactoryByName(getContext(), 
+                
"org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceGetAndDelegate").createComponentInstance(i1);
+        
+        
+        ServiceReference ref = Utils.getServiceReferenceByName(context, 
CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull(ref);
+        CheckService cs = (CheckService) context.getService(ref);
+        
+        Properties props = cs.getProps();
+        FooService helper = (FooService) props.get("helper.fs");
+        assertNotNull(helper);
+        assertTrue(helper.toString().contains("$$Proxy")); // This is the 
suffix.
+
+        assertFalse(cs.check()); // Nullable.
+        
+        
+        instance1.dispose();
+    }
+    
+    public void testImmediate() throws UnacceptableConfiguration, 
MissingHandlerException, ConfigurationException {
+        Properties prov = new Properties();
+        prov.put("instance.name","FooProvider1-Proxy");
+        ComponentInstance fooProvider1 = Utils.getFactoryByName(getContext(), 
"FooProviderType-1").createComponentInstance(prov);
+        
+        
+        Properties i1 = new Properties();
+        i1.put("instance.name","Delegator");
+        ComponentInstance instance1 = Utils.getFactoryByName(getContext(), 
+                
"org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceNoDelegate").createComponentInstance(i1);
+        
+        ServiceReference ref = Utils.getServiceReference(context, 
CheckService.class.getName(), "(service.pid=Helper)");
+        assertNotNull(ref);
+        CheckService cs = (CheckService) context.getService(ref);
+        
+        Properties props = cs.getProps();
+        FooService helper = (FooService) props.get("helper.fs");
+        assertNotNull(helper);
+        assertTrue(helper.toString().contains("$$Proxy")); // This is the 
suffix.
+
+        assertTrue(cs.check());
+        
+        fooProvider1.dispose();
+        instance1.dispose();
+    }
+    
+    public void testImmediateNoService() throws UnacceptableConfiguration, 
MissingHandlerException, ConfigurationException {
+        
+        Properties i1 = new Properties();
+        i1.put("instance.name","Delegator");
+        ComponentInstance instance1 = Utils.getFactoryByName(getContext(), 
+                
"org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceNoDelegate").createComponentInstance(i1);
+        
+        ServiceReference ref = Utils.getServiceReference(context, 
CheckService.class.getName(), "(service.pid=Helper)");
+        assertNotNull(ref);
+        CheckService cs = (CheckService) context.getService(ref);
+        
+        try {
+            cs.getProps();
+            fail("Exception expected");
+        } catch(RuntimeException e) {
+            //OK
+        }
+        
+        instance1.dispose();
+    }
+    
+    public void testProxyDisabled() throws UnacceptableConfiguration, 
MissingHandlerException, ConfigurationException {
+        // Disable proxy
+        System.setProperty(DependencyHandler.PROXY_SETTINGS_PROPERTY, 
DependencyHandler.PROXY_DISABLED);
+        Properties prov = new Properties();
+        prov.put("instance.name","FooProvider1-Proxy");
+        ComponentInstance fooProvider1 = Utils.getFactoryByName(getContext(), 
"FooProviderType-1").createComponentInstance(prov);
+        
+        
+        Properties i1 = new Properties();
+        i1.put("instance.name","Delegator");
+        ComponentInstance instance1 = Utils.getFactoryByName(getContext(), 
+                
"org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceDelegator").createComponentInstance(i1);
+        
+        
+        ServiceReference ref = Utils.getServiceReferenceByName(context, 
CheckService.class.getName(), instance1.getInstanceName());
+        assertNotNull(ref);
+        CheckService cs = (CheckService) context.getService(ref);
+        
+        Properties props = cs.getProps();
+        FooService helper = (FooService) props.get("helper.fs");
+        assertNotNull(helper);
+        assertFalse(helper.toString().contains("$$Proxy")); // Not a proxy.
+        
+        assertTrue(cs.check());
+        
+        fooProvider1.dispose();
+        instance1.dispose();
+        System.setProperty(DependencyHandler.PROXY_SETTINGS_PROPERTY, 
DependencyHandler.PROXY_ENABLED);
+
+    }
+
+}

Propchange: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/ProxyTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceDelegator.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceDelegator.java?rev=893960&view=auto
==============================================================================
--- 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceDelegator.java
 (added)
+++ 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceDelegator.java
 Sat Dec 26 11:15:42 2009
@@ -0,0 +1,31 @@
+package org.apache.felix.ipojo.test.scenarios.service.dependency.proxy;
+
+import java.util.Properties;
+
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+import org.osgi.framework.BundleContext;
+
+public class CheckServiceDelegator implements CheckService {
+
+    private FooService fs;
+    
+    private Helper helper;
+    
+    public CheckServiceDelegator(BundleContext bc) {
+        helper = new Helper(bc, fs);
+    }
+    
+    public boolean check() {
+        // Don't access the service
+        // Just delegate
+        return helper.check();
+    }
+
+    public Properties getProps() {
+        // Don't access the service
+        // Just delegate
+        return helper.getProps();
+    }
+
+}

Propchange: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceDelegator.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceGetAndDelegate.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceGetAndDelegate.java?rev=893960&view=auto
==============================================================================
--- 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceGetAndDelegate.java
 (added)
+++ 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceGetAndDelegate.java
 Sat Dec 26 11:15:42 2009
@@ -0,0 +1,29 @@
+package org.apache.felix.ipojo.test.scenarios.service.dependency.proxy;
+
+import java.util.Properties;
+
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+import org.osgi.framework.BundleContext;
+
+public class CheckServiceGetAndDelegate implements CheckService {
+
+    private FooService fs;
+    
+    private Helper helper;
+    
+    public CheckServiceGetAndDelegate(BundleContext bc) {
+        helper = new Helper(bc, fs);
+    }
+    
+    public boolean check() {
+        fs.foo();
+        return helper.check();
+    }
+
+    public Properties getProps() {
+        fs.getBoolean();
+        return helper.getProps();
+    }
+
+}

Propchange: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceGetAndDelegate.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceNoDelegate.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceNoDelegate.java?rev=893960&view=auto
==============================================================================
--- 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceNoDelegate.java
 (added)
+++ 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceNoDelegate.java
 Sat Dec 26 11:15:42 2009
@@ -0,0 +1,42 @@
+package org.apache.felix.ipojo.test.scenarios.service.dependency.proxy;
+
+import java.util.Properties;
+
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+import org.osgi.framework.BundleContext;
+
+public class CheckServiceNoDelegate implements CheckService {
+
+    private FooService fs;
+    
+    private Helper helper;
+    
+    private BundleContext context;
+    
+    public CheckServiceNoDelegate(BundleContext bc) {
+       context = bc;
+       helper = new Helper(context, fs);
+    }
+    
+    public void start() {
+        helper.publish();
+    }
+    
+    public void stop() {
+        helper.unpublish();
+    }
+    
+    public boolean check() {
+        // Don't access the service
+        // Just delegate
+        return helper.check();
+    }
+
+    public Properties getProps() {
+        // Don't access the service
+        // Just delegate
+        return helper.getProps();
+    }
+
+}

Propchange: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/CheckServiceNoDelegate.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/Helper.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/Helper.java?rev=893960&view=auto
==============================================================================
--- 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/Helper.java
 (added)
+++ 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/Helper.java
 Sat Dec 26 11:15:42 2009
@@ -0,0 +1,47 @@
+package org.apache.felix.ipojo.test.scenarios.service.dependency.proxy;
+
+import java.util.Properties;
+
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import 
org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceRegistration;
+
+public class Helper implements CheckService {
+    
+    
+    private FooService fs;
+    private BundleContext context;
+    private ServiceRegistration reg;
+    
+    public Helper(BundleContext bc, FooService svc) {
+        fs = svc;
+        context = bc;    
+    }
+    
+    public void publish() {
+        Properties props = new Properties();
+        props.put(Constants.SERVICE_PID, "Helper");
+        reg = context.registerService(CheckService.class.getName(), this, 
props);
+    }
+    
+    public void unpublish() {
+        if (reg != null) {
+            reg.unregister();
+        }
+        reg = null;
+    }
+
+    public boolean check() {
+        return fs.foo();
+    }
+
+    public Properties getProps() {
+        Properties props = new Properties();
+        fs.getBoolean();
+        props.put("helper.fs", fs);
+        return props;
+    }
+
+}

Propchange: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/proxy/Helper.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
felix/trunk/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml?rev=893960&r1=893959&r2=893960&view=diff
==============================================================================
--- 
felix/trunk/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml 
(original)
+++ 
felix/trunk/ipojo/tests/core/service-dependency/src/main/resources/metadata.xml 
Sat Dec 26 11:15:42 2009
@@ -1,8 +1,8 @@
-<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="org.apache.felix.ipojo 
http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd";
-  xmlns="org.apache.felix.ipojo">
+<ipojo>
 <!-- 
-
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="org.apache.felix.ipojo 
http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd";
+  xmlns="org.apache.felix.ipojo"
  -->
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
@@ -14,13 +14,13 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="SimpleCheckServiceProvider" architecture="true">
-    <requires field="fs" />
+    <requires field="fs" proxy="false"/>
     <provides />
   </component>
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="VoidCheckServiceProvider" architecture="true">
-    <requires field="fs">
+    <requires field="fs" proxy="false">
       <callback type="bind" method="voidBind" />
       <callback type="unbind" method="voidUnbind" />
     </requires>
@@ -29,7 +29,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="ObjectCheckServiceProvider" architecture="true">
-    <requires field="fs">
+    <requires field="fs" proxy="false">
       <callback type="bind" method="objectBind" />
       <callback type="unbind" method="objectUnbind" />
     </requires>
@@ -38,7 +38,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="RefCheckServiceProvider" architecture="true">
-    <requires field="fs">
+    <requires field="fs" proxy="false">
       <callback type="bind" method="refBind" />
       <callback type="unbind" method="refUnbind" />
     </requires>
@@ -47,7 +47,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="BothCheckServiceProvider" architecture="true">
-    <requires field="fs">
+    <requires field="fs" proxy="false">
       <callback type="bind" method="bothBind" />
       <callback type="unbind" method="bothUnbind" />
     </requires>
@@ -56,7 +56,7 @@
     <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="MapCheckServiceProvider" architecture="true">
-    <requires field="fs">
+    <requires field="fs" proxy="false">
       <callback type="bind" method="propertiesMapBind" />
       <callback type="unbind" method="propertiesMapUnbind" />
     </requires>
@@ -65,12 +65,74 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="DictCheckServiceProvider" architecture="true">
+    <requires field="fs" proxy="false">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
+  
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedSimpleCheckServiceProvider" architecture="true">
+    <requires field="fs" />
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedVoidCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedObjectCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedRefCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedBothCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+    <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedMapCheckServiceProvider" architecture="true">
+    <requires field="fs">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedDictCheckServiceProvider" architecture="true">
     <requires field="fs">
       <callback type="bind" method="propertiesDictionaryBind" />
       <callback type="unbind" method="propertiesDictionaryUnbind" />
     </requires>
     <provides />
   </component>
+  
 
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
@@ -79,6 +141,16 @@
       <callback type="bind" method="objectBind" />
       <callback type="unbind" method="objectUnbind" />
     </requires>
+    <requires field="fs" proxy="true"/>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedDoubleCheckServiceProvider" architecture="true">
+    <requires>
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
     <requires field="fs" />
     <provides />
   </component>
@@ -134,7 +206,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="SimpleOptionalCheckServiceProvider" architecture="true">
-    <requires field="fs" optional="true" id="FooService"/>
+    <requires field="fs" optional="true" id="FooService" proxy="false"/>
     <provides />
   </component>
   <component
@@ -146,7 +218,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="VoidOptionalCheckServiceProvider" architecture="true">
-    <requires field="fs" optional="true">
+    <requires field="fs" optional="true" proxy="false">
       <callback type="bind" method="voidBind" />
       <callback type="unbind" method="voidUnbind" />
     </requires>
@@ -164,7 +236,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="ObjectOptionalCheckServiceProvider" architecture="true">
-    <requires field="fs" optional="true">
+    <requires field="fs" optional="true" proxy="false">
       <callback type="bind" method="objectBind" />
       <callback type="unbind" method="objectUnbind" />
     </requires>
@@ -182,7 +254,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="RefOptionalCheckServiceProvider" architecture="true">
-    <requires field="fs" optional="true">
+    <requires field="fs" optional="true" proxy="false">
       <callback type="bind" method="refBind" />
       <callback type="unbind" method="refUnbind" />
     </requires>
@@ -200,7 +272,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="BothOptionalCheckServiceProvider" architecture="true">
-    <requires field="fs" optional="true">
+    <requires field="fs" optional="true" proxy="false">
       <callback type="bind" method="bothBind" />
       <callback type="unbind" method="bothUnbind" />
     </requires>
@@ -209,7 +281,7 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="MapOptionalCheckServiceProvider" architecture="true">
-    <requires field="fs" optional="true">
+    <requires field="fs" optional="true" proxy="false">
       <callback type="bind" method="propertiesMapBind" />
       <callback type="unbind" method="propertiesMapUnbind" />
     </requires>
@@ -218,6 +290,67 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
     name="DictOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" proxy="false">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
+  
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedSimpleOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true" id="FooService"/>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedVoidOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedObjectOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedRefOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedBothOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedMapOptionalCheckServiceProvider" architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider"
+    name="ProxiedDictOptionalCheckServiceProvider" architecture="true">
     <requires field="fs" optional="true">
       <callback type="bind" method="propertiesDictionaryBind" />
       <callback type="unbind" method="propertiesDictionaryUnbind" />
@@ -440,12 +573,28 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="SimpleMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs" proxy="false"/>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedSimpleMultipleCheckServiceProvider" architecture="true">
     <requires field="fs" />
     <provides />
   </component>
+  
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="VoidMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs" proxy="false">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedVoidMultipleCheckServiceProvider" architecture="true">
     <requires field="fs">
       <callback type="bind" method="voidBind" />
       <callback type="unbind" method="voidUnbind" />
@@ -455,6 +604,15 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="ObjectMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs" proxy="false">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedObjectMultipleCheckServiceProvider" architecture="true">
     <requires field="fs">
       <callback type="bind" method="objectBind" />
       <callback type="unbind" method="objectUnbind" />
@@ -464,15 +622,34 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="RefMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs" proxy="false">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedRefMultipleCheckServiceProvider" architecture="true">
     <requires field="fs">
       <callback type="bind" method="refBind" />
       <callback type="unbind" method="refUnbind" />
     </requires>
     <provides />
   </component>
+  
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="BothMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs" proxy="false">
+      <callback type="bind" method="bothBind" />
+      <callback type="unbind" method="bothUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedBothMultipleCheckServiceProvider" architecture="true">
     <requires field="fs">
       <callback type="bind" method="bothBind" />
       <callback type="unbind" method="bothUnbind" />
@@ -482,15 +659,34 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="MapMultipleCheckServiceProvider" architecture="true">
+    <requires field="fs" proxy="false">
+      <callback type="bind" method="propertiesMapBind" />
+      <callback type="unbind" method="propertiesMapUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedMapMultipleCheckServiceProvider" architecture="true">
     <requires field="fs">
       <callback type="bind" method="propertiesMapBind" />
       <callback type="unbind" method="propertiesMapUnbind" />
     </requires>
     <provides />
   </component>
+  
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
-    name="DictMultipleCheckServiceProvider" architecture="true">
+    name="DictMultipleCheckServiceProvider" architecture="true" >
+    <requires field="fs" proxy="false">
+      <callback type="bind" method="propertiesDictionaryBind" />
+      <callback type="unbind" method="propertiesDictionaryUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedDictMultipleCheckServiceProvider" architecture="true">
     <requires field="fs">
       <callback type="bind" method="propertiesDictionaryBind" />
       <callback type="unbind" method="propertiesDictionaryUnbind" />
@@ -551,14 +747,14 @@
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="SimpleOptionalMultipleCheckServiceProvider"
     architecture="true">
-    <requires field="fs" optional="true" />
+    <requires field="fs" optional="true" proxy="false"/>
     <provides />
   </component>
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="VoidOptionalMultipleCheckServiceProvider"
     architecture="true">
-    <requires field="fs" optional="true">
+    <requires field="fs" optional="true" proxy="false">
       <callback type="bind" method="voidBind" />
       <callback type="unbind" method="voidUnbind" />
     </requires>
@@ -568,7 +764,7 @@
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="ObjectOptionalMultipleCheckServiceProvider"
     architecture="true">
-    <requires field="fs" optional="true">
+    <requires field="fs" optional="true" proxy="false">
       <callback type="bind" method="objectBind" />
       <callback type="unbind" method="objectUnbind" />
     </requires>
@@ -578,12 +774,51 @@
     
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
     name="RefOptionalMultipleCheckServiceProvider"
     architecture="true">
+    <requires field="fs" optional="true" proxy="false">
+      <callback type="bind" method="refBind" />
+      <callback type="unbind" method="refUnbind" />
+    </requires>
+    <provides />
+  </component>
+  
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedSimpleOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires field="fs" optional="true" />
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedVoidOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="voidBind" />
+      <callback type="unbind" method="voidUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedObjectOptionalMultipleCheckServiceProvider"
+    architecture="true">
+    <requires field="fs" optional="true">
+      <callback type="bind" method="objectBind" />
+      <callback type="unbind" method="objectUnbind" />
+    </requires>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService"
+    name="ProxiedRefOptionalMultipleCheckServiceProvider"
+    architecture="true">
     <requires field="fs" optional="true">
       <callback type="bind" method="refBind" />
       <callback type="unbind" method="refUnbind" />
     </requires>
     <provides />
   </component>
+  
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.MethodMultipleCheckService"
     name="MObjectOptionalMultipleCheckServiceProvider"
@@ -611,13 +846,28 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.ListCheckService"
     name="SimpleListCheckServiceProvider" architecture="true">
-    <requires field="fs" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
+    <requires proxy="false"
+      field="fs" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
     <provides />
   </component>
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.ListCheckService"
     name="OptionalListCheckServiceProvider"
     architecture="true">
+    <requires proxy="false" 
+      
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 field="fs" optional="true" />
+    <provides />
+  </component>
+   <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.ListCheckService"
+    name="ProxiedSimpleListCheckServiceProvider" architecture="true">
+    <requires field="fs" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.ListCheckService"
+    name="ProxiedOptionalListCheckServiceProvider"
+    architecture="true">
     <requires 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 field="fs" optional="true" />
     <provides />
   </component>
@@ -644,13 +894,26 @@
   <component
     classname="org.apache.felix.ipojo.test.scenarios.component.SetCheckService"
     name="SimpleSetCheckServiceProvider" architecture="true">
-    <requires field="fs" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
+    <requires proxy="false" field="fs" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
     <provides />
   </component>
   <component
     classname="org.apache.felix.ipojo.test.scenarios.component.SetCheckService"
     name="OptionalSetCheckServiceProvider"
     architecture="true">
+    <requires proxy="false" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 field="fs" optional="true" />
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.SetCheckService"
+    name="ProxiedSimpleSetCheckServiceProvider" architecture="true">
+    <requires field="fs" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
+    <provides />
+  </component>
+  <component
+    classname="org.apache.felix.ipojo.test.scenarios.component.SetCheckService"
+    name="ProxiedOptionalSetCheckServiceProvider"
+    architecture="true">
     <requires 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 field="fs" optional="true" />
     <provides />
   </component>
@@ -659,6 +922,12 @@
   <component
     
classname="org.apache.felix.ipojo.test.scenarios.component.CollectionCheckService"
     name="SimpleCollectionCheckServiceProvider" architecture="true">
+    <requires field="fs" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 proxy="false"/>
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CollectionCheckService"
+    name="ProxiedSimpleCollectionCheckServiceProvider" architecture="true">
     <requires field="fs" 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"/>
     <provides />
   </component>
@@ -666,7 +935,18 @@
     
classname="org.apache.felix.ipojo.test.scenarios.component.CollectionCheckService"
     name="OptionalCollectionCheckServiceProvider"
     architecture="true">
-    <requires 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 field="fs" optional="true" />
+    <requires 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 field="fs" optional="true" 
+      proxy="false"
+    />
+    <provides />
+  </component>
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.CollectionCheckService"
+    name="ProxiedOptionalCollectionCheckServiceProvider"
+    architecture="true">
+    <requires 
specification="org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService"
 field="fs" optional="true" 
+      proxy="false"
+    />
     <provides />
   </component>
   
@@ -740,5 +1020,21 @@
     </requires>
     <provides />
   </component>
+
+  <!--  Proxy Tests -->
+  <component 
classname="org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceDelegator">
+    <provides/>
+    <requires field="fs" optional="true"/>
+  </component>
+  <component 
classname="org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceGetAndDelegate">
+    <provides/>
+    <requires field="fs" optional="true"/>
+  </component>
+  <component 
classname="org.apache.felix.ipojo.test.scenarios.service.dependency.proxy.CheckServiceNoDelegate">
+      <provides/>
+      <requires field="fs" optional="true"/>
+      <callback transition="validate" method="start"/>
+    <callback transition="invalidate" method="stop"/>  
+  </component>
   
 </ipojo>

Modified: 
felix/trunk/ipojo/tests/core/service-providing-strategies/src/main/resources/metadata.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-providing-strategies/src/main/resources/metadata.xml?rev=893960&r1=893959&r2=893960&view=diff
==============================================================================
--- 
felix/trunk/ipojo/tests/core/service-providing-strategies/src/main/resources/metadata.xml
 (original)
+++ 
felix/trunk/ipojo/tests/core/service-providing-strategies/src/main/resources/metadata.xml
 Sat Dec 26 11:15:42 2009
@@ -3,33 +3,33 @@
     xsi:schemaLocation="org.apache.felix.ipojo 
http://felix.apache.org/ipojo/schemas/SNAPSHOT/core.xsd";
     xmlns="org.apache.felix.ipojo"
 >
-       <!-- Simple provider  -->
-       <component
-               
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.FooProviderType1"
-               name="PSS-FooProviderType-Instance" architecture="true">
-               <provides strategy="instance"/>
-       </component>
-       
-       <component
-               
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.Consumer"
-               name="PSS-Cons" architecture="true">
-               <requires field="fs"/>
-               <provides/>
-       </component>
-       
-       <component
-               
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.BarConsumer"
-               name="PSS-ConsBar" architecture="true">
-               <requires field="bs"/>
-               <provides/>
-       </component>
-       
-       <component
-               
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.FooBarProviderType1"
-               name="PSS-FooBarProviderType-Instance" architecture="true">
-               <provides strategy="instance"/>
-       </component>
-       
+  <!-- Simple provider  -->
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.FooProviderType1"
+    name="PSS-FooProviderType-Instance" architecture="true">
+    <provides strategy="instance"/>
+  </component>
+  
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.Consumer"
+    name="PSS-Cons" architecture="true">
+    <requires field="fs" proxy="false"/>
+    <provides/>
+  </component>
+  
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.BarConsumer"
+    name="PSS-ConsBar" architecture="true">
+    <requires field="bs" proxy="false"/>
+    <provides/>
+  </component>
+  
+  <component
+    
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.FooBarProviderType1"
+    name="PSS-FooBarProviderType-Instance" architecture="true">
+    <provides strategy="instance"/>
+  </component>
+  
     <component
         
classname="org.apache.felix.ipojo.test.scenarios.component.strategies.FooProviderType1"
         name="PSS-FooProviderType-Custom" architecture="true">


Reply via email to