/**
 * <copyright>
 *
 * Copyright (c) 2002-2004 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 - Initial API and implementation
 *
 * </copyright>
 *
 * $Id: XSD2EcoreResourceImpl.java,v 1.3 2005/06/08 06:18:57 nickb Exp $
 */
package org.eclipse.emf.mapping.xsd2ecore.util;


import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;


/**
 * <!-- begin-user-doc -->
 * The <b>Resource </b> associated with the package.
 * <!-- end-user-doc -->
 * @see org.eclipse.emf.mapping.xsd2ecore.util.XSD2EcoreResourceFactoryImpl
 * @generated
 */
public class XSD2EcoreResourceImpl extends XMIResourceImpl
{
  /**
   * Creates an instance of the resource.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param uri the URI of the new resource.
   * @generated
   */
  public XSD2EcoreResourceImpl(URI uri)
  {
    super(uri);
  }

} //XSD2EcoreResourceFactoryImpl
