diff options
Diffstat (limited to 'bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceFactoryRegistry.java')
-rw-r--r-- | bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceFactoryRegistry.java | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceFactoryRegistry.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceFactoryRegistry.java deleted file mode 100644 index 8c295060f..000000000 --- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceFactoryRegistry.java +++ /dev/null @@ -1,149 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 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 - *******************************************************************************/ -package org.eclipse.wst.wsdl.util; - - -import java.util.Map; - -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.Resource.Factory; -import org.eclipse.emf.ecore.resource.impl.ResourceFactoryRegistryImpl; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; -import org.xml.sax.helpers.DefaultHandler; -import org.xml.sax.helpers.XMLReaderFactory; - - -/** - * This class provides support for the loading of WSDL or XSD resource from - * URI's that don't end with .xsd or .wsdl extensions. - * - * These URI's foil EMF's standard resource loading mechanism wich assumes that - * a resource type can always be deduced from the file extension. - * - * Code Example: - * ResourceSet resourceSet = new ResourceSetImpl(); - * WSDLResourceFactoryRegistry registry = new WSDLResourceFactoryRegistry(Resource.Factory.Registry.INSTANCE); - * resourceSet.setResourceFactoryRegistry(registry); - * <p> - * <b>Note:</b> This class/interface is part of an interim API that is still under development and expected to - * change significantly before reaching stability. It is being made available at this early stage to solicit feedback - * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken - * (repeatedly) as the API evolves. - * </p> - * @since 1.0 - */ -public class WSDLResourceFactoryRegistry extends ResourceFactoryRegistryImpl -{ - protected Resource.Factory.Registry parent; - - public WSDLResourceFactoryRegistry(Resource.Factory.Registry parent) - { - this.parent = parent; - } - - public Map getExtensionToFactoryMap() - { - return parent.getExtensionToFactoryMap(); - } - - public Map getProtocolToFactoryMap() - { - return parent.getProtocolToFactoryMap(); - } - - public Factory getFactory(URI uri) - { - return getFactory(uri, null); - } - - public Resource.Factory getFactory(URI uri, String contentType) - { - String uriString = uri.toString(); - - Factory factory = parent.getFactory(uri, contentType); - Factory defaultFactory = (Factory)INSTANCE.getFactory(URI.createURI(DEFAULT_EXTENSION), contentType); - - // give the parent the first crack at getting the factory - // if the factory is null or the known 'default' factory then we'll - // try to compute the factory ourselves - if (factory == null || factory == defaultFactory) - { - if (uriString.endsWith("wsdl") || uriString.endsWith("WSDL")) - { - // handle cases like "http://xxx/Distance.jws?wsdl" - // - factory = parent.getFactory(URI.createURI("*.wsdl"), contentType); - } - else if (uriString.endsWith("xsd") || uriString.endsWith("XSD")) - { - // handle cases like "http://xxx/Distance.jws?xsd" - // - factory = parent.getFactory(URI.createURI("*.xsd"), contentType); - } - else - //if (uri.fileExtension() == null) - { - // handle cases like "http://xxx/example?getQuote" - // - // finally we must resort to opening the uri's stream and - // peeking at the content to determine if its an xsd or wsdl - // - String rootElementName = getRootElementName(uriString); - if (rootElementName != null) - { - if (rootElementName.equals("schema")) - { - factory = parent.getFactory(URI.createURI("*.xsd"), contentType); - } - else if (rootElementName.equals("definitions")) - { - factory = parent.getFactory(URI.createURI("*.wsdl"), contentType); - } - } - } - } - return factory; - } - - // this method uses a SAX Parser to parser a stream and determine the root element name - // of any xml content - private String getRootElementName(String uri) - { - RootElementNameContentHandler handler = new RootElementNameContentHandler(); - try - { - XMLReader reader = XMLReaderFactory.createXMLReader(); - reader.setContentHandler(handler); - reader.parse(uri); - } - catch (Exception e) - { - } - - return handler.rootElementName; - } - - protected static class RootElementNameContentHandler extends DefaultHandler - { - public String rootElementName; - - public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException - { - rootElementName = localName; - - // here I throw an exception to make the SAX Parser to stop parsing - throw new SAXException("SAXParser intentonally stopped"); - } - } -} |