Skip to content

Commit

Permalink
Merge pull request #15 from ZenWave360/develop
Browse files Browse the repository at this point in the history
Preparing for v1.2.3
  • Loading branch information
ivangsa authored Dec 22, 2024
2 parents 6acc971 + 10b50a2 commit 0d90b04
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 10 deletions.
16 changes: 11 additions & 5 deletions src/main/antlr4/io.github.zenwave360.zdl.antlr/Zdl.g4
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ MIN: 'min';
MAX: 'max';
MINLENGTH: 'minlength';
MAXLENGTH: 'maxlength';
EMAIL: 'email';
PATTERN: 'pattern';
OPTION_NAME: '@' [a-zA-Z_][a-zA-Z0-9_]*;

Expand Down Expand Up @@ -117,9 +118,9 @@ PATTERN_REGEX: '/' .*? '/' ; // TODO: improve regex
ERRCHAR: . -> channel(HIDDEN);
// Rules
zdl: imports global_javadoc? legacy_constants config? apis? (policies | aggregate | entity | enum | input | output | event | relationships | service | service_legacy)* EOF;
zdl: legacy_constants (import_ | config | apis | policies | aggregate | entity | enum | input | output | event | relationships | service | service_legacy)* EOF;
imports: ('@import' LPAREN import_value RPAREN)*;
import_: '@import' LPAREN import_value RPAREN;
import_value: string;
global_javadoc: JAVADOC;
javadoc: JAVADOC;
Expand All @@ -128,7 +129,7 @@ suffix_javadoc: JAVADOC;
legacy_constants: LEGACY_CONSTANT*;
// values
keyword: ID | IMPORT | CONFIG | APIS | PLUGINS | DISABLED | ASYNCAPI | OPENAPI | ENTITY | AGGREGATE | INPUT | OUTPUT | EVENT | RELATIONSHIP | SERVICE | PARAM_ID | FOR | TO | WITH_EVENTS | WITH | REQUIRED | UNIQUE | MIN | MAX | MINLENGTH | MAXLENGTH | PATTERN;
keyword: ID | IMPORT | CONFIG | APIS | PLUGINS | DISABLED | ASYNCAPI | OPENAPI | ENTITY | AGGREGATE | INPUT | OUTPUT | EVENT | RELATIONSHIP | SERVICE | PARAM_ID | FOR | TO | WITH_EVENTS | WITH | REQUIRED | UNIQUE | MIN | MAX | MINLENGTH | MAXLENGTH | EMAIL | PATTERN;
complex_value: value | array | object;
value: simple | object;
Expand All @@ -138,7 +139,7 @@ pair: keyword COLON value;
object: LBRACE pair (COMMA pair)* RBRACE;
array: LBRACK? value (COMMA value)* RBRACK?;
config: CONFIG config_body;
config: global_javadoc? CONFIG config_body;
config_body: LBRACE config_option* plugins? RBRACE;
config_option: field_name complex_value;
Expand Down Expand Up @@ -249,8 +250,13 @@ aggregate_command_parameter: ID;
service: javadoc? annotations SERVICE service_name FOR LPAREN service_aggregates RPAREN LBRACE service_method* RBRACE;
service_name: ID;
service_aggregates: ID (COMMA ID)*;
service_method: javadoc? annotations service_method_name LPAREN service_method_parameter_id? COMMA? service_method_parameter? RPAREN service_method_return? with_events? suffix_javadoc?;
service_method: javadoc? annotations service_method_name
LPAREN
(service_method_parameter_natural service_method_parameter_id | service_method_parameter_id)?
COMMA? service_method_parameter?
RPAREN service_method_return? with_events? suffix_javadoc?;
service_method_name: ID;
service_method_parameter_natural: '@natural';
service_method_parameter_id: PARAM_ID;
service_method_parameter: ID;
service_method_return: ID | ID ARRAY | ID OPTIONAL;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,8 @@ public void enterLegacy_constants(io.github.zenwave360.zdl.antlr.ZdlParser.Legac
}

@Override
public void enterImports(io.github.zenwave360.zdl.antlr.ZdlParser.ImportsContext ctx) {
for (io.github.zenwave360.zdl.antlr.ZdlParser.Import_valueContext importValue : ctx.import_value()) {
model.appendToList("imports", getValueText(importValue.string()));
}
public void enterImport_(io.github.zenwave360.zdl.antlr.ZdlParser.Import_Context ctx) {
model.appendToList("imports", getValueText(ctx.import_value().string()));
}

@Override
Expand Down Expand Up @@ -576,6 +574,7 @@ public void enterService_method(io.github.zenwave360.zdl.antlr.ZdlParser.Service
var serviceName = getText(((io.github.zenwave360.zdl.antlr.ZdlParser.ServiceContext) ctx.getParent()).service_name());
var methodName = getText(ctx.service_method_name());
var location = "services." + serviceName + ".methods." + methodName;
var naturalId = ctx.service_method_parameter_natural() != null? true : null;
var methodParamId = ctx.service_method_parameter_id() != null? "id" : null;
var methodParameter = ctx.service_method_parameter() != null? ctx.service_method_parameter().getText() : null;
var returnType = ctx.service_method_return() != null? ctx.service_method_return().ID().getText() : null;
Expand All @@ -587,6 +586,7 @@ public void enterService_method(io.github.zenwave360.zdl.antlr.ZdlParser.Service
var method = new FluentMap()
.with("name", methodName)
.with("serviceName", serviceName)
.with("naturalId", naturalId)
.with("paramId", methodParamId)
.with("parameter", methodParameter)
.with("returnType", returnType)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,17 @@ public class ZdlListenerTest {

@Test
public void parseZdl_SuffixJavadoc() throws Exception {

ZdlModel model = parseZdl("src/test/resources/suffix_javadoc.zdl");
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(model));
}

@Test
public void parseZdl_Composed() throws Exception {
ZdlModel model = parseZdl("src/test/resources/composed.zdl");
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(model));
}


@Test
public void parseZdl_CompleteZdl() throws Exception {

Expand Down
23 changes: 23 additions & 0 deletions src/test/resources/composed.zdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/**
* First Global Javadoc
*/
config {
title "First Title"
}

entity OneEntity {
oneField String
secondField String
}

/**
* Seccond Global Javadoc
*/
config {
title "Second Title"
}

entity OneEntity {
oneField Long
thirdField String
}

0 comments on commit 0d90b04

Please sign in to comment.