You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2009/08/19 21:28:02 UTC

svn commit: r805942 - in /felix/trunk/configadmin/src: main/java/org/apache/felix/cm/impl/ConfigurationAdminImpl.java test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java

Author: fmeschbe
Date: Wed Aug 19 19:27:58 2009
New Revision: 805942

URL: http://svn.apache.org/viewvc?rev=805942&view=rev
Log:
FELIX-1488 ConfigurationAdminImpl.getConfiguration(String) should set 
the static bundle location only if the configuration is neither
statically nor dynamically bound.

Modified:
    felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationAdminImpl.java
    felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java

Modified: felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationAdminImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationAdminImpl.java?rev=805942&r1=805941&r2=805942&view=diff
==============================================================================
--- felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationAdminImpl.java (original)
+++ felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationAdminImpl.java Wed Aug 19 19:27:58 2009
@@ -93,7 +93,7 @@
     {
         ConfigurationImpl config = configurationManager.getConfiguration( pid, getBundle().getLocation() );
 
-        if ( config.getStaticBundleLocation() == null )
+        if ( config.getBundleLocation() == null )
         {
             config.setStaticBundleLocation( this.getBundle().getLocation() );
         }

Modified: felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java?rev=805942&r1=805941&r2=805942&view=diff
==============================================================================
--- felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java (original)
+++ felix/trunk/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBaseTest.java Wed Aug 19 19:27:58 2009
@@ -29,6 +29,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
 import org.osgi.framework.Constants;
 import org.osgi.service.cm.Configuration;
@@ -134,7 +135,7 @@
         delay();
 
         // ==> update with null
-        TestCase.assertNull( tester.configs.get( pid ));
+        TestCase.assertNull( tester.configs.get( pid ) );
         TestCase.assertEquals( 0, tester.numManagedServiceUpdatedCalls );
         TestCase.assertEquals( 1, tester.numManagedServiceFactoryUpdatedCalls );
         TestCase.assertEquals( 1, tester.numManagedServiceFactoryDeleteCalls );
@@ -172,7 +173,7 @@
         delay();
 
         // ==> update with null
-        TestCase.assertNull( tester.configs.get( pid ));
+        TestCase.assertNull( tester.configs.get( pid ) );
         TestCase.assertEquals( 0, tester.numManagedServiceUpdatedCalls );
         TestCase.assertEquals( 1, tester.numManagedServiceFactoryUpdatedCalls );
         TestCase.assertEquals( 1, tester.numManagedServiceFactoryDeleteCalls );
@@ -282,4 +283,63 @@
         // remove the configuration for good
         deleteConfig( pid );
     }
+
+
+    @Test
+    public void test_listConfiguration() throws BundleException, IOException
+    {
+        // 1. create a new Conf1 with pid1 and null location.
+        // 2. Conf1#update(props) is called.
+        final String pid = "test_listConfiguration";
+        final Configuration config = configure( pid, null, true );
+
+        // 3. bundleA will locationA registers ManagedServiceA with pid1.
+        bundle = installBundle( pid );
+        bundle.start();
+        delay();
+
+        // ==> ManagedServiceA is called back.
+        final ManagedServiceTestActivator tester = ManagedServiceTestActivator.INSTANCE;
+        TestCase.assertNotNull( tester );
+        TestCase.assertNotNull( tester.props );
+        TestCase.assertEquals( 1, tester.numManagedServiceUpdatedCalls );
+
+        // 4. bundleA is stopped but *NOT uninstalled*.
+        bundle.stop();
+        delay();
+
+        // 5. test bundle calls cm.listConfigurations(null).
+        final Configuration listed = getConfiguration( pid );
+
+        // ==> Conf1 is included in the returned list and
+        // it has locationA.
+        // (In debug mode, dynamicBundleLocation==locationA
+        // and staticBundleLocation==null)
+        TestCase.assertNotNull( listed );
+        TestCase.assertEquals( bundle.getLocation(), listed.getBundleLocation() );
+
+        // 6. test bundle calls cm.getConfiguration(pid1)
+        final Configuration get = getConfigurationAdmin().getConfiguration( pid );
+        TestCase.assertEquals( bundle.getLocation(), get.getBundleLocation() );
+
+        final Bundle cmBundle = getCmBundle();
+        cmBundle.stop();
+        delay();
+        cmBundle.start();
+        delay();
+
+        // 5. test bundle calls cm.listConfigurations(null).
+        final Configuration listed2 = getConfiguration( pid );
+
+        // ==> Conf1 is included in the returned list and
+        // it has locationA.
+        // (In debug mode, dynamicBundleLocation==locationA
+        // and staticBundleLocation==null)
+        TestCase.assertNotNull( listed2 );
+        TestCase.assertEquals( bundle.getLocation(), listed2.getBundleLocation() );
+
+        // 6. test bundle calls cm.getConfiguration(pid1)
+        final Configuration get2 = getConfigurationAdmin().getConfiguration( pid );
+        TestCase.assertEquals( bundle.getLocation(), get2.getBundleLocation() );
+}
 }