Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java')
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java577
1 files changed, 0 insertions, 577 deletions
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java
deleted file mode 100644
index 6c12b28f9..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java
+++ /dev/null
@@ -1,577 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-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 - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.util;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.wsdl.Binding;
-import javax.wsdl.BindingFault;
-import javax.wsdl.BindingInput;
-import javax.wsdl.BindingOperation;
-import javax.wsdl.BindingOutput;
-import javax.wsdl.Definition;
-import javax.wsdl.Fault;
-import javax.wsdl.Import;
-import javax.wsdl.Input;
-import javax.wsdl.Message;
-import javax.wsdl.Operation;
-import javax.wsdl.Output;
-import javax.wsdl.Part;
-import javax.wsdl.Port;
-import javax.wsdl.PortType;
-import javax.wsdl.Service;
-import javax.wsdl.Types;
-import javax.wsdl.extensions.ExtensibilityElement;
-import javax.wsdl.extensions.UnknownExtensibilityElement;
-import javax.wsdl.extensions.soap.SOAPBinding;
-import javax.wsdl.extensions.soap.SOAPBody;
-import javax.wsdl.extensions.soap.SOAPFault;
-import javax.wsdl.extensions.soap.SOAPHeader;
-import javax.wsdl.extensions.soap.SOAPHeaderFault;
-import javax.wsdl.extensions.soap.SOAPOperation;
-import javax.xml.namespace.QName;
-
-import org.eclipse.wst.wsi.internal.core.WSITag;
-import org.eclipse.wst.wsi.internal.core.profile.validator.BaseValidator;
-import org.eclipse.wst.wsi.internal.core.wsdl.traversal.WSDLTraversal;
-import org.eclipse.wst.wsi.internal.core.wsdl.traversal.WSDLTraversalContext;
-import org.eclipse.wst.wsi.internal.core.wsdl.traversal.WSDLVisitor;
-import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-/**
- * The class extracts XSD schema information from the given WSDL.
- *
- * @author Kulik
- */
-public final class TypesRegistry implements WSITag, WSDLVisitor
-{
- List schemaProcessedList = new ArrayList();
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(javax.wsdl.Part, java.lang.Object, org.wsi.wsdl.traversal.WSDLTraversalContext)
- */
- public void visit(Part obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(javax.wsdl.Service, java.lang.Object, org.wsi.wsdl.traversal.WSDLTraversalContext)
- */
- public void visit(Service obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Types, Object,
- * WSDLTraversalContext)
- */
- public void visit(Types obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Operation, Object,
- * WSDLTraversalContext)
- */
- public void visit(Operation obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Input, Object,
- * WSDLTraversalContext)
- */
- public void visit(Input obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Output, Object,
- * WSDLTraversalContext)
- */
- public void visit(Output obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Fault, Object,
- * WSDLTraversalContext)
- */
- public void visit(Fault obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Binding, Object,
- * WSDLTraversalContext)
- */
- public void visit(Binding obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(BindingOperation, Object,
- * WSDLTraversalContext)
- */
- public void visit(
- BindingOperation obj,
- Object parent,
- WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(BindingInput, Object,
- * WSDLTraversalContext)
- */
- public void visit(BindingInput obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(BindingOutput, Object,
- * WSDLTraversalContext)
- */
- public void visit(BindingOutput obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(BindingFault, Object,
- * WSDLTraversalContext)
- */
- public void visit(BindingFault obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Element, Object,
- * WSDLTraversalContext)
- */
- public void visit(Element obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Message, Object,
- * WSDLTraversalContext)
- */
- public void visit(Message obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Port, Object,
- * WSDLTraversalContext)
- */
- public void visit(Port obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(PortType, Object,
- * WSDLTraversalContext)
- */
- public void visit(PortType obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(Definition, Object,
- * WSDLTraversalContext)
- */
- public void visit(Definition obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(ExtensibilityElement,
- * Object, WSDLTraversalContext)
- */
- public void visit(
- ExtensibilityElement obj,
- Object parent,
- WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(SOAPBinding, Object,
- * WSDLTraversalContext)
- */
- public void visit(SOAPBinding obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(SOAPBody, Object,
- * WSDLTraversalContext)
- */
- public void visit(SOAPBody obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(SOAPHeader, Object,
- * WSDLTraversalContext)
- */
- public void visit(SOAPHeader obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(SOAPHeaderFault, Object,
- * WSDLTraversalContext)
- */
- public void visit(
- SOAPHeaderFault obj,
- Object parent,
- WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(SOAPFault, Object,
- * WSDLTraversalContext)
- */
- public void visit(SOAPFault obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(SOAPOperation, Object,
- * WSDLTraversalContext)
- */
- public void visit(SOAPOperation obj, Object parent, WSDLTraversalContext ctx)
- {
- }
-
- private Map element2Type = new HashMap();
- private Set extendsArray = new HashSet();
- private Set usesWsdlArrayType = new HashSet();
-
- protected BaseValidator baseValidator = null;
-
- /**
- * Constructor creates the types registry. by the given WSDL definition
- * object.
- *
- * @param def a WSDL definition.
- * @param baseValidator a base validator.
- */
- public TypesRegistry(Definition def, BaseValidator baseValidator)
- {
- this.baseValidator = baseValidator;
- if (def == null)
- throw new IllegalArgumentException("Definition can not be null");
-
- WSDLTraversal traversal = new WSDLTraversal();
- //VisitorAdaptor.adapt(this);
- traversal.setVisitor(this);
- traversal.visitImport(true);
-
- processTypes(def.getTypes(), def.getDocumentBaseURI());
- traversal.traverse(def);
- }
-
- /**
- * Constructor creates the types registry by given WSDL types object and
- * location context URI.
- * @param types WSDL types object.
- * @param context location context URI.
- * @param baseValidator a base validator.
- */
- public TypesRegistry(
- Types types,
- String context,
- BaseValidator baseValidator)
- {
- this.baseValidator = baseValidator;
- processTypes(types, context);
- }
-
- /**
- * The method returns type's qname by given element's qname.
- * @param elementName a qualified element name.
- * @return type's qname by given element's qname.
- */
- public QName getType(QName elementName)
- {
- return (QName) element2Type.get(elementName);
- }
-
- /**
- * The method returns set of types which is array attribute.
- * @return set of types which is array attribute.
- */
- public Set getArrayTypes()
- {
- Set s = new HashSet();
- s.addAll((Collection) usesWsdlArrayType);
- s.addAll((Collection) extendsArray);
- return s;
- }
-
- /**
- * The method returns set of elements defined in types element.
- * @return set of elements defined in types element.
- */
- public Set getElementList()
- {
- return this.element2Type.keySet();
- }
-
- /**
- * The method returns true if the given type declares wsdl:arrayType
- * attribute within declaration.
- * @param type a type.
- * @return true if the given type declares wsdl:arrayType
- * attribute within declaration.
- */
- public boolean isUsesWSDLArrayType(QName type)
- {
- return usesWsdlArrayType.contains(type);
- }
-
- /**
- * The method returns true if given type extends soapenc:Array type.
- * @param type a type.
- * @return true if given type extends soapenc:Array type.
- */
- public boolean isExtendsArray(QName type)
- {
- return extendsArray.contains(type);
- }
-
- /* (non-Javadoc)
- * @see org.wsi.wsdl.traversal.WSDLVisitor#visit(javax.wsdl.Import, java.lang.Object, org.wsi.wsdl.traversal.WSDLTraversalContext)
- */
- public void visit(Import im, Object parent, WSDLTraversalContext ctx)
- {
- if (im.getDefinition() != null)
- processWSDL(im.getDefinition());
- }
-
- /**
- * Internal method processes WSDL definition.
- * @param def a WSDL definition.
- */
- private void processWSDL(Definition def)
- {
- if (def.getTypes() != null)
- processTypes(def.getTypes(), def.getDocumentBaseURI());
- }
-
- /**
- * Internal method processes WSDL types.
- * @param types WSDL types.
- * @param context a context.
- */
- private void processTypes(Types types, String context)
- {
- if (types == null)
- return;
- List exts = types.getExtensibilityElements();
- if (exts != null)
- {
- Iterator it = exts.iterator();
- while (it.hasNext())
- {
- ExtensibilityElement el = (ExtensibilityElement) it.next();
- if (el instanceof UnknownExtensibilityElement)
- searchForSchema(
- ((UnknownExtensibilityElement) el).getElement(),
- context);
- }
- }
- }
-
- /**
- * Internal method searches XSD schema declaration and XSD import
- * statements.
- * @param n
- * @param context
- */
- private void searchForSchema(Node n, String context)
- {
- while (n != null)
- {
- // searches for xsd:import element
- if (Node.ELEMENT_NODE == n.getNodeType())
- {
- // if xsd:schema element is found -> process schema
- if (XMLUtils.equals(n, ELEM_XSD_SCHEMA))
- processSchema(n, context);
- }
- n = n.getNextSibling();
- }
- }
-
- /**
- * Internal method loads XSD schema by using schema location and
- * location context.
- * @param importNode
- * @param context
- */
- private void loadSchema(Node importNode, String context)
- {
- Element im = (Element) importNode;
- Attr schemaLocation = XMLUtils.getAttribute(im, ATTR_XSD_SCHEMALOCATION);
-
- // try to parse imported XSD
- if (schemaLocation != null && schemaLocation.getValue() != null)
- try
- {
- String urlString = XMLUtils.createURLString(schemaLocation.getValue(), context);
- if (!schemaProcessedList.contains(urlString))
- {
- // if any error or root element is not XSD schema -> error
- Document schema =
- baseValidator.parseXMLDocumentURL(
- schemaLocation.getValue(),
- context,
- null);
- schemaProcessedList.add(urlString);
- if (XMLUtils.equals(schema.getDocumentElement(), ELEM_XSD_SCHEMA))
- processSchema(
- schema.getDocumentElement(),
- urlString);
- }
- }
- catch (Throwable t)
- {
- //t.printStackTrace();
- // nothing. it's not a schema
- }
- }
-
- /**
- * Internal method processes XSD schema and retrieves types declaration from
- * it.
- * @param schema
- * @param context
- */
- private void processSchema(Node schema, String context)
- {
- Attr a = XMLUtils.getAttribute((Element) schema, ATTR_XSD_TARGETNAMESPACE);
- String targetNamespace = (a != null) ? a.getValue() : "";
- // iterate schema
- Node n = schema.getFirstChild();
- // !! we suppose that xsd:import element is occured only within xsd:schema element
- while (n != null)
- {
- if (Node.ELEMENT_NODE == n.getNodeType())
- {
- if (XMLUtils.equals(n, ELEM_XSD_ELEMENT))
- {
- Element el = (Element) n;
- a = XMLUtils.getAttribute(el, ATTR_XSD_NAME);
- QName element =
- new QName(targetNamespace, (a != null) ? a.getValue() : "");
-
- a = XMLUtils.getAttribute(el, ATTR_XSD_TYPE);
- QName type = null;
- if (a != null)
- {
- String t = a.getValue();
- // if type contains ':', it means that it contains qname
- int i = t.indexOf(':');
- if (i != -1)
- {
- String prefix = t.substring(0, i);
- String nsURI = XMLUtils.findNamespaceURI(n, prefix);
- type = new QName(nsURI, t.substring(i + 1));
- }
- else
- type = new QName(targetNamespace, t);
- }
- else
- {
- // suppose that element directly contains type declaration
- type = element;
- checkType(n, type);
- }
-
- element2Type.put(element, type);
- }
- else if (XMLUtils.equals(n, ELEM_XSD_IMPORT))
- loadSchema(n, context);
- else if (XMLUtils.equals(n, ELEM_XSD_INCLUDE))
- loadSchema(n, context);
- else if (XMLUtils.equals(n, ELEM_XSD_COMPLEXTYPE))
- {
- Element el = (Element) n;
- a = XMLUtils.getAttribute(el, ATTR_XSD_NAME);
- QName type =
- new QName(targetNamespace, (a != null) ? a.getValue() : "");
- checkType(n, type);
- }
-
- }
-
- n = n.getNextSibling();
- }
- }
-
- /**
- * Internal method checks whether specified type has WSDL array type
- * attribute in the XSD declaration.
- * @param n
- * @param name
- */
- private void checkType(Node n, QName name)
- {
- while (n != null)
- {
- if (Node.ELEMENT_NODE == n.getNodeType())
- {
- // check such sentence
- // xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="tns:MyArray2Type[]"/>
- if (XMLUtils.equals(n, ELEM_XSD_ATTRIBUTE))
- {
- Attr a = XMLUtils.getAttribute((Element) n, ATTR_WSDL_ARRAYTYPE);
- if (a != null)
- usesWsdlArrayType.add(name);
- }
-
- // retrieve base attribute may be from restriction or extension
- Attr a = XMLUtils.getAttribute((Element) n, ATTR_XSD_BASE);
- if (a != null)
- {
- String base = a.getValue();
- int i = base.indexOf(":");
- if (i != -1)
- {
- String prefix = base.substring(0, i);
- String local = base.substring(i + 1);
- String namespace = XMLUtils.findNamespaceURI(n, prefix);
- if (SOAPENC_ARRAY.equals(new QName(namespace, local)))
- extendsArray.add(name);
- }
- }
- checkType(n.getFirstChild(), name);
- }
- n = n.getNextSibling();
- }
- }
-}

Back to the top