[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.technology.epf] EPF XMI file parsing problem

Hi,
I want to use activity diagram data which can define in EPF (on Activity for example). This information are stored in diagram.xmi.
I use EMF to create an XMI parser.
The problem is around model factory initialization (relative to
org.eclipse.epf.diagram.model prefixed elements).


Xmi Parser code below :

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EcorePackage;
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.util.BasicExtendedMetaData;
import org.eclipse.emf.ecore.util.ExtendedMetaData;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import org.eclipse.epf.diagram.model.ModelPackage;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.gmf.runtime.notation.NotationPackage;
import org.eclipse.uml2._2._1._0.uml.UmlPackage;

public class TestEFPXMIParser {

/**
* @param args
*/
public static void main(String[] args) {
// create a ResourceSet.
ResourceSet resourceSet = new ResourceSetImpl();
// initialize ResourceSet
final ExtendedMetaData extendedMetaData = new BasicExtendedMetaData(resourceSet.getPackageRegistry());
resourceSet.getLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
resourceSet.getPackageRegistry().put(UmlPackage.eNS_URI, UmlPackage.eINSTANCE);
resourceSet.getPackageRegistry().put(NotationPackage.eNS_URI, NotationPackage.eINSTANCE);
resourceSet.getPackageRegistry().put(ModelPackage.eNS_URI, ModelPackage.eINSTANCE);
resourceSet.getPackageRegistry().put(UmaPackage.eNS_URI, UmaPackage.eINSTANCE);
//System.out.println(ModelPackage.eNS_URI);
resourceSet.getPackageRegistry().put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl());

URI fileURI = URI.createFileURI("resources/diagram.xmi");


	Resource resource = resourceSet.getResource(fileURI, true);
	
	System.out.println("ok");
    }

}

Relative console error :

Exception in thread "main" java.lang.ExceptionInInitializerError
at org.eclipse.epf.library.edit.internal.TngAdapterFactoryImpl.getProcessComposedAdapterFactory(Unknown Source)
at org.eclipse.epf.library.edit.TngAdapterFactory.<clinit>(Unknown Source)
at org.eclipse.epf.diagram.model.impl.ActivityDetailDiagramImpl.<clinit>(Unknown Source)
at org.eclipse.epf.diagram.model.impl.ModelFactoryImpl.createActivityDetailDiagram(Unknown Source)
at org.eclipse.epf.diagram.model.impl.ModelFactoryImpl.create(Unknown Source)
at org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl.createObject(XMLHelperImpl.java:870)
at org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl.createObject(XMLHelperImpl.java:919)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectFromFactory(XMLHandler.java:2051)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1270)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1336)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:970)
at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:87)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:953)
at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:684)
at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:167)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:878)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1693)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:179)
at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:180)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1354)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1155)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:256)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:271)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:398)
at com.prometil.epf.xmi.parser.TestEFPXMIParser.main(TestEFPXMIParser.java:42)
Caused by: java.lang.NullPointerException
at org.eclipse.epf.library.edit.Providers.<clinit>(Unknown Source)
... 32 more


First lines of XMI file :

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"; xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore";
xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation"; xmlns:org.eclipse.epf.diagram.model="http://www.eclipse.org/epf/diagram/1.0.0/diagram.ecore"; xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.4/uma.ecore"; xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML";>
<uml:Activity xmi:id="_QIQIMI4eEdycJJIpQMvv6A" name="Revue formelle">
...


Maybe dependency missing or something like that ...
Does anyone have an idea ?
Regards,
Sebastien

JPEG image

JPEG image