dependencymanager/org.apache.felix.dependencymanager.itest/src/org/apache/felix/dm/itest/api/AutoConfigTest.java [41:147]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
public class AutoConfigTest extends TestBase {
    private final Ensure m_ensure = new Ensure();

    public void testField() throws Exception {
        final DependencyManager dm = getDM();
        // Create a consumer, depending on some providers (autoconfig field).
        ConsumeWithProviderField consumer = new ConsumeWithProviderField();
        Component c = createConsumer(dm, consumer);
        // Create two providers
        Component p1 = createProvider(dm, 10, new Provider() {
            public String toString() { return "provider1"; }
            public void run() { m_ensure.step(); }
        });
        Component p2 = createProvider(dm, 20, new Provider() {
            public String toString() { return "provider2"; }
            public void run() { m_ensure.step(); }
        });

        // add the two providers
        dm.add(p2);
        dm.add(p1);
        // add the consumer, which should have been injected with provider2 (highest rank)
        dm.add(c);
        m_ensure.waitForStep(1, 5000);
        // remove the provider2, the consumer should now be injected with provider1
        dm.remove(p2);
        Assert.assertNotNull(consumer.getProvider());
        Assert.assertEquals("provider1", consumer.getProvider().toString());
        // remove the provider1, the consumer should have been stopped
        dm.remove(p1);
        m_ensure.waitForStep(2, 5000);
        dm.clear();
    }
    
    public void testIterableField() throws Exception {
        final DependencyManager dm = getDM();
        ConsumerWithIterableField consumer = new ConsumerWithIterableField();
        Component c = createConsumer(dm, consumer);
        Component p1 = createProvider(dm, 10, new Provider() {
            public void run() { m_ensure.step(); }
            public String toString() { return "provider1"; }
        });
        Component p2 = createProvider(dm, 20, new Provider() {
            public void run() { m_ensure.step();}
            public String toString() { return "provider2"; }
        });

        dm.add(p2);
        dm.add(p1);
        dm.add(c);
        // the consumer should have been injected with all providers.
        m_ensure.waitForStep(3, 5000);
        
        // check if all providers are there
        Assert.assertNotNull(consumer.getProvider("provider1"));
        Assert.assertNotNull(consumer.getProvider("provider2"));
        
        // remove provider1
        dm.remove(p1);
        
        // check if provider1 has been removed and if provider2 is still there
        Assert.assertNull(consumer.getProvider("provider1"));
        Assert.assertNotNull(consumer.getProvider("provider2"));

        // remove provider2, the consumer should be stopped
        dm.remove(p2);
        m_ensure.waitForStep(4, 5000);
        dm.clear();
    }   
    
    public void testMapField() throws Exception {
        final DependencyManager dm = getDM();
        ConsumerWithMapField consumer = new ConsumerWithMapField();
        Component c = createConsumer(dm, consumer);
        Component p1 = createProvider(dm, 10, new Provider() {
            public void run() { m_ensure.step(); }
            public String toString() { return "provider1"; }
        });
        Component p2 = createProvider(dm, 20, new Provider() {
            public void run() { m_ensure.step();}
            public String toString() { return "provider2"; }
        });

        dm.add(p2);
        dm.add(p1);
        dm.add(c);
        // the consumer should have been injected with all providers.
        m_ensure.waitForStep(3, 5000);
        
        // check if all providers are there
        Assert.assertNotNull(consumer.getProvider("provider1"));
        Assert.assertNotNull(consumer.getProvider("provider2"));
        
        // remove provider1
        dm.remove(p1);
        
        // check if provider1 has been removed and if provider2 is still there
        Assert.assertNull(consumer.getProvider("provider1"));
        Assert.assertNotNull(consumer.getProvider("provider2"));

        // remove provider2, the consumer should be stopped
        dm.remove(p2);
        m_ensure.waitForStep(4, 5000);
        dm.clear();
    }

    private Component createProvider(DependencyManager dm, int rank, Provider provider) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



dependencymanager/org.apache.felix.dependencymanager.lambda.itest/src/org/apache/felix/dm/lambda/itest/AutoConfigTest.java [40:146]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
public class AutoConfigTest extends TestBase {
    private final Ensure m_ensure = new Ensure();

    public void testField() throws Exception {
        final DependencyManager dm = getDM();
        // Create a consumer, depending on some providers (autoconfig field).
        ConsumeWithProviderField consumer = new ConsumeWithProviderField();
        Component c = createConsumer(dm, consumer);
        // Create two providers
        Component p1 = createProvider(dm, 10, new Provider() {
            public String toString() { return "provider1"; }
            public void run() { m_ensure.step(); }
        });
        Component p2 = createProvider(dm, 20, new Provider() {
            public String toString() { return "provider2"; }
            public void run() { m_ensure.step(); }
        });

        // add the two providers
        dm.add(p2);
        dm.add(p1);
        // add the consumer, which should have been injected with provider2 (highest rank)
        dm.add(c);
        m_ensure.waitForStep(1, 5000);
        // remove the provider2, the consumer should now be injected with provider1
        dm.remove(p2);
        Assert.assertNotNull(consumer.getProvider());
        Assert.assertEquals("provider1", consumer.getProvider().toString());
        // remove the provider1, the consumer should have been stopped
        dm.remove(p1);
        m_ensure.waitForStep(2, 5000);
        dm.clear();
    }
    
    public void testIterableField() throws Exception {
        final DependencyManager dm = getDM();
        ConsumerWithIterableField consumer = new ConsumerWithIterableField();
        Component c = createConsumer(dm, consumer);
        Component p1 = createProvider(dm, 10, new Provider() {
            public void run() { m_ensure.step(); }
            public String toString() { return "provider1"; }
        });
        Component p2 = createProvider(dm, 20, new Provider() {
            public void run() { m_ensure.step();}
            public String toString() { return "provider2"; }
        });

        dm.add(p2);
        dm.add(p1);
        dm.add(c);
        // the consumer should have been injected with all providers.
        m_ensure.waitForStep(3, 5000);
        
        // check if all providers are there
        Assert.assertNotNull(consumer.getProvider("provider1"));
        Assert.assertNotNull(consumer.getProvider("provider2"));
        
        // remove provider1
        dm.remove(p1);
        
        // check if provider1 has been removed and if provider2 is still there
        Assert.assertNull(consumer.getProvider("provider1"));
        Assert.assertNotNull(consumer.getProvider("provider2"));

        // remove provider2, the consumer should be stopped
        dm.remove(p2);
        m_ensure.waitForStep(4, 5000);
        dm.clear();
    }   
    
    public void testMapField() throws Exception {
        final DependencyManager dm = getDM();
        ConsumerWithMapField consumer = new ConsumerWithMapField();
        Component c = createConsumer(dm, consumer);
        Component p1 = createProvider(dm, 10, new Provider() {
            public void run() { m_ensure.step(); }
            public String toString() { return "provider1"; }
        });
        Component p2 = createProvider(dm, 20, new Provider() {
            public void run() { m_ensure.step();}
            public String toString() { return "provider2"; }
        });

        dm.add(p2);
        dm.add(p1);
        dm.add(c);
        // the consumer should have been injected with all providers.
        m_ensure.waitForStep(3, 5000);
        
        // check if all providers are there
        Assert.assertNotNull(consumer.getProvider("provider1"));
        Assert.assertNotNull(consumer.getProvider("provider2"));
        
        // remove provider1
        dm.remove(p1);
        
        // check if provider1 has been removed and if provider2 is still there
        Assert.assertNull(consumer.getProvider("provider1"));
        Assert.assertNotNull(consumer.getProvider("provider2"));

        // remove provider2, the consumer should be stopped
        dm.remove(p2);
        m_ensure.waitForStep(4, 5000);
        dm.clear();
    }

    private Component createProvider(DependencyManager dm, int rank, Provider provider) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



