fix for close/reopen with web services for JL
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesManager.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesManager.java
index fc41a85..fade7a0 100644
--- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesManager.java
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/webservices/WebServicesManager.java
@@ -782,30 +782,44 @@
 			// Handle project adds
 			if (delta.getKind() == IResourceDelta.ADDED) {
 				WebServiceEditModel editModel = getWebServiceEditModelForProject(p);
-				if (editModel != null && !getEditModels().containsValue(editModel)) {
-					getEditModels().put(p, editModel);
+				if (editModel !=null && !getEditModels().containsValue(editModel)) {
+					getEditModels().put(p,editModel);
 					editModel.addListener(this);
 					// forward an edit model event to manager's listeners
-					notifyListeners(new EditModelEvent(EditModelEvent.ADDED_RESOURCE, editModel));
+					notifyListeners(new EditModelEvent(EditModelEvent.ADDED_RESOURCE,editModel));
 					return false;
 				}
 			}
-			// Handle project removals
+			// Handle project close events removals
+			else if (delta.getKind() == IResourceDelta.CHANGED) {
+				boolean projectOpenStateChanged = ((delta.getFlags() & IResourceDelta.OPEN) != 0);
+				if (projectOpenStateChanged) {
+				WebServiceEditModel editModel = (WebServiceEditModel)getEditModels().get(p);
+					if (editModel !=null) {
+						editModel.removeListener(this);
+						getEditModels().remove(p);
+						notifyListeners(new EditModelEvent(EditModelEvent.REMOVED_RESOURCE,editModel));
+						return false;
+					}		
+				}
+			}
+			// Handle project delete events
 			else if (delta.getKind() == IResourceDelta.REMOVED) {
-				WebServiceEditModel editModel = (WebServiceEditModel) getEditModels().get(p);
-				if (editModel != null) {
+				WebServiceEditModel editModel = (WebServiceEditModel)getEditModels().get(p);
+				if (editModel !=null) {
 					editModel.removeListener(this);
 					getEditModels().remove(p);
-					notifyListeners(new EditModelEvent(EditModelEvent.REMOVED_RESOURCE, editModel));
+					notifyListeners(new EditModelEvent(EditModelEvent.REMOVED_RESOURCE,editModel));
 					return false;
-				}
+				}		
 			}
-		} else if (resource.getType() == IResource.FILE && isInterrestedInFile((IFile) resource)) {
+		}
+		else if (resource.getType() == IResource.FILE && isInterrestedInFile((IFile) resource)) {
 			if ((delta.getKind() == IResourceDelta.ADDED) || ((delta.getFlags() & IResourceDelta.MOVED_TO) != 0))
 				if (resource.getFileExtension().equals(WSDL_EXT))
-					addedWsdl((IFile) resource);
+				    addedWsdl((IFile) resource);
 				else if (resource.getFileExtension().equals(WSIL_EXT))
-					addedWsil((IFile) resource);
+				    addedWsil((IFile)resource);
 			return false;
 		}
 		return true;