|
Re: Serializer fails (grammar based on existing ecore) [message #1696046 is a reply to message #1695891] |
Thu, 21 May 2015 11:16 |
Marcus Höpfner Messages: 56 Registered: February 2014 |
Member |
|
|
found a solution:
Before operandType has been introduced in the model a method in Abstract<MyGrammar>SemanticSequencer looked like this:
@SuppressWarnings("restriction")
protected void sequence_FormulaMemberOperand(EObject context, FormulaMemberOperand semanticObject) {
if (errorAcceptor != null) {
if (transientValues.isValueTransient(semanticObject, QueryPackage.Literals.FORMULA_MEMBER_OPERAND__MEMBER) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject,
QueryPackage.Literals.FORMULA_MEMBER_OPERAND__MEMBER));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getFormulaMemberOperandAccess().getMemberQueryElementSTRINGTerminalRuleCall_0_1(),
semanticObject.getMember());
feeder.finish();
}
Now it looks like this and this caused the above mentioned error:
/**
* Constraint:
* member=[QueryElement|STRING]
*/
protected void sequence_FormulaMemberOperand(EObject context, FormulaMemberOperand semanticObject) {
genericSequencer.createSequence(context, semanticObject);
}
So I have overwritten the method in <MyGramma>SemanticSequencer and added the original code there and it works again:
@SuppressWarnings("restriction")
@Override
protected void sequence_FormulaMemberOperand(EObject context, FormulaMemberOperand semanticObject) {
if (errorAcceptor != null) {
if (transientValues.isValueTransient(semanticObject, QueryPackage.Literals.FORMULA_MEMBER_OPERAND__MEMBER) == ValueTransient.YES)
errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject,
QueryPackage.Literals.FORMULA_MEMBER_OPERAND__MEMBER));
}
INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
feeder.accept(grammarAccess.getFormulaMemberOperandAccess().getMemberQueryElementSTRINGTerminalRuleCall_0_1(),
semanticObject.getMember());
feeder.finish();
}
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03084 seconds