Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java')
-rw-r--r--bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java394
1 files changed, 0 insertions, 394 deletions
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java
deleted file mode 100644
index 5c5af6016..000000000
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 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
- * yyyymmdd bug Email and other contact information
- * -------- -------- -----------------------------------------------------------
- * 20060317 127456 cbrealey@ca.ibm.com - Chris Brealey
- * 20060517 140832 andyzhai@ca.ibm.com - Andy Zhai
- * 20060620 147862 cbrealey@ca.ibm.com - Chris Brealey
- * 20060620 147864 cbrealey@ca.ibm.com - Chris Brealey
- * 20061214 165716 makandre@ca.ibm.com - Andrew Mak, Web Service finder does not locate Axis Web service deployed on certain servers
- *******************************************************************************/
-
-package org.eclipse.jst.ws.internal.axis.consumption.core.locator;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Vector;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.core.IJavaModel;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.ITypeHierarchy;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jst.ws.internal.common.J2EEUtils;
-import org.eclipse.jst.ws.internal.wsrt.WebServiceJavaClientInfo;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.ServerPort;
-import org.eclipse.wst.server.core.ServerUtil;
-import org.eclipse.wst.ws.internal.wsfinder.AbstractWebServiceLocator;
-import org.eclipse.wst.ws.internal.wsrt.WebServiceClientInfo;
-import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
-import org.xml.sax.SAXException;
-
-/**
- * @author cbrealey
- * The Axis Web service locator plugs itself into the
- * Web Services Finder framework and does the job of
- * locating Axis clients and services.
- */
-public class AxisWebServiceLocator extends AbstractWebServiceLocator
-{
- private String AXIS_STUB = "org.apache.axis.client.Stub";
-
- /**
- * Searches the workspace for Axis clients as
- * identified by non-stub classes that implement
- * SEIs that are implemented by stubs that implement
- * org.apache.axis.client.Stub.
- * @param monitor A progress monitor, possibly null.
- * @return A possibly empty list of WebServiceClientInfo objects.
- */
- public List getWebServiceClients (IProgressMonitor monitor)
- {
- List list = new LinkedList();
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IJavaModel javaModel = JavaCore.create(root);
- try
- {
- javaModel.open(monitor);
- IJavaProject[] javaProjects = javaModel.getJavaProjects();
- for (int i=0; i<javaProjects.length; i++)
- {
- // We're only interested in Java projects within which
- // the Axis runtime's client "Stub" class is loadable:
- IType axisStub = javaProjects[i].findType(AXIS_STUB);
- if (axisStub != null)
- {
- // Find "Proxy" classes in the project and add to the list.
- addAxisProxies(javaProjects[i],axisStub,list,monitor);
- }
- }
- javaModel.close();
- }
- catch (Exception e)
- {
- // Fall thru and return an empty list.
- }
- return list;
- }
-
- /**
- * Searches the workspace for Axis clients as
- * identified by non-stub classes that implement
- * SEIs that are implemented by stubs that implement
- * org.apache.axis.client.Stub.
- * @param projects The projects to confine the search to.
- * @param monitor A progress monitor, possibly null.
- * @return A possibly empty list of WebServiceClientInfo objects.
- */
- public List getWebServiceClients (IProject[] projects, IProgressMonitor monitor)
- {
- if (projects == null)
- {
- return getWebServiceClients(monitor);
- }
- List list = new LinkedList();
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IJavaModel javaModel = JavaCore.create(root);
- try
- {
- javaModel.open(monitor);
- for (int i=0; i<projects.length; i++)
- {
- IJavaProject javaProject = javaModel.getJavaProject(projects[i].getName());
- // We're only interested in Java projects within which
- // the Axis runtime's client "Stub" class is loadable:
- IType axisStub = javaProject.findType(AXIS_STUB);
- if (axisStub != null)
- {
- // Find "Proxy" classes in the project and add to the list.
- addAxisProxies(javaProject,axisStub,list,monitor);
- }
- }
- javaModel.close();
- }
- catch (Exception e)
- {
- // Fall thru and return an empty list.
- }
- return list;
- }
-
- /**
- * Tries to find Axis "Proxy" classes related the given Stub.
- * @param axisStub The Axis client "Stub" from which to search.
- * @param list A list to which we'll add and WebServiceClientInfo
- * objects for "Proxy" classes we find in the search.
- */
- private void addAxisProxies (IJavaProject javaProject, IType axisStub, List list, IProgressMonitor monitor)
- {
- try
- {
- // Compute a hierarchy to help us find all the
- // generated Stub subclasses of the Axis "Stub"
- // class across the entire workspace:
- ITypeHierarchy axisStubHierarchy = axisStub.newTypeHierarchy(javaProject,monitor);
- IType[] stubs = axisStubHierarchy.getSubtypes(axisStub);
- for (int s=0; s<stubs.length; s++)
- {
- // For each stub, find all its super-interfaces of which
- // there should be one, namely the generated SEI:
- IType seis[] = axisStubHierarchy.getSuperInterfaces(stubs[s]);
- for (int i=0; i<seis.length; i++)
- {
- try
- {
- // Compute a hierarchy to help us find all the
- // generated classes that implement the SEI
- // confined to the current project:
- ITypeHierarchy seiHierarchy = seis[i].newTypeHierarchy(javaProject,monitor);
- IType[] proxies = seiHierarchy.getSubtypes(seis[i]);
- for (int p=0; p<proxies.length; p++)
- {
- // Under normal circumstances we should find two subclasses:
- // 1. The generated stub that got us here (two loops above).
- // 2. The generated "Proxy" that we're looking for.
- // Skip #1 and capture #2:
- if (!proxies[p].getFullyQualifiedName().equals(stubs[s].getFullyQualifiedName()))
- {
- WebServiceClientInfo wscInfo = newWebServiceClientInfo(proxies[p]);
- if (wscInfo != null)
- {
- list.add(wscInfo);
- }
- }
- }
- }
- catch (Exception e)
- {
- // We'll land here if the JDT was unable to compute
- // a type hierarchy for the current SEI.
- // This should never happen, but if it does,
- // there's not much we can do except bypass the SEI
- // and loop on to the next one.
- }
- }
- }
- }
- catch (Exception e)
- {
- // We'll land here if JDT was unable to compute
- // a type hierarchy for the Axis client "Stub" class.
- // This should never happen, but if it does,
- // there's not much we can do except bail out, having
- // added nothing to the list.
- }
- }
-
- /**
- * Creates a new WebServiceClientInfo object for a
- * JDT IType object representing a generated Proxy.
- * @param axisProxy The IType of the generated Proxy.
- * @return A new WebServiceClientInfo object describing the Proxy,
- * or null if the IType does not appear to describe a normal Proxy.
- */
- private WebServiceClientInfo newWebServiceClientInfo (IType axisProxy)
- {
- WebServiceJavaClientInfo wscInfo = null;
- try
- {
- IResource resource = axisProxy.getUnderlyingResource();
- if (resource != null)
- {
- IPath proxyPath = resource.getLocation();
- if (proxyPath != null)
- {
- String proxyURL = proxyPath.toFile().toURL().toString();
- wscInfo = new WebServiceJavaClientInfo();
- wscInfo.setType(axisProxy);
- wscInfo.setImplURL(proxyURL);
- }
- }
- }
- catch (Exception e)
- {
- // We'll land here if we could not convert the IType
- // into an IResource, or if we could not compute a URL
- // from that resource. Either way, it definitely isn't
- // a normal generated Proxy, so get out and return null.
- }
- return wscInfo;
- }
-
- /**
- * Searches the workspace for Axis services as
- * identified by server-config.wsdd <service> elements
- * in projects with an Axis servlet registered
- * in the web.xml descriptor.
- * @param monitor A progress monitor, possibly null.
- * @return A possibly empty list of WebServiceInfo objects.
- */
- public List getWebServices (IProgressMonitor monitor)
- {
- return getWebServices(null,monitor);
- }
-
- /**
- * Searches the workspace for Axis services as
- * identified by server-config.wsdd <service> elements
- * in projects with an Axis servlet registered
- * in the web.xml descriptor.
- * @param projects The projects to confine the search to.
- * @param monitor A progress monitor, possibly null.
- * @return A possibly empty list of WebServiceInfo objects.
- */
- public List getWebServices (IProject[] projects, IProgressMonitor monitor)
- {
- Vector webServices = new Vector();
- if (projects == null)
- {
- projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- }
- for (int i = 0; i < projects.length; i++)
- {
- // we are only intersted in dynamic web project
- if (J2EEUtils.isWebComponent(projects[i]))
- {
- try
- {
- webServices.addAll(getWebServicesFromProject(projects[i], monitor));
- }
- catch (Exception e)
- {
- // Fall thru and return an empty list.
- }
- }
- }
- return webServices;
- }
-
- /**
- * Searches for a particular web project for Axis services as
- * identified by server-config.wsdd <service> elements
- * with an Axis servlet registered
- * in the web.xml descriptor.
- * @param monitor A progress monitor, possibly null.
- * @return A possibly empty list of WebServiceInfo objects.
- */
- private List getWebServicesFromProject(IProject project, IProgressMonitor monitor) throws CoreException, ParserConfigurationException, SAXException, IOException
- {
- // Search the web.xml in fixed location
- IPath webDescriptorPath = J2EEUtils.getWebInfPath(project).append("/web.xml");
- IFile webXmlFile = ResourcesPlugin.getWorkspace().getRoot().getFile(webDescriptorPath);
-
- if (webXmlFile != null && isAxisServletExisted(webXmlFile, monitor))
- {
- // Search for all server-config.wsdd inside this project
- ServerConfigWSDDVisitor visitor = new ServerConfigWSDDVisitor();
- project.accept(visitor);
- visitor.visit(project);
- Vector wsddFiles = visitor.getWsddFiles();
- Vector servicesNames = new Vector();
- for (int i = 0; i < wsddFiles.size(); i++)
- {
- servicesNames.addAll(getWebServicesNamesFromAxisConfig((IFile)wsddFiles.get(i), monitor));
- }
- return getWebServices(project, servicesNames, monitor);
- }
- else
- {
- return new Vector();
- }
- }
-
- /*
- * Determine whether web.xml contains axis servlet
- */
- private boolean isAxisServletExisted(IFile file, IProgressMonitor monitor) throws CoreException, ParserConfigurationException, SAXException, IOException
- {
- InputStream inputStream = file.getContents();
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setNamespaceAware(true);
- SAXParser parser = factory.newSAXParser();
- AxisServletSaxHandler handler = new AxisServletSaxHandler();
- parser.parse(inputStream, handler);
- inputStream.close();
- return handler.isThereAxisServlet();
- }
-
- /*
- * Given a list of services, find the servers this project is associated,
- * Combine them and form various end point
- */
- private List getWebServices(IProject project, List servicesNames, IProgressMonitor monitor)
- {
- Vector webServices = new Vector();
- IServer[] servers = ServerUtil.getServersByModule(ServerUtil.getModule(project),monitor);
- for (int i = 0; i < servers.length; i++)
- {
- String host = servers[i].getHost();
- ServerPort httpPort = getHttpPort(servers[i].getServerPorts(monitor));
- if (httpPort != null)
- {
- for (int j = 0; j < servicesNames.size(); j++)
- {
- WebServiceInfo wsInfo = new WebServiceInfo();
- String endPointURL = "http://" + host + ":" + httpPort.getPort() + "/" + J2EEUtils.getFirstWebModuleName(project) + "/services/" + (String)servicesNames.get(j);
- wsInfo.setEndPointURL(endPointURL);
- wsInfo.setWsdlURL(endPointURL+"?wsdl");
- webServices.add(wsInfo);
- }
- }
- }
- return webServices;
- }
-
- /*
- * Parse the server-config.wsdd file, return a list of names of web services
- */
- private List getWebServicesNamesFromAxisConfig(IFile file, IProgressMonitor monitor) throws CoreException, ParserConfigurationException, SAXException, IOException
- {
- InputStream inputStream = file.getContents();
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setNamespaceAware(true);
- SAXParser parser = factory.newSAXParser();
- AxisServicesSaxHandler handler = new AxisServicesSaxHandler();
- parser.parse(inputStream, handler);
- inputStream.close();
- return handler.getWebServicesNames();
- }
-
- /*
- * find the right port (http) from a list or ports
- */
- private ServerPort getHttpPort(ServerPort[] ports)
- {
- for (int i = 0; i < ports.length; i++)
- {
- String protocol = ports[i].getProtocol();
- if ( protocol != null && protocol.trim().toLowerCase().equals("http")) return ports[i];
- }
- return null;
- }
-}

Back to the top