/*
   * (non-Javadoc)
   *
   * @see org.dresdenocl.modelbus.IModelProvider#getModel(java.net.URL)
   */
  public IModel getModel(URL modelURL) throws ModelAccessException {

    /* Eventually log the entry into this method. */
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("getModel(modelURL=" + modelURL + ") - enter"); // $NON-NLS-1$ //$NON-NLS-2$
    }
    // no else.

    URI modelURI;
    Resource resource;
    IModel model;

    /* Try to create an 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, true);

    /* Check if the resource has already been created. */
    if (resource == null) {
      /* We only want to create the resource, not load it. */
      resource = getResourceSet().createResource(modelURI);
    }
    // no else.

    /* Create the model from the resource. */
    model =
        new EcoreModel(
            getResourceSet().getResource(modelURI, false),
            ModelBusPlugin.getMetamodelRegistry().getMetamodel(EcoreMetamodelPlugin.ID));

    /* Eventually log the exit from this method. */
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("getModel() - exit - return value=" + model); // $NON-NLS-1$
    }
    // no else.

    return model;
  }
  /*
   * (non-Javadoc)
   *
   * @see
   * org.dresdenocl.model.base.AbstractModelProvider#getModel(org.eclipse
   * .emf.ecore.resource.Resource)
   */
  public IModel getModel(Resource resource) {
    /* Eventually log the entry into this method. */
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("getModel(reosurce=" + resource + ") - enter"); // $NON-NLS-1$ //$NON-NLS-2$
    }
    // no else.

    IModel model =
        new EcoreModel(
            resource, ModelBusPlugin.getMetamodelRegistry().getMetamodel(EcoreMetamodelPlugin.ID));

    /* Eventually log the exit from this method. */
    if (LOGGER.isDebugEnabled()) {
      LOGGER.debug("getModel() - exit - return value=" + model); // $NON-NLS-1$
    }
    // no else.

    return model;
  }