diff options
Diffstat (limited to 'core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/webservice/helper/WSDLServiceHelperImpl.java')
-rw-r--r-- | core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/webservice/helper/WSDLServiceHelperImpl.java | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/webservice/helper/WSDLServiceHelperImpl.java b/core/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/webservice/helper/WSDLServiceHelperImpl.java new file mode 100644 index 000000000..8d1515e2b --- /dev/null +++ b/core/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; + } +} |