[323667] Remove dependency on J2EE tools' WebServicesManager
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUI.properties b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUI.properties
index 0b4d6ba..c0a4757 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUI.properties
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUI.properties
@@ -239,6 +239,7 @@
 
 MSG_PROJECT_MUST_EXIST=No server can be found and {0} does not exist. Choose an existing project or use the preferences to configure a server runtime.  
 
+MSG_LOADING_WEB_SERVICE=Loading Web Services
 
 # WebServiceClientRuntimeSelectionPage
 PAGE_TITLE_WS_CLIENT_RUNTIME_SELECTION=Client Environment Configuration
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUIMessages.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUIMessages.java
index 6b1a2ec..7259339 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUIMessages.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUIMessages.java
@@ -403,6 +403,7 @@
     public static String MSG_INFO_WSDL_OPERATION_TIMED_OUT;
     public static String MSG_SERVER_NOT_FOUND_WARNING;
     public static String MSG_WARN_CONVERTED_TO_UTIL;
+    public static String MSG_LOADING_WEB_SERVICE;
 
 
 	static {
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServiceEvent.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServiceEvent.java
new file mode 100644
index 0000000..43e5665
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServiceEvent.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.consumption.ui.helper;
+
+public class WebServiceEvent {
+
+	public static final int REFRESH = 1;
+	public static final int REMOVE = 0;
+	
+	private int eventType = 0;
+	
+	public WebServiceEvent(int anEventType) {
+		super();
+		eventType = anEventType;
+	}
+	
+	public int getEventType() {
+		return eventType;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServiceManagerListener.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServiceManagerListener.java
new file mode 100644
index 0000000..c44593c
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServiceManagerListener.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.consumption.ui.helper;
+
+public interface WebServiceManagerListener {
+
+	public void webServiceManagerChanged(WebServiceEvent anEvent);
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServicesManager.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServicesManager.java
new file mode 100644
index 0000000..f90468b
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/helper/WebServicesManager.java
@@ -0,0 +1,1062 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.consumption.ui.helper;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
+import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.jst.j2ee.client.ApplicationClient;
+import org.eclipse.jst.j2ee.client.ApplicationClientResource;
+import org.eclipse.jst.j2ee.ejb.EJBJar;
+import org.eclipse.jst.j2ee.ejb.EJBResource;
+import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.j2ee.internal.common.J2EEVersionUtil;
+import org.eclipse.jst.j2ee.internal.common.XMLResource;
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.internal.webservice.componentcore.util.WSCDDArtifactEdit;
+import org.eclipse.jst.j2ee.internal.webservice.componentcore.util.WSDDArtifactEdit;
+import org.eclipse.jst.j2ee.internal.webservices.WSDLServiceExtManager;
+import org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper;
+import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
+import org.eclipse.jst.j2ee.webapplication.WebApp;
+import org.eclipse.jst.j2ee.webapplication.WebAppResource;
+import org.eclipse.jst.j2ee.webservice.wsclient.ComponentScopedRefs;
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesClient;
+import org.eclipse.jst.j2ee.webservice.wsclient.WebServicesResource;
+import org.eclipse.jst.j2ee.webservice.wsdd.PortComponent;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServices;
+import org.eclipse.jst.j2ee.webservice.wsdd.WsddResource;
+import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.wst.common.componentcore.ArtifactEdit;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.ModuleCoreNature;
+import org.eclipse.wst.common.componentcore.internal.ArtifactEditModel;
+import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualResource;
+import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent;
+import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener;
+
+/**
+ * Internal API class
+ * 
+ * This utility class is meant to aid in managing webservice(jsr109) metadata related to Java EE 1.4 or earlier
+ * 
+ * Marking as @frozen to support <= Java EE 1.4
+ * 
+ */
+public class WebServicesManager implements EditModelListener, IResourceChangeListener, IResourceDeltaVisitor {
+
+	private HashMap wsArtifactEdits = new HashMap();
+	private HashMap wsClientArtifactEdits = new HashMap();
+	private List wsArtifactEditsList;
+	private List wsClientArtifactEditsList;
+	private static WebServicesManager INSTANCE = null;
+	private List listeners;
+	private List removedListeners = new ArrayList();
+	private boolean isNotifying = false;
+	private boolean wsClientElementsChanged = true;
+	private boolean wsElementsChanged = true;
+	private ProcessProjectsWithWSDL processNewProjects;
+
+	public static final String WSDL_EXT = "wsdl"; //$NON-NLS-1$
+	public static final String WSIL_EXT = "wsil"; //$NON-NLS-1$
+
+	public synchronized static WebServicesManager getInstance() {
+		if (INSTANCE == null)
+			INSTANCE = new WebServicesManager();
+		return INSTANCE;
+	}
+
+	public static  boolean isFileInteresting(IFile aFile) {
+		if (aFile != null && aFile.getFileExtension() != null) {
+			String extension = aFile.getFileExtension();
+			return extension.equals(WSDL_EXT) || extension.equals(WSIL_EXT) 
+			|| aFile.getName().equals(J2EEConstants.WEB_SERVICES_CLIENT_SHORTNAME) 
+			|| aFile.getName().equals(J2EEConstants.WEB_SERVICES_DD_URI);
+		}
+		return false;
+	}
+	/**
+	 * Default Constructor
+	 */
+	public WebServicesManager() {
+		super();
+		init();
+	}
+
+	private void init() {
+		collectArtifactEdits();
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
+	}
+	
+	private void addArtifactEdit(IProject handle) {
+		synchronized(wsArtifactEdits) {
+			if (!wsArtifactEdits.containsKey(handle)) {
+				WSDDArtifactEdit edit = WSDDArtifactEdit.getWSDDArtifactEditForRead(handle);
+				if (edit != null) {
+					WebServices webServices = edit.getWebServices();
+					// If the project has a webservice.xml with internal services or 
+					// it has .wsil files with external services, we cache the artifact edit
+					if ((webServices != null && !webServices.getWebServiceDescriptions().isEmpty()) || !edit.getWSILResources().isEmpty()) {
+						edit.addListener(this);
+						wsArtifactEdits.put(handle, edit);
+						wsElementsChanged = true;
+					// Otherwise, dispose the artifact edit
+					} else {
+						edit.dispose();
+					}
+				}
+			}
+		}
+		synchronized (wsClientArtifactEdits) {
+			if (!wsClientArtifactEdits.containsKey(handle)) {
+				WSCDDArtifactEdit edit = WSCDDArtifactEdit.getWSCDDArtifactEditForRead(handle);
+				if (edit != null) {
+					WebServicesResource res = edit.getWscddXmiResource();
+					boolean isInterested = false;
+					// Does the project have 1.3 web service clients?
+					if (res != null && res.isLoaded() && res.getWebServicesClient() != null)
+						isInterested = true;
+					
+					// Does the project have 1.4 web service clients?
+					List wsClientEdits = new ArrayList();
+					wsClientEdits.add(edit);
+					//if (!getWorkspace14ServiceRefs(wsClientEdits).isEmpty())
+						isInterested = true;
+					
+					// If project has 1.3 or 1.4 web service clients, cache the artifact edit
+					if (isInterested) {
+						edit.addListener(this);
+						wsClientArtifactEdits.put(handle, edit);
+						wsClientElementsChanged = true;
+					// Otherwise, dispose the artifact edit	
+					} else {
+						edit.dispose();
+					}
+				}
+			}
+		}
+	}
+	
+	private void removeArtifactEdit(IProject handle) {
+		synchronized(wsArtifactEdits) {
+			if (wsArtifactEdits.containsKey(handle)) {
+				ArtifactEdit edit = (ArtifactEdit) wsArtifactEdits.get(handle);
+				if (edit != null) {
+					wsArtifactEdits.remove(handle);
+					edit.removeListener(this);
+					edit.dispose();
+					wsElementsChanged = true;
+				}
+			}
+		}
+		synchronized (wsClientArtifactEdits) {
+			if (wsClientArtifactEdits.containsKey(handle)) {
+				ArtifactEdit edit = (ArtifactEdit) wsClientArtifactEdits.get(handle);
+				if (edit != null) {
+					wsClientArtifactEdits.remove(handle);
+					edit.removeListener(this);
+					edit.dispose();
+					wsClientElementsChanged = true;
+				}
+			}
+		}
+	}
+
+	private void collectArtifactEdits() {
+		IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+		for (int i = 0; i < projects.length; i++) {
+			IProject project = projects[i];
+			IVirtualComponent component = ComponentCore.createComponent(project);
+			try {
+				if (!ModuleCoreNature.isFlexibleProject(project) || JavaEEProjectUtilities.isEARProject(project) || JavaEEProjectUtilities.isStaticWebProject(project))
+					continue;
+			} catch (Exception e) {
+				continue;
+			}
+			addArtifactEdit(component.getProject());
+		}
+	}
+
+	/**
+	 * @return Returns the artifact edit iterator for web service artifact edits
+	 */
+	private List getWSArtifactEdits() {
+		synchronized (wsArtifactEdits) {
+			if (wsElementsChanged) {
+				wsArtifactEditsList = new ArrayList();
+				wsArtifactEditsList.addAll(wsArtifactEdits.values());
+				wsElementsChanged = false;
+			}
+		}
+		return wsArtifactEditsList;
+	}
+	
+	/**
+	 * @return Returns the editModels.
+	 */
+	private List getWSClientArtifactEdits() {
+		synchronized (wsClientArtifactEdits) {
+			if (wsClientElementsChanged) {
+				wsClientArtifactEditsList = new ArrayList();
+				wsClientArtifactEditsList.addAll(wsClientArtifactEdits.values());
+				wsClientElementsChanged = false;
+			}
+		}
+		return wsClientArtifactEditsList;
+	}
+
+	private List getListeners() {
+		if (listeners == null)
+			listeners = new ArrayList();
+		return listeners;
+	}
+
+	/**
+	 * Add aListener to the list of listeners.
+	 */
+	public void addListener(WebServiceManagerListener aListener) {
+		if (aListener != null && !getListeners().contains(aListener))
+			getListeners().add(aListener);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.common.internal.emfworkbench.integration.EditModelListener#editModelChanged(org.eclipse.wst.common.internal.emfworkbench.integration.EditModelEvent)
+	 */
+	public void editModelChanged(EditModelEvent anEvent) {
+		if (anEvent == null)
+			return;
+		if (anEvent.getEventCode()==EditModelEvent.UNLOADED_RESOURCE) {
+			List resources = anEvent.getChangedResources();
+			for (int i=0; i<resources.size(); i++) {
+				Resource res = (Resource) resources.get(i);
+				if (isInterestedInResource(res))
+					notifyListeners(anEvent.getEventCode());
+			}
+		}
+		else if (anEvent.getEventCode() == EditModelEvent.PRE_DISPOSE) {
+			ArtifactEditModel editModel = (ArtifactEditModel) anEvent.getEditModel();
+			if (editModel == null || editModel.getProject() == null)
+				return;
+			removeArtifactEdit(editModel.getProject());
+			notifyListeners(anEvent.getEventCode());
+		}
+	}
+
+
+	/**
+	 * Notify listeners of
+	 * 
+	 * @anEvent.
+	 */
+	protected void notifyListeners(int anEventType) {
+		if (listeners == null)
+			return;
+		synchronized (this) {
+			isNotifying = true;
+		}
+		try {
+			WebServiceEvent webServiceEvent = null;
+			
+			switch (anEventType) {
+			case EditModelEvent.UNLOADED_RESOURCE:
+			case EditModelEvent.PRE_DISPOSE:
+			case EditModelEvent.REMOVED_RESOURCE:
+				webServiceEvent = new WebServiceEvent(WebServiceEvent.REMOVE);
+				break;
+			default:
+				if (!getAllWorkspaceServiceRefs().isEmpty() || !getAllWSDLServices().isEmpty())
+					webServiceEvent = new WebServiceEvent(WebServiceEvent.REFRESH);
+			}
+			List list = getListeners();
+			if (webServiceEvent!=null) {
+				for (int i = 0; i < list.size(); i++) {
+					((WebServiceManagerListener) list.get(i)).webServiceManagerChanged(webServiceEvent);
+				}
+			}
+		} finally {
+			synchronized (this) {
+				isNotifying = false;
+				if (removedListeners != null && !removedListeners.isEmpty()) {
+					for (int i = 0; i < removedListeners.size(); i++)
+						listeners.remove(removedListeners.get(i));
+					removedListeners.clear();
+				}
+			}
+		}
+	}
+
+	/**
+	 * Remove aListener from the list of listeners.
+	 */
+	public synchronized boolean removeListener(WebServiceManagerListener aListener) {
+		if (aListener != null) {
+			if (isNotifying)
+				return removedListeners.add(aListener);
+			return getListeners().remove(aListener);
+		}
+		return false;
+	}
+
+	private void releaseArtifactEdits() {
+		synchronized (wsArtifactEdits) {
+			Iterator iter = wsArtifactEdits.values().iterator();
+			while (iter.hasNext()) {
+				WSDDArtifactEdit artifactEdit = (WSDDArtifactEdit) iter.next();
+				artifactEdit.removeListener(this);
+				artifactEdit.dispose();
+			}
+			wsArtifactEdits.clear();
+		}
+		
+		synchronized (wsClientArtifactEdits) {
+			Iterator iter = wsClientArtifactEdits.values().iterator();
+			while (iter.hasNext()) {
+				WSCDDArtifactEdit artifactEdit = (WSCDDArtifactEdit) iter.next();
+				artifactEdit.removeListener(this);
+				artifactEdit.dispose();
+			}
+			wsClientArtifactEdits.clear();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
+	 */
+	public void resourceChanged(IResourceChangeEvent event) {
+		acceptDelta(event);
+	}
+
+
+	protected void acceptDelta(IResourceChangeEvent event) {
+		IResourceDelta delta = event.getDelta();
+		// search for changes to any projects using a visitor
+		if (delta != null) {
+			try {
+				delta.accept(this);
+				
+			} catch (Exception e) {
+				Logger.getLogger().logError(e);
+			}
+		}
+	}
+
+	/**
+	 * returns a list of internal web services descriptions in the workspace
+	 */
+	public List getInternalWebServicesDescriptions() {
+		List result = new ArrayList();
+		List webServices = getInternalWebServices();
+		for (int i = 0; i < webServices.size(); i++) {
+			WebServices webService = (WebServices) webServices.get(i);
+			if (webService != null)
+				result.addAll(webService.getWebServiceDescriptions());
+		}
+		return result;
+	}
+
+	/**
+	 * @return all internal web services instances in workspace
+	 */
+	public List getInternalWebServices() {
+		List result = new ArrayList();
+		Iterator iter = getWSArtifactEdits().iterator();
+		while (iter.hasNext()) {
+			WSDDArtifactEdit artifactEdit = (WSDDArtifactEdit) iter.next();
+			WebServices webServices = artifactEdit.getWebServices();
+			if (webServices != null)
+				result.add(webServices);
+		}
+		return result;
+	}
+
+	/**
+	 * returns a list of all the internal wsdl services in wsdl's pointed to by wsdd's
+	 */
+	public List getInternalWSDLServices() {
+		return getWSDLServicesFromWSDLResources(getInternalWSDLResources());
+	}
+
+	public List getInternalWSDLResources() {
+		List result = new ArrayList();
+		List wsddWebServices = getInternalWebServicesDescriptions();
+		for (int i = 0; i < wsddWebServices.size(); i++) {
+			WebServiceDescription webServices = (WebServiceDescription) wsddWebServices.get(i);
+			Resource wsdl = getWSDLResource(webServices);
+			if (wsdl != null && !result.contains(wsdl))
+				result.add(wsdl);
+		}
+		return result;
+	}
+
+		public List getExternalWSDLResources() {
+			//TODO fix up for basis off .wsil
+			List result = getWorkspaceWSDLResources();
+			result.removeAll(getInternalWSDLResources());
+			List serviceRefs = getAllWorkspaceServiceRefs();
+			for (int i=0; i<serviceRefs.size(); i++) {
+				ServiceRef ref = (ServiceRef) serviceRefs.get(i);
+				try {
+					Resource res = WorkbenchResourceHelperBase.getResource(URI.createURI(ref.getWsdlFile()), true);
+					if (res !=null && result.contains(res))
+						result.remove(res);
+				} catch (Exception e) {
+					//Ignore
+				}
+			}
+			return result;
+		}
+		
+	public boolean isServiceInternal(EObject service) {
+		return getInternalWSDLResources().contains(getWSDLResource(service));
+	}
+
+	private List getWSDLServicesFromWSDLResources(List wsdlResources) {
+		List result = new ArrayList();
+		for (int i = 0; i < wsdlResources.size(); i++) {
+			Resource wsdl = (Resource) wsdlResources.get(i);
+			List services = getWSDLServices(wsdl);
+			if (wsdl != null && services != null && !services.isEmpty())
+				result.addAll(services);
+		}
+		return result;
+	}
+
+	public List getExternalWSDLServices() {
+		List result = getWsdlServicesFromWorkspaceWSILs();
+		result.removeAll(getInternalWSDLServices());
+		return result;
+	}
+
+	public List getWsdlServicesFromWorkspaceWSILs() {
+		List result = new ArrayList();
+		List wsilFiles = getWorkspaceWSILFiles();
+		for (int i = 0; i < wsilFiles.size(); i++) {
+			IFile wsil = (IFile) wsilFiles.get(i);
+			List services = getWsdlServicesFromWsilFile(wsil);
+			if (!services.isEmpty())
+				result.addAll(services);
+		}
+	return result;
+	}
+
+	public List getWsdlServicesFromWsilFile(IFile wsil) {
+		WSDLServiceHelper serviceHelper = WSDLServiceExtManager.getServiceHelper();
+		return serviceHelper.getWsdlServicesFromWsilFile(wsil);
+	}
+
+	/**
+	 * Returns all WSDL Services, both internal and external
+	 */
+	public List getAllWSDLServices() {
+		List result = new ArrayList();
+		result.addAll(getInternalWSDLServices());
+		result.addAll(getExternalWSDLServices());
+		return result;
+	}
+
+	protected void dispose() {
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
+		releaseArtifactEdits();
+		INSTANCE = null;
+	}
+
+	public Resource getWSDLResource(WebServiceDescription webService) {
+		if (webService == null)
+			return null;
+		String wsdlFileName = webService.getWsdlFile();
+		Resource res = null;
+		IVirtualResource[] resources = ComponentCore.createResources(WorkbenchResourceHelper.getFile(webService));
+		if (resources == null || resources.length==0) return res;
+		WSDDArtifactEdit artifactEdit = getExistingWSDDArtifactEdit(resources[0].getComponent().getProject());
+		if (artifactEdit!=null) 
+			res = artifactEdit.getWsdlResource(wsdlFileName);
+		return res;
+	}
+	
+	private WSDDArtifactEdit getExistingWSDDArtifactEdit(IProject project) {
+		List wsEdits = getWSArtifactEdits();
+		for (int i=0; i<wsEdits.size(); i++) {
+			WSDDArtifactEdit edit = (WSDDArtifactEdit) wsEdits.get(i);
+			if (edit !=null && edit.getProject()!= null && edit.getProject().equals(project))
+				return edit;
+		}
+		return null;
+	}
+	
+	private WSCDDArtifactEdit getExistingWSCDDArtifactEdit(IProject project) {
+		List wsClientEdits = getWSClientArtifactEdits();
+		for (int i=0; i<wsClientEdits.size(); i++) {
+			WSCDDArtifactEdit edit = (WSCDDArtifactEdit) wsClientEdits.get(i);
+			if (edit !=null && edit.getProject()!= null && edit.getProject().equals(project))
+				return edit;
+		}
+		return null;
+	}
+
+	public List getWSDLServices(Resource wsdl) {
+		WSDLServiceHelper serviceHelper = WSDLServiceExtManager.getServiceHelper();
+		List result = new ArrayList();
+		Object def = serviceHelper.getWSDLDefinition(wsdl);
+		if (def == null)
+			return result;
+		result = new ArrayList(serviceHelper.getDefinitionServices(def).values());
+		return result;
+	}
+
+	public EObject getWSDLServiceForWebService(WebServiceDescription webService) {
+		EObject service = null;
+		WSDLServiceHelper serviceHelper = WSDLServiceExtManager.getServiceHelper();
+		Resource wsdl = getWSDLResource(webService);
+		if (wsdl == null) return service;
+		Object definition = serviceHelper.getWSDLDefinition(wsdl);
+		if (definition == null) return service;
+		Map services = serviceHelper.getDefinitionServices(definition);
+		if (services.isEmpty()) return service;
+		PortComponent portComp = null;
+		if (webService.getPortComponents()!=null && webService.getPortComponents().size()>0) {
+			portComp = (PortComponent) webService.getPortComponents().get(0);
+			return getService(portComp);
+		}
+		return service;
+	}
+
+	public Resource getWSDLResource(EObject wsdlService) {
+		return wsdlService.eResource();
+	}
+
+	public EObject getService(PortComponent port) {
+		List services = getInternalWSDLServices();
+		WSDLServiceHelper serviceHelper = WSDLServiceExtManager.getServiceHelper();
+		for (int i = 0; i < services.size(); i++) {
+			EObject service = (EObject)services.get(i);
+			if (serviceHelper.getServicePorts(service).size() == 1) {
+				Object wsdlPort = serviceHelper.getServicePorts(service).values().toArray()[0];
+				String qName = serviceHelper.getPortBindingNamespaceURI(wsdlPort);
+				if (port.getWsdlPort().getNamespaceURI().equals(qName))
+					return service;
+			}
+		}
+		return null;
+	}
+
+	public PortComponent getPortComponent(String qName) {
+		List wsDescs = getInternalWebServicesDescriptions();
+		for (int i = 0; i < wsDescs.size(); i++) {
+			WebServiceDescription wsDesc = (WebServiceDescription) wsDescs.get(i);
+			List ports = wsDesc.getPortComponents();
+			for (int j = 0; j < ports.size(); j++) {
+				PortComponent portComp = (PortComponent) ports.get(j);
+				if (portComp.getWsdlPort().getNamespaceURI().equals(qName))
+					return portComp;
+			}
+		}
+		return null;
+	}
+
+	public PortComponent getPortComponent(String qName, IProject project) {
+		List wsDescs = getInternalWebServicesDescriptions();
+		for (int i = 0; i < wsDescs.size(); i++) {
+			WebServiceDescription wsDesc = (WebServiceDescription) wsDescs.get(i);
+			List ports = wsDesc.getPortComponents();
+			for (int j = 0; j < ports.size(); j++) {
+				PortComponent portComp = (PortComponent) ports.get(j);
+				if (project == ProjectUtilities.getProject(portComp))
+					return portComp;
+			}
+		}
+		return null;
+	}
+
+	public PortComponent getPortComponent(EObject wsdlService) {
+		// If there is only one port in the wsdl service, find the matching port component
+		// otherwise if multiple ports return null because we need more information
+		WSDLServiceHelper serviceHelper = WSDLServiceExtManager.getServiceHelper();
+		if (wsdlService == null || serviceHelper.getServicePorts(wsdlService).isEmpty())
+			return null;
+		if (serviceHelper.getServicePorts(wsdlService).size() > 0) {
+			Object port = serviceHelper.getServicePorts(wsdlService).values().toArray()[0];
+			String qName = serviceHelper.getPortBindingNamespaceURI(port);
+			return getPortComponent(qName, ProjectUtilities.getProject(wsdlService));
+		}
+		return null;
+	}
+
+	public ServiceImplBean getServiceImplBean(EObject wsdlService) {
+		PortComponent port = getPortComponent(wsdlService);
+		if (port == null)
+			return null;
+		return port.getServiceImplBean();
+	}
+
+	public WsddResource getWsddResource(EObject wsdlService) {
+		PortComponent port = getPortComponent(wsdlService);
+		if (port == null)
+			return null;
+		return (WsddResource) port.eResource();
+	}
+
+	public String getServiceEndpointInterface(EObject wsdlService) {
+		PortComponent port = getPortComponent(wsdlService);
+		if (port == null)
+			return null;
+		return port.getServiceEndpointInterface();
+	}
+
+	public List getAllWorkspaceServiceRefs() {
+		List result = new ArrayList();
+		result.addAll(getWorkspace13ServiceRefs());
+		result.addAll(getWorkspace14ServiceRefs());
+		return result;
+	}
+
+	public List getWorkspace13ServiceRefs() {
+		List result = new ArrayList();
+		Iterator iter = getWSClientArtifactEdits().iterator();
+		while (iter.hasNext()) {
+			WSCDDArtifactEdit artifactEdit = (WSCDDArtifactEdit) iter.next();
+			WebServicesResource res = artifactEdit.getWscddXmiResource();
+			if (res != null && res.isLoaded() && res.getWebServicesClient() != null) {
+				if (JavaEEProjectUtilities.isEJBProject(artifactEdit.getProject())) {
+					List scopedBeans = res.getWebServicesClient().getComponentScopedRefs();
+					for (Iterator iterator = scopedBeans.iterator(); iterator.hasNext();) {
+						ComponentScopedRefs refBean = (ComponentScopedRefs) iterator.next();
+						result.addAll(refBean.getServiceRefs());
+					}
+				} else	result.addAll(res.getWebServicesClient().getServiceRefs());
+			}
+		}
+		return result;
+	}
+
+	public List get13ServiceRefs(IProject handle) {
+		List result = new ArrayList();
+		WSCDDArtifactEdit wsClientArtifactEdit = getExistingWSCDDArtifactEdit(handle);
+		if (wsClientArtifactEdit !=null) {
+			WebServicesResource res = wsClientArtifactEdit.getWscddXmiResource();
+			if (res != null && res.isLoaded() && res.getWebServicesClient() != null)
+				result.addAll(res.getWebServicesClient().getServiceRefs());
+		}
+		return result;
+	}
+
+	public List getWorkspace14ServiceRefs() {
+		return getWorkspace14ServiceRefs(getWSClientArtifactEdits());
+	}
+	
+	private List getWorkspace14ServiceRefs(List wsClientArtifactEdits) {
+		Iterator iter = wsClientArtifactEdits.iterator();
+		List result = new ArrayList();
+		while (iter.hasNext()) {
+			WSCDDArtifactEdit wscArtifactEdit = (WSCDDArtifactEdit) iter.next();
+			
+			IProject project = wscArtifactEdit.getProject(); 	
+			
+			String projectType = J2EEProjectUtilities.getJ2EEProjectType(project);
+			String projectVersion = J2EEProjectUtilities.getJ2EEProjectVersion(project);
+			int    j2eeLevel =  0;
+			if(IModuleConstants.JST_EJB_MODULE.equals(projectType)){
+				j2eeLevel = J2EEVersionUtil.convertEJBVersionStringToJ2EEVersionID(projectVersion);
+			} else if(IModuleConstants.JST_WEB_MODULE.equals(projectType)){
+				j2eeLevel = J2EEVersionUtil.convertWebVersionStringToJ2EEVersionID(projectVersion);
+			} else if(IModuleConstants.JST_APPCLIENT_MODULE.equals(projectType)){
+				j2eeLevel = J2EEVersionUtil.convertAppClientVersionStringToJ2EEVersionID(projectVersion);
+			}
+			
+			// this method needs to check that project's j2ee level is 14
+			if(j2eeLevel !=  J2EEVersionConstants.J2EE_1_4_ID)
+				continue;
+			
+			ArtifactEdit artifactEdit = ArtifactEdit.getArtifactEditForRead(project);
+			try {
+				EObject rootObject = null;
+				if (artifactEdit!=null)
+					rootObject = artifactEdit.getContentModelRoot();
+				// handle EJB project case
+				if (rootObject instanceof EJBJar) {
+					List cmps = ((EJBJar) rootObject).getEnterpriseBeans();
+					for (int j = 0; j < cmps.size(); j++) {
+						EnterpriseBean bean = (EnterpriseBean) cmps.get(j);
+						if (bean.getServiceRefs() != null && !bean.getServiceRefs().isEmpty())
+							result.addAll(bean.getServiceRefs());
+					}
+				}
+				// handle Web Project
+				else if (rootObject instanceof WebApp) {
+					if (((WebApp) rootObject).getServiceRefs() != null && !((WebApp) rootObject).getServiceRefs().isEmpty())
+						result.addAll(((WebApp) rootObject).getServiceRefs());
+				}
+				// handle App clients
+				else if (rootObject instanceof ApplicationClient) {
+					if (((ApplicationClient) rootObject).getServiceRefs() != null && !((ApplicationClient) rootObject).getServiceRefs().isEmpty())
+						result.addAll(((ApplicationClient) rootObject).getServiceRefs());
+				}
+			} finally {
+				if (artifactEdit != null)
+					artifactEdit.dispose();
+			}
+		}
+		return result;
+	}
+
+	public boolean isJ2EE14(ServiceRef ref) {
+		return !(ref.eContainer() instanceof WebServicesClient);
+	}
+
+	public List getWorkspaceWSILFiles() {
+		List result = new ArrayList();
+		Iterator iter = getWSArtifactEdits().iterator();
+		while (iter.hasNext()) {
+			WSDDArtifactEdit artifactEdit = (WSDDArtifactEdit) iter.next();
+			List files = artifactEdit.getWSILResources();
+			for (int j = 0; j < files.size(); j++) {
+				IFile file = (IFile) files.get(j);
+				if (file != null && WSIL_EXT.equals(file.getFileExtension()))
+					result.add(file);
+			}
+		}
+		return result;
+	}
+
+	public List getWorkspaceWSDLResources() {
+		List result = new ArrayList();
+		Iterator iter = getWSArtifactEdits().iterator();
+		while (iter.hasNext()) {
+			WSDDArtifactEdit artifactEdit = (WSDDArtifactEdit) iter.next();
+			IProject project = artifactEdit.getProject();
+			if (project != null) {
+				List wsdlResources = artifactEdit.getWSDLResources();
+				if (wsdlResources != null && !wsdlResources.isEmpty()) {
+					for (int j = 0; j < wsdlResources.size(); j++) {
+						Resource wsdl = (Resource) wsdlResources.get(j);
+						if (!result.contains(wsdl))
+							result.add(wsdl);
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+	public List getWSDLServices() {
+		List result = new ArrayList();
+		List internalWsdls = getInternalWSDLServices();
+		if (internalWsdls != null && !internalWsdls.isEmpty())
+			result.addAll(internalWsdls);
+		//TODO add externals
+		return result;
+	}
+
+	/**
+	 * @param bean
+	 * @return
+	 */
+	public List get13ServiceRefs(EnterpriseBean bean) {
+		WSCDDArtifactEdit artifactEdit = null;
+		IFile file = WorkbenchResourceHelper.getFile(bean);
+		if (file!=null)
+			artifactEdit = getExistingWSCDDArtifactEdit(file.getProject());
+		if (artifactEdit !=null) {
+			WebServicesResource res = artifactEdit.getWscddXmiResource();
+			if (res != null && res.getWebServicesClient() != null) {
+				String ejbName = bean.getName();
+				List scopes = res.getWebServicesClient().getComponentScopedRefs();
+				for (Iterator iter = scopes.iterator(); iter.hasNext();) {
+					ComponentScopedRefs scope = (ComponentScopedRefs) iter.next();
+					if (scope.getComponentName().equals(ejbName))
+						return scope.getServiceRefs();
+				}
+			}
+		}
+		return Collections.EMPTY_LIST;
+	}
+
+	/**
+	 * @param client
+	 * @return
+	 */
+	public List get13ServiceRefs(ApplicationClient client) {
+		IProject handle = getComponentProject(WorkbenchResourceHelper.getFile(client));
+		if (handle == null)
+			return Collections.EMPTY_LIST;
+		WSCDDArtifactEdit artifactEdit = getExistingWSCDDArtifactEdit(handle);
+		if (artifactEdit !=null) {
+			WebServicesResource res = artifactEdit.getWscddXmiResource();
+			if (res != null) {
+				WebServicesClient webClient = res.getWebServicesClient();
+				if (webClient != null)
+					return webClient.getServiceRefs();
+			}
+		}
+		return Collections.EMPTY_LIST;
+	}
+
+	/**
+	 * @param webapp
+	 * @return
+	 */
+	public List get13ServiceRefs(WebApp webapp) {
+		IProject handle = getComponentProject(WorkbenchResourceHelper.getFile(webapp));
+		if (handle == null)
+			return Collections.EMPTY_LIST;
+		WSCDDArtifactEdit artifactEdit = getExistingWSCDDArtifactEdit(handle);
+		if (artifactEdit !=null) {
+			WebServicesResource res = artifactEdit.getWscddXmiResource();
+			if (res != null) {
+				WebServicesClient webClient = res.getWebServicesClient();
+				if (webClient != null)
+					return webClient.getServiceRefs();
+			}
+		}
+		return Collections.EMPTY_LIST;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta)
+	 */
+	public boolean visit(IResourceDelta delta) throws CoreException {
+		IResource resource = delta.getResource();
+		if (resource.getType() == IResource.PROJECT) {
+			IProject p = (IProject) resource;
+			// Handle project adds and project opens
+			if ((delta.getKind()==IResourceDelta.ADDED || (((delta.getFlags() & IResourceDelta.OPEN) != 0) && p.isAccessible()))) {
+				IVirtualComponent component = ComponentCore.createComponent(p);
+				if (component!=null && !JavaEEProjectUtilities.isEARProject(p) && !JavaEEProjectUtilities.isStaticWebProject(p)) {
+					getQueuedJob().addProject(p);
+					return false;
+				}
+			}
+			// Handle project close events and removals 
+			else if ((delta.getKind() == IResourceDelta.CHANGED  && ((delta.getFlags() & IResourceDelta.OPEN) != 0))
+					|| (delta.getKind() == IResourceDelta.REMOVED)){
+				removeArtifactEdit(p);
+				return false;
+			}
+		}
+		
+		else if (resource.getType() == IResource.FILE && isInterrestedInFile((IFile) resource)) {
+			// Handle WSIL and WSDL File additions as well as webservice.xml and webserviceclient.xml
+			if ((delta.getKind() == IResourceDelta.ADDED) || ((delta.getFlags() & IResourceDelta.MOVED_TO) != 0)) {
+				if (resource.getFileExtension().equals(WSDL_EXT))
+				    addedWsdl((IFile) resource);
+				else if (resource.getFileExtension().equals(WSIL_EXT))
+				    addedWsil((IFile)resource);
+				else if (resource.getName().equals(J2EEConstants.WEB_SERVICES_CLIENT_SHORTNAME) ||
+						resource.getName().equals(J2EEConstants.WEB_SERVICES_DD_URI)) {
+					getQueuedJob().addProject(resource.getProject());
+				}	
+			} 
+			// Handle WSIL or WSDL file removals
+			else if ((delta.getKind() == IResourceDelta.REMOVED) || ((delta.getFlags() & IResourceDelta.MOVED_FROM) != 0)) {
+				if (resource.getFileExtension().equals(WSDL_EXT) || resource.getFileExtension().equals(WSIL_EXT))
+				notifyListeners(EditModelEvent.UNLOADED_RESOURCE);
+			}
+			return false;
+		}
+		return true;
+	}
+
+	private ProcessProjectsWithWSDL createProjectsJob() {
+		Set newSet = new HashSet();
+		ProcessProjectsWithWSDL job = new ProcessProjectsWithWSDL(newSet, EditModelEvent.ADDED_RESOURCE);
+		job.setRule(ResourcesPlugin.getWorkspace().getRoot());
+		job.setSystem(true);
+		return job;
+	}
+
+	private ProcessProjectsWithWSDL getQueuedJob() {
+		
+		if (processNewProjects != null && (processNewProjects.getState() == Job.WAITING)){
+			return processNewProjects;
+		} 
+		processNewProjects = createProjectsJob();
+		processNewProjects.schedule();
+		return processNewProjects;
+	}
+	
+	private class ProcessProjectsWithWSDL extends Job
+	{
+		private Set currentProjects;
+		private int eventType;
+		
+		public ProcessProjectsWithWSDL(Set p, int newEventType)
+		{
+			super(ConsumptionUIMessages.MSG_LOADING_WEB_SERVICE);
+			currentProjects = p;
+			eventType = newEventType;
+		}
+		
+		public void addProject(IProject p) {
+			synchronized(currentProjects) {
+				currentProjects.add(p);
+			}
+		}
+
+		@Override
+		protected IStatus run(IProgressMonitor monitor) {
+			// Null out job for processing new projects
+			synchronized (processNewProjects) {
+				if(processNewProjects == this){
+					processNewProjects = null;
+				}
+			}
+			for (Iterator iterator = currentProjects.iterator(); iterator.hasNext();) {
+				IProject currentProject = (IProject) iterator.next();
+				addArtifactEdit(currentProject);
+			}
+			notifyListeners(eventType);
+			
+			return Status.OK_STATUS;
+		}
+	}
+
+	protected void addedWsdl(IFile wsdl) {
+		if (!wsdl.exists())
+			return;
+		IProject handle = getComponentProject(wsdl);
+		if (handle != null) {
+			addArtifactEdit(handle);
+			notifyListeners(EditModelEvent.LOADED_RESOURCE);
+		}
+	}
+
+	protected void addedWsil(IFile wsil) {
+		if (!wsil.exists())
+			return;
+		IProject handle = getComponentProject(wsil);
+		if (handle != null) {
+			addArtifactEdit(handle);
+			notifyListeners(EditModelEvent.LOADED_RESOURCE);
+		}
+	}
+	
+	private IProject getComponentProject(IFile res) {
+		if (res==null)
+			return null;
+		return res.getProject();
+	}
+
+	protected boolean isInterrestedInFile(IFile aFile) {
+		return isFileInteresting(aFile);
+	}
+	
+	/**
+	 * The only resources webservice manager is concerned about are:
+	 * webservice.xml, webserviceclient.xml, and J2EE 1.4 web.xml, ejb-jar-xml, and application-client.xml
+	 * @param res
+	 * @return boolean isInterested
+	 */
+	private boolean isInterestedInResource(Resource res) {
+		if (res instanceof WsddResource || res instanceof WebServicesResource) {
+			return true;
+		} else if (res instanceof EJBResource || res instanceof WebAppResource || res instanceof ApplicationClientResource) {
+			return ((XMLResource)res).getJ2EEVersionID()>J2EEVersionConstants.J2EE_1_3_ID;
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * @param object
+	 * @return
+	 */
+	public Collection getServiceRefs(EJBJar jar) {
+
+		List list = new ArrayList();
+		List beans = jar.getEnterpriseBeans();
+		try {
+			for (int i = 0; i < beans.size(); i++) {
+				EnterpriseBean bean = (EnterpriseBean) beans.get(i);
+				list.addAll(getServiceRefs(bean));
+			}
+		} catch (Exception e) {
+			//Ignore
+		}
+		return list;
+	}
+
+	public Collection getServiceRefs(EnterpriseBean bean) {
+		List list = new ArrayList();
+		if (bean.getEjbJar().getJ2EEVersionID() >= J2EEVersionConstants.J2EE_1_4_ID)
+			list.addAll(bean.getServiceRefs());
+		else
+			list.addAll(get13ServiceRefs(bean));
+		return list;
+	}
+
+	public Collection getServiceRefs(WebApp webapp) {
+
+		List list = new ArrayList();
+		try {
+			if (webapp.getVersionID() >= J2EEVersionConstants.WEB_2_4_ID)
+				list.addAll(webapp.getServiceRefs());
+			else
+				list.addAll(get13ServiceRefs(webapp));
+		} catch (Exception e) {
+			//Ignore
+		}
+		return list;
+	}
+
+	public Collection getServiceRefs(ApplicationClient client) {
+
+		List list = new ArrayList();
+		try {
+			if (client.getJ2EEVersionID() >= J2EEVersionConstants.J2EE_1_4_ID)
+				list.addAll(client.getServiceRefs());
+			else
+				list.addAll(get13ServiceRefs(client));
+		} catch (Exception e) {
+			//Ignore
+		}
+		return list;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientHandlersWidgetDefaultingCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientHandlersWidgetDefaultingCommand.java
index b9fb927..449c472 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientHandlersWidgetDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientHandlersWidgetDefaultingCommand.java
@@ -35,7 +35,6 @@
 import org.eclipse.jst.j2ee.ejb.EJBResource;
 import org.eclipse.jst.j2ee.ejb.internal.modulecore.util.EJBArtifactEditUtilities;
 import org.eclipse.jst.j2ee.internal.webservice.WebServiceNavigatorGroupType;
-import org.eclipse.jst.j2ee.internal.webservice.helper.WebServicesManager;
 import org.eclipse.jst.j2ee.web.componentcore.util.WebArtifactEdit;
 import org.eclipse.jst.j2ee.webapplication.WebApp;
 import org.eclipse.jst.j2ee.webapplication.WebAppResource;
@@ -45,6 +44,7 @@
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
 import org.eclipse.jst.ws.internal.consumption.ui.common.HandlerServiceRefHolder;
+import org.eclipse.jst.ws.internal.consumption.ui.helper.WebServicesManager;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.HandlerTableItem;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.componentcore.ComponentCore;
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetDefaultingCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetDefaultingCommand.java
index beeab2f..7d8020a 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetDefaultingCommand.java
@@ -31,7 +31,6 @@
 import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jst.j2ee.internal.webservice.WebServiceNavigatorGroupType;
-import org.eclipse.jst.j2ee.internal.webservice.helper.WebServicesManager;
 import org.eclipse.jst.j2ee.webservice.wsdd.Handler;
 import org.eclipse.jst.j2ee.webservice.wsdd.PortComponent;
 import org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription;
@@ -40,6 +39,7 @@
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
 import org.eclipse.jst.ws.internal.consumption.ui.common.HandlerDescriptionHolder;
+import org.eclipse.jst.ws.internal.consumption.ui.helper.WebServicesManager;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.HandlerTableItem;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.environment.IEnvironment;