2016-06-30 6 views
0

ich die Ressource-Datei im Explorer, wenn ich versuche, die Ressource-Datei über die Transaktion zu ändern Bearbeitung Domain I am getting exception asEmf schreiben Transaktion

java.lang.IllegalStateException: Ressourcenset ohne Schreibtransaktion kann nicht bei ändern org.eclipse.emf.transaction.impl.TransactionChangeRecorder.assertWriting (TransactionChangeRecorder.java:348) bei org.eclipse.emf.transaction.impl.TransactionChangeRecorder.appendNotification (TransactionChangeRecorder.java:302) bei org.eclipse. emf.transaction.impl.TransactionChangeReco rder.processObjectNotification (TransactionChangeRecorder.java:284) bei org.eclipse.emf.transaction.impl.TransactionChangeRecorder.notifyChanged (TransactionChangeRecorder.java:240) bei org.eclipse.emf.common.notify.impl.BasicNotifierImpl. eNotify (BasicNotifierImpl.java:374) bei org.eclipse.emf.common.notify.impl.NotificationImpl.dispatch (NotificationImpl.java:1027) bei org.eclipse.emf.common.notify.impl.NotifyingListImpl. addUnique (NotifyingListImpl.java:299) bei org.eclipse.emf.common.util.AbstractEList.add (AbstractEList.java:303)

Antwort

2

Ich glaube, das Problem ist, dass Sie versuchen, eine Schreibtransaktion innerhalb einer anderen Schreibtransaktion auszuführen. Die Verwendung eines Befehls sollte den Trick machen. Dies kann mit der EditingDomain Ihres Modells erfolgen: (Stellen Sie sicher, dass sich org.eclipse.emf.transaction in Ihren Abhängigkeiten befindet)

import org.eclipse.emf.transaction.TransactionalEditingDomain; 
import org.eclipse.emf.transaction.util.TransactionUtil; 

public void doEditing(EObject element) { 
    // Make sure your element is attached to a source, otherwise this will return null 
    TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(element); 
    domain.getCommandStack().execute(new RecordingCommand(domain) { 

     @Override 
     protected void doExecute() { 
      // Implement your write operations here, 
      // for example: set a new name 
      element.eSet(element.eClass().getEStructuralFeature("name"), "aNewName"); 
     } 
    }); 
} 
Verwandte Themen