Fix FELIX-4076 
https://issues.apache.org/jira/browse/FELIX-4096

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1488880 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java b/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java
index 3214127..862eb9a 100644
--- a/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java
+++ b/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/IPojoFactory.java
@@ -84,7 +84,7 @@
     /**

      * The list of required handlers.

      */

-    protected List<RequiredHandler> m_requiredHandlers = new ArrayList<RequiredHandler>();

+    protected final List<RequiredHandler> m_requiredHandlers = new ArrayList<RequiredHandler>();

 

     /**

      * The list of factory state listeners.

@@ -161,7 +161,7 @@
             m_version = version;

         }

 

-        m_requiredHandlers = getRequiredHandlerList(); // Call sub-class to get the list of required handlers.

+        m_requiredHandlers.addAll(getRequiredHandlerList()); // Call sub-class to get the list of required handlers.

 

         m_logger.log(Logger.INFO, "New factory created : " + m_factoryName);

     }

@@ -588,7 +588,7 @@
      */

     synchronized void dispose() {

         stop(); // Does not hold the lock.

-        m_requiredHandlers = null;

+        m_requiredHandlers.clear();

         m_listeners = null;

     }

 

@@ -643,7 +643,8 @@
      */

     public void restart() {

     	// Call sub-class to get the list of required handlers.

-        m_requiredHandlers = getRequiredHandlerList();

+        m_requiredHandlers.clear();

+        m_requiredHandlers.addAll(getRequiredHandlerList());

     }

 

     /**