Skip to content

Commit 74257b4

Browse files
yoshito-umaokayumaoka
authored andcommitted
Improve apostrophe handling in Java properies resource filter
Updated the behavior of apostrophe character handling when they are used with curly brances.
1 parent 1c3c31a commit 74257b4

9 files changed

Lines changed: 221 additions & 265 deletions

File tree

gp-ant-task/.settings/org.eclipse.jdt.core.prefs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
33
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
44
org.eclipse.jdt.core.compiler.compliance=1.7
55
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6+
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
67
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
78
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
9+
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
810
org.eclipse.jdt.core.compiler.release=disabled
911
org.eclipse.jdt.core.compiler.source=1.7
1012
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647

gp-cli/.settings/org.eclipse.jdt.core.prefs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
33
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
44
org.eclipse.jdt.core.compiler.compliance=1.7
55
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6+
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
67
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
78
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
9+
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
810
org.eclipse.jdt.core.compiler.release=disabled
911
org.eclipse.jdt.core.compiler.source=1.7
1012
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false

gp-maven-plugin/.settings/org.eclipse.jdt.core.prefs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
2626
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
2727
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
2828
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
29+
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
2930
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
3031
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
3132
org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
@@ -71,6 +72,7 @@ org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=igno
7172
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
7273
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
7374
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
75+
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
7476
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
7577
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
7678
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled

gp-res-filter/.settings/org.eclipse.jdt.core.prefs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
88
org.eclipse.jdt.core.compiler.debug.localVariable=generate
99
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
1010
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
11+
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
1112
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
1213
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
14+
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
1315
org.eclipse.jdt.core.compiler.release=disabled
1416
org.eclipse.jdt.core.compiler.source=1.7
1517
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647

gp-res-filter/src/main/java/com/ibm/g11n/pipeline/resfilter/impl/JavaPropertiesResource.java

Lines changed: 153 additions & 183 deletions
Large diffs are not rendered by default.

gp-res-filter/src/test/java/com/ibm/g11n/pipeline/resfilter/impl/JavaPropertiesResourceTest.java

Lines changed: 50 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -354,90 +354,68 @@ public void testUnescapePropsValue() {
354354
}
355355
}
356356

357-
private static final String[][] QUOTES_TEST_CASES =
358-
{
359-
{"You're about to delete {0} rows.","You''re about to delete {0} rows."},
360-
{"You're about to delete '{0}' rows in Mike's file {0}.","You''re about to delete ''{0}'' rows in Mike''s file {0}."},
361-
{"Log shows '{''}' in file {0}","Log shows '{''}' in file {0}"},
362-
{"Log shows '{''} in file {0}","Log shows '{''} in file {0}"},
363-
{"Log shows '{'}' in file {0}","Log shows '{'}' in file {0}"},
364-
{"Log shows '{'error'}' in file {0}","Log shows '{'error'}' in file {0}"},
365-
{"Log shows '{''error''}' in file {0}","Log shows '{''error''}' in file {0}"},
366-
{"File {0} shows '{''error''}'","File {0} shows '{''error''}'"},
367-
};
368-
369-
private static final String[][] TO_DOUBLE_AUTO_TEST_CASES =
370-
{
371-
// { input , expected }
372-
{"The file isn't in use.", "The file isn't in use."},
373-
};
374-
375-
private static final String[][] TO_DOUBLE_ALL_TEST_CASES =
376-
{
377-
// { input , expected }
378-
{"The file isn't in use.", "The file isn''t in use."},
379-
};
380-
381-
private static final String[][] TO_SINGLE_AUTO_TEST_CASES =
382-
{
383-
// { input , expected }
384-
{"File {0} isn't in use.", "File {0} isn't in use."},
385-
{"The file isn''t in use.", "The file isn''t in use."}, // no arguments - not unescaped
386-
};
387-
388-
private static final String[][] TO_SINGLE_ALL_TEST_CASES =
389-
{
390-
// { input , expected }
391-
{"File {0} isn't in use.", "File {0} isn't in use."},
392-
{"The file isn''t in use.", "The file isn't in use."},
393-
};
357+
private static final String[][] MESSAGE_PATTERN_TEST_CASES = {
358+
// {<GP expression>,
359+
// <props expression - auto>[,
360+
// <props expression - all>, // if absent, use <prop expression - auto>
361+
// <GP expression after round trip - auto>, // if absent, use <GP expression>
362+
// <GP expression after round trip - all>]} // if absent, use <GP expression>
363+
{ "You're about to delete {0} rows.",
364+
"You''re about to delete {0} rows." },
365+
{ "You're about to delete '{0}' rows in Mike's file {0}.",
366+
"You''re about to delete '{0}' rows in Mike''s file {0}." },
367+
{ "Log shows '{''}' in file {0}",
368+
"Log shows '{''}' in file {0}" },
369+
{ "Log shows '{''} in file {0}",
370+
"Log shows '{''} in file {0}",
371+
"Log shows '{''} in file {0}'", // escape with MessagePatternEscape.ALL
372+
null,
373+
"Log shows '{''} in file {0}'"}, // round trip with MessagePatternEscape.ALL
374+
{ "Log shows '{'}' in file {0}",
375+
"Log shows '{'}'' in file {0}" },
376+
{ "Log shows '{'error'}' in file {0}",
377+
"Log shows '{'error'}' in file {0}" },
378+
{ "Log shows '{''error''}' in file {0}",
379+
"Log shows '{''error''}' in file {0}" },
380+
{ "File {0} shows '{''error''}'",
381+
"File {0} shows '{''error''}'" },
382+
{ "The file isn't in use.",
383+
"The file isn't in use.",
384+
"The file isn''t in use." }, // escape with MessagePatternEscape.ALL
385+
{ "File {0} isn't in use.",
386+
"File {0} isn''t in use."},
387+
};
394388

395389
@Test
396-
public void testConvertSingleQuote(){
397-
for (String[] testCase : QUOTES_TEST_CASES) {
398-
String result = JavaPropertiesResource.ConvertSingleQuote(testCase[0], MessagePatternEscape.AUTO);
399-
assertEquals("ConvertSingleQuote(" + testCase[0] + ", AUTO)", testCase[1], result);
390+
public void testEscapeMessagePattern() throws ResourceFilterException {
391+
for (String[] testCase : MESSAGE_PATTERN_TEST_CASES) {
392+
String result = JavaPropertiesResource.escapeMessagePattern(testCase[0], MessagePatternEscape.AUTO);
393+
assertEquals("escapeMessagePattern(" + testCase[0] + ", AUTO)", testCase[1], result);
400394
}
401395

402-
for (String[] testCase : QUOTES_TEST_CASES) {
403-
String result = JavaPropertiesResource.ConvertSingleQuote(testCase[0], MessagePatternEscape.ALL);
404-
assertEquals("ConvertSingleQuote(" + testCase[0] + ", ALL)", testCase[1], result);
405-
}
406-
407-
for (String[] testCase : TO_DOUBLE_AUTO_TEST_CASES) {
408-
String result = JavaPropertiesResource.ConvertSingleQuote(testCase[0], MessagePatternEscape.AUTO);
409-
assertEquals("ConvertSingleQuote(" + testCase[0] + ", AUTO)", testCase[1], result);
410-
}
411-
412-
for (String[] testCase : TO_DOUBLE_ALL_TEST_CASES) {
413-
String result = JavaPropertiesResource.ConvertSingleQuote(testCase[0], MessagePatternEscape.ALL);
414-
assertEquals("ConvertSingleQuote(" + testCase[0] + ", ALL)", testCase[1], result);
396+
for (String[] testCase : MESSAGE_PATTERN_TEST_CASES) {
397+
String result = JavaPropertiesResource.escapeMessagePattern(testCase[0], MessagePatternEscape.ALL);
398+
String expected = testCase.length >= 3 && testCase[2] != null ? testCase[2] : testCase[1];
399+
assertEquals("escapeMessagePattern(" + testCase[0] + ", ALL)", expected, result);
415400
}
416401
}
417402

418403
@Test
419-
public void testConvertDoubleSingleQuoteAuto(){
420-
for (String[] testCase : QUOTES_TEST_CASES) {
421-
String result = JavaPropertiesResource.ConvertDoubleSingleQuote(testCase[1], MessagePatternEscape.AUTO);
422-
assertEquals("ConvertDoubleSingleQuote(" + testCase[1] + ", AUTO)", testCase[0], result);
423-
}
424-
425-
for (String[] testCase : QUOTES_TEST_CASES) {
426-
String result = JavaPropertiesResource.ConvertDoubleSingleQuote(testCase[1], MessagePatternEscape.ALL);
427-
assertEquals("ConvertDoubleSingleQuote(" + testCase[1] + ", ALL)", testCase[0], result);
428-
}
429-
430-
for (String[] testCase : TO_SINGLE_AUTO_TEST_CASES) {
431-
String result = JavaPropertiesResource.ConvertDoubleSingleQuote(testCase[0], MessagePatternEscape.AUTO);
432-
assertEquals("ConvertDoubleSingleQuote(" + testCase[0] + ", AUTO)", testCase[1], result);
404+
public void testUnescapeMessagePattern() throws ResourceFilterException {
405+
for (String[] testCase : MESSAGE_PATTERN_TEST_CASES) {
406+
String result = JavaPropertiesResource.unescapeMessagePattern(testCase[1], MessagePatternEscape.AUTO);
407+
String expected = testCase.length >= 4 && testCase[3] != null ? testCase[3] : testCase[0];
408+
assertEquals("unescapeMessagePattern(" + testCase[1] + ", AUTO)", expected, result);
433409
}
434410

435-
for (String[] testCase : TO_SINGLE_ALL_TEST_CASES) {
436-
String result = JavaPropertiesResource.ConvertDoubleSingleQuote(testCase[0], MessagePatternEscape.ALL);
437-
assertEquals("ConvertDoubleSingleQuote(" + testCase[0] + ", ALL)", testCase[1], result);
411+
for (String[] testCase : MESSAGE_PATTERN_TEST_CASES) {
412+
String input = testCase.length >= 3 && testCase[2] != null ? testCase[2] : testCase[1];
413+
String result = JavaPropertiesResource.unescapeMessagePattern(input, MessagePatternEscape.ALL);
414+
String expected = testCase.length >= 5 && testCase[4] != null ? testCase[4] : testCase[0];
415+
assertEquals("unescapeMessagePattern(" + input + ", ALL)", expected, result);
438416
}
439417
}
440-
418+
441419
@Test
442420
public void testWriteAllQuotes() throws IOException, ResourceFilterException {
443421
File tempFile = File.createTempFile(this.getClass().getSimpleName(), ".properties");

gp-res-filter/src/test/resource/resfilter/properties/merge-output.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ trailSPs = localized trailing SPs
2222
# tabs
2323
withTabs = localized Tab1\tTab2\tTab3\t
2424
# Quote
25-
withQuote = You''re about to delete ''{1}'' rows in Mike''s file {0}.
25+
withQuote = You''re about to delete '{1}' rows in Mike''s file {0}.
2626
# Not a Java MessageFormat param
2727
non-param = This {} is not a parameter.
2828
# A comment with backslashes - a\b\c \u3042\u3044 \t\n

gp-res-filter/src/test/resource/resfilter/properties/write-output-all.properties

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
A = This is a test.
33
B = This isn''t a test.
44
C = This is''t and won''t be a test.
5-
D = This isn''t a ''{0}''.
6-
E = This isn''t a ''{0}'' but a {1}.
7-
F = This ''{0}'' isn''t right.
8-
G = This '{wasn't}' isn''t right.
9-
H = This '{''}' shouldn''t be fine for ''{0}''.
5+
D = This isn''t a '{0}'.
6+
E = This isn''t a '{0}' but a {1}.
7+
F = This '{0}' isn''t right.
8+
G = This '{wasn't}'' isn''t right.
9+
H = This '{''}' shouldn''t be fine for '{0}'.
1010
I = {0}
11-
J = ''{0}''
11+
J = '{0}'
1212
K = Using '{' and '}'
1313
L = '{' is ok to use
14-
M = The name ''{0}'' is already in use.
14+
M = The name '{0}' is already in use.
1515
N = length must be between '{min} and '{max}
1616
O = Password should not contain\:\#.-_''().
1717
P = [\\p'{'L'}'\\uFF65]
18-
Q = value must be ''{min}
18+
Q = value must be '{min}'
1919
R = ''
2020
S =
2121
T = ''test''

gp-res-filter/src/test/resource/resfilter/properties/write-output.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ trailSPs = localized trailing SPs
2323
# tabs
2424
withTabs = localized Tab1\tTab2\tTab3\t
2525
# Quote
26-
withQuote = You''re about to delete ''{1}'' rows in Mike''s file {0}.
26+
withQuote = You''re about to delete '{1}' rows in Mike''s file {0}.
2727
# Not a Java MessageFormat param
2828
non-param = This {} is not a parameter.
2929
# A comment with backslashes - a\b\c \u3042\u3044 \t\n

0 commit comments

Comments
 (0)