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() 
);
+}
 }


Reply via email to