You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by da...@apache.org on 2010/03/01 15:06:35 UTC

svn commit: r917537 [3/3] - in /cxf/dosgi/trunk: discovery/distributed/cxf-discovery/src/main/java/org/apache/cxf/dosgi/discovery/zookeeper/ dsw/cxf-dsw/src/main/java/org/apache/cxf/dosgi/dsw/ dsw/cxf-dsw/src/main/java/org/apache/cxf/dosgi/dsw/handlers...

Modified: cxf/dosgi/trunk/dsw/cxf-dsw/src/test/java/org/apache/cxf/dosgi/dsw/handlers/PojoConfigurationTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-dsw/src/test/java/org/apache/cxf/dosgi/dsw/handlers/PojoConfigurationTypeHandlerTest.java?rev=917537&r1=917536&r2=917537&view=diff
==============================================================================
--- cxf/dosgi/trunk/dsw/cxf-dsw/src/test/java/org/apache/cxf/dosgi/dsw/handlers/PojoConfigurationTypeHandlerTest.java (original)
+++ cxf/dosgi/trunk/dsw/cxf-dsw/src/test/java/org/apache/cxf/dosgi/dsw/handlers/PojoConfigurationTypeHandlerTest.java Mon Mar  1 14:06:34 2010
@@ -18,13 +18,21 @@
   */
 package org.apache.cxf.dosgi.dsw.handlers;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import junit.framework.TestCase;
 
+import org.apache.cxf.binding.BindingConfiguration;
 import org.apache.cxf.dosgi.dsw.Constants;
+import org.apache.cxf.dosgi.dsw.qos.IntentMap;
+import org.apache.cxf.dosgi.dsw.service.ExportRegistrationImpl;
+import org.apache.cxf.dosgi.dsw.service.RemoteServiceAdminCore;
 import org.apache.cxf.endpoint.AbstractEndpointFactory;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.feature.AbstractFeature;
@@ -230,47 +238,48 @@
 //        assertEquals(expected, dp.getExposedProperties(sr));
 //    }
 //    
-//    public void testCreateServerWithAddressProprety() {
-//        BundleContext dswContext = EasyMock.createNiceMock(BundleContext.class);
-//        EasyMock.replay(dswContext);
-//
-//        String myService = "Hi";                
-//        final ServerFactoryBean sfb = createMockServerFactoryBean();
-//        
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            ServerFactoryBean createServerFactoryBean(String frontend) {
-//                return sfb;
-//            }
-//
-//            @Override
-//            String[] applyIntents(BundleContext dswContext, BundleContext callingContext,
-//                List<AbstractFeature> features, AbstractEndpointFactory factory, ServiceEndpointDescription sd) {
-//                return new String []{};
-//            }
-//        };
-//        
-//        ServiceReference sr = EasyMock.createNiceMock(ServiceReference.class);
-//        BundleContext callingContext = EasyMock.createNiceMock(BundleContext.class);
-//        EasyMock.replay(sr);
-//        EasyMock.replay(callingContext);
-//        
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put(Constants.WS_ADDRESS_PROPERTY, "http://alternate_host:80/myString");
-//        ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Runnable.class.getName(), props);
-//        
-//        assertEquals("Precondition failed", 0, dp.getExposedServices().size());
-//        p.createServer(sr, dswContext, callingContext, sd, String.class, myService);
-//        assertEquals(1, dp.getExposedServices().size());
-//        assertSame(sr, dp.getExposedServices().iterator().next());
-//        
-//        Map<String, String> expected = new HashMap<String, String>();
-//        expected.put("service.exported.configs", "org.apache.cxf.ws");
-//        expected.put("org.apache.cxf.ws.address", "http://alternate_host:80/myString");
-//        assertEquals(expected, dp.getExposedProperties(sr));
-//    }    
-//
+    public void testCreateServerWithAddressProprety() {
+        BundleContext dswContext = EasyMock.createNiceMock(BundleContext.class);
+        EasyMock.replay(dswContext);
+
+        String myService = "Hi";                
+        final ServerFactoryBean sfb = createMockServerFactoryBean();
+        
+        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, handlerProps) {
+            @Override
+            ServerFactoryBean createServerFactoryBean(String frontend) {
+                return sfb;
+            }
+
+            @Override
+            String[] applyIntents(BundleContext dswContext, BundleContext callingContext,
+                List<AbstractFeature> features, AbstractEndpointFactory factory, Map sd) {
+                return new String []{};
+            }
+        };
+        
+        ServiceReference sr = EasyMock.createNiceMock(ServiceReference.class);
+        BundleContext callingContext = EasyMock.createNiceMock(BundleContext.class);
+        EasyMock.replay(sr);
+        EasyMock.replay(callingContext);
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put(Constants.WS_ADDRESS_PROPERTY, "http://alternate_host:80/myString");
+        
+        ExportRegistrationImpl exReg = new ExportRegistrationImpl(sr,null,null);
+        
+        p.createServer(exReg, dswContext, callingContext, props, String.class, myService);
+        
+        
+        Map edProps = exReg.getEndpointDescription().getProperties();
+
+        assertNotNull(edProps.get(RemoteConstants.SERVICE_IMPORTED_CONFIGS));
+        assertEquals(1, ((String[])edProps.get(RemoteConstants.SERVICE_IMPORTED_CONFIGS)).length);
+        assertEquals(Constants.WS_CONFIG_TYPE, ((String[])edProps.get(RemoteConstants.SERVICE_IMPORTED_CONFIGS))[0]);
+        assertEquals("http://alternate_host:80/myString", edProps.get(RemoteConstants.ENDPOINT_ID));
+        
+    }    
+
     private ServerFactoryBean createMockServerFactoryBean() {
         ReflectionServiceFactoryBean sf = EasyMock.createNiceMock(ReflectionServiceFactoryBean.class);
         EasyMock.replay(sf);
@@ -321,366 +330,366 @@
         EasyMock.replay(server);
         return server;
     }
-//    
-//    public void testIntents() throws Exception {
-//        Map<String, Object> intents = new HashMap<String, Object>();
-//        intents.put("A", new AbstractFeature() {});
-//        intents.put("SOAP", new AbstractFeature() {});
-//        final IntentMap intentMap = new IntentMap();
-//        intentMap.setIntents(intents);
-//        
-//        IMocksControl control = EasyMock.createNiceControl();
-//        BundleContext dswContext = control.createMock(BundleContext.class);
-//        BundleContext callingContext = control.createMock(BundleContext.class);        
-//        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
-//        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
-//        control.replay();
-//
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//        AbstractPojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            IntentMap getIntentMap(BundleContext callingContext) {
-//                return intentMap;
-//            }
-//
-//            @Override
-//            String getDefaultBindingIntent() {
-//                return null;
-//            }        
-//        };
-//        
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put("osgi.remote.requires.intents", "A");
-//        ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
-//
-//        List<String> effectiveIntents = 
-//            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, sd));
-//        assertEquals(Arrays.asList("A"), effectiveIntents);
-//    }    
-//    
-//    public void testMultiIntents() {
-//        Map<String, Object> intents = new HashMap<String, Object>();
-//        intents.put("confidentiality.message", new AbstractFeature() {});
-//        intents.put("transactionality", new AbstractFeature() {});
-//        final IntentMap intentMap = new IntentMap();
-//        intentMap.setIntents(intents);
-//        
-//        IMocksControl control = EasyMock.createNiceControl();
-//        BundleContext dswContext = control.createMock(BundleContext.class);
-//        BundleContext callingContext = control.createMock(BundleContext.class);        
-//        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
-//        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
-//        control.replay();
-//
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            IntentMap getIntentMap(BundleContext callingContext) {
-//                return intentMap;
-//            }            
-//
-//            @Override
-//            String getDefaultBindingIntent() {
-//                return null;
-//            }        
-//        };
-//        
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put("osgi.remote.requires.intents", "transactionality confidentiality.message");
-//        ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
-//
-//        List<String> effectiveIntents = 
-//            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, sd));
-//        assertTrue(effectiveIntents.contains("transactionality"));        
-//        assertTrue(effectiveIntents.contains("confidentiality.message"));        
-//    }
-//    
-//    public void testFailedIntent() {
-//        Map<String, Object> intents = new HashMap<String, Object>();
-//        intents.put("A", new AbstractFeature() {});
-//        final IntentMap intentMap = new IntentMap();
-//        intentMap.setIntents(intents);
-//                
-//        IMocksControl control = EasyMock.createNiceControl();
-//        BundleContext dswContext = control.createMock(BundleContext.class);
-//        BundleContext callingContext = control.createMock(BundleContext.class);        
-//        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
-//        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
-//        control.replay();
-//
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            IntentMap getIntentMap(BundleContext callingContext) {
-//                return intentMap;
-//            }            
-//        };
-//
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put("osgi.remote.requires.intents", "A B");
-//        ServiceEndpointDescription sd = 
-//            new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
-//
-//        try {
-//            p.applyIntents(dswContext, callingContext, features, factory, sd);
-//            fail("applyIntents() should have thrown an exception as there was an unsatisfiable intent");
-//        } catch (IntentUnsatifiedException iue) {
-//            assertEquals("B", iue.getIntent());
-//        }
-//    }
-// 
-//    public void testInferIntents() {
-//        Map<String, Object> intents = new HashMap<String, Object>();
-//        intents.put("Prov", "PROVIDED");
-//        AbstractFeature feat1 = new AbstractFeature() {};
-//        intents.put("A", feat1);
-//        intents.put("A_alt", feat1);
-//        intents.put("B", new AbstractFeature() {});
-//        final IntentMap intentMap = new IntentMap();
-//        intentMap.setIntents(intents);
-//        
-//        IMocksControl control = EasyMock.createNiceControl();
-//        BundleContext dswContext = control.createMock(BundleContext.class);
-//        BundleContext callingContext = control.createMock(BundleContext.class);
-//        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
-//        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
-//        control.replay();
-//        
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            IntentMap getIntentMap(BundleContext callingContext) {
-//                return intentMap;
-//            }            
-//
-//            @Override
-//            String getDefaultBindingIntent() {
-//                return null;
-//            }        
-//        };
-//        
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put("osgi.remote.requires.intents", "A");
-//        ServiceEndpointDescription sd = 
-//            new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
-//        
-//        List<String> effectiveIntents = 
-//            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, sd));
-//        assertEquals(3, effectiveIntents.size());
-//        assertTrue(effectiveIntents.contains("Prov"));
-//        assertTrue(effectiveIntents.contains("A"));
-//        assertTrue(effectiveIntents.contains("A_alt"));
-//    }
-//    
-//    public void testDefaultBindingIntent() {        
-//        IMocksControl control = EasyMock.createNiceControl();
-//
-//        Map<String, Object> intents = new HashMap<String, Object>();
-//        BindingConfiguration feat1 = control.createMock(BindingConfiguration.class);
-//        intents.put("A", new AbstractFeature() {});
-//        intents.put("SOAP", feat1);
-//        intents.put("SOAP.1_1", feat1);
-//        intents.put("SOAP.1_2", control.createMock(BindingConfiguration.class));
-//        final IntentMap intentMap = new IntentMap();
-//        intentMap.setIntents(intents);
-//
-//        BundleContext dswContext = control.createMock(BundleContext.class);
-//        BundleContext callingContext = control.createMock(BundleContext.class);
-//        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
-//        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
-//        control.replay();
-//        
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            IntentMap getIntentMap(BundleContext callingContext) {
-//                return intentMap;
-//            }            
-//        };
-//
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put("osgi.remote.requires.intents", "A");
-//        ServiceEndpointDescription sd = 
-//            new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
-//        
-//        List<String> effectiveIntents = 
-//            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, sd));
-//        assertEquals(3, effectiveIntents.size());
-//        assertTrue(effectiveIntents.contains("A"));
-//        assertTrue(effectiveIntents.contains("SOAP"));
-//        assertTrue(effectiveIntents.contains("SOAP.1_1"));
-//    }
-//    
-//    public void testExplicitBindingIntent() {
-//        IMocksControl control = EasyMock.createNiceControl();
-//
-//        Map<String, Object> intents = new HashMap<String, Object>();
-//        BindingConfiguration feat1 = control.createMock(BindingConfiguration.class);
-//        intents.put("A", new AbstractFeature() {});
-//        intents.put("SOAP", feat1);
-//        intents.put("SOAP.1_1", feat1);
-//        intents.put("SOAP.1_2", control.createMock(BindingConfiguration.class));
-//        final IntentMap intentMap = new IntentMap();
-//        intentMap.setIntents(intents);
-//
-//        BundleContext dswContext = control.createMock(BundleContext.class);
-//        BundleContext callingContext = control.createMock(BundleContext.class);
-//        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
-//        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
-//        control.replay();
-//        
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            IntentMap getIntentMap(BundleContext callingContext) {
-//                return intentMap;
-//            }            
-//        };
-//
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put("osgi.remote.requires.intents", "A SOAP.1_2");
-//        ServiceEndpointDescription sd = 
-//            new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
-//        
-//        List<String> effectiveIntents = 
-//            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, sd));
-//        assertEquals(2, effectiveIntents.size());
-//        assertTrue(effectiveIntents.contains("A"));
-//        assertTrue(effectiveIntents.contains("SOAP.1_2"));        
-//    }
-//    
-//    public void testInheritMasterIntentMapDefault() {
-//        List<String> features = runTestInheritMasterIntentMap("A B");
-//        
-//        assertEquals(2, features.size());
-//        assertTrue(features.contains("appFeatureA"));
-//        assertTrue(features.contains("masterFeatureB"));
-//    }
-//    
-//    public void testInheritMasterIntentMap() {
-//        handlerProps.put(Constants.USE_MASTER_MAP, "true");
-//        List<String> features = runTestInheritMasterIntentMap("A B");
-//        
-//        assertEquals(2, features.size());
-//        assertTrue(features.contains("appFeatureA"));
-//        assertTrue(features.contains("masterFeatureB"));
-//    }
-//
-//    public void testDontInheritMasterIntentMapFails() {
-//        handlerProps.put(Constants.USE_MASTER_MAP, "false");
-//        try {
-//            runTestInheritMasterIntentMap("A B");
-//            fail("Should have failed as intent B was not satisfied");
-//        } catch (IntentUnsatifiedException iue) {
-//            assertEquals("B", iue.getIntent());
-//        }    
-//    }
-//
-//    public void testDontInheritMasterIntentMapSucceeds() {
-//        handlerProps.put(Constants.USE_MASTER_MAP, "false");
-//        List<String> features = runTestInheritMasterIntentMap("A");
-//        
-//        assertEquals(1, features.size());
-//        assertTrue(features.contains("appFeatureA"));
-//    }
-//
-//    private List<String> runTestInheritMasterIntentMap(String requestedIntents) {
-//        Map<String, Object> masterIntents = new HashMap<String, Object>();
-//        masterIntents.put("A", new TestFeature("masterFeatureA"));
-//        masterIntents.put("B", new TestFeature("masterFeatureB"));
-//        final IntentMap masterIntentMap = new IntentMap();
-//        masterIntentMap.setIntents(masterIntents);
-//        
-//        Map<String, Object> appIntents = new HashMap<String, Object>();
-//        appIntents.put("A", new TestFeature("appFeatureA"));
-//        final IntentMap appIntentMap = new IntentMap();
-//        appIntentMap.setIntents(appIntents);
-//
-//        IMocksControl control = EasyMock.createNiceControl();
-//        final BundleContext dswContext = control.createMock(BundleContext.class);
-//        final BundleContext callingContext = control.createMock(BundleContext.class);        
-//        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
-//        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
-//        control.replay();
-//
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put("osgi.remote.requires.intents", requestedIntents);
-//        ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
-//        
-//        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            IntentMap getIntentMap(BundleContext ctx) {
-//                if (ctx == callingContext) {
-//                    return appIntentMap;
-//                } else if (ctx == dswContext) {
-//                    return masterIntentMap;
-//                } else {
-//                    return null;
-//                }
-//            }            
-//
-//            @Override
-//            String getDefaultBindingIntent() {
-//                return null;
-//            }        
-//        };
-//        
-//        p.applyIntents(dswContext, callingContext, features, factory, sd);
-//
-//        List<String> featureNames = new ArrayList<String>();
-//        for (AbstractFeature f : features) {
-//            featureNames.add(f.toString());
-//        }
-//        return featureNames;
-//    }
-//    
-//    public void testProvidedIntents() {
-//        Map<String, Object> masterIntents = new HashMap<String, Object>();
-//        masterIntents.put("A", "Provided");
-//        masterIntents.put("B", "PROVIDED");
-//        final IntentMap masterIntentMap = new IntentMap();
-//        masterIntentMap.setIntents(masterIntents);        
-//        final IntentMap appIntentMap = new IntentMap();
-//        appIntentMap.setIntents(new HashMap<String, Object>());
-//
-//        IMocksControl control = EasyMock.createNiceControl();
-//        final BundleContext dswContext = control.createMock(BundleContext.class);
-//        final BundleContext callingContext = control.createMock(BundleContext.class);        
-//        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
-//        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
-//        control.replay();
-//        
-//        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
-//
-//        Map<String, Object> props = new HashMap<String, Object>();
-//        props.put("osgi.remote.requires.intents", "B A");
-//        ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
-//        
-//        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext, dp, handlerProps) {
-//            @Override
-//            IntentMap getIntentMap(BundleContext ctx) {
-//                if (ctx == callingContext) {
-//                    return appIntentMap;
-//                } else if (ctx == dswContext) {
-//                    return masterIntentMap;
-//                } else {
-//                    return null;
-//                }
-//            }                      
-//
-//            @Override
-//            String getDefaultBindingIntent() {
-//                return null;
-//            }        
-//        };
-//        
-//        Set<String> effectiveIntents = new HashSet<String>(Arrays.asList( 
-//            p.applyIntents(dswContext, callingContext, features, factory, sd)));
-//        Set<String> expectedIntents = new HashSet<String>(Arrays.asList(new String [] {"A", "B"}));
-//        assertEquals(expectedIntents, effectiveIntents);
-//    }
+    
+    public void testIntents() throws Exception {
+        Map<String, Object> intents = new HashMap<String, Object>();
+        intents.put("A", new AbstractFeature() {});
+        intents.put("SOAP", new AbstractFeature() {});
+        final IntentMap intentMap = new IntentMap();
+        intentMap.setIntents(intents);
+        
+        IMocksControl control = EasyMock.createNiceControl();
+        BundleContext dswContext = control.createMock(BundleContext.class);
+        BundleContext callingContext = control.createMock(BundleContext.class);        
+        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
+        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
+        control.replay();
+
+        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
+        AbstractPojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext,  handlerProps) {
+            @Override
+            IntentMap getIntentMap(BundleContext callingContext) {
+                return intentMap;
+            }
+
+            @Override
+            String getDefaultBindingIntent() {
+                return null;
+            }        
+        };
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("osgi.remote.requires.intents", "A");
+        //ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
+
+        List<String> effectiveIntents = 
+            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, props));
+        assertEquals(Arrays.asList("A"), effectiveIntents);
+    }    
+    
+    public void testMultiIntents() {
+        Map<String, Object> intents = new HashMap<String, Object>();
+        intents.put("confidentiality.message", new AbstractFeature() {});
+        intents.put("transactionality", new AbstractFeature() {});
+        final IntentMap intentMap = new IntentMap();
+        intentMap.setIntents(intents);
+        
+        IMocksControl control = EasyMock.createNiceControl();
+        BundleContext dswContext = control.createMock(BundleContext.class);
+        BundleContext callingContext = control.createMock(BundleContext.class);        
+        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
+        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
+        control.replay();
+
+        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
+        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext,  handlerProps) {
+            @Override
+            IntentMap getIntentMap(BundleContext callingContext) {
+                return intentMap;
+            }            
+
+            @Override
+            String getDefaultBindingIntent() {
+                return null;
+            }        
+        };
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("osgi.remote.requires.intents", "transactionality confidentiality.message");
+        //ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
+
+        List<String> effectiveIntents = 
+            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, props));
+        assertTrue(effectiveIntents.contains("transactionality"));        
+        assertTrue(effectiveIntents.contains("confidentiality.message"));        
+    }
+    
+    public void testFailedIntent() {
+        Map<String, Object> intents = new HashMap<String, Object>();
+        intents.put("A", new AbstractFeature() {});
+        final IntentMap intentMap = new IntentMap();
+        intentMap.setIntents(intents);
+                
+        IMocksControl control = EasyMock.createNiceControl();
+        BundleContext dswContext = control.createMock(BundleContext.class);
+        BundleContext callingContext = control.createMock(BundleContext.class);        
+        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
+        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
+        control.replay();
+
+        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
+        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext,  handlerProps) {
+            @Override
+            IntentMap getIntentMap(BundleContext callingContext) {
+                return intentMap;
+            }            
+        };
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("osgi.remote.requires.intents", "A B");
+        //        ServiceEndpointDescription sd = 
+        //            new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
+
+        try {
+            p.applyIntents(dswContext, callingContext, features, factory, props);
+            fail("applyIntents() should have thrown an exception as there was an unsatisfiable intent");
+        } catch (IntentUnsatifiedException iue) {
+            assertEquals("B", iue.getIntent());
+        }
+    }
+ 
+    public void testInferIntents() {
+        Map<String, Object> intents = new HashMap<String, Object>();
+        intents.put("Prov", "PROVIDED");
+        AbstractFeature feat1 = new AbstractFeature() {};
+        intents.put("A", feat1);
+        intents.put("A_alt", feat1);
+        intents.put("B", new AbstractFeature() {});
+        final IntentMap intentMap = new IntentMap();
+        intentMap.setIntents(intents);
+        
+        IMocksControl control = EasyMock.createNiceControl();
+        BundleContext dswContext = control.createMock(BundleContext.class);
+        BundleContext callingContext = control.createMock(BundleContext.class);
+        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
+        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
+        control.replay();
+        
+        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
+        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext,  handlerProps) {
+            @Override
+            IntentMap getIntentMap(BundleContext callingContext) {
+                return intentMap;
+            }            
+
+            @Override
+            String getDefaultBindingIntent() {
+                return null;
+            }        
+        };
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("osgi.remote.requires.intents", "A");
+        //        ServiceEndpointDescription sd = 
+        //            new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
+        
+        List<String> effectiveIntents = 
+            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, props));
+        assertEquals(3, effectiveIntents.size());
+        assertTrue(effectiveIntents.contains("Prov"));
+        assertTrue(effectiveIntents.contains("A"));
+        assertTrue(effectiveIntents.contains("A_alt"));
+    }
+    
+    public void testDefaultBindingIntent() {        
+        IMocksControl control = EasyMock.createNiceControl();
+
+        Map<String, Object> intents = new HashMap<String, Object>();
+        BindingConfiguration feat1 = control.createMock(BindingConfiguration.class);
+        intents.put("A", new AbstractFeature() {});
+        intents.put("SOAP", feat1);
+        intents.put("SOAP.1_1", feat1);
+        intents.put("SOAP.1_2", control.createMock(BindingConfiguration.class));
+        final IntentMap intentMap = new IntentMap();
+        intentMap.setIntents(intents);
+
+        BundleContext dswContext = control.createMock(BundleContext.class);
+        BundleContext callingContext = control.createMock(BundleContext.class);
+        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
+        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
+        control.replay();
+        
+        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
+        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext,  handlerProps) {
+            @Override
+            IntentMap getIntentMap(BundleContext callingContext) {
+                return intentMap;
+            }            
+        };
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("osgi.remote.requires.intents", "A");
+        //        ServiceEndpointDescription sd = 
+        //            new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
+        
+        List<String> effectiveIntents = 
+            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, props));
+        assertEquals(3, effectiveIntents.size());
+        assertTrue(effectiveIntents.contains("A"));
+        assertTrue(effectiveIntents.contains("SOAP"));
+        assertTrue(effectiveIntents.contains("SOAP.1_1"));
+    }
+    
+    public void testExplicitBindingIntent() {
+        IMocksControl control = EasyMock.createNiceControl();
+
+        Map<String, Object> intents = new HashMap<String, Object>();
+        BindingConfiguration feat1 = control.createMock(BindingConfiguration.class);
+        intents.put("A", new AbstractFeature() {});
+        intents.put("SOAP", feat1);
+        intents.put("SOAP.1_1", feat1);
+        intents.put("SOAP.1_2", control.createMock(BindingConfiguration.class));
+        final IntentMap intentMap = new IntentMap();
+        intentMap.setIntents(intents);
+
+        BundleContext dswContext = control.createMock(BundleContext.class);
+        BundleContext callingContext = control.createMock(BundleContext.class);
+        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
+        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
+        control.replay();
+        
+        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
+        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext,  handlerProps) {
+            @Override
+            IntentMap getIntentMap(BundleContext callingContext) {
+                return intentMap;
+            }            
+        };
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("osgi.remote.requires.intents", "A SOAP.1_2");
+        //        ServiceEndpointDescription sd = 
+        //            new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
+        
+        List<String> effectiveIntents = 
+            Arrays.asList(p.applyIntents(dswContext, callingContext, features, factory, props));
+        assertEquals(2, effectiveIntents.size());
+        assertTrue(effectiveIntents.contains("A"));
+        assertTrue(effectiveIntents.contains("SOAP.1_2"));        
+    }
+    
+    public void testInheritMasterIntentMapDefault() {
+        List<String> features = runTestInheritMasterIntentMap("A B");
+        
+        assertEquals(2, features.size());
+        assertTrue(features.contains("appFeatureA"));
+        assertTrue(features.contains("masterFeatureB"));
+    }
+    
+    public void testInheritMasterIntentMap() {
+        handlerProps.put(Constants.USE_MASTER_MAP, "true");
+        List<String> features = runTestInheritMasterIntentMap("A B");
+        
+        assertEquals(2, features.size());
+        assertTrue(features.contains("appFeatureA"));
+        assertTrue(features.contains("masterFeatureB"));
+    }
+
+    public void testDontInheritMasterIntentMapFails() {
+        handlerProps.put(Constants.USE_MASTER_MAP, "false");
+        try {
+            runTestInheritMasterIntentMap("A B");
+            fail("Should have failed as intent B was not satisfied");
+        } catch (IntentUnsatifiedException iue) {
+            assertEquals("B", iue.getIntent());
+        }    
+    }
+
+    public void testDontInheritMasterIntentMapSucceeds() {
+        handlerProps.put(Constants.USE_MASTER_MAP, "false");
+        List<String> features = runTestInheritMasterIntentMap("A");
+        
+        assertEquals(1, features.size());
+        assertTrue(features.contains("appFeatureA"));
+    }
+
+    private List<String> runTestInheritMasterIntentMap(String requestedIntents) {
+        Map<String, Object> masterIntents = new HashMap<String, Object>();
+        masterIntents.put("A", new TestFeature("masterFeatureA"));
+        masterIntents.put("B", new TestFeature("masterFeatureB"));
+        final IntentMap masterIntentMap = new IntentMap();
+        masterIntentMap.setIntents(masterIntents);
+        
+        Map<String, Object> appIntents = new HashMap<String, Object>();
+        appIntents.put("A", new TestFeature("appFeatureA"));
+        final IntentMap appIntentMap = new IntentMap();
+        appIntentMap.setIntents(appIntents);
+
+        IMocksControl control = EasyMock.createNiceControl();
+        final BundleContext dswContext = control.createMock(BundleContext.class);
+        final BundleContext callingContext = control.createMock(BundleContext.class);        
+        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
+        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
+        control.replay();
+
+        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("osgi.remote.requires.intents", requestedIntents);
+        //ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
+        
+        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext,  handlerProps) {
+            @Override
+            IntentMap getIntentMap(BundleContext ctx) {
+                if (ctx == callingContext) {
+                    return appIntentMap;
+                } else if (ctx == dswContext) {
+                    return masterIntentMap;
+                } else {
+                    return null;
+                }
+            }            
+
+            @Override
+            String getDefaultBindingIntent() {
+                return null;
+            }        
+        };
+        
+        p.applyIntents(dswContext, callingContext, features, factory, props);
+
+        List<String> featureNames = new ArrayList<String>();
+        for (AbstractFeature f : features) {
+            featureNames.add(f.toString());
+        }
+        return featureNames;
+    }
+    
+    public void testProvidedIntents() {
+        Map<String, Object> masterIntents = new HashMap<String, Object>();
+        masterIntents.put("A", "Provided");
+        masterIntents.put("B", "PROVIDED");
+        final IntentMap masterIntentMap = new IntentMap();
+        masterIntentMap.setIntents(masterIntents);        
+        final IntentMap appIntentMap = new IntentMap();
+        appIntentMap.setIntents(new HashMap<String, Object>());
+
+        IMocksControl control = EasyMock.createNiceControl();
+        final BundleContext dswContext = control.createMock(BundleContext.class);
+        final BundleContext callingContext = control.createMock(BundleContext.class);        
+        List<AbstractFeature> features = new ArrayList<AbstractFeature>();
+        AbstractEndpointFactory factory = control.createMock(AbstractEndpointFactory.class);
+        control.replay();
+        
+        RemoteServiceAdminCore dp = new RemoteServiceAdminCore(dswContext);
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put("osgi.remote.requires.intents", "B A");
+        //ServiceEndpointDescription sd = new ServiceEndpointDescriptionImpl(Arrays.asList(String.class.getName()), props);
+        
+        PojoConfigurationTypeHandler p = new PojoConfigurationTypeHandler(dswContext,  handlerProps) {
+            @Override
+            IntentMap getIntentMap(BundleContext ctx) {
+                if (ctx == callingContext) {
+                    return appIntentMap;
+                } else if (ctx == dswContext) {
+                    return masterIntentMap;
+                } else {
+                    return null;
+                }
+            }                      
+
+            @Override
+            String getDefaultBindingIntent() {
+                return null;
+            }        
+        };
+        
+        Set<String> effectiveIntents = new HashSet<String>(Arrays.asList( 
+            p.applyIntents(dswContext, callingContext, features, factory, props)));
+        Set<String> expectedIntents = new HashSet<String>(Arrays.asList(new String [] {"A", "B"}));
+        assertEquals(expectedIntents, effectiveIntents);
+    }
 //    
 //    public void testServiceExposedAdminEvent() throws Exception {
 //        EventAdmin ea = EasyMock.createMock(EventAdmin.class);

Modified: cxf/dosgi/trunk/dsw/cxf-dsw/src/test/java/org/apache/cxf/dosgi/dsw/service/RemoteServiceAdminCoreTest.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-dsw/src/test/java/org/apache/cxf/dosgi/dsw/service/RemoteServiceAdminCoreTest.java?rev=917537&r1=917536&r2=917537&view=diff
==============================================================================
--- cxf/dosgi/trunk/dsw/cxf-dsw/src/test/java/org/apache/cxf/dosgi/dsw/service/RemoteServiceAdminCoreTest.java (original)
+++ cxf/dosgi/trunk/dsw/cxf-dsw/src/test/java/org/apache/cxf/dosgi/dsw/service/RemoteServiceAdminCoreTest.java Mon Mar  1 14:06:34 2010
@@ -1,21 +1,21 @@
 /** 
-  * Licensed to the Apache Software Foundation (ASF) under one 
-  * or more contributor license agreements. See the NOTICE file 
-  * distributed with this work for additional information 
-  * regarding copyright ownership. The ASF licenses this file 
-  * to you under the Apache License, Version 2.0 (the 
-  * "License"); you may not use this file except in compliance 
-  * with the License. You may obtain a copy of the License at 
-  * 
-  * http://www.apache.org/licenses/LICENSE-2.0 
-  * 
-  * Unless required by applicable law or agreed to in writing, 
-  * software distributed under the License is distributed on an 
-  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
-  * KIND, either express or implied. See the License for the 
-  * specific language governing permissions and limitations 
-  * under the License. 
-  */
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements. See the NOTICE file 
+ * distributed with this work for additional information 
+ * regarding copyright ownership. The ASF licenses this file 
+ * to you under the Apache License, Version 2.0 (the 
+ * "License"); you may not use this file except in compliance 
+ * with the License. You may obtain a copy of the License at 
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0 
+ * 
+ * Unless required by applicable law or agreed to in writing, 
+ * software distributed under the License is distributed on an 
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied. See the License for the 
+ * specific language governing permissions and limitations 
+ * under the License. 
+ */
 package org.apache.cxf.dosgi.dsw.service;
 
 import java.util.Dictionary;
@@ -45,165 +45,154 @@
 public class RemoteServiceAdminCoreTest {
 
     @Test
-    public void dontExportOwnServiceProxies(){
-        
+    public void dontExportOwnServiceProxies() {
+
         IMocksControl c = EasyMock.createNiceControl();
         Bundle b = c.createMock(Bundle.class);
         BundleContext bc = c.createMock(BundleContext.class);
-        
-        
+
         EasyMock.expect(bc.getBundle()).andReturn(b).anyTimes();
-        
+
         Dictionary d = new Properties();
         EasyMock.expect(b.getHeaders()).andReturn(d).anyTimes();
-        
+
         ServiceReference sref = c.createMock(ServiceReference.class);
         EasyMock.expect(sref.getBundle()).andReturn(b).anyTimes();
-        
+
         RemoteServiceAdminCore rsaCore = new RemoteServiceAdminCore(bc);
-        
-        
+
         c.replay();
-        
-        
-        // must return null as sref if from the same bundle 
-        assertNull(rsaCore.exportService(sref, null));
-        
-        // must be empty ... 
-        assertEquals(rsaCore.getExportedServices().size(),0);
-        
+
+        // must return an empty List as sref if from the same bundle
+        List exRefs = rsaCore.exportService(sref, null);
+
+        assertNotNull(exRefs);
+        assertEquals(0, exRefs.size());
+
+        // must be empty ...
+        assertEquals(rsaCore.getExportedServices().size(), 0);
+
         c.verify();
-        
+
     }
-    
-    
+
     @SuppressWarnings("unchecked")
     @Test
-    public void testImport(){
-        
+    public void testImport() {
+
         IMocksControl c = EasyMock.createNiceControl();
         Bundle b = c.createMock(Bundle.class);
         BundleContext bc = c.createMock(BundleContext.class);
-        
+
         Dictionary d = new Properties();
         EasyMock.expect(b.getHeaders()).andReturn(d).anyTimes();
-        
+
         EasyMock.expect(bc.getBundle()).andReturn(b).anyTimes();
         EasyMock.expect(b.getSymbolicName()).andReturn("BundleName").anyTimes();
-        
-        RemoteServiceAdminCore rsaCore = new RemoteServiceAdminCore(bc){
+
+        RemoteServiceAdminCore rsaCore = new RemoteServiceAdminCore(bc) {
             @Override
             protected void proxifyMatchingInterface(String interfaceName, ImportRegistrationImpl imReg,
                                                     ConfigurationTypeHandler handler,
                                                     BundleContext requestingContext) {
 
-                
-                
             }
         };
-        
+
         Map p = new HashMap();
         p.put(RemoteConstants.ENDPOINT_ID, "http://google.de");
-        p.put(Constants.OBJECTCLASS, new String[] {"es.schaaf.my.class"});
+        p.put(Constants.OBJECTCLASS, new String[] {
+            "es.schaaf.my.class"
+        });
         p.put(RemoteConstants.SERVICE_IMPORTED_CONFIGS, "unsupportetConfiguration");
         EndpointDescription endpoint = new EndpointDescription(p);
-        
-        
+
         c.replay();
-        
+
         // must be null as the endpoint doesn't contain any usable configurations
         assertNull(rsaCore.importService(endpoint));
-        // must be empty ... 
-        assertEquals(rsaCore.getImportedEndpoints().size(),0);
-        
-        
+        // must be empty ...
+        assertEquals(0, rsaCore.getImportedEndpoints().size());
+
         p.put(RemoteConstants.SERVICE_IMPORTED_CONFIGS, "org.apache.cxf.ws");
         endpoint = new EndpointDescription(p);
-        
-        
+
         ImportRegistration ireg = rsaCore.importService(endpoint);
         assertNotNull(ireg);
-        
-        assertEquals(rsaCore.getImportedEndpoints().size(),1);
-        
-        
+
+        assertEquals(1, rsaCore.getImportedEndpoints().size());
+
         // lets import the same endpoint once more -> should get a copy of the ImportRegistration
         ImportRegistration ireg2 = rsaCore.importService(endpoint);
         assertNotNull(ireg2);
-        assertEquals(rsaCore.getImportedEndpoints().size(),1);
-        
-        assertEquals(ireg,(rsaCore.getImportedEndpoints().toArray())[0]);
-
-        assertEquals(ireg.getImportReference().getImportedEndpoint(),ireg2.getImportReference().getImportedEndpoint());
-        
-        
+        assertEquals(2,rsaCore.getImportedEndpoints().size());
+
+        assertEquals(ireg, (rsaCore.getImportedEndpoints().toArray())[0]);
+
+        assertEquals(ireg.getImportReference().getImportedEndpoint(), ireg2.getImportReference()
+            .getImportedEndpoint());
+
         // remove the registration ....
-        
-        // first call shouldn't remove the import ... 
+
+        // first call shouldn't remove the import ...
         ireg2.close();
-        assertEquals(1,rsaCore.getImportedEndpoints().size());
-        
+        assertEquals(1, rsaCore.getImportedEndpoints().size());
+
         // second call should really close and remove the import ...
         ireg.close();
-        assertEquals(0,rsaCore.getImportedEndpoints().size());
-        
-        
+        assertEquals(0, rsaCore.getImportedEndpoints().size());
+
         c.verify();
-        
-        
+
     }
-    
+
     @Test
-    public void testDefaultConfigurationType(){
-        
+    public void testDefaultConfigurationType() {
+
         IMocksControl c = EasyMock.createNiceControl();
         Bundle b = c.createMock(Bundle.class);
         BundleContext bc = c.createMock(BundleContext.class);
-        
+
         c.replay();
-        
+
         RemoteServiceAdminCore rsaCore = new RemoteServiceAdminCore(bc);
-        
+
         Properties serviceProperties = new Properties();
-        
-        List<String> types  = rsaCore.determineConfigurationTypes(serviceProperties);
-        
+
+        List<String> types = rsaCore.determineConfigurationTypes(serviceProperties);
+
         c.verify();
-        
+
         assertNotNull(types);
-        assertEquals(types.size(),rsaCore.supportedConfigurationTypes.size());
-        
-        for (String type : types) {
-            assertTrue(rsaCore.supportedConfigurationTypes.contains(type));
-        }
+        assertEquals(1, types.size());
+
+        assertTrue(types.contains(org.apache.cxf.dosgi.dsw.Constants.WS_CONFIG_TYPE));
     }
-    
-    
+
     @Test
-    public void testSpecificConfigurationType(){
-        
+    public void testSpecificConfigurationType() {
+
         IMocksControl c = EasyMock.createNiceControl();
         Bundle b = c.createMock(Bundle.class);
         BundleContext bc = c.createMock(BundleContext.class);
-        
+
         c.replay();
-        
+
         RemoteServiceAdminCore rsaCore = new RemoteServiceAdminCore(bc);
-        
-        
-        
+
         Properties serviceProperties = new Properties();
-        
-        serviceProperties.setProperty(RemoteConstants.SERVICE_EXPORTED_CONFIGS, org.apache.cxf.dosgi.dsw.Constants.WS_CONFIG_TYPE);
-        
-        List<String> types  = rsaCore.determineConfigurationTypes(serviceProperties);
-        
+
+        serviceProperties.setProperty(RemoteConstants.SERVICE_EXPORTED_CONFIGS,
+                                      org.apache.cxf.dosgi.dsw.Constants.WS_CONFIG_TYPE);
+
+        List<String> types = rsaCore.determineConfigurationTypes(serviceProperties);
+
         c.verify();
-        
+
         assertNotNull(types);
-        assertEquals(1,types.size());
-        
+        assertEquals(1, types.size());
+
         assertTrue(types.contains(org.apache.cxf.dosgi.dsw.Constants.WS_CONFIG_TYPE));
     }
-    
+
 }

Modified: cxf/dosgi/trunk/dsw/cxf-topology-manager/src/test/java/org/apache/cxf/dosgi/topologymanager/ExportServiceTest.java
URL: http://svn.apache.org/viewvc/cxf/dosgi/trunk/dsw/cxf-topology-manager/src/test/java/org/apache/cxf/dosgi/topologymanager/ExportServiceTest.java?rev=917537&r1=917536&r2=917537&view=diff
==============================================================================
--- cxf/dosgi/trunk/dsw/cxf-topology-manager/src/test/java/org/apache/cxf/dosgi/topologymanager/ExportServiceTest.java (original)
+++ cxf/dosgi/trunk/dsw/cxf-topology-manager/src/test/java/org/apache/cxf/dosgi/topologymanager/ExportServiceTest.java Mon Mar  1 14:06:34 2010
@@ -22,9 +22,11 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
 
 import org.easymock.IAnswer;
-import org.easymock.IMocksControl;
+import org.easymock.classextension.IMocksControl;
 import org.easymock.classextension.EasyMock;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -53,12 +55,16 @@
     @Test
     public void testServiceExport() throws Exception {
 
+        final Semaphore sema = new Semaphore(1);
+        sema.acquire(); 
+        
         String scope = "(objectClass=abc)";
      
         IMocksControl c = EasyMock.createNiceControl();
-          
+        
+        
         BundleContext bctx = c.createMock(BundleContext.class);
-
+        
         Bundle topMgrBundle = c.createMock(Bundle.class);
         
         RemoteServiceAdmin rsa = c.createMock(RemoteServiceAdmin.class);
@@ -102,6 +108,7 @@
 
             public Object answer() throws Throwable {
                 System.out.println("Call made !!!");
+                sema.release();
                 return null;
             }
             
@@ -113,8 +120,6 @@
             EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() {
 
                 public Object answer() throws Throwable {
-                    // TODO Auto-generated method stub
-
                     System.out.println("->   addServiceListener: "
                                        + EasyMock.getCurrentArguments()[1]);
                     ServiceListener sl = (ServiceListener)EasyMock.getCurrentArguments()[0];
@@ -137,8 +142,6 @@
             EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() {
 
                 public Object answer() throws Throwable {
-                    // TODO Auto-generated method stub
-
                     System.out.println("->   addServiceListener ");
 
                     ServiceListener sl = (ServiceListener)EasyMock.getCurrentArguments()[0];
@@ -173,18 +176,17 @@
 
         }
 
-
+        
         c.replay();
 
-//        TopologyManager tm = new TopologyManager(bctx);
-//        tm.start();
+        //        TopologyManager tm = new TopologyManager(bctx);
+        //        tm.start();
 
         Activator a = new Activator();
         a.start(bctx);
         
-        try {
-            Thread.sleep(100);
-        } catch (InterruptedException e) {}
+        // Wait until the EndpointListener.endpointAdded call was made as the controlflow is asynchronous
+        sema.tryAcquire(30, TimeUnit.SECONDS);
         
         c.verify();