blob: df42d7c8b1c518c2d5de1913482ca7ff3d056d15 [file] [log] [blame]
/*******************************************************************************
* 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;
}
}