/****************************************************************************** | |
* Copyright (c) 2011, EBM WebSourcing | |
* 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: | |
* EBM WebSourcing - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.bpel.common.wsdl.parsers; | |
import org.eclipse.emf.common.util.URI; | |
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.emf.ecore.xmi.impl.XMLResourceFactoryImpl; | |
import org.eclipse.xsd.XSDPackage; | |
import org.eclipse.xsd.XSDSchema; | |
import org.eclipse.xsd.util.XSDResourceFactoryImpl; | |
import org.eclipse.xsd.util.XSDUtil; | |
/** | |
* A set of utilities to parse XML schemas and accounting for file imports. | |
* <p> | |
* This class can be used with {@link XSDUtil}. | |
* </p> | |
* | |
* @author Vincent Zurczak - EBM WebSourcing | |
*/ | |
public class XmlSchemaParser { | |
/** | |
* Loads a XML schema. | |
* @param emfUri an EMF URI | |
* @param resourceSet a resource set | |
* @return an instance of {@link XSDSchema} | |
* <p> | |
* This object already supports inclusions, which means there is no need to | |
* get the imports and parse them. | |
* </p> | |
*/ | |
public static XSDSchema loadXmlSchema( URI emfUri, ResourceSet resourceSet ) { | |
Resource resource = resourceSet.getResource( emfUri, true ); | |
return (XSDSchema) resource.getContents().iterator().next(); | |
} | |
/** | |
* @return a resource set to parse XML schemas | |
*/ | |
public static ResourceSet createBasicResourceSetForXmlSchema() { | |
ResourceSet resourceSet = new ResourceSetImpl(); | |
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put( "xml", new XMLResourceFactoryImpl()); | |
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put( "xsd", new XSDResourceFactoryImpl()); | |
resourceSet.getPackageRegistry().put( XSDPackage.eNS_URI, XSDPackage.eINSTANCE ); | |
return resourceSet; | |
} | |
} |