EXTSCRIPT-168

fix for the concurrent modification exception

git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk@1369850 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ExtScriptScannerService.java b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ExtScriptScannerService.java
index 696dd71..817279f 100644
--- a/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ExtScriptScannerService.java
+++ b/extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ExtScriptScannerService.java
@@ -65,9 +65,13 @@
     {
         try
         {
-            StartupServletContextPluginChainLoader.startup(servletContext);
-            servletContext.setAttribute(RELOADING_LISTENER, new ReloadingListener());
-            WeavingContext.getInstance().addListener((ReloadingListener) servletContext.getAttribute(RELOADING_LISTENER));
+
+            if (servletContext.getAttribute(RELOADING_LISTENER) == null)
+            {
+                StartupServletContextPluginChainLoader.startup(servletContext);
+                servletContext.setAttribute(RELOADING_LISTENER, new ReloadingListener());
+                WeavingContext.getInstance().addListener((ReloadingListener) servletContext.getAttribute(RELOADING_LISTENER));
+            }
         }
         catch (IOException e)
         {
diff --git a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java
index 2d81aec..82facc4 100644
--- a/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java
+++ b/extscript-core-root/extscript-core/src/main/java/org/apache/myfaces/extensions/scripting/core/api/WeavingContext.java
@@ -150,7 +150,9 @@
 
     
     public void addListener(WeavingEventListener listener) {
-        _listeners.put(listener,"");
+        if(!_listeners.containsKey(listener)) {
+            _listeners.put(listener,"");
+        }
     }
     
     public void removeListener(WeavingEventListener listener) {
diff --git a/extscript-examples/cdi-example/src/main/webapp/helloWorld.xhtml b/extscript-examples/cdi-example/src/main/webapp/helloWorld.xhtml
index 1eea0d1..14855b0 100644
--- a/extscript-examples/cdi-example/src/main/webapp/helloWorld.xhtml
+++ b/extscript-examples/cdi-example/src/main/webapp/helloWorld.xhtml
@@ -26,8 +26,8 @@
     <title>Hello World</title>
 </h:head>
 <h:body>
-    aaa
+
     <h:outputText value="#{javaHello.helloWorld}" />
-    aaa
+
 </h:body>
 </html>