blob: ac0e32791b5d41d093a0c6c045eef1ce3e845142 [file] [log] [blame]
package org.eclipse.rmf.reqif10.serialization;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.ContentHandler;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.xmi.PackageNotFoundException;
import org.eclipse.emf.ecore.xmi.XMLHelper;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.sphinx.emf.serialization.internal.XMLPersistenceMappingHandler;
import org.eclipse.sphinx.emf.serialization.internal.XMLPersistenceMappingLoadImpl;
import org.xml.sax.helpers.DefaultHandler;
public class ReqIF10LoadImpl extends XMLPersistenceMappingLoadImpl {
public ReqIF10LoadImpl(XMLHelper helper) {
super(helper);
}
/**
* creates XML default handler that searches for EPackages in the registry, only.
* It doesn't try to find a not registered EPackage by loading the content of the namespace URI.
*/
@Override
protected DefaultHandler makeDefaultHandler() {
XMLPersistenceMappingHandler handler = new XMLPersistenceMappingHandler(resource, helper, options) {
@Override
protected EPackage getPackageForURI(String uriString) {
if (uriString == null)
{
return null;
}
EPackage ePackage =
extendedMetaData == null ?
packageRegistry.getEPackage(uriString) :
extendedMetaData.getPackage(uriString);
if (ePackage != null && ePackage.eIsProxy())
{
ePackage = null;
}
if (ePackage == null)
{
ePackage = handleMissingPackage(uriString);
}
if (ePackage == null)
{
error
(new PackageNotFoundException
(uriString,
getLocation(),
getLineNumber(),
getColumnNumber()));
}
return ePackage;
}
};
return handler;
}
}