Complete OCL for Xtext Validation [message #1777951] |
Wed, 06 December 2017 11:43  |
Eclipse User |
|
|
|
Hello!
I am trying to integrate external ocl constraints in my Xtext editor and for that matter I tried to follow the OCL tutorial, in specific the Complete OCL for Xtext Validation section.
However, this code
public class StatesJavaValidator extends AbstractStatesJavaValidator
{
@Override
public void register(EValidatorRegistrar registrar) {
super.register(registrar);
StatesPackage ePackage = StatesPackage.eINSTANCE;
URI oclURI = URI.createPlatformResourceURI(
"/StatesProject/model/States.ocl", true);
registrar.register(ePackage,
new CompleteOCLEObjectValidator(ePackage, oclURI));
}
}
is no longer valid since CompleteOCLEObjectValidator needs an EnvironmentFactory. I have tried several options but I always end with a
!ENTRY org.eclipse.ocl.xtext.base 4 0 2017-12-06 17:25:17.867
!MESSAGE Essential OCL Editor linking error
!STACK 0
java.lang.NullPointerException
at org.eclipse.ocl.pivot.internal.manager.Orphanage.getOrphanage(Orphanage.java:400)
at org.eclipse.ocl.pivot.internal.manager.PivotMetamodelManager.createOrphanage(PivotMetamodelManager.java:528)
at org.eclipse.ocl.pivot.internal.CompleteModelImpl.getOrphanage(CompleteModelImpl.java:577)
at org.eclipse.ocl.xtext.base.cs2as.CS2ASConversion.garbageCollect(CS2ASConversion.java:325)
at org.eclipse.ocl.xtext.base.cs2as.CS2AS.update(CS2AS.java:635)
at org.eclipse.ocl.xtext.base.utilities.CS2ASLinker.afterModelLinked(CS2ASLinker.java:84)
at org.eclipse.xtext.linking.impl.AbstractCleaningLinker.linkModel(AbstractCleaningLinker.java:57)
at org.eclipse.xtext.resource.XtextResource.doLinking(XtextResource.java:340)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLinking(LazyLinkingResource.java:107)
at org.eclipse.ocl.xtext.essentialocl.utilities.EssentialOCLCSResource.doLinking(EssentialOCLCSResource.java:346)
at org.eclipse.xtext.resource.XtextResource.updateInternalState(XtextResource.java:301)
at org.eclipse.xtext.resource.XtextResource.updateInternalState(XtextResource.java:290)
at org.eclipse.xtext.resource.XtextResource.doLoad(XtextResource.java:180)
at org.eclipse.xtext.linking.lazy.LazyLinkingResource.doLoad(LazyLinkingResource.java:100)
at org.eclipse.ocl.xtext.essentialocl.utilities.EssentialOCLCSResource.doLoad(EssentialOCLCSResource.java:354)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
at org.eclipse.ocl.pivot.internal.context.AbstractParserContext.createBaseResource(AbstractParserContext.java:77)
at org.eclipse.ocl.pivot.internal.context.AbstractParserContext.parse(AbstractParserContext.java:150)
at org.eclipse.ocl.pivot.internal.manager.PivotMetamodelManager.parseSpecification(PivotMetamodelManager.java:2146)
at org.eclipse.ocl.pivot.internal.delegate.ValidationBehavior.getQueryOrThrow(ValidationBehavior.java:115)
at org.eclipse.ocl.pivot.internal.delegate.OCLValidationDelegate.validatePivot(OCLValidationDelegate.java:310)
at org.eclipse.ocl.pivot.internal.delegate.OCLValidationDelegate.validate(OCLValidationDelegate.java:239)
at org.eclipse.ocl.pivot.internal.delegate.OCLValidationDelegateFactory.validate(OCLValidationDelegateFactory.java:77)
at org.eclipse.emf.ecore.util.EObjectValidator.validate(EObjectValidator.java:227)
at org.avl.mdml.mydsl.mDML04.util.MDML04Validator.validateDevice_MinStatevars(MDML04Validator.java:248)
at org.avl.mdml.mydsl.mDML04.util.MDML04Validator.validateDevice(MDML04Validator.java:197)
at org.avl.mdml.mydsl.mDML04.util.MDML04Validator.validate(MDML04Validator.java:92)
at org.eclipse.emf.ecore.util.EObjectValidator.validate(EObjectValidator.java:324)
at org.eclipse.emf.ecore.util.Diagnostician.doValidate(Diagnostician.java:171)
at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:158)
at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:137)
at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:39)
at org.eclipse.emf.ecore.util.Diagnostician.doValidateContents(Diagnostician.java:181)
at org.eclipse.xtext.validation.CancelableDiagnostician.doValidateContents(CancelableDiagnostician.java:70)
at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:161)
at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:137)
at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:39)
at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:120)
at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:146)
at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:124)
at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:90)
at org.eclipse.xtext.ui.validation.DefaultResourceUIValidatorExtension.addMarkers(DefaultResourceUIValidatorExtension.java:60)
at org.eclipse.xtext.ui.validation.DefaultResourceUIValidatorExtension.updateValidationMarkers(DefaultResourceUIValidatorExtension.java:46)
at org.eclipse.xtext.builder.builderState.MarkerUpdaterImpl.processDelta(MarkerUpdaterImpl.java:93)
at org.eclipse.xtext.builder.builderState.MarkerUpdaterImpl.updateMarkers(MarkerUpdaterImpl.java:63)
at org.eclipse.xtext.builder.builderState.AbstractBuilderState.updateMarkers(AbstractBuilderState.java:82)
at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.doUpdate(ClusteringBuilderState.java:283)
at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:116)
at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:287)
at org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:267)
at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:161)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Does anyone have an example of how to proceed with the new version? It would be much appreciated. Thanks!
|
|
|
|
|
|
|
Re: Complete OCL for Xtext Validation [message #1778379 is a reply to message #1778377] |
Wed, 13 December 2017 10:12  |
Eclipse User |
|
|
|
Hi
Recent Eclipse platform changes have added both Java 9 and JUnit 5 support for both Oxygen.1a and Photon M2. A month or two ago a number of users managed to get into trouble, sometimes clearly due to a failure to read Java 9 guidance, but sometimes for less obvious reasons. Mismatching PDE and JDT versions were a common symptom. The problems seem to have subsided. Perhaps you are experiencing one of these bleeding edge PDE phenomena.
OCL has very few platform dependencies. It used to work on four successive annual releases, but the advent of Java 8 and now Java 9 has made multi-version support very hard. So long as you only use Java 8 all should be ok, however the platform developers are working very hard on Java 9 and occasionally they need a Bugzilla to identify a Java 8 compatibility. If you have a repro maybe you can identify just such a Bugzilla.
If you are using org.eclipse.ocl.xtext... you are using the Xtext support from the Pivot-based OCL. You should therefore be using org.eclipse.ocl.pivot... for the model rather than org.eclipse.ocl.{ecore, uml} to avoid inconsistencies.
Regards
Ed Willink
|
|
|
Powered by
FUDForum. Page generated in 0.03830 seconds