Skip to content

Commit

Permalink
fix LOGBACK-1101
Browse files Browse the repository at this point in the history
  • Loading branch information
ceki committed Feb 6, 2018
1 parent 2a5e2e1 commit dcfd523
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 9 deletions.
Expand Up @@ -67,7 +67,7 @@ List<Token> tokenize() throws ScanException {
addLiteralToken(tokenList, buf);
break;
case START_STATE:
// trailing $. see also LOGBACK-1149
// trailing $. see also LOGBACK-1149
buf.append(CoreConstants.DOLLAR);
addLiteralToken(tokenList, buf);
break;
Expand All @@ -86,6 +86,14 @@ private void handleDefaultValueState(char c, List<Token> tokenList, StringBuilde
addLiteralToken(tokenList, stringBuilder);
stringBuilder.setLength(0);
state = TokenizerState.START_STATE;
break;
case CoreConstants.CURLY_LEFT:
stringBuilder.append(CoreConstants.COLON_CHAR);
addLiteralToken(tokenList, stringBuilder);
stringBuilder.setLength(0);
tokenList.add(Token.CURLY_LEFT_TOKEN);
state = TokenizerState.LITERAL_STATE;

break;
default:
stringBuilder.append(CoreConstants.COLON_CHAR).append(c);
Expand All @@ -104,23 +112,28 @@ private void handleStartState(char c, List<Token> tokenList, StringBuilder strin
}

private void handleLiteralState(char c, List<Token> tokenList, StringBuilder stringBuilder) {
if (c == CoreConstants.DOLLAR) {
switch (c) {
case CoreConstants.DOLLAR:
addLiteralToken(tokenList, stringBuilder);
stringBuilder.setLength(0);
state = TokenizerState.START_STATE;
} else if (c == CoreConstants.COLON_CHAR) {
break;
case CoreConstants.COLON_CHAR:
addLiteralToken(tokenList, stringBuilder);
stringBuilder.setLength(0);
state = TokenizerState.DEFAULT_VAL_STATE;
} else if (c == CoreConstants.CURLY_LEFT) {
break;
case CoreConstants.CURLY_LEFT:
addLiteralToken(tokenList, stringBuilder);
tokenList.add(Token.CURLY_LEFT_TOKEN);
stringBuilder.setLength(0);
} else if (c == CoreConstants.CURLY_RIGHT) {
break;
case CoreConstants.CURLY_RIGHT:
addLiteralToken(tokenList, stringBuilder);
tokenList.add(Token.CURLY_RIGHT_TOKEN);
stringBuilder.setLength(0);
} else {
break;
default:
stringBuilder.append(c);
}

Expand Down
Expand Up @@ -129,4 +129,11 @@ public void defaultValueNestedAsVar() throws ScanException {
assertEquals("axv0c", nodeToStringTransformer.transform());
}

@Test
public void LOGBACK_1101() throws ScanException {
String input = "a: {y}";
Node node = makeNode(input);
NodeToStringTransformer nodeToStringTransformer = new NodeToStringTransformer(node, propertyContainer0);
assertEquals("a: {y}", nodeToStringTransformer.transform());
}
}
Expand Up @@ -171,4 +171,20 @@ public void literalEndingWithDollar_LOGBACK_1149() throws ScanException {
witnessList.add(new Token(Token.Type.LITERAL, "$"));
assertEquals(witnessList, tokenList);
}

@Test
public void LOGBACK_1101() throws ScanException {
String input = "a:{y}";
Tokenizer tokenizer = new Tokenizer(input);
List<Token> tokenList = tokenizer.tokenize();
witnessList.add(new Token(Token.Type.LITERAL, "a"));

witnessList.add(new Token(Token.Type.LITERAL, ":"));
witnessList.add(Token.CURLY_LEFT_TOKEN);
witnessList.add(new Token(Token.Type.LITERAL, "y"));

witnessList.add(Token.CURLY_RIGHT_TOKEN);
assertEquals(witnessList, tokenList);
}

}
Expand Up @@ -255,8 +255,41 @@ public void trailingColon_LOGBACK_1140() {
String prefix = "c:";
String suffix = "/tmp";
context.putProperty("var", prefix);
String r = OptionHelper.substVars("${var}"+suffix, context);
assertEquals(prefix+suffix, r);
String r = OptionHelper.substVars("${var}" + suffix, context);
assertEquals(prefix + suffix, r);
}

@Test
public void curlyBraces_LOGBACK_1101() {
{
String input = "foo{bar}";
String r = OptionHelper.substVars(input, context);
assertEquals(input, r);
}
{
String input = "{foo{\"bar\"}}";
String r = OptionHelper.substVars(input, context);
assertEquals(input, r);
}
{
String input = "a:{y}";
String r = OptionHelper.substVars(input, context);
assertEquals(input, r);
}
{
String input = "{world:{yay}}";
String r = OptionHelper.substVars(input, context);
assertEquals(input, r);
}
{
String input = "{hello:{world:yay}}";
String r = OptionHelper.substVars(input, context);
assertEquals(input, r);
}
{
String input = "{\"hello\":{\"world\":\"yay\"}}";
String r = OptionHelper.substVars(input, context);
assertEquals(input, r);
}
}

}
8 changes: 8 additions & 0 deletions logback-site/src/site/pages/news.html
Expand Up @@ -30,6 +30,14 @@ <h2>Logback News</h2>
the <a href="http://www.qos.ch/mailman/listinfo/announce">QOS.ch
announce</a> mailing list.</p>

<hr width="80%" align="center" />

<h3>February , 2018, Release of version 1.3.0-beta0</h3>

<p>Fix issue with properties containing JSON strings as reported
in <a
href="https://jira.qos.ch/browse/LOGBACK-1101">LOGBACK-1101</a>.
</p>

<hr width="80%" align="center" />

Expand Down

0 comments on commit dcfd523

Please sign in to comment.