Author: jawi
Date: Fri Feb 26 19:28:56 2016
New Revision: 1732546

URL: http://svn.apache.org/viewvc?rev=1732546&view=rev
Log:
Test fixes; made test delay configurable.

Modified:
    ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java
    
ace/trunk/org.apache.ace.useradmin/src/org/apache/ace/useradmin/repository/Activator.java

Modified: 
ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java
URL: 
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java?rev=1732546&r1=1732545&r2=1732546&view=diff
==============================================================================
--- 
ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java 
(original)
+++ 
ace/trunk/org.apache.ace.test/src/org/apache/ace/it/IntegrationTestBase.java 
Fri Feb 26 19:28:56 2016
@@ -615,7 +615,7 @@ public class IntegrationTestBase extends
 
             // XXX it appears we run into race conditions between the setup 
and configuration of our services, use a
             // little delay to get things settled seems to help here...
-            TimeUnit.MILLISECONDS.sleep(300);
+            
TimeUnit.MILLISECONDS.sleep(Integer.getInteger("org.apache.ace.it.testDelay", 
500));
 
             configureAdditionalServices();
         }

Modified: 
ace/trunk/org.apache.ace.useradmin/src/org/apache/ace/useradmin/repository/Activator.java
URL: 
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.useradmin/src/org/apache/ace/useradmin/repository/Activator.java?rev=1732546&r1=1732545&r2=1732546&view=diff
==============================================================================
--- 
ace/trunk/org.apache.ace.useradmin/src/org/apache/ace/useradmin/repository/Activator.java
 (original)
+++ 
ace/trunk/org.apache.ace.useradmin/src/org/apache/ace/useradmin/repository/Activator.java
 Fri Feb 26 19:28:56 2016
@@ -23,12 +23,16 @@ import static org.apache.ace.repository.
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Dictionary;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Properties;
 
 import org.apache.ace.connectionfactory.ConnectionFactory;
 import org.apache.ace.repository.Repository;
 import org.apache.ace.repository.ext.impl.RemoteRepository;
+import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
 import org.apache.felix.useradmin.RoleRepositoryStore;
@@ -45,6 +49,8 @@ public class Activator extends Dependenc
     public static final String KEY_REPOSITORY_NAME = "repositoryName";
     public static final String KEY_REPOSITORY_LOCATION = "repositoryLocation";
 
+    private final List<Component> m_components = new ArrayList<>();
+
     private volatile DependencyManager m_manager;
 
     @Override
@@ -56,6 +62,12 @@ public class Activator extends Dependenc
 
     @Override
     public void updated(Dictionary<String, ?> properties) throws 
ConfigurationException {
+        removeOldComponents();
+
+        if (properties == null) {
+            return;
+        }
+
         String customer = (String) properties.get(KEY_REPOSITORY_CUSTOMER);
         if ((customer == null) || "".equals(customer.trim())) {
             throw new ConfigurationException(KEY_REPOSITORY_CUSTOMER, 
"Repository customer has to be specified.");
@@ -81,11 +93,12 @@ public class Activator extends Dependenc
 
         String repoFilter = 
String.format("(&(customer=%s)(name=%s)(|(master=true)(remote=true)))", 
customer, name);
 
-        m_manager.add(m_manager.createComponent()
+        Component repoComp = null;
+        Component storeComp = m_manager.createComponent()
             .setInterface(new String[] { RoleRepositoryStore.class.getName(), 
UserAdminListener.class.getName() }, null)
             .setImplementation(UserAdminRepository.class)
             
.add(m_manager.createServiceDependency().setService(Repository.class, 
repoFilter).setRequired(true))
-            
.add(m_manager.createServiceDependency().setService(LogService.class).setRequired(false)));
+            
.add(m_manager.createServiceDependency().setService(LogService.class).setRequired(false));
 
         if (repositoryUrl != null) {
             // Remote version...
@@ -94,12 +107,32 @@ public class Activator extends Dependenc
             repoProps.put(REPOSITORY_NAME, name);
             repoProps.put("remote", "true");
 
-            m_manager.add(m_manager.createComponent()
+            repoComp = m_manager.createComponent()
                 .setInterface(Repository.class.getName(), repoProps)
                 .setImplementation(new RemoteRepository(repositoryUrl, 
customer, name))
                 .add(m_manager.createServiceDependency()
                     .setService(ConnectionFactory.class)
-                    .setRequired(true)));
+                    .setRequired(true));
+        }
+
+        synchronized (m_components) {
+            m_components.add(storeComp);
+            m_manager.add(storeComp);
+
+            if (repoComp != null) {
+                m_components.add(repoComp);
+                m_manager.add(repoComp);
+            }
+        }
+    }
+
+    private void removeOldComponents() {
+        synchronized (m_components) {
+            Iterator<Component> iter = m_components.iterator();
+            while (iter.hasNext()) {
+                m_manager.remove(iter.next());
+                iter.remove();
+            }
         }
     }
 }


Reply via email to