Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
JastAdd
RagConnect
Commits
3beaeeec
Commit
3beaeeec
authored
Jul 31, 2020
by
René Schöne
Browse files
Rename UpdateDefinition to EndpointDefinition
parent
0d23df77
Changes
12
Hide whitespace changes
Inline
Side-by-side
src/main/jastadd/Analysis.jrag
View file @
3beaeeec
aspect Analysis {
// --- lookupToken
Update
Definition ---
inh Token
Update
Definition Token
Update
Definition.lookupToken
Update
Definition(TokenComponent token);
eq RagConnect.get
Update
Definition().lookupToken
Update
Definition(TokenComponent token) {
for (
Update
Definition def : get
Update
DefinitionList()) {
if (def.isToken
Update
Definition() && def.asToken
Update
Definition().getToken().equals(token)) {
return def.asToken
Update
Definition();
// --- lookupToken
Endpoint
Definition ---
inh Token
Endpoint
Definition Token
Endpoint
Definition.lookupToken
Endpoint
Definition(TokenComponent token);
eq RagConnect.get
Endpoint
Definition().lookupToken
Endpoint
Definition(TokenComponent token) {
for (
Endpoint
Definition def : get
Endpoint
DefinitionList()) {
if (def.isToken
Endpoint
Definition() && def.asToken
Endpoint
Definition().getToken().equals(token)) {
return def.asToken
Endpoint
Definition();
}
}
return null;
...
...
@@ -22,6 +22,6 @@ aspect Analysis {
}
// --- isAlreadyDefined ---
syn boolean Token
Update
Definition.isAlreadyDefined() = lookupToken
Update
Definition(getToken()) != this;
syn boolean Token
Endpoint
Definition.isAlreadyDefined() = lookupToken
Endpoint
Definition(getToken()) != this;
syn boolean DependencyDefinition.isAlreadyDefined() = lookupDependencyDefinition(getSource().containingTypeDecl(), getID()) != this;
}
src/main/jastadd/Errors.jrag
View file @
3beaeeec
...
...
@@ -45,7 +45,7 @@ aspect Errors {
to RagConnect.errors();
DependencyDefinition contributes error("There must be a write update definition targeting " + getSource().parentTypeypeAndName() + " for dependency definition " + getID())
when target
Update
Definition() == null
when target
Endpoint
Definition() == null
to RagConnect.errors();
}
...
...
src/main/jastadd/MustacheNodes.relast
View file @
3beaeeec
...
...
@@ -2,9 +2,9 @@
//rel TypeComponentMustache.TypeComponent -> TypeComponent ;
MRagConnect ::= ReadDefinition:MReadDefinition* WriteDefinition:MWriteDefinition* MappingDefinition:MMappingDefinition* DependencyDefinition:MDependencyDefinition* RootTypeComponent:MTypeComponent* TokenComponent:MTokenComponent*;
abstract M
Update
Definition ::= InnerMappingDefinition:MInnerMappingDefinition*;
MReadDefinition : M
Update
Definition;
MWriteDefinition : M
Update
Definition;
abstract M
Endpoint
Definition ::= InnerMappingDefinition:MInnerMappingDefinition*;
MReadDefinition : M
Endpoint
Definition;
MWriteDefinition : M
Endpoint
Definition;
MMappingDefinition;
MInnerMappingDefinition;
MDependencyDefinition;
...
...
src/main/jastadd/NameResolution.jrag
View file @
3beaeeec
aspect NameResolution {
refine RefResolverStubs eq
Update
Definition.resolveMappingByToken(String id, int position) {
refine RefResolverStubs eq
Endpoint
Definition.resolveMappingByToken(String id, int position) {
// return a MappingDefinition
for (MappingDefinition mappingDefinition : ragconnect().getMappingDefinitionList()) {
if (mappingDefinition.getID().equals(id)) {
...
...
src/main/jastadd/Navigation.jrag
View file @
3beaeeec
...
...
@@ -16,33 +16,33 @@ aspect Navigation {
eq RagConnect.getChild().containedFileName() = getFileName();
eq MRagConnect.getChild().containedFileName() = null;
// --- isToken
Update
Definition ---
syn boolean
Update
Definition.isToken
Update
Definition() = false;
eq Token
Update
Definition.isToken
Update
Definition() = true;
// --- isToken
Endpoint
Definition ---
syn boolean
Endpoint
Definition.isToken
Endpoint
Definition() = false;
eq Token
Endpoint
Definition.isToken
Endpoint
Definition() = true;
// --- asToken
Update
Definition ---
syn Token
Update
Definition
Update
Definition.asToken
Update
Definition() = null;
eq Token
Update
Definition.asToken
Update
Definition() = this;
// --- asToken
Endpoint
Definition ---
syn Token
Endpoint
Definition
Endpoint
Definition.asToken
Endpoint
Definition() = null;
eq Token
Endpoint
Definition.asToken
Endpoint
Definition() = this;
// --- isWriteToMqttDefinition ---
syn boolean
Update
Definition.isWriteToMqttDefinition() = false;
syn boolean
Endpoint
Definition.isWriteToMqttDefinition() = false;
eq WriteToMqttDefinition.isWriteToMqttDefinition() = true;
// --- asWriteToMqttDefinition ---
syn WriteToMqttDefinition
Update
Definition.asWriteToMqttDefinition() = null;
syn WriteToMqttDefinition
Endpoint
Definition.asWriteToMqttDefinition() = null;
eq WriteToMqttDefinition.asWriteToMqttDefinition() = this;
// --- asReadFromMqttDefinition ---
syn ReadFromMqttDefinition
Update
Definition.asReadFromMqttDefinition() = null;
syn ReadFromMqttDefinition
Endpoint
Definition.asReadFromMqttDefinition() = null;
eq ReadFromMqttDefinition.asReadFromMqttDefinition() = this;
// --- target
Update
Definition ---
syn WriteToMqttDefinition DependencyDefinition.target
Update
Definition() {
// --- target
Endpoint
Definition ---
syn WriteToMqttDefinition DependencyDefinition.target
Endpoint
Definition() {
// resolve definition in here, as we do not need resolveMethod in any other place (yet)
for (
Update
Definition
update
Definition : ragconnect().get
Update
DefinitionList()) {
if (
update
Definition.isWriteToMqttDefinition() &&
update
Definition.asWriteToMqttDefinition().getToken().equals(this.getTarget())) {
return
update
Definition.asWriteToMqttDefinition();
for (
Endpoint
Definition
endpoint
Definition : ragconnect().get
Endpoint
DefinitionList()) {
if (
endpoint
Definition.isWriteToMqttDefinition() &&
endpoint
Definition.asWriteToMqttDefinition().getToken().equals(this.getTarget())) {
return
endpoint
Definition.asWriteToMqttDefinition();
}
}
return null;
...
...
src/main/jastadd/RagConnect.relast
View file @
3beaeeec
RagConnect ::=
Update
Definition* DependencyDefinition* MappingDefinition* Program <FileName> ;
RagConnect ::=
Endpoint
Definition* DependencyDefinition* MappingDefinition* Program <FileName> ;
abstract
Update
Definition ::= <AlwaysApply:boolean> ;
abstract
Endpoint
Definition ::= <AlwaysApply:boolean> ;
rel
Update
Definition.Mapping* -> MappingDefinition;
rel
Endpoint
Definition.Mapping* -> MappingDefinition;
abstract Token
Update
Definition :
Update
Definition;
rel Token
Update
Definition.Token -> TokenComponent;
abstract Token
Endpoint
Definition :
Endpoint
Definition;
rel Token
Endpoint
Definition.Token -> TokenComponent;
ReadFromMqttDefinition : Token
Update
Definition;
WriteToMqttDefinition : Token
Update
Definition;
ReadFromMqttDefinition : Token
Endpoint
Definition;
WriteToMqttDefinition : Token
Endpoint
Definition;
DependencyDefinition ::= <ID>;
rel DependencyDefinition.Source <-> TokenComponent.DependencySourceDefinition*;
...
...
src/main/jastadd/backend/Generation.jadd
View file @
3beaeeec
...
...
@@ -37,29 +37,29 @@ aspect AttributesForMustache {
syn String MRagConnect.mqttWaitUntilReadyMethod() = getRagConnect().mqttWaitUntilReadyMethod();
syn String MRagConnect.mqttCloseMethod() = getRagConnect().mqttCloseMethod();
// --- M
Update
Definition ---
syn String M
Update
Definition.preemptiveExpectedValue();
syn String M
Update
Definition.preemptiveReturn();
syn Token
Update
Definition M
Update
Definition.
update
Def();
syn String M
Update
Definition.firstInputVarName();
// --- M
Endpoint
Definition ---
syn String M
Endpoint
Definition.preemptiveExpectedValue();
syn String M
Endpoint
Definition.preemptiveReturn();
syn Token
Endpoint
Definition M
Endpoint
Definition.
endpoint
Def();
syn String M
Endpoint
Definition.firstInputVarName();
eq M
Update
Definition.getInnerMappingDefinition(int i).isLast() = i == getNumInnerMappingDefinition() - 1;
eq M
Update
Definition.getInnerMappingDefinition().resultVarPrefix() = resultVarPrefix();
eq M
Update
Definition.getInnerMappingDefinition(int i).inputVarName() = i == 0 ? firstInputVarName() : resultVarPrefix() + getInnerMappingDefinition(i - 1).getMappingDefinition().methodName();
eq M
Endpoint
Definition.getInnerMappingDefinition(int i).isLast() = i == getNumInnerMappingDefinition() - 1;
eq M
Endpoint
Definition.getInnerMappingDefinition().resultVarPrefix() = resultVarPrefix();
eq M
Endpoint
Definition.getInnerMappingDefinition(int i).inputVarName() = i == 0 ? firstInputVarName() : resultVarPrefix() + getInnerMappingDefinition(i - 1).getMappingDefinition().methodName();
inh String M
Update
Definition.mqttHandlerAttribute();
inh String M
Endpoint
Definition.mqttHandlerAttribute();
syn String M
Update
Definition.connectMethod() =
update
Def().connectMethod();
syn TokenComponent M
Update
Definition.token() =
update
Def().getToken();
syn boolean M
Update
Definition.alwaysApply() =
update
Def().getAlwaysApply();
syn String M
Update
Definition.resultVarPrefix() = "result"; // we do not need "_" here, because methodName begins with one
syn String M
Update
Definition.parentTypeName() = token().containingTypeDecl().getName();
syn String M
Update
Definition.tokenName() = token().getName();
syn MInnerMappingDefinition M
Update
Definition.lastDefinition() = getInnerMappingDefinition(getNumInnerMappingDefinition() - 1);
syn String M
Update
Definition.lastDefinitionToType() = lastDefinition().ToType();
syn String M
Update
Definition.lastDefinitionName() = lastDefinition().methodName();
syn String M
Update
Definition.lastResult() = resultVarPrefix() + lastDefinitionName();
syn String M
Update
Definition.condition() {
syn String M
Endpoint
Definition.connectMethod() =
endpoint
Def().connectMethod();
syn TokenComponent M
Endpoint
Definition.token() =
endpoint
Def().getToken();
syn boolean M
Endpoint
Definition.alwaysApply() =
endpoint
Def().getAlwaysApply();
syn String M
Endpoint
Definition.resultVarPrefix() = "result"; // we do not need "_" here, because methodName begins with one
syn String M
Endpoint
Definition.parentTypeName() = token().containingTypeDecl().getName();
syn String M
Endpoint
Definition.tokenName() = token().getName();
syn MInnerMappingDefinition M
Endpoint
Definition.lastDefinition() = getInnerMappingDefinition(getNumInnerMappingDefinition() - 1);
syn String M
Endpoint
Definition.lastDefinitionToType() = lastDefinition().ToType();
syn String M
Endpoint
Definition.lastDefinitionName() = lastDefinition().methodName();
syn String M
Endpoint
Definition.lastResult() = resultVarPrefix() + lastDefinitionName();
syn String M
Endpoint
Definition.condition() {
if (lastDefinition().getMappingDefinition().getToType().isArray()) {
return "java.util.Arrays.equals(" + preemptiveExpectedValue() + ", " + lastResult() + ")";
}
...
...
@@ -82,13 +82,13 @@ aspect AttributesForMustache {
// --- MReadDefinition ---
eq MReadDefinition.preemptiveExpectedValue() = "get" + tokenName() + "()";
eq MReadDefinition.preemptiveReturn() = "return;";
eq MReadDefinition.
update
Def() = getReadFromMqttDefinition();
eq MReadDefinition.
endpoint
Def() = getReadFromMqttDefinition();
eq MReadDefinition.firstInputVarName() = "message";
// --- MWriteDefinition ---
eq MWriteDefinition.preemptiveExpectedValue() = lastValue();
eq MWriteDefinition.preemptiveReturn() = "return false;";
eq MWriteDefinition.
update
Def() = getWriteToMqttDefinition();
eq MWriteDefinition.
endpoint
Def() = getWriteToMqttDefinition();
eq MWriteDefinition.firstInputVarName() = "get" + tokenName() + "()";
syn String MWriteDefinition.writeTopic() = getWriteToMqttDefinition().writeTopic();
...
...
@@ -109,8 +109,8 @@ aspect AttributesForMustache {
syn String MDependencyDefinition.dependencyMethod() = getDependencyDefinition().dependencyMethod();
syn String MDependencyDefinition.sourceParentTypeName() = getDependencyDefinition().getSource().containingTypeDecl().getName();
syn String MDependencyDefinition.internalRelationPrefix() = getDependencyDefinition().internalRelationPrefix();
syn nta M
Update
Definition MDependencyDefinition.target
Update
Definition() {
return getDependencyDefinition().target
Update
Definition().toMustache();
syn nta M
Endpoint
Definition MDependencyDefinition.target
Endpoint
Definition() {
return getDependencyDefinition().target
Endpoint
Definition().toMustache();
}
// --- MTypeComponent ---
...
...
@@ -129,7 +129,7 @@ aspect AttributesForMustache {
syn lazy MRagConnect RagConnect.toMustache() {
MRagConnect result = new MRagConnect();
result.setRagConnect(this);
for (
Update
Definition def : get
Update
DefinitionList()) {
for (
Endpoint
Definition def : get
Endpoint
DefinitionList()) {
if (def.isWriteToMqttDefinition()) {
result.addWriteDefinition(def.asWriteToMqttDefinition().toMustache());
} else {
...
...
@@ -156,8 +156,8 @@ aspect AttributesForMustache {
}
//MInnerMappingDefinition.MappingDefinition -> MappingDefinition;
protected void M
Update
Definition.addInnerMappings() {
for (MappingDefinition def :
update
Def().effectiveMappings()) {
protected void M
Endpoint
Definition.addInnerMappings() {
for (MappingDefinition def :
endpoint
Def().effectiveMappings()) {
MInnerMappingDefinition inner = new MInnerMappingDefinition();
inner.setMappingDefinition(def);
addInnerMappingDefinition(inner);
...
...
@@ -205,7 +205,7 @@ aspect AspectGeneration {
syn String TokenComponent.internalName() = getDependencySourceDefinitionList().isEmpty() ? externalName() : "_internal_" + getName();
syn String TokenComponent.externalName() = getName();
syn String Token
Update
Definition.connectMethod() = "connect" + getToken().getName();
syn String Token
Endpoint
Definition.connectMethod() = "connect" + getToken().getName();
syn String WriteToMqttDefinition.writeTopic() = "_topic_" + getToken().getName();
syn String WriteToMqttDefinition.lastValue() = "_lastValue" + getToken().getName();
syn String WriteToMqttDefinition.updateMethod() = "_update_" + getToken().getName();
...
...
@@ -227,7 +227,7 @@ aspect AspectGeneration {
// naming copy attributes
// --- mqttHandlerAttribute ---
inh String
Update
Definition.mqttHandlerAttribute();
inh String
Endpoint
Definition.mqttHandlerAttribute();
inh String MappingDefinition.mqttHandlerAttribute();
inh String DependencyDefinition.mqttHandlerAttribute();
eq RagConnect.getChild().mqttHandlerAttribute() = mqttHandlerAttribute();
...
...
src/main/jastadd/backend/Mappings.jrag
View file @
3beaeeec
...
...
@@ -105,7 +105,7 @@ aspect DefaultMappings {
aspect Mappings {
// --- effectiveMappings ---
syn java.util.List<MappingDefinition>
Update
Definition.effectiveMappings();
syn java.util.List<MappingDefinition>
Endpoint
Definition.effectiveMappings();
eq ReadFromMqttDefinition.effectiveMappings() {
// if there is a first mapping, check if its input type is byte[].
// or if no mappings are specified.
...
...
@@ -159,7 +159,7 @@ aspect Mappings {
eq JavaArrayMappingDefinitionType.isArray() = true;
// --- suitableDefaultMapping ---
syn DefaultMappingDefinition
Update
Definition.suitableDefaultMapping();
syn DefaultMappingDefinition
Endpoint
Definition.suitableDefaultMapping();
eq ReadFromMqttDefinition.suitableDefaultMapping() {
String typeName = getMappingList().isEmpty() ?
getToken().getJavaTypeUse().getName() :
...
...
src/main/jastadd/parser/RagConnect.parser
View file @
3beaeeec
RagConnect ragconnect
=
update
_definition.d ragconnect.r {: r.get
Update
DefinitionList().insertChild(d, 0); return r; :}
=
endpoint
_definition.d ragconnect.r {: r.get
Endpoint
DefinitionList().insertChild(d, 0); return r; :}
| dependency_definition.d ragconnect.r {: r.getDependencyDefinitionList().insertChild(d, 0); return r; :}
| mapping_definition.d ragconnect.r {: r.getMappingDefinitionList().insertChild(d, 0); return r; :}
| comment ragconnect.r {: return r; :}
...
...
@@ -12,7 +12,7 @@ RagConnect ragconnect
}
:} ;
Update
Definition
update
_definition
Endpoint
Definition
endpoint
_definition
= READ ID.type_name DOT ID.token_name SCOL
{:
ReadFromMqttDefinition result = new ReadFromMqttDefinition();
...
...
src/main/java/org/jastadd/ragconnect/compiler/Compiler.java
View file @
3beaeeec
...
...
@@ -216,8 +216,8 @@ public class Compiler extends AbstractCompiler {
}
private
void
mergeRagConnectDefinitions
(
RagConnect
ragConnect
,
RagConnect
ragConnectToIntegrate
)
{
for
(
Update
Definition
update
Definition
:
ragConnectToIntegrate
.
get
Update
DefinitionList
())
{
ragConnect
.
add
Update
Definition
(
update
Definition
);
for
(
Endpoint
Definition
endpoint
Definition
:
ragConnectToIntegrate
.
get
Endpoint
DefinitionList
())
{
ragConnect
.
add
Endpoint
Definition
(
endpoint
Definition
);
}
for
(
MappingDefinition
mappingDefinition
:
ragConnectToIntegrate
.
getMappingDefinitionList
())
{
ragConnect
.
addMappingDefinition
(
mappingDefinition
);
...
...
src/main/java/org/jastadd/ragconnect/compiler/SimpleMain.java
View file @
3beaeeec
...
...
@@ -127,7 +127,7 @@ public class SimpleMain {
readFromMqttDefinition
.
setAlwaysApply
(
false
);
readFromMqttDefinition
.
setToken
(
TokenComponent
.
createRef
(
"Link.CurrentPosition"
));
readFromMqttDefinition
.
addMapping
(
mappingDefinition
);
model
.
add
Update
Definition
(
readFromMqttDefinition
);
model
.
add
Endpoint
Definition
(
readFromMqttDefinition
);
model
.
treeResolveAll
();
for
(
ErrorMessage
error
:
model
.
errors
())
{
...
...
src/main/resources/tokenComponent.mustache
View file @
3beaeeec
...
...
@@ -2,11 +2,11 @@
set
{{
internalName
}}
(value);
{{#
DependencyDefinitions
}}
for (
{{
targetParentTypeName
}}
target : get
{{
internalRelationPrefix
}}
TargetList()) {
{{#
target
Update
Definition
}}
{{#
target
Endpoint
Definition
}}
if (target.
{{
updateMethod
}}
()) {
target.
{{
writeMethod
}}
();
}
{{/
target
Update
Definition
}}
{{/
target
Endpoint
Definition
}}
}
{{/
DependencyDefinitions
}}
return this;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment