/******************************************************************************* * Copyright (c) 2005 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.j2ee.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.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; } }