Skip to content
Snippets Groups Projects

Resolve "Make specification langauge more concise"

Merged René Schöne requested to merge 33-make-specification-langauge-more-concise into dev
10 files
+ 206
82
Compare changes
  • Side-by-side
  • Inline
Files
10
 
aspect ParserRewrites {
 
rewrite SendUntypedEndpointDefinition {
 
when (tryGloballyResolveTypeComponentByToken(getTokenOrType()) != null)
 
to SendTypeEndpointDefinition {
 
SendTypeEndpointDefinition result = new SendTypeEndpointDefinition();
 
result.applyFrom(this);
 
if (this.getIndexed()) {
 
result.setUseList(true);
 
}
 
return result;
 
}
 
}
 
 
rewrite ReceiveUntypedEndpointDefinition {
 
when (tryGloballyResolveTypeComponentByToken(getTokenOrType()) != null)
 
to ReceiveTypeEndpointDefinition {
 
ReceiveTypeEndpointDefinition result = new ReceiveTypeEndpointDefinition();
 
result.applyFrom(this);
 
if (this.getWithAdd()) {
 
result.setWithAdd(true);
 
}
 
if (this.getIndexed()) {
 
result.setUseList(true);
 
}
 
return result;
 
}
 
}
 
 
rewrite SendUntypedEndpointDefinition {
 
when (tryGloballyResolveTokenComponentByToken(getTokenOrType()) != null)
 
to SendTokenEndpointDefinition {
 
SendTokenEndpointDefinition result = new SendTokenEndpointDefinition();
 
result.applyFrom(this);
 
return result;
 
}
 
}
 
 
rewrite ReceiveUntypedEndpointDefinition {
 
when (tryGloballyResolveTokenComponentByToken(getTokenOrType()) != null)
 
to ReceiveTokenEndpointDefinition {
 
ReceiveTokenEndpointDefinition result = new ReceiveTokenEndpointDefinition();
 
result.applyFrom(this);
 
return result;
 
}
 
}
 
 
protected void TypeEndpointDefinition.applyFrom(UntypedEndpointDefinition def) {
 
this.setAlwaysApply(def.getAlwaysApply());
 
this.setType(TypeComponent.createRef(def.getTokenOrType()));
 
this.moveMappingsFrom(def);
 
}
 
 
protected void TokenEndpointDefinition.applyFrom(UntypedEndpointDefinition def) {
 
this.setAlwaysApply(def.getAlwaysApply());
 
this.setToken(TokenComponent.createRef(def.getTokenOrType()));
 
this.moveMappingsFrom(def);
 
}
 
 
protected void EndpointDefinition.moveMappingsFrom(UntypedEndpointDefinition def) {
 
// can safely iterate over list as we get an unmodifyable list
 
for (MappingDefinition mapping : def.getMappingList().toArray(new MappingDefinition[0])) {
 
def.removeMapping(mapping);
 
this.addMapping(mapping);
 
}
 
}
 
 
private void UntypedEndpointDefinition.clearMappings() {
 
}
 
 
eq UntypedEndpointDefinition.targetTypeName() = "<unknown>";
 
syn MEndpointDefinition UntypedEndpointDefinition.toMustache() {
 
throw new RuntimeException("UntypedEndpoint can not be transformed using toMustache!");
 
}
 
}
Loading