diff options
Diffstat (limited to 'bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/xsd/WSDLPartsToXSDTypeMapper.java')
-rw-r--r-- | bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/xsd/WSDLPartsToXSDTypeMapper.java | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/xsd/WSDLPartsToXSDTypeMapper.java b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/xsd/WSDLPartsToXSDTypeMapper.java deleted file mode 100644 index b39dc41e0..000000000 --- a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/xsd/WSDLPartsToXSDTypeMapper.java +++ /dev/null @@ -1,143 +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 Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.ws.internal.explorer.platform.wsdl.xsd; - -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Vector; -import javax.wsdl.Part; -import javax.xml.namespace.QName; -import org.eclipse.xsd.XSDComponent; -import org.eclipse.xsd.XSDElementDeclaration; -import org.eclipse.xsd.XSDModelGroupDefinition; -import org.eclipse.xsd.XSDNamedComponent; -import org.eclipse.xsd.XSDSchema; -import org.eclipse.xsd.XSDTypeDefinition; - -public class WSDLPartsToXSDTypeMapper -{ - private final char POUND = '#'; - private Vector xsdSchemaList_; - private Hashtable partToXSDCache_; - - public WSDLPartsToXSDTypeMapper() { - xsdSchemaList_ = new Vector(); - partToXSDCache_ = new Hashtable(); - } - - public void addSchemas(Vector schemaList) { - for (int i=0;i<schemaList.size();i++) { - Object schema = schemaList.elementAt(i); - if (schema != null) - xsdSchemaList_.addElement(schema); - } - } - - public XSDNamedComponent getXSDType(Part part, String id) { - XSDNamedComponent component = getXSDTypeFromCache(id); - if (component != null) - return component; - component = getXSDTypeFromSchema(part); - if (component != null) - addToCache(id, component); - return component; - } - - public XSDNamedComponent getXSDTypeFromCache(String id) { - return (XSDNamedComponent)partToXSDCache_.get(id); - } - - public XSDNamedComponent getXSDTypeFromSchema(Part part) { - boolean isElementDeclaration = (part.getTypeName() == null); - QName qName = isElementDeclaration ? part.getElementName() : part.getTypeName(); - return getXSDTypeFromSchema(qName.getNamespaceURI(), qName.getLocalPart(), isElementDeclaration); - } - - public XSDNamedComponent getXSDTypeFromSchema(String namespaceURI, String localName, boolean isElementDeclaration) { - for (int i = 0; i < xsdSchemaList_.size(); i++) { - XSDSchema xsdSchema = (XSDSchema)xsdSchemaList_.elementAt(i); - Vector components = new Vector(); - if (isElementDeclaration) - components.addAll(xsdSchema.getElementDeclarations()); - else - components.addAll(xsdSchema.getTypeDefinitions()); - for (Iterator it = components.iterator(); it.hasNext(); ) { - XSDNamedComponent component = (XSDNamedComponent)it.next(); - String compNSURI = component.getTargetNamespace(); - String compLocalname = component.getName(); - if (compNSURI != null && compLocalname != null && compNSURI.equals(namespaceURI) && compLocalname.equals(localName)) - return component; - } - } - return null; - } - - public XSDNamedComponent resolveXSDNamedComponent(XSDNamedComponent component) - { - if (component != null) - { - String uri = component.getURI(); - String qname = component.getQName(); - for (int i = 0; i < xsdSchemaList_.size(); i++) - { - XSDSchema xsdSchema = (XSDSchema)xsdSchemaList_.elementAt(i); - if (xsdSchema != null) - { - String targetNS = xsdSchema.getTargetNamespace(); - if (targetNS != null && targetNS.equals(trimQName(uri, qname))) - { - XSDNamedComponent resolvedComponent = null; - if (component instanceof XSDTypeDefinition) - resolvedComponent = xsdSchema.resolveTypeDefinition(qname); - else if (component instanceof XSDElementDeclaration) - resolvedComponent = xsdSchema.resolveElementDeclaration(qname); - else if (component instanceof XSDModelGroupDefinition) - resolvedComponent = xsdSchema.resolveModelGroupDefinition(qname); - if (isComponentResolvable(resolvedComponent)) - return resolvedComponent; - } - } - } - } - return null; - } - - private String trimQName(String uri, String qname) - { - int index = uri.indexOf(qname); - if (index != -1) - { - String ns = uri.substring(0, index); - if (ns.charAt(index-1) == POUND) - return ns.substring(0, index-1); - else - return ns; - } - else - return uri; - } - - private void addToCache(String id, XSDNamedComponent component) { - partToXSDCache_.put(id,component); - } - - protected boolean isComponentResolvable(XSDComponent component) - { - if (component == null) - return false; - XSDSchema schema = component.getSchema(); - if (schema == null) - return false; - if (schema.getTargetNamespace() == null) - return false; - return true; - } -} |