package org.dresdenocl.metamodels.xsd.internal.provider; import java.net.URL; import org.apache.log4j.Logger; 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.dresdenocl.metamodels.xsd.XSDMetamodelPlugin; import org.dresdenocl.metamodels.xsd.internal.model.XSDModel; import org.dresdenocl.model.IModel; import org.dresdenocl.model.IModelProvider; import org.dresdenocl.model.ModelAccessException; import org.dresdenocl.model.base.AbstractModelProvider; import org.dresdenocl.modelbus.ModelBusPlugin; /** * Implementation of the {@link IModelProvider} interface for XSD models. This * implementation will create an {@link XSDModel} instance. * * @generated */ public class XSDModelProvider extends AbstractModelProvider implements IModelProvider { // Logger for this class private static final Logger logger = Logger.getLogger(XSDModelProvider.class); private ResourceSet resourceSet = null; /** * @see org.dresdenocl.model.IModelProvider#getModel(java.net.URL) * * @generated */ public IModel getModel(URL modelURL) throws ModelAccessException { if (logger.isDebugEnabled()) { logger.debug("getModel(modelURL=" + modelURL + ") - enter"); //$NON-NLS-1$ //$NON-NLS-2$ } URI modelURI; IModel model = null; Resource resource; // try to create a URI try { modelURI = URI.createURI(modelURL.toString()); } catch (IllegalArgumentException e) { throw new ModelAccessException("Invalid URL: " + modelURL, e); //$NON-NLS-1$ } // get the resource resource = getResourceSet().getResource(modelURI, false); if (resource == null) { // we only want to create the resource, not load it resource = getResourceSet().createResource(modelURI); } model = new XSDModel(getResourceSet().getResource(modelURI, false), ModelBusPlugin.getMetamodelRegistry().getMetamodel( XSDMetamodelPlugin.ID)); if (logger.isDebugEnabled()) { logger.debug("getModel() - exit - return value=" + model); //$NON-NLS-1$ } return model; } /** * Helper method that lazily creates a resource set. * * @return */ protected ResourceSet getResourceSet() { if (resourceSet == null) { resourceSet = new ResourceSetImpl(); } return resourceSet; } }