org.eclipse.xtext.serializer.sequencer
Interface ITransientValueService

All Known Implementing Classes:
LegacyTransientValueService, TransientValueService, XtextTransientValueService2

public interface ITransientValueService

Implementations of this interface decide which values are serialized during serialization. The behavior differs slightly for single-value features and multi-value features, because single-value-features have an extra status: "optional". Transient Values must not be serialized in any case. Optional Values should not be serialized, but the serializer may decide to serialize them anyway, if needed. The use case for this is that if a features holds its default value, this values doesn't need to be serialized. However, the grammar may require the feature to be serialized. Example: (x=INT y=INT)?; For x=1 and y=0 with 0 being y's default value, 0 needs to be serialized since otherwise x can not be serialized. Multi-Value-Features don't have this "optional" status, because even if their list holds a default-value, this value needs to be serialized to be preserved.

Author:
Moritz Eysholdt - Initial contribution and API

Nested Class Summary
static class ITransientValueService.ListTransient
           
static class ITransientValueService.ValueTransient
           
 
Method Summary
 ITransientValueService.ListTransient isListTransient(org.eclipse.emf.ecore.EObject semanticObject, org.eclipse.emf.ecore.EStructuralFeature feature)
           
 boolean isValueInListTransient(org.eclipse.emf.ecore.EObject semanticObject, int index, org.eclipse.emf.ecore.EStructuralFeature feature)
           
 ITransientValueService.ValueTransient isValueTransient(org.eclipse.emf.ecore.EObject semanticObject, org.eclipse.emf.ecore.EStructuralFeature feature)
           
 

Method Detail

isListTransient

ITransientValueService.ListTransient isListTransient(org.eclipse.emf.ecore.EObject semanticObject,
                                                     org.eclipse.emf.ecore.EStructuralFeature feature)

isValueInListTransient

boolean isValueInListTransient(org.eclipse.emf.ecore.EObject semanticObject,
                               int index,
                               org.eclipse.emf.ecore.EStructuralFeature feature)

isValueTransient

ITransientValueService.ValueTransient isValueTransient(org.eclipse.emf.ecore.EObject semanticObject,
                                                       org.eclipse.emf.ecore.EStructuralFeature feature)