Home » Modeling » OCL » Exception on custom error message with complete OCL
|
Re: Exception on custom error message with complete OCL [message #1707550 is a reply to message #1707399] |
Mon, 07 September 2015 09:34 |
Ed Willink Messages: 7670 Registered: July 2009 |
Senior Member |
|
|
[Reply reposted on-list this time.]
Hi
The general EMFv technology predates the EValidator framework and so it
does not integrate well with EMF.
The EMFv OCL integration was the first attempt and revealed many
problems. It inspired the far superior EMF delegates solution which is
supported by the OCLinEcore editor and works with both Classic
(Ecore/UML) and Pivot-based OCL implementations.
Pivot OCL prototypes many new facilities for the OCL specification; some of
these have been backported to Classic OCL. Custom messages is an extension
supported by both, but are not supported by EMF's EValiditor.
You therefore have to ensure that a custom-message-aware EValidator is
installed. I very much doubt the EMFv does this.
Revisiting the EMFv approach is on my to-do list, but it's a very long list and it
is way down my priority list. One possible approach is an alternative Save
capability from an OCL editor to store the OCL in CDATA form. More
realistically significant development is needed on the various bugs that
inhibit extension of EMFv to support OCL constraint providers. This is a
particularly severe problem for OCL in UML profiles.
Regards
Ed Willink
On 04/09/2015 14:24, Hauke Fuhrmann wrote:
> Hi there,
>
> I follow this recipe to connect my custom Ecore file with my custom
> ocl-File: http://wiki.eclipse.org/EMF/Validation/Recipes
>
> The recipe uses some of the provided example projects, e.g.
> org.eclipse.emf.validation.examples.ocl. This defines some glue code
> that parses the OCL-file at runtime and creates some
> ConstraintProvider for EMF if I understand correctly.
>
> I provide a simple CompleteOCL file with rules as such
>
> context Socket
> inv emptyID('Socket has to have valid ID.'+self.toString()):
> self.id <> ''
>
> This is parsed correctly by the CompleteOCL-Xtext-Editor and I do not
> get any error. However, running the example, during runtime I get the
> exception below.
>
> Looking in the class
> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider, I
> understand that the example uses org.eclipse.ocl.ecore.OCL to parse
> the file. Is that something different to the CompleteOCL-Editor and
> might not support custom string messages? Sorry, but I'm not so much
> into the differences between the different flavors of OCL within Eclipse.
>
> Any hint appreciated.
>
> Cheers,
> Hauke
>
> !ENTRY org.eclipse.emf.validation.examples.ocl 4 1 2015-09-04
> 14:57:52.433
> !MESSAGE Failed to parse OCL constraints in
> org.eclipse.emf.validation.examples.ocl:constraints/core.ocl
> !STACK 0
> org.eclipse.ocl.SyntaxException: 7:5:7:11 ":" expected after "emptyID"
> at org.eclipse.ocl.util.OCLUtil.checkForErrors(OCLUtil.java:350)
> at org.eclipse.ocl.OCL.parse(OCL.java:317)
> at
> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.parseConstraints(OCLConstraintProvider.java:127)
> at
> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.parseConstraints(OCLConstraintProvider.java:104)
> at
> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.setInitializationData(OCLConstraintProvider.java:78)
> at
> org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:251)
> at
> org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
> at
> org.eclipse.emf.validation.internal.service.ProviderDescriptor.getProvider(ProviderDescriptor.java:268)
> at
> org.eclipse.emf.validation.internal.service.ConstraintCache.execute(ConstraintCache.java:285)
> at
> org.eclipse.emf.validation.internal.service.ConstraintCache.getBatchConstraints(ConstraintCache.java:386)
> at
> org.eclipse.emf.validation.internal.service.GetBatchConstraintsOperation.executeImpl(GetBatchConstraintsOperation.java:57)
> at
> org.eclipse.emf.validation.internal.service.AbstractGetConstraintsOperation.execute(AbstractGetConstraintsOperation.java:132)
> at
> org.eclipse.emf.validation.service.ModelValidationService.execute(ModelValidationService.java:541)
> at
> org.eclipse.emf.validation.service.ModelValidationService.access$6(ModelValidationService.java:529)
> at
> org.eclipse.emf.validation.service.ModelValidationService$4.execute(ModelValidationService.java:343)
> at
> org.eclipse.emf.validation.internal.service.AbstractValidator.execute(AbstractValidator.java:294)
> at
> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:262)
> at
> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:211)
> at
> org.eclipse.emf.validation.internal.service.BatchValidator.doValidate(BatchValidator.java:149)
> at
> org.eclipse.emf.validation.internal.service.AbstractValidator.validate(AbstractValidator.java:147)
> at
> org.eclipse.emf.validation.internal.service.AbstractValidator.validate(AbstractValidator.java:126)
> at
> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:117)
> at
> org.eclipse.emf.validation.examples.adapter.EValidatorAdapter.validate(EValidatorAdapter.java:88)
> at
> org.eclipse.emf.ecore.util.Diagnostician.doValidate(Diagnostician.java:171)
> at
> org.eclipse.emf.edit.ui.action.ValidateAction$3.doValidate(ValidateAction.java:309)
> 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.emf.edit.ui.action.ValidateAction.validate(ValidateAction.java:264)
> at
> org.eclipse.emf.edit.ui.action.ValidateAction$1.run(ValidateAction.java:176)
> at
> org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
>
|
|
|
Re: Exception on custom error message with complete OCL [message #1707554 is a reply to message #1707550] |
Mon, 07 September 2015 10:05 |
Hauke Fuhrmann Messages: 30 Registered: January 2015 |
Member |
|
|
Hi,
thanks for the insights. Sounds like the validation topic is a little
intermingled due to the historic growth of the approaches.
I was mainly confused due to the situation of documentation at the
Eclipse help. At http://help.eclipse.org/ there is only some
documentation from 2005 in the EMF Developer Guide called "EMF
Validation Overview". I guess this describes the EValidator topic,
briefly, right? For EMFv there is no documentation there at all, lacking
also any descriptions for the different extension points provided by the
framework. For the OCL-Topics, there is some documentation, however, it
mainly touches the end-user-guis and explicitly stresses the OCLinEcore
Editor. Other frameworks like Xtext or EMFForms tend to bring in some
additional layer to validation in their own layer; so the interface for
the end-user is, again, something different. So what I explicitly miss
is these kind of background information that helps to sort the different
technologies and to understand where what kind of glue-code is needed.
So are you aware of any introducing article or book about this topic? Or
are you aware of companies that are experts and doing commercial support
for it to help integrate the technology in the proper manner?
I will now work through the OCL documentation from the beginning to try
to understand it at least from the OCL-point-of-view.
Cheers,
Hauke
Am 07.09.2015 11:34, schrieb Ed Willink:
> [Reply reposted on-list this time.]
>
> Hi
>
> The general EMFv technology predates the EValidator framework and so it
> does not integrate well with EMF.
>
> The EMFv OCL integration was the first attempt and revealed many
> problems. It inspired the far superior EMF delegates solution which is
> supported by the OCLinEcore editor and works with both Classic
> (Ecore/UML) and Pivot-based OCL implementations.
>
> Pivot OCL prototypes many new facilities for the OCL specification; some of
> these have been backported to Classic OCL. Custom messages is an extension
> supported by both, but are not supported by EMF's EValiditor.
> You therefore have to ensure that a custom-message-aware EValidator is
> installed. I very much doubt the EMFv does this.
>
> Revisiting the EMFv approach is on my to-do list, but it's a very long
> list and it
> is way down my priority list. One possible approach is an alternative Save
> capability from an OCL editor to store the OCL in CDATA form. More
> realistically significant development is needed on the various bugs that
> inhibit extension of EMFv to support OCL constraint providers. This is a
> particularly severe problem for OCL in UML profiles.
>
> Regards
>
> Ed Willink
>
>
>
>
> On 04/09/2015 14:24, Hauke Fuhrmann wrote:
>> Hi there,
>>
>> I follow this recipe to connect my custom Ecore file with my custom
>> ocl-File: http://wiki.eclipse.org/EMF/Validation/Recipes
>>
>> The recipe uses some of the provided example projects, e.g.
>> org.eclipse.emf.validation.examples.ocl. This defines some glue code
>> that parses the OCL-file at runtime and creates some
>> ConstraintProvider for EMF if I understand correctly.
>>
>> I provide a simple CompleteOCL file with rules as such
>>
>> context Socket
>> inv emptyID('Socket has to have valid ID.'+self.toString()):
>> self.id <> ''
>>
>> This is parsed correctly by the CompleteOCL-Xtext-Editor and I do not
>> get any error. However, running the example, during runtime I get the
>> exception below.
>>
>> Looking in the class
>> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider, I
>> understand that the example uses org.eclipse.ocl.ecore.OCL to parse
>> the file. Is that something different to the CompleteOCL-Editor and
>> might not support custom string messages? Sorry, but I'm not so much
>> into the differences between the different flavors of OCL within Eclipse.
>>
>> Any hint appreciated.
>>
>> Cheers,
>> Hauke
>>
>> !ENTRY org.eclipse.emf.validation.examples.ocl 4 1 2015-09-04
>> 14:57:52.433
>> !MESSAGE Failed to parse OCL constraints in
>> org.eclipse.emf.validation.examples.ocl:constraints/core.ocl
>> !STACK 0
>> org.eclipse.ocl.SyntaxException: 7:5:7:11 ":" expected after "emptyID"
>> at org.eclipse.ocl.util.OCLUtil.checkForErrors(OCLUtil.java:350)
>> at org.eclipse.ocl.OCL.parse(OCL.java:317)
>> at
>> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.parseConstraints(OCLConstraintProvider.java:127)
>>
>> at
>> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.parseConstraints(OCLConstraintProvider.java:104)
>>
>> at
>> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.setInitializationData(OCLConstraintProvider.java:78)
>>
>> at
>> org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:251)
>>
>> at
>> org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
>>
>> at
>> org.eclipse.emf.validation.internal.service.ProviderDescriptor.getProvider(ProviderDescriptor.java:268)
>>
>> at
>> org.eclipse.emf.validation.internal.service.ConstraintCache.execute(ConstraintCache.java:285)
>>
>> at
>> org.eclipse.emf.validation.internal.service.ConstraintCache.getBatchConstraints(ConstraintCache.java:386)
>>
>> at
>> org.eclipse.emf.validation.internal.service.GetBatchConstraintsOperation.executeImpl(GetBatchConstraintsOperation.java:57)
>>
>> at
>> org.eclipse.emf.validation.internal.service.AbstractGetConstraintsOperation.execute(AbstractGetConstraintsOperation.java:132)
>>
>> at
>> org.eclipse.emf.validation.service.ModelValidationService.execute(ModelValidationService.java:541)
>>
>> at
>> org.eclipse.emf.validation.service.ModelValidationService.access$6(ModelValidationService.java:529)
>>
>> at
>> org.eclipse.emf.validation.service.ModelValidationService$4.execute(ModelValidationService.java:343)
>>
>> at
>> org.eclipse.emf.validation.internal.service.AbstractValidator.execute(AbstractValidator.java:294)
>>
>> at
>> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:262)
>>
>> at
>> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:211)
>>
>> at
>> org.eclipse.emf.validation.internal.service.BatchValidator.doValidate(BatchValidator.java:149)
>>
>> at
>> org.eclipse.emf.validation.internal.service.AbstractValidator.validate(AbstractValidator.java:147)
>>
>> at
>> org.eclipse.emf.validation.internal.service.AbstractValidator.validate(AbstractValidator.java:126)
>>
>> at
>> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:117)
>>
>> at
>> org.eclipse.emf.validation.examples.adapter.EValidatorAdapter.validate(EValidatorAdapter.java:88)
>>
>> at
>> org.eclipse.emf.ecore.util.Diagnostician.doValidate(Diagnostician.java:171)
>>
>> at
>> org.eclipse.emf.edit.ui.action.ValidateAction$3.doValidate(ValidateAction.java:309)
>>
>> 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.emf.edit.ui.action.ValidateAction.validate(ValidateAction.java:264)
>>
>> at
>> org.eclipse.emf.edit.ui.action.ValidateAction$1.run(ValidateAction.java:176)
>>
>> at
>> org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
>>
>>
>
|
|
|
Re: Exception on custom error message with complete OCL [message #1707555 is a reply to message #1707554] |
Mon, 07 September 2015 10:24 |
Ed Willink Messages: 7670 Registered: July 2009 |
Senior Member |
|
|
Hi
Eclipse OCL used to be a Modeling component like Eclipse UML2; useful
Java functionality, very limited UI.
Eclipse OCL has grown significantly to have useful UI (Papyrus provides
UML2 UI).
The tutorials in the OCL documentation are much better than nothing.
An Eclipse OCL book is on my to-do list, but so are very many other much
more exciting things. Certainly won't be done till the revised OMG OCL
specification is done.
Regards
Ed Willink
On 07/09/2015 11:05, Hauke Fuhrmann wrote:
> Hi,
>
> thanks for the insights. Sounds like the validation topic is a little
> intermingled due to the historic growth of the approaches.
>
> I was mainly confused due to the situation of documentation at the
> Eclipse help. At http://help.eclipse.org/ there is only some
> documentation from 2005 in the EMF Developer Guide called "EMF
> Validation Overview". I guess this describes the EValidator topic,
> briefly, right? For EMFv there is no documentation there at all,
> lacking also any descriptions for the different extension points
> provided by the framework. For the OCL-Topics, there is some
> documentation, however, it mainly touches the end-user-guis and
> explicitly stresses the OCLinEcore Editor. Other frameworks like
> Xtext or EMFForms tend to bring in some additional layer to validation
> in their own layer; so the interface for the end-user is, again,
> something different. So what I explicitly miss is these kind of
> background information that helps to sort the different technologies
> and to understand where what kind of glue-code is needed.
>
> So are you aware of any introducing article or book about this topic?
> Or are you aware of companies that are experts and doing commercial
> support for it to help integrate the technology in the proper manner?
>
> I will now work through the OCL documentation from the beginning to
> try to understand it at least from the OCL-point-of-view.
>
> Cheers,
> Hauke
>
> Am 07.09.2015 11:34, schrieb Ed Willink:
>> [Reply reposted on-list this time.]
>>
>> Hi
>>
>> The general EMFv technology predates the EValidator framework and so it
>> does not integrate well with EMF.
>>
>> The EMFv OCL integration was the first attempt and revealed many
>> problems. It inspired the far superior EMF delegates solution which is
>> supported by the OCLinEcore editor and works with both Classic
>> (Ecore/UML) and Pivot-based OCL implementations.
>>
>> Pivot OCL prototypes many new facilities for the OCL specification;
>> some of
>> these have been backported to Classic OCL. Custom messages is an
>> extension
>> supported by both, but are not supported by EMF's EValiditor.
>> You therefore have to ensure that a custom-message-aware EValidator is
>> installed. I very much doubt the EMFv does this.
>>
>> Revisiting the EMFv approach is on my to-do list, but it's a very long
>> list and it
>> is way down my priority list. One possible approach is an alternative
>> Save
>> capability from an OCL editor to store the OCL in CDATA form. More
>> realistically significant development is needed on the various bugs that
>> inhibit extension of EMFv to support OCL constraint providers. This is a
>> particularly severe problem for OCL in UML profiles.
>>
>> Regards
>>
>> Ed Willink
>>
>>
>>
>>
>> On 04/09/2015 14:24, Hauke Fuhrmann wrote:
>>> Hi there,
>>>
>>> I follow this recipe to connect my custom Ecore file with my custom
>>> ocl-File: http://wiki.eclipse.org/EMF/Validation/Recipes
>>>
>>> The recipe uses some of the provided example projects, e.g.
>>> org.eclipse.emf.validation.examples.ocl. This defines some glue code
>>> that parses the OCL-file at runtime and creates some
>>> ConstraintProvider for EMF if I understand correctly.
>>>
>>> I provide a simple CompleteOCL file with rules as such
>>>
>>> context Socket
>>> inv emptyID('Socket has to have valid ID.'+self.toString()):
>>> self.id <> ''
>>>
>>> This is parsed correctly by the CompleteOCL-Xtext-Editor and I do not
>>> get any error. However, running the example, during runtime I get the
>>> exception below.
>>>
>>> Looking in the class
>>> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider, I
>>> understand that the example uses org.eclipse.ocl.ecore.OCL to parse
>>> the file. Is that something different to the CompleteOCL-Editor and
>>> might not support custom string messages? Sorry, but I'm not so much
>>> into the differences between the different flavors of OCL within
>>> Eclipse.
>>>
>>> Any hint appreciated.
>>>
>>> Cheers,
>>> Hauke
>>>
>>> !ENTRY org.eclipse.emf.validation.examples.ocl 4 1 2015-09-04
>>> 14:57:52.433
>>> !MESSAGE Failed to parse OCL constraints in
>>> org.eclipse.emf.validation.examples.ocl:constraints/core.ocl
>>> !STACK 0
>>> org.eclipse.ocl.SyntaxException: 7:5:7:11 ":" expected after "emptyID"
>>> at org.eclipse.ocl.util.OCLUtil.checkForErrors(OCLUtil.java:350)
>>> at org.eclipse.ocl.OCL.parse(OCL.java:317)
>>> at
>>> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.parseConstraints(OCLConstraintProvider.java:127)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.parseConstraints(OCLConstraintProvider.java:104)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.examples.ocl.OCLConstraintProvider.setInitializationData(OCLConstraintProvider.java:78)
>>>
>>>
>>> at
>>> org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:251)
>>>
>>>
>>> at
>>> org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.ProviderDescriptor.getProvider(ProviderDescriptor.java:268)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.ConstraintCache.execute(ConstraintCache.java:285)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.ConstraintCache.getBatchConstraints(ConstraintCache.java:386)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.GetBatchConstraintsOperation.executeImpl(GetBatchConstraintsOperation.java:57)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.AbstractGetConstraintsOperation.execute(AbstractGetConstraintsOperation.java:132)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.service.ModelValidationService.execute(ModelValidationService.java:541)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.service.ModelValidationService.access$6(ModelValidationService.java:529)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.service.ModelValidationService$4.execute(ModelValidationService.java:343)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.AbstractValidator.execute(AbstractValidator.java:294)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:262)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:211)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.BatchValidator.doValidate(BatchValidator.java:149)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.AbstractValidator.validate(AbstractValidator.java:147)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.AbstractValidator.validate(AbstractValidator.java:126)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.internal.service.BatchValidator.validate(BatchValidator.java:117)
>>>
>>>
>>> at
>>> org.eclipse.emf.validation.examples.adapter.EValidatorAdapter.validate(EValidatorAdapter.java:88)
>>>
>>>
>>> at
>>> org.eclipse.emf.ecore.util.Diagnostician.doValidate(Diagnostician.java:171)
>>>
>>>
>>> at
>>> org.eclipse.emf.edit.ui.action.ValidateAction$3.doValidate(ValidateAction.java:309)
>>>
>>>
>>> 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.emf.edit.ui.action.ValidateAction.validate(ValidateAction.java:264)
>>>
>>>
>>> at
>>> org.eclipse.emf.edit.ui.action.ValidateAction$1.run(ValidateAction.java:176)
>>>
>>>
>>> at
>>> org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
>>>
>>>
>>>
>>
>
|
|
|
Goto Forum:
Current Time: Sun Sep 22 19:45:56 GMT 2024
Powered by FUDForum. Page generated in 0.02834 seconds
|