[219303] No notifications after editing web 2.5 models using model provider - fixed. Added listeners were disposed.
diff --git a/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/Web25MergedModelProviderFactory.java b/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/Web25MergedModelProviderFactory.java
index 927f98a..2cfae2e 100644
--- a/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/Web25MergedModelProviderFactory.java
+++ b/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/Web25MergedModelProviderFactory.java
@@ -10,11 +10,14 @@
  ***********************************************************************/
 package org.eclipse.jst.jee.model.internal;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jst.j2ee.model.IModelProvider;
 import org.eclipse.jst.j2ee.model.IModelProviderFactory;
+import org.eclipse.jst.j2ee.model.IModelProviderListener;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 
 /**
@@ -28,12 +31,27 @@
 	public IModelProvider create(IProject project) {
 		IModelProvider result = getResource(project);
 		if(result == null || ((Web25MergedModelProvider)result).isDisposed()){
+			//Transport listeners so they are not lost.
+			Collection<IModelProviderListener> listeners = new ArrayList<IModelProviderListener>();
+			if (result != null){
+				listeners = ( (Web25MergedModelProvider)result).getListeners();
+			}
 			result = new Web25MergedModelProvider(project);
+			
+			addListeners(result, listeners);
 			addResource(project, result);
 		}
 		return result;
 	}
 
+	private void addListeners(IModelProvider modelProvider,
+			Collection<IModelProviderListener> listeners) {
+		for (IModelProviderListener iModelProviderListener : listeners) {
+			if (iModelProviderListener != null)
+				modelProvider.addListener(iModelProviderListener);
+		}
+	}
+
 	public IModelProvider create(IVirtualComponent component) {
 		return create(component.getProject());
 	}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractMergedModelProvider.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractMergedModelProvider.java
index 7eedffd..ba9c21f 100644
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractMergedModelProvider.java
+++ b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractMergedModelProvider.java
@@ -196,7 +196,7 @@
 	 */
 	protected abstract IModelProvider loadDeploymentDescriptorModel() throws CoreException;
 
-	protected Collection<IModelProviderListener> getListeners() {
+	public Collection<IModelProviderListener> getListeners() {
 		if (listeners == null)
 			listeners = new ArrayList<IModelProviderListener>();
 		return listeners;