Skip to content
This repository has been archived by the owner on Oct 5, 2021. It is now read-only.

Commit

Permalink
Merge pull request #385 from Shan1024/fork-join-formatting
Browse files Browse the repository at this point in the history
Fix fork-join formatting issue
  • Loading branch information
sameerajayasoma authored Jun 9, 2017
2 parents 8486a47 + ac5f1f1 commit ea6ce79
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ private BallerinaTypes() {
public static RuleIElementType WORKER_DECLARATION = ruleIElementTypes.get(BallerinaParser.RULE_workerDeclaration);
public static RuleIElementType WORKER_BODY = ruleIElementTypes.get(BallerinaParser.RULE_workerBody);
public static RuleIElementType FORK_JOIN_STATEMENT = ruleIElementTypes.get(BallerinaParser.RULE_forkJoinStatement);
public static RuleIElementType JOIN_CONDITIONS = ruleIElementTypes.get(BallerinaParser.RULE_joinConditions);
public static RuleIElementType TRANSACTION_STATEMENT = ruleIElementTypes.get(BallerinaParser
.RULE_transactionStatement);
public static RuleIElementType TRANSFORM_STATEMENT = ruleIElementTypes.get(BallerinaParser.RULE_transformStatement);
Expand Down Expand Up @@ -177,6 +178,8 @@ private BallerinaTypes() {
public static TokenIElementType MOD = tokenIElementTypes.get(BallerinaLexer.MOD);
public static TokenIElementType AT = tokenIElementTypes.get(BallerinaLexer.AT);

public static TokenIElementType INTEGER_LITERAL = tokenIElementTypes.get(BallerinaLexer.IntegerLiteral);

public static final TokenSet OPERATORS = TokenSet.create(ASSIGN, EQUAL, LE, GE, NOTEQUAL, AND, OR, MUL, DIV,
BITAND, BITOR, CARET, MOD);
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ private static SpacingBuilder createSpaceBuilder(CodeStyleSettings settings) {
.after(CONST).spaceIf(true)
.after(CREATE).spaceIf(true)
.around(ELSE).spaceIf(true)
.after(FORK).spaceIf(true)
.between(FORK, LBRACE).spaceIf(true)
.between(FORK, SEMI).spaceIf(false)
.after(FUNCTION).spaceIf(true)
.after(IF).spaceIf(true)
.after(IMPORT).spaceIf(true)
Expand Down Expand Up @@ -142,6 +143,7 @@ private static SpacingBuilder createSpaceBuilder(CodeStyleSettings settings) {
.between(XML, LT).spaceIf(false)
.around(XML_NAMESPACE_NAME).spaceIf(false)
.around(EXPRESSION_LIST).spaceIf(false)
.aroundInside(INTEGER_LITERAL, JOIN_CONDITIONS).spaceIf(true)
.withinPairInside(IDENTIFIER, LBRACE, FUNCTION_DEFINITION).spaceIf(true)
.withinPairInside(IDENTIFIER, LBRACE, SERVICE_DEFINITION).spaceIf(true)
.withinPairInside(IDENTIFIER, LBRACE, RESOURCE_DEFINITION).spaceIf(true)
Expand Down
4 changes: 4 additions & 0 deletions src/test/java/formatting/BallerinaFormattingTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ public void testExpressions() {
doTest();
}

public void testForkJoin() {
doTest();
}

public void testFunctionDefinition() {
doTest();
}
Expand Down
58 changes: 58 additions & 0 deletions src/test/resources/testData/formatting/ForkJoin-after.bal
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import ballerina.lang.messages;
import ballerina.lang.system;

function testForkJoinAnyOfSpecific (message m) (message[]) {

message[] results = [null];
json error;
system:println("Airfare ");
fork {
worker ABC_Airline {
json payload;
payload = {"name":"abc"};
message m1 = messages:clone(m);
messages:setJsonPayload(m1, payload);
m1 -> fork;
}

worker XYZ_Airline {
json payload;
payload = {"name":"xyz"};
message m1 = messages:clone(m);
messages:setJsonPayload(m1, payload);
m1 -> fork;
}

worker PQR_Airline {
json payload;
payload = {"name":"pqr"};
message m1 = messages:clone(m);
messages:setJsonPayload(m1, payload);
m1 -> fork;
}
} join (some 1 ABC_Airline, XYZ_Airline) (map airlineResponses) {
if (airlineResponses["ABC_Airline"] != null) {
any[] abc;
abc, _ = (any[])airlineResponses["ABC_Airline"];
results[0] = (message)abc[0];
system:println(results[0]);
return results;
}

if (airlineResponses["XYZ_Airline"] != null) {
any[] xyz;
xyz, _ = (any[])airlineResponses["XYZ_Airline"];
results[0] = (message)xyz[0];
system:println(results[0]);
return results;
}
return results;
} timeout (30) (map airlineResponses) {
system:println("error occurred");
error = {"error":{"code":"500", "reason":"timed out"}};
message res = {};
messages:setJsonPayload(res, error);
results[0] = m;
return results;
}
}
58 changes: 58 additions & 0 deletions src/test/resources/testData/formatting/ForkJoin.bal
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import ballerina.lang. messages;
import ballerina.lang.system;

function testForkJoinAnyOfSpecific ( message m ) ( message [ ] ) {

message [ ] results = [ null ] ;
json error;
system:println("Airfare ");
fork {
worker ABC_Airline {
json payload;
payload = {"name":"abc"};
message m1 = messages:clone(m);
messages:setJsonPayload(m1, payload);
m1 -> fork ;
}

worker XYZ_Airline {
json payload;
payload = {"name":"xyz"};
message m1 = messages:clone(m);
messages:setJsonPayload(m1, payload);
m1 -> fork ;
}

worker PQR_Airline {
json payload;
payload = {"name":"pqr"};
message m1 = messages:clone(m);
messages:setJsonPayload(m1, payload);
m1 -> fork;
}
} join ( some 1 ABC_Airline , XYZ_Airline ) ( map airlineResponses ) {
if (airlineResponses["ABC_Airline"] != null) {
any[] abc;
abc, _ = (any[])airlineResponses["ABC_Airline"];
results[0] = (message)abc[0];
system:println(results[0]);
return results;
}

if ( airlineResponses [ "XYZ_Airline" ] != null) {
any [ ] xyz ;
xyz, _ = (any[])airlineResponses["XYZ_Airline"];
results[0] = (message)xyz[0];
system:println(results[0]);
return results;
}
return results;
} timeout ( 30 ) ( map airlineResponses ) {
system:println("error occurred");
error = {"error":{"code":"500", "reason":"timed out"}};
message res = {};
messages:setJsonPayload(res, error) ;
results[0] = m;
return results;
}
}

0 comments on commit ea6ce79

Please sign in to comment.