Bug 503733 - Concurrent modification exceptions in JEE5ModelProvider

Change-Id: I8c019b6e5e1458fde83184349d4b2026f3fe2ad9
Signed-off-by: Rob Stryker <stryker@redhat.com>
diff --git a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/JEE5ModelProvider.java b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/JEE5ModelProvider.java
index 574d0ae..b83cc0a 100644
--- a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/JEE5ModelProvider.java
+++ b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/JEE5ModelProvider.java
@@ -126,7 +126,7 @@
 			notifyListeners(evt);
 		}
 	}
-	private void addManagedResource(XMLResourceImpl res) {
+	private synchronized void addManagedResource(XMLResourceImpl res) {
 		if (res == null || modelResources.contains(res)) {
 			return;
 		}
@@ -399,10 +399,10 @@
 	/**
 	 * Remove reference to the aResource.
 	 */
-	protected boolean removeResource(Resource aResource) {
+	protected synchronized boolean removeResource(Resource aResource) {
 		if (aResource != null) {
 			aResource.eAdapters().remove(resourceAdapter);
-			return getResources().remove(aResource);
+			return modelResources.remove(aResource);
 		}
 		return false;
 	}
@@ -524,8 +524,8 @@
 		return null;
 	}
 
-	public List getResources() {
-		return modelResources;
+	public synchronized List getResources() {
+		return new ArrayList(modelResources);
 	}
 
 
@@ -538,4 +538,4 @@
 			}
 			return false;
 	}
-}
\ No newline at end of file
+}