Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Transactions and NPE
Transactions and NPE [message #522617] Tue, 23 March 2010 11:23 Go to next message
Eclipse UserFriend
Originally posted by: formatzeh.gmx.de

Hello NG,
I want to manipulate some uml files programmatically very extensive. So
I subclassed RecordingCommand for the modifications. If I do so with the
*.uml file as resource all works fine. But if I do so with the *umlstm
as resource it doesn't. I want to do modifications on the currently in
the uml statemachine editor selected EObjects. The invocation of the
modifications was contributed as a context menu entry. The action looks
as follows:

public class RefactoringAction extends Action {
@Override
public void run() {
try{
ResourceSet rs = resource.getResourceSet();

TransactionalEditingDomain domain = domain =
TransactionUtil.getEditingDomain(rs);
if(domain == null){
domain =
TransactionalEditingDomain.Factory.INSTANCE.createEditingDom ain(rs);
}
CommandStack stack = domain.getCommandStack();
MyRecordingCommand command = new MyRecordingCommand(resource, domain);
stack.execute(command);
if(command.getException() != null){
throw command.getException();
}
} catch (Exception e) {
command.undo();
}
domain.dispose();
}
}

And the RecoringCommand here:

class MyRecordingCommand extends RecordingCommand{
public MyRecordingCommand(Resource resource,TransactionalEditingDomain
domain){
super(domain);
this.domain = domain;
this.resource = resource;
}

@Override
protected void doExecute() {
try {
EObject result = doExtensiveModifications(resource.getContents().get(0));
resource.getContents().set(0, result);
resource.save(null);
resource.setModified(true);
} catch (Exception e) {
exception = e;
}
}

}

After the modifications have been executed I get the question "The file
has been changed on the file system. Do you want to load the changes?".
But after clicking "yes" the canvas of the diagram becomes empty and a
new entry in the error log shows the exception after this post. If I
then close the empty canvas diagram and try to re-open it the eclipse
instance totally gets frozen. The point is that I don't get this
exception if I don't invoke domain.dispose() at the end of the run()
method. In this case I just answer all questions if I want to reload
with yes and the diagram appears. But this is not a solution because I
want to invoke dispose because the editing has finished at this moment.
Besides that I create Actions with the same code but on other models and
metamodels which can't be parsed without dispose. Neither I want to
determine which kind of model I currently modify because it should be
done in a generic way. I can imagine that the above mentioned exception
won't appear if I wouldn't save the resource in the doExecute() method.
I do this because since then all modifications will be propagated to the
editor as well because the printing will be initiated and not only in
the model. Maybe I could solve the problem when I find a way of just
propagating the changes to the editor withoout saving the resource?
I hope you can help me.

best regards,
Gilbert



org.eclipse.swt.SWTException: Failed to execute runnable
(java.lang.NullPointerException)
at org.eclipse.swt.SWT.error(SWT.java:3884)
at org.eclipse.swt.SWT.error(SWT.java:3799)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:137)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3855)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3476)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 21)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:332)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:194)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:368)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
Caused by: java.lang.NullPointerException
at
org.eclipse.gmf.runtime.diagram.ui.services.editpart.EditPar tService.createEditPart(EditPartService.java:226)
at
org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents( AbstractEditPartViewer.java:611)
at
org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor.initi alizeGraphicalViewerContents(DiagramEditor.java:870)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor.handleElementContentReplaced(DiagramDocu mentEditor.java:987)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor$ElementStateListener$4.run(DiagramDocume ntEditor.java:1313)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor$ElementStateListener.execute(DiagramDocu mentEditor.java:1458)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor$ElementStateListener.elementContentRepla ced(DiagramDocumentEditor.java:1316)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.document .AbstractDocumentProvider.fireElementContentReplaced(Abstrac tDocumentProvider.java:698)
at
org.eclipse.uml2.diagram.statemachine.part.UMLDocumentProvid er.handleElementChanged(UMLDocumentProvider.java:607)
at
org.eclipse.uml2.diagram.statemachine.part.UMLDocumentProvid er.doSynchronize(UMLDocumentProvider.java:496)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.document .AbstractDocumentProvider$1SynchronizeOperation.execute(Abst ractDocumentProvider.java:983)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.document .AbstractDocumentProvider$DocumentProviderOperation.run(Abst ractDocumentProvider.java:66)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.document .AbstractDocumentProvider.executeOperation(AbstractDocumentP rovider.java:530)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.document .AbstractDocumentProvider.synchronize(AbstractDocumentProvid er.java:991)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor.handleEditorInputChanged(DiagramDocument Editor.java:602)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor.sanityCheckState(DiagramDocumentEditor.j ava:726)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor.safelySanityCheckState(DiagramDocumentEd itor.java:708)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor$ActivationListener.handleActivation(Diag ramDocumentEditor.java:1179)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor$ActivationListener.access$0(DiagramDocum entEditor.java:1172)
at
org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.Di agramDocumentEditor$ActivationListener$1.run(DiagramDocument Editor.java:1206)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:134)
... 23 more
Re: Transactions and NPE [message #522654 is a reply to message #522617] Tue, 23 March 2010 09:06 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: ralf.ellner.cs.fau.de

Gilbert,

> I want to manipulate some uml files programmatically very extensive. So
> I subclassed RecordingCommand for the modifications. If I do so with the
> *.uml file as resource all works fine. But if I do so with the *umlstm
> as resource it doesn't. I want to do modifications on the currently in
> the uml statemachine editor selected EObjects. The invocation of the
> modifications was contributed as a context menu entry. The action looks
> as follows:
>
> public class RefactoringAction extends Action {
> @Override
> public void run() {
> try{
> ResourceSet rs = resource.getResourceSet();
>
> TransactionalEditingDomain domain = domain =
> TransactionUtil.getEditingDomain(rs);
> if(domain == null){
> domain =
> TransactionalEditingDomain.Factory.INSTANCE.createEditingDom ain(rs);
> }
> CommandStack stack = domain.getCommandStack();
> MyRecordingCommand command = new MyRecordingCommand(resource, domain);
> stack.execute(command);
> if(command.getException() != null){
> throw command.getException();
> }
> } catch (Exception e) {
> command.undo();
> }
> domain.dispose();
> }
> }

the EMF-generated *.uml-Editor uses an AdapterFactoryEditingDomain. The
call to TransactionUtil.getEditingDomain() should return null in this
case and a new EditingDomain is created and disposed later.

The GMF-generated *.umlstm-Editor uses a TransactionalEditingDomain.
TransactionUtil.getEditingDomain() returns the EditingDomain of the
diagram editor and this EditingDomain gets disposed later. This leaves
the diagram editor with a disposed EditingDomain and leads to the strage
behavior of the editor.

In order to propagate the changes of your Command into the running
editor you must use the EditingDomain of that editor. There is no need
to save the resource within the Command. For the *.umlstm-Editor you may
use TransactionUtil.getEditingDomain() to obtain the EditingDomain.
The *.uml-Editor implements IEditingDomainProvider.

Hope this helps, Ralf
Re: Transactions and NPE [message #522674 is a reply to message #522654] Tue, 23 March 2010 15:00 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: formatzeh.gmx.de

Hi Ralf,

> the EMF-generated *.uml-Editor uses an AdapterFactoryEditingDomain. The
> call to TransactionUtil.getEditingDomain() should return null in this
> case and a new EditingDomain is created and disposed later.
That's correct. Null is first returned and then it is created by the
Factory. Here a TransactionalEditingDomain will be returned then.

> The GMF-generated *.umlstm-Editor uses a TransactionalEditingDomain.
> TransactionUtil.getEditingDomain() returns the EditingDomain of the
> diagram editor and this EditingDomain gets disposed later.
Here getEditingDomain() is not null and an instance of
DiagramEditingDomainFactory.DiagramEditingDomain will be returned.

> In order to propagate the changes of your Command into the running
> editor you must use the EditingDomain of that editor.
Ok, that means that I don't have to call domain =
TransactionUtil.getEditingDomain(rs); with the resourceSet as parameter
but get the editing domain from the editor anyhow? But how do i get this?


> There is no need to save the resource within the Command. For the *.umlstm-Editor you may
> use TransactionUtil.getEditingDomain() to obtain the EditingDomain.
> The *.uml-Editor implements IEditingDomainProvider.
If I just remove the 3 lines of saving from the doExecute() method then
no exception will be thrown when invoking the modifications from the
umlstm-editor. But not all modifications will be shown in the editor
either and if I want to move some elements with the mouse, I can't and
the error log fills with entries like the one after this posting. On the
other side if I invoke the modification from an *.uml-editor all
modifications will be executed but the connected umlstm-file doesn't
know about the modifications and so doesn't display them.

Do you have some more ideas?




org.eclipse.core.commands.ExecutionException: While executing the
operation, an exception occurred
at
org.eclipse.core.commands.operations.DefaultOperationHistory .execute(DefaultOperationHistory.java:519)
at
org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:206)
at
org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:169)
at
org.eclipse.gmf.runtime.diagram.ui.parts.DiagramCommandStack .execute(DiagramCommandStack.java:156)
at org.eclipse.gef.tools.AbstractTool.executeCommand(AbstractTo ol.java:399)
at
org.eclipse.gef.tools.AbstractTool.executeCurrentCommand(Abs tractTool.java:411)
at
org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTracke rEx.executeCurrentCommand(DragEditPartsTrackerEx.java:151)
at
org.eclipse.gef.tools.DragEditPartsTracker.performDrag(DragE ditPartsTracker.java:469)
at
org.eclipse.gef.tools.DragEditPartsTracker.handleButtonUp(Dr agEditPartsTracker.java:333)
at org.eclipse.gef.tools.AbstractTool.mouseUp(AbstractTool.java :1064)
at org.eclipse.gef.tools.SelectionTool.mouseUp(SelectionTool.ja va:544)
at org.eclipse.gef.tools.SelectionTool.mouseUp(SelectionTool.ja va:544)
at org.eclipse.gef.EditDomain.mouseUp(EditDomain.java:263)
at
org.eclipse.gef.ui.parts.DomainEventDispatcher.dispatchMouse Released(DomainEventDispatcher.java:374)
at
org.eclipse.draw2d.LightweightSystem$EventHandler.mouseUp(Li ghtweightSystem.java:538)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListe ner.java:207)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java :84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.ja va:3880)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3473)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:22 21)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:332)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:194)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:368)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
Caused by: java.lang.IllegalStateException: Cannot activate read/write
transaction in read-only transaction context
at
org.eclipse.emf.transaction.impl.TransactionalEditingDomainI mpl.acquire(TransactionalEditingDomainImpl.java:561)
at
org.eclipse.emf.transaction.impl.TransactionalEditingDomainI mpl.activate(TransactionalEditingDomainImpl.java:493)
at
org.eclipse.emf.transaction.impl.TransactionImpl.start(Trans actionImpl.java:204)
at
org.eclipse.emf.transaction.impl.TransactionalEditingDomainI mpl.startTransaction(TransactionalEditingDomainImpl.java:409 )
at
org.eclipse.emf.workspace.AbstractEMFOperation.createTransac tion(AbstractEMFOperation.java:617)
at
org.eclipse.emf.workspace.AbstractEMFOperation.execute(Abstr actEMFOperation.java:147)
at
org.eclipse.gmf.runtime.common.core.command.CompositeCommand .doExecuteWithResult(CompositeCommand.java:403)
at
org.eclipse.gmf.runtime.common.core.command.AbstractCommand. execute(AbstractCommand.java:135)
at
org.eclipse.core.commands.operations.DefaultOperationHistory .execute(DefaultOperationHistory.java:511)
.... 40 more
Re: Transactions and NPE [message #522869 is a reply to message #522617] Wed, 24 March 2010 04:46 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: formatzeh.gmx.de

Does anybody have experiences with modifying the underlying model of an
*.umlstm file programmatically?
Re: Transactions and NPE [message #522891 is a reply to message #522674] Wed, 24 March 2010 06:58 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: ralf.ellner.cs.fau.de

Hi Gilbert,

>> There is no need to save the resource within the Command. For the *.umlstm-Editor you may
>> use TransactionUtil.getEditingDomain() to obtain the EditingDomain.
>> The *.uml-Editor implements IEditingDomainProvider.
> If I just remove the 3 lines of saving from the doExecute() method then
> no exception will be thrown when invoking the modifications from the
> umlstm-editor. But not all modifications will be shown in the editor
> either and if I want to move some elements with the mouse, I can't and
> the error log fills with entries like the one after this posting. On the
> other side if I invoke the modification from an *.uml-editor all
> modifications will be executed but the connected umlstm-file doesn't
> know about the modifications and so doesn't display them.

the *.uml-Editor uses an AdapterFactoryEditingDomain, not an
TransactionalEditingDomain. Thus, you cannot use the EditingDomain of
this Editor with a RecordingCommand. However, you could perform your
modifications on this EditingDomain using other Commands e.g.,
SetCommands. The diagram should be synchronized automatically when opened.

When using the TransactionalEditingDomain of the *.umlstm-Editor your
changes to the domain model should become visible in the diagram.
However, if you create new Elements in your domain model you might need
to create views as well. http://wiki.eclipse.org/index.php/GMF_Tips
explains, how to do this.

Cheers, Ralf
Re: Transactions and NPE [message #523001 is a reply to message #522891] Wed, 24 March 2010 17:47 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: formatzeh.gmx.de

Hi Ralf,
> the *.uml-Editor uses an AdapterFactoryEditingDomain, not an
> TransactionalEditingDomain. Thus, you cannot use the EditingDomain of
> this Editor with a RecordingCommand. However, you could perform your
> modifications on this EditingDomain using other Commands e.g.,
> SetCommands. The diagram should be synchronized automatically when opened.
The point is that I don't know which changes will be invoked on the
model. Everything happens ad-hoc. So I can't create for every
modification a command. Isn't there a command similar to the
RecordingCommand which records everything and handles it like a command?
Re: Transactions and NPE [message #523118 is a reply to message #523001] Thu, 25 March 2010 08:10 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: ralf.ellner.cs.fau.de

Hi Gilbert,

>> the *.uml-Editor uses an AdapterFactoryEditingDomain, not an
>> TransactionalEditingDomain. Thus, you cannot use the EditingDomain of
>> this Editor with a RecordingCommand. However, you could perform your
>> modifications on this EditingDomain using other Commands e.g.,
>> SetCommands. The diagram should be synchronized automatically when opened.
> The point is that I don't know which changes will be invoked on the
> model. Everything happens ad-hoc. So I can't create for every
> modification a command. Isn't there a command similar to the
> RecordingCommand which records everything and handles it like a command?

you could change your doExtensiveModifications method to use the
predefined Commands in the EMF API. You may compose these Commands using
org.eclipse.emf.common.command.Command#chain(Command).

Otherwise, you could change the *.uml-Editor to use a
TransactionalEditingDomain and use your RecoringCommand.
http://www.eclipse.org/articles/Article-Integrating-EMF-GMF- Editors/index.html#extending_the_editor_input
provides some hints.

Cheers, Ralf
Re: Transactions and NPE [message #523149 is a reply to message #523118] Thu, 25 March 2010 05:44 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: formatzeh.gmx.de

Thanks Ralf,
> Otherwise, you could change the *.uml-Editor to use a
> TransactionalEditingDomain and use your RecoringCommand.
> http://www.eclipse.org/articles/Article-Integrating-EMF-GMF- Editors/index.html#extending_the_editor_input
> provides some hints.
With this I could use the RecordingCommand with the *.uml editors. But
how can I solve the freezing problem with the *umlstm. editors? Or do
you mean that I do have to change the editing domain of the underlying
model of the diagram editor to a TransactionalEditingDomain? Is this
possible at runtime? Check the editing domain of the underlying model if
it is a transactional editing domain and if not create one?
Re: Transactions and NPE [message #523159 is a reply to message #523149] Thu, 25 March 2010 11:52 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: ralf.ellner.cs.fau.de

Hi Gilbert,

>> Otherwise, you could change the *.uml-Editor to use a
>> TransactionalEditingDomain and use your RecoringCommand.
>> http://www.eclipse.org/articles/Article-Integrating-EMF-GMF- Editors/index.html#extending_the_editor_input
>> provides some hints.
> With this I could use the RecordingCommand with the *.uml editors. But
> how can I solve the freezing problem with the *umlstm. editors? Or do
> you mean that I do have to change the editing domain of the underlying
> model of the diagram editor to a TransactionalEditingDomain? Is this
> possible at runtime? Check the editing domain of the underlying model if
> it is a transactional editing domain and if not create one?

the GMF-generated *umlstm editor already uses an
TransactionalEditingDomain and you should use it (e.g., using
TransactionUtil#getEditingDomain(ResourceSet)) when changing the model.
However, using EMF Commands with GMF is a little more complicated. See
http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/m sg04366.html
for some hints. Maybe someone in the GMF group can help you with this.

Cheers, Ralf
Re: Transactions and NPE [message #523177 is a reply to message #523159] Thu, 25 March 2010 12:30 Go to previous message
Eclipse UserFriend
Originally posted by: formatzeh.gmx.de

Ok, thanks Ralf,
> the GMF-generated *umlstm editor already uses an
> TransactionalEditingDomain and you should use it (e.g., using
> TransactionUtil#getEditingDomain(ResourceSet)) when changing the model.
> However, using EMF Commands with GMF is a little more complicated. See
> http://dev.eclipse.org/newslists/news.eclipse.modeling.gmf/m sg04366.html
> for some hints. Maybe someone in the GMF group can help you with this.
I'll try it one more time and then will ask the gmf group ;)

but thanks a lot for your patience and help
Previous Topic:Unexpected interaction between UML Association#ownedEnds and DeleteCommand - AssocTest.java (1/1)
Next Topic:How to find all references of an EObject in the workspace?
Goto Forum:
  


Current Time: Thu Apr 25 02:04:34 GMT 2024

Powered by FUDForum. Page generated in 0.03847 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top