Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java')
-rw-r--r--bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java427
1 files changed, 0 insertions, 427 deletions
diff --git a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java
deleted file mode 100644
index e4356126f..000000000
--- a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 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
- * -------- -------- -----------------------------------------------------------
- * 20060717 146707 mahutch@ca.ibm.com - Mark Hutchinson
- * 20070124 167487 gilberta@ca.ibm.com - Gilbert Andrews
- * 20080115 214955 gilberta@ca.ibm.com - Gilbert Andrews
- * 20081119 255374 mahutch@ca.ibm.com - Mark Hutchinson, WSE does not handle utf-8 characters in URLs
- *******************************************************************************/
-package org.eclipse.wst.ws.internal.explorer.platform.wsdl.datamodel;
-
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Vector;
-
-import javax.wsdl.Definition;
-import javax.wsdl.Import;
-import javax.wsdl.Service;
-import javax.wsdl.Types;
-import javax.wsdl.WSDLException;
-import javax.wsdl.extensions.UnknownExtensibilityElement;
-import javax.xml.namespace.QName;
-
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
-import org.eclipse.wst.common.uriresolver.internal.util.URIEncoder;
-import org.eclipse.wst.ws.internal.common.HTTPUtility;
-import org.eclipse.wst.ws.internal.datamodel.Model;
-import org.eclipse.wst.ws.internal.explorer.platform.constants.ModelConstants;
-import org.eclipse.wst.ws.internal.explorer.platform.util.URLUtils;
-import org.eclipse.wst.ws.internal.explorer.platform.util.Validator;
-import org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.FragmentConstants;
-import org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.WSDLModelConstants;
-import org.eclipse.wst.ws.internal.parser.discovery.NetUtils;
-import org.eclipse.wst.ws.internal.parser.discovery.WebServicesParserExt;
-import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
-import org.eclipse.wst.wsdl.internal.impl.XSDSchemaExtensibilityElementImpl;
-import org.eclipse.xsd.XSDDiagnostic;
-import org.eclipse.xsd.XSDDiagnosticSeverity;
-import org.eclipse.xsd.XSDPackage;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.impl.XSDSchemaImpl;
-import org.eclipse.xsd.util.XSDParser;
-import org.eclipse.xsd.util.XSDResourceFactoryImpl;
-
-public class WSDLElement extends WSDLCommonElement
-{
-
- private String wsdlUrl_;
- private Definition definition_;
- private Vector schemaList_;
- private Vector schemaURI_;
-
- private static Vector w3SchemaQNameList_;
- private static Vector constantSchemaList_;
-
- //A ResourceSet for all schemas in this WSDL
- private ResourceSet resourceSet;
-
- static
- {
- // w3 schema URI list:
- // http://www.w3.org/2001/XMLSchema
- // http://www.w3.org/2000/10/XMLSchema
- // http://www.w3.org/1999/XMLSchema
- w3SchemaQNameList_ = new Vector();
- w3SchemaQNameList_.addElement(new QName(FragmentConstants.NS_URI_CURRENT_SCHEMA_XSD,"schema"));
- w3SchemaQNameList_.addElement(new QName(FragmentConstants.NS_URI_2000_SCHEMA_XSD,"schema"));
- w3SchemaQNameList_.addElement(new QName(FragmentConstants.NS_URI_1999_SCHEMA_XSD,"schema"));
-
- // Constant schema URI list:
- // http://www.w3.org/2001/XMLSchema
- // http://www.w3.org/2000/10/XMLSchema
- // http://www.w3.org/1999/XMLSchema
- // http://schemas.xmlsoap.org/soap/encoding/
- // http://schemas.xmlsoap.org/wsdl/
- constantSchemaList_ = new Vector();
- constantSchemaList_.addElement(XSDSchemaImpl.getSchemaForSchema(FragmentConstants.NS_URI_CURRENT_SCHEMA_XSD));
- constantSchemaList_.addElement(XSDSchemaImpl.getSchemaForSchema(FragmentConstants.NS_URI_2000_SCHEMA_XSD));
- constantSchemaList_.addElement(XSDSchemaImpl.getSchemaForSchema(FragmentConstants.NS_URI_1999_SCHEMA_XSD));
- constantSchemaList_.addElement(XSDSchemaImpl.getSchemaForSchema(FragmentConstants.NS_URI_SOAP_ENC));
- constantSchemaList_.addElement(XSDSchemaImpl.getSchemaForSchema(FragmentConstants.URI_WSDL));
- }
-
- public WSDLElement(String name, Model model, String wsdlUrl)
- {
- super(name, model);
- setWsdlUrl(wsdlUrl);
- definition_ = null;
- schemaList_ = new Vector();
- schemaURI_ = new Vector();
- }
-
- public void setWsdlUrl(String wsdlUrl) {
- HTTPUtility http = new HTTPUtility();
- wsdlUrl_ = http.handleRedirect(URLUtils.encodeURLString(wsdlUrl));
- }
-
- public String getWsdlUrl() {
- return wsdlUrl_;
- }
-
- public void setSchemaList(Vector schemaList)
- {
- schemaList_ = schemaList;
- }
-
- public Vector getSchemaList()
- {
- return schemaList_;
- }
-
- private final Definition loadWSDL(String wsdlURL) throws WSDLException
- {
- WebServicesParser parser = new WebServicesParserExt();
- try
- {
- return parser.getWSDLDefinitionVerbose(wsdlURL);
- }
- catch (WSDLException wsdle)
- {
- throw wsdle;
- }
- catch (Throwable t)
- {
- throw new WSDLException(WSDLException.OTHER_ERROR , t.getMessage(), t);
- }
- }
-
- public Vector loadWSDL() throws WSDLException
- {
-
- // Register the appropriate resource factory to handle all file extentions.
- resourceSet = new ResourceSetImpl();
- resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION,new XSDResourceFactoryImpl());
- //Register the package to ensure it is available during loading.
- resourceSet.getPackageRegistry().put(XSDPackage.eNS_URI,XSDPackage.eINSTANCE);
-
-
- Vector errorMessages = new Vector();
- definition_ = loadWSDL(wsdlUrl_);
-
-
- if (definition_ != null)
- {
- setDocumentation(definition_.getDocumentationElement());
- gatherSchemas(definition_, wsdlUrl_);
- // Validate the schemas.
- for (int i=0;i<schemaList_.size();i++)
- {
- XSDSchema xsdSchema = (XSDSchema)schemaList_.elementAt(i);
- xsdSchema.validate();
- EList errors = xsdSchema.getAllDiagnostics();
- if (!errors.isEmpty())
- {
- for (ListIterator li = errors.listIterator();li.hasNext();)
- {
- XSDDiagnostic xd = (XSDDiagnostic)li.next();
- String msg = xd.getMessage();
- // do not report low severity diagnostics or erroneous array reference errors.
- if (xd.getSeverity().getValue() == XSDDiagnosticSeverity.FATAL_LITERAL.getValue() || (msg != null && msg.length() > 0 && msg.toLowerCase().indexOf("#array") != -1))
- li.remove();
- else
- {
- if (msg != null && msg.length() > 0)
- errorMessages.addElement(xd.getMessage());
- }
- }
- }
- }
-
- for (int i=0;i<constantSchemaList_.size();i++)
- schemaList_.addElement(constantSchemaList_.elementAt(i));
-
- }
- return errorMessages;
- }
-
- private final void gatherSchemas(Definition definition, String definitionURL)
- {
- Types types = definition.getTypes();
- if (types != null)
- {
- List extTypes = types.getExtensibilityElements();
- if (extTypes != null)
- {
- for (int i=0;i<extTypes.size();i++)
- {
- XSDSchema xsdSchema = null;
- Object obj = extTypes.get(i);
- if (obj instanceof UnknownExtensibilityElement)
- {
- UnknownExtensibilityElement schemaElement = (UnknownExtensibilityElement)obj;
- if (isW3SchemaElementType(schemaElement.getElementType()))
- {
- xsdSchema = XSDSchemaImpl.createSchema(schemaElement.getElement());
- if(!checkSchemaURI(definitionURL)){
- schemaList_.addElement(xsdSchema);
- gatherSchemaDirective(xsdSchema, definitionURL);
- }
- //We need to add the schema to a Resource in a Resource set for proper validation
- org.eclipse.emf.common.util.URI uri = org.eclipse.emf.common.util.URI.createURI(definitionURL);
- Resource resource = resourceSet.createResource(uri);
- //Add the Schema to the resource
- resource.getContents().add(xsdSchema);
- }
- }
- else if (obj instanceof XSDSchemaExtensibilityElementImpl)
- {
- XSDSchemaExtensibilityElementImpl schemaElement = (XSDSchemaExtensibilityElementImpl)obj;
- xsdSchema = schemaElement.getSchema();
- if(!schemaList_.contains(xsdSchema)){
- schemaList_.addElement(xsdSchema);
- gatherSchemaDirective(xsdSchema, definitionURL);
- }
- }
- }
- }
- }
- Map imports = definition.getImports();
- if (imports != null)
- gatherImportedSchemas(definition,imports);
- }
-
- private final void gatherSchemaDirective(XSDSchema xsdSchema, String xsdSchemaURL)
- {
- if (xsdSchema != null)
- {
- EList xsdSchemaContents = xsdSchema.getContents();
- for (Iterator it = xsdSchemaContents.iterator(); it.hasNext();)
- {
- Object content = it.next();
- if (content instanceof XSDSchemaDirective)
- {
- XSDSchemaDirective xsdSchemaDirective = (XSDSchemaDirective)content;
- StringBuffer xsdSchemaDirectiveURL = new StringBuffer();
- String xsdSchemaDirectiveLocation = xsdSchemaDirective.getSchemaLocation();
- if (xsdSchemaDirectiveLocation != null && xsdSchemaDirectiveLocation.indexOf(':') == -1 && xsdSchemaURL != null && xsdSchemaURL.indexOf(':') != -1)
- {
- // relative URL
- int index = xsdSchemaURL.lastIndexOf('/');
- if (index != -1)
- xsdSchemaDirectiveURL.append(xsdSchemaURL.substring(0, index+1));
- else
- {
- xsdSchemaDirectiveURL.append(xsdSchemaURL);
- xsdSchemaDirectiveURL.append('/');
- }
- }
- xsdSchemaDirectiveURL.append(xsdSchemaDirectiveLocation);
-
- //encode the URL so that Schemas with non-ASCII filenames can be resolved
- String xsdSchemaDirectiveURLString = URLUtils.encodeURLString(xsdSchemaDirectiveURL.toString());
- // resolve schema directive
- XSDSchema resolvedSchema = xsdSchemaDirective.getResolvedSchema();
- if (resolvedSchema == null && xsdSchemaDirectiveURLString.length() > 0)
- resolvedSchema = getSchema(xsdSchemaDirectiveURLString);
- if (resolvedSchema != null)
- {
- if(!checkSchemaURI(xsdSchemaDirectiveURLString)){
- schemaList_.addElement(resolvedSchema);
- gatherSchemaDirective(resolvedSchema, xsdSchemaDirectiveURLString);
- }
- }
- }
- }
- }
- }
-
- private boolean checkSchemaURI(String schemaURI){
- boolean found = false;
-
-
- schemaURI = normalize(schemaURI);
- if(schemaURI.equals(normalize(wsdlUrl_)))return false;
- Enumeration e = schemaURI_.elements();
- while(e.hasMoreElements()){
- String uri = (String)e.nextElement();
- if(schemaURI.equals(uri)){
- found = true;
- break;
- }
- }
-
- if (!found){
- schemaURI_.addElement(schemaURI);
- }
- return found;
-
- }
-
- private String normalize(String uri )
- {
- try {
- String encodedURI = URIEncoder.encode(uri,"UTF-8");
- URI normalizedURI = new URI(encodedURI);
- normalizedURI = normalizedURI.normalize();
- return normalizedURI.toString();
- } catch (URISyntaxException e) {
- return uri;
- } catch (UnsupportedEncodingException e) {
- return uri;
- }
- }
-
- private final boolean isW3SchemaElementType(QName qname)
- {
- for (int i=0;i<w3SchemaQNameList_.size();i++)
- {
- QName w3SchemaQName = (QName)w3SchemaQNameList_.elementAt(i);
- if (w3SchemaQName.equals(qname))
- return true;
- }
- return false;
- }
-
- private final void gatherImportedSchemas(Definition definition,Map imports)
- {
- for (Iterator iterator = imports.keySet().iterator();iterator.hasNext();)
- {
- List importList = (List)imports.get(iterator.next());
- for (int i=0;i<importList.size();i++)
- {
- Import imp = (Import)importList.get(i);
- StringBuffer locURI = new StringBuffer(imp.getLocationURI());
- if (!Validator.validateURL(locURI.toString()))
- {
- String base = definition.getDocumentBaseURI();
- locURI.insert(0,base.substring(0,base.lastIndexOf('/')+1));
- }
- try
- {
- Definition importDef = loadWSDL(locURI.toString());
- gatherSchemas(importDef, locURI.toString());
- }
- catch (WSDLException e)
- {
- // May be an XSD file.
- gatherSchema(locURI.toString());
- }
- }
- }
- }
-
- private final void gatherSchema(String locURI)
- {
- XSDSchema xsdSchema = getSchema(locURI);
- if (xsdSchema != null)
- {
- schemaList_.addElement(xsdSchema);
- gatherSchemaDirective(xsdSchema, locURI);
- }
- }
-
- private final XSDSchema getSchema(String locURI)
- {
- locURI = URLUtils.encodeURLString(locURI);
- XSDSchema xsdSchema = XSDSchemaImpl.getSchemaForSchema(locURI);
- if (xsdSchema == null)
- {
- XSDParser p = new XSDParser();
- InputStream is = NetUtils.getURLInputStream(locURI);
- if (is != null)
- {
- p.parse(is);
- xsdSchema = p.getSchema();
- }
- }
- return xsdSchema;
- }
-
- public void setDefinition(Definition definition)
- {
- definition_ = definition;
- }
-
- public Definition getDefinition()
- {
- return definition_;
- }
-
- public void buildModel() {
- if (definition_ != null) {
- Map services = new HashMap(definition_.getServices());
- WSDLServiceElement[] wsdlServiceElements = new WSDLServiceElement[getNumberOfElements(WSDLModelConstants.REL_WSDL_SERVICE)];
- Enumeration e = getElements(WSDLModelConstants.REL_WSDL_SERVICE);
- for (int i = 0; i < wsdlServiceElements.length; i++) {
- wsdlServiceElements[i] = (WSDLServiceElement)e.nextElement();
- }
- for (int j = 0; j < wsdlServiceElements.length; j++) {
- QName qname = wsdlServiceElements[j].getService().getQName();
- Service service = (Service)services.get(qname);
- if (service != null) {
- services.remove(qname);
- wsdlServiceElements[j].setService(service);
- wsdlServiceElements[j].buildModel();
- }
- else
- disconnect(wsdlServiceElements[j], WSDLModelConstants.REL_WSDL_SERVICE);
- }
- for (Iterator it = services.values().iterator();it.hasNext();) {
- Service service = (Service)it.next();
- WSDLServiceElement wsdlServiceElement = new WSDLServiceElement(service.getQName().getLocalPart(), getModel(), service);
- connect(wsdlServiceElement,WSDLModelConstants.REL_WSDL_SERVICE,ModelConstants.REL_OWNER);
- wsdlServiceElement.buildModel();
- }
- }
- }
-}

Back to the top