[519793] Break circular deps between webservices and jeetools

diff --git a/bundles/org.eclipse.jst.ws.consumption/.classpath b/bundles/org.eclipse.jst.ws.consumption/.classpath
index 185c898..4a7413a 100644
--- a/bundles/org.eclipse.jst.ws.consumption/.classpath
+++ b/bundles/org.eclipse.jst.ws.consumption/.classpath
@@ -2,7 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="src" path="webserviceutils"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/bundles/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF
index 4d6fbb6..395521c 100644
--- a/bundles/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.consumption; singleton:=true
-Bundle-Version: 1.0.1000.qualifier
+Bundle-Version: 1.0.1100.qualifier
 Bundle-ClassPath: .,
  webserviceutils.jar
 Bundle-Activator: org.eclipse.jst.ws.internal.consumption.plugin.WebServiceConsumptionPlugin
@@ -25,7 +25,9 @@
  org.eclipse.jst.ws.internal.consumption.sampleapp.common;x-internal:=true,
  org.eclipse.jst.ws.internal.consumption.wsfinder;x-internal:=true,
  org.eclipse.jst.ws.util
-Import-Package: com.ibm.icu.util; version="3.8"
+Import-Package: com.ibm.icu.util; version="3.8", 
+ org.eclipse.jst.j2ee.internal.webservice.helper,
+ org.eclipse.jst.j2ee.internal.webservice
 Require-Bundle: org.eclipse.jem;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.jem.workbench;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.emf.common;bundle-version="[2.2.0,3.0.0)",
@@ -59,5 +61,5 @@
  org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jst.common.project.facet.core;bundle-version="[1.4.100,2.0.0)"
 Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.jst.ws.consumption/plugin.xml b/bundles/org.eclipse.jst.ws.consumption/plugin.xml
index da2c8dd..ff9e0b9 100644
--- a/bundles/org.eclipse.jst.ws.consumption/plugin.xml
+++ b/bundles/org.eclipse.jst.ws.consumption/plugin.xml
@@ -54,4 +54,40 @@
    </extension>
    
 
+   <extension
+         id="WSDLServiceHelper"
+         name="WSDLServiceHelper"
+         point="org.eclipse.jst.j2ee.WSDLServiceHelper">
+      <wsdlHelper
+            helperClass="org.eclipse.jst.ws.internal.webservice.helper.WSDLServiceHelperImpl">
+      </wsdlHelper>
+   </extension>
+   
+      <extension 
+  		point="org.eclipse.core.runtime.adapters">
+    <factory 
+      class="org.eclipse.jst.j2ee.internal.webservice.WebServiceAdapterFactory" 
+      adaptableType="org.eclipse.wst.wsdl.Service">
+      <adapter type="org.eclipse.core.resources.IResource"/>
+      <adapter type="org.eclipse.core.resources.IFile"/>
+    </factory>
+    <factory 
+      class="org.eclipse.jst.j2ee.internal.webservice.WebServiceAdapterFactory" 
+      adaptableType="org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef">
+      <adapter type="org.eclipse.core.resources.IResource"/>
+      <adapter type="org.eclipse.core.resources.IFile"/>
+    </factory>
+     <factory 
+      class="org.eclipse.jst.j2ee.internal.webservice.WsdlResourceAdapterFactory" 
+      adaptableType="org.eclipse.wst.wsdl.util.WSDLResourceImpl">
+      <adapter type="org.eclipse.core.resources.IResource"/>
+      <adapter type="org.eclipse.core.resources.IFile"/>
+    </factory>
+    <factory 
+      class="org.eclipse.jst.j2ee.internal.webservice.WebServiceAdapterFactory" 
+      adaptableType="org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean">
+      <adapter type="org.eclipse.core.resources.IResource"/>
+      <adapter type="org.eclipse.core.resources.IFile"/>
+    </factory>
+     </extension>
 </plugin>
diff --git a/bundles/org.eclipse.jst.ws.consumption/pom.xml b/bundles/org.eclipse.jst.ws.consumption/pom.xml
index 14efeab..8f521de 100644
--- a/bundles/org.eclipse.jst.ws.consumption/pom.xml
+++ b/bundles/org.eclipse.jst.ws.consumption/pom.xml
@@ -22,6 +22,6 @@
 

   <groupId>org.eclipse.webtools.webservices</groupId>

   <artifactId>org.eclipse.jst.ws.consumption</artifactId>

-  <version>1.0.1000-SNAPSHOT</version>

+  <version>1.0.1100-SNAPSHOT</version>

   <packaging>eclipse-plugin</packaging>

 </project>

diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/webservice/helper/WSDLServiceHelperImpl.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/webservice/helper/WSDLServiceHelperImpl.java
new file mode 100644
index 0000000..8d1515e
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/webservice/helper/WSDLServiceHelperImpl.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2017 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
+ *******************************************************************************/
+/*
+ * Created on Feb 21, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.eclipse.jst.ws.internal.webservice.helper;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+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.WorkbenchResourceHelperBase;
+import org.eclipse.jst.j2ee.client.ApplicationClient;
+import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
+import org.eclipse.jst.j2ee.internal.webservice.helper.WebServicesManager;
+import org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper;
+import org.eclipse.jst.j2ee.webapplication.WebApp;
+import org.eclipse.wst.ws.internal.parser.wsil.WebServiceEntity;
+import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Port;
+import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.util.WSDLResourceImpl;
+
+/**
+ * @author cbridgha
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class WSDLServiceHelperImpl implements WSDLServiceHelper {
+
+	/**
+	 * 
+	 */
+	public WSDLServiceHelperImpl() {
+		super();
+	} 
+
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getPortName(java.lang.Object)
+	 */
+	public String getPortName(Object port) {
+		Port aPort = (Port)port;
+		return aPort.getName();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getServicePorts(java.lang.Object)
+	 */
+	public Map getServicePorts(Object aService) {
+		Service service =(Service)aService;
+		return service.getPorts();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getServiceNamespaceURI(java.lang.Object)
+	 */
+	public String getServiceNamespaceURI(Object aService) {
+		Service service =(Service)aService;
+		return service.getQName().getNamespaceURI();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getServiceDefinitionLocation(org.eclipse.emf.ecore.EObject)
+	 */
+	public Object getServiceDefinitionLocation(EObject aService) {
+		Service service =(Service)aService;
+		return service.getEnclosingDefinition().getLocation();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getPortBindingNamespaceURI(java.lang.Object)
+	 */
+	public String getPortBindingNamespaceURI(Object aPort) {
+		Port port = (Port)aPort;
+		return port.getBinding().getQName().getNamespaceURI();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getServiceLocalPart(java.lang.Object)
+	 */
+	public String getServiceLocalPart(Object aService) {
+		Service service =(Service)aService;
+		return service.getQName().getLocalPart();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getServiceQName(java.lang.Object)
+	 */
+	public Object getServiceQName(Object aService) {
+		Service service =(Service)aService;
+		return service.getQName();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getDefinitionServices(java.lang.Object)
+	 */
+	public Map getDefinitionServices(Object aDefinition) {
+		Definition definition =(Definition)aDefinition;
+		return definition.getServices();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getWSDLDefinition(java.lang.String)
+	 */
+	public Object getWSDLDefinition(String wsdlURL) {
+		try {
+			WSDLResourceImpl res = (WSDLResourceImpl) WorkbenchResourceHelperBase.getResource(URI.createURI(wsdlURL), true);
+			if (res == null)
+				return null;
+			return res.getDefinition();
+		} catch (Exception wsdle) {
+			return null;
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getWSDLDefinition(org.eclipse.emf.ecore.resource.Resource)
+	 */
+	public Object getWSDLDefinition(Resource wsdlResource) {
+		return ((WSDLResourceImpl)wsdlResource).getDefinition();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.j2ee.internal.webservices.WSDLServiceHelper#getWsdlServicesFromWsilFile(org.eclipse.core.resources.IFile)
+	 */
+	public List getWsdlServicesFromWsilFile(IFile wsil) {
+		List result = new ArrayList();
+		WebServiceEntity entity = parseWsilFile(wsil);
+		if (entity != null && entity.getType() == WebServiceEntity.TYPE_WSIL) {
+			// get all the WSDL references from the WSIL entity
+			List wsdlList = entity.getChildren();
+			for (Iterator it = wsdlList.iterator(); it.hasNext();) {
+				Object item = it.next();
+				if (item != null && item instanceof WebServiceEntity) {
+					if (((WebServiceEntity) item).getModel() != null && ((WebServiceEntity) item).getModel() instanceof Definition) {
+						Definition def = (Definition) ((WebServiceEntity) item).getModel();
+						if (def != null && !def.getServices().isEmpty())
+							result.addAll(def.getServices().values());
+					}
+				}
+			}
+		}
+		return result;
+	}
+	public WebServiceEntity parseWsilFile(IFile wsil) {
+	WebServicesParser parser = null;
+	String url = null;
+	// verify proper input
+	if (wsil == null || !wsil.getFileExtension().equals(WSIL_EXT))
+		return null;
+	// Parse wsil file to get wsdl services
+	try {
+		url = wsil.getLocation().toFile().toURL().toString();
+		parser = new WebServicesParser(url);
+		parser.parse(WebServicesParser.PARSE_WSIL | WebServicesParser.PARSE_WSDL);
+	} catch (Exception e) {
+		//Ignore
+	}
+	if (parser == null)
+		return null;
+	return parser.getWebServiceEntityByURI(url);
+}
+
+	public boolean isService(Object aService) {
+		
+		return aService instanceof Service;
+	}
+	public boolean isWSDLResource(Object aResource) {
+		
+		return aResource instanceof WSDLResourceImpl;
+	}
+	public boolean isDefinition(Object aDefinition) {
+		
+		return aDefinition instanceof Definition;
+	}
+
+
+	public List get13ServiceRefs(EObject j2eeObject) {
+		if (j2eeObject instanceof ApplicationClient)
+			return WebServicesManager.getInstance().get13ServiceRefs((ApplicationClient)j2eeObject);
+		else if (j2eeObject instanceof EnterpriseBean)
+			return WebServicesManager.getInstance().get13ServiceRefs((EnterpriseBean)j2eeObject);
+		else if (j2eeObject instanceof WebApp)
+			return WebServicesManager.getInstance().get13ServiceRefs((WebApp)j2eeObject);
+		else
+			return Collections.EMPTY_LIST;
+	}
+}