Hello!
I have built a GMF Editor, enabled validation and added the Epsilon Validation Framework.
So far everything worked fine. When i start my Editor as an Eclipse Application (Project opened in Eclipse, right-click -> Run As Eclipse Application) my written Constraints get checked and displayed as expected.
However, when i package my project as a (feature) plugin and export it it into a fresh Eclipse Installation I get the following exception after running the validation:
java.lang.NoSuchMethodError: geock.diagram.providers.MindmapValidationDecoratorProvider$StatusDecorator.getDecoration()Lorg/eclipse/gmf/runtime/diagram/ui/internal/services/decorator/Decoration;)
The plugins I installed are: GMF Runtime 1.4.2, Epsilon Core 0.9.0, and my projects plugin.
Adding the Epsilon Live Validation plugin, doesn't help.
At least the editor desn't crash anymore after commenting out the getDecoration() call.. but i still get the following exception in the error log:
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NoSuchMethodError: mindmap.diagram.providers.MindmapValidationDecoratorProvider$StatusDecorator.getDecoration()Lorg/eclipse/gmf/runtime/diagram/ui/internal/services/decorator/Decoration;)
at org.eclipse.swt.SWT.error(SWT.java:4083)
at org.eclipse.swt.SWT.error(SWT.java:3998)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4041)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
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(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
Caused by: java.lang.NoSuchMethodError: mindmap.diagram.providers.MindmapValidationDecoratorProvider$StatusDecorator.getDecoration()Lorg/eclipse/gmf/runtime/diagram/ui/internal/services/decorator/Decoration;
at mindmap.diagram.providers.MindmapValidationDecoratorProvider$StatusDecorator.refresh(MindmapValidationDecoratorProvider.java:278)
at mindmap.diagram.providers.MindmapValidationDecoratorProvider$1$1.run(MindmapValidationDecoratorProvider.java:142)
at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
at mindmap.diagram.providers.MindmapValidationDecoratorProvider$1.run(MindmapValidationDecoratorProvider.java:134)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
MindmapValidationDecoratorProvider.StatusDecorator
/**
* @generated
*/
public void refresh() {
...
// add decoration
if (editPart instanceof org.eclipse.gef.GraphicalEditPart) {
if (view instanceof Edge) {
setDecoration(getDecoratorTarget().addConnectionDecoration(getImage(severity), 50, true));
} else {
int margin = -1;
if (editPart instanceof org.eclipse.gef.GraphicalEditPart) {
margin = MapModeUtil.getMapMode(((org.eclipse.gef.GraphicalEditPart) editPart).getFigure()).DPtoLP(margin);
}
setDecoration(getDecoratorTarget().addShapeDecoration(getImage(severity),IDecoratorTarget.Direction.NORTH_EAST, margin, true));
}
if (getDecoration() != null) {
getDecoration().setToolTip(toolTip);
}
}
}
Help would be appreciated!
Cheers,
Christian