|
|
Re: Modifying a separate Ecore file outside Create-Features [message #662429 is a reply to message #662421] |
Wed, 30 March 2011 15:56 |
Rainer Thome Messages: 5 Registered: December 2010 |
Junior Member |
|
|
Hi!
This is my code (using a RecordingCommand):
final BpmnDiagramEditor editor = (BpmnDiagramEditor) Util
.getActiveEditor();
TransactionalEditingDomain domain = editor.getEditingDomain();
ResourceSet set = domain.getResourceSet();
set.getResourceFactoryRegistry().getExtensionToFactoryMap()
.put("wsdl", new WSDLResourceFactoryImpl());
Resource r = null;
r = set.createResource(URI.createURI(page.getFilePath()
.replaceAll("\\\\", "/")
.replace(Platform.getLocation().toString(), "")));
try {
r.load(Collections.EMPTY_MAP);
} catch (IOException e) {
return false;
}
r.setModified(false);
editor.getImportUtil().addResource(r, Util.PORTTYPES);
final List<EObject> objs = editor.getImportUtil()
.getObjectsForResource(r);
Definitions def = null;
for (Resource res : set.getResources()) {
if (res.getURI().fileExtension().equals("bpmn2")) {
def = ((DocumentRoot) res.getContents().get(0))
.getDefinitions();
break;
}
}
final Definitions finalDef = def;
domain.getCommandStack().execute(new RecordingCommand(domain) {
@Override
protected void doExecute() {
for (EObject eObject : objs) {
Interface iface = Bpmn2Factory.eINSTANCE.createInterface();
iface.setId(EcoreUtil.generateUUID());
iface.setImplementationRef(eObject);
for (Operation op : (EList<Operation>) ((PortType) eObject)
.getEOperations()) {
org.eclipse.bpmn2.Operation newOp = Bpmn2Factory.eINSTANCE
.createOperation();
newOp.setImplementationRef(op);
iface.getOperations().add(newOp);
}
finalDef.getRootElements().add(iface);
}
}
});
The code is called inside a "performFinish()" method of a Jface Wizard. The Exception does not occur inside that code piece, but when I am saving the diagram.
Best Regards
Rainer
[Updated on: Wed, 30 March 2011 15:56] Report message to a moderator
|
|
|
|
Powered by
FUDForum. Page generated in 0.02818 seconds