@Override public void accept(final String key, final String value) { if (key != null && value != null) { literal.put(key, value); final List<CharSequence> tokens = PropertySource.Util.tokenize(key); if (tokens.isEmpty()) { normalized.put(source.getNormalForm(Collections.singleton(key)), value); } else { normalized.put(source.getNormalForm(tokens), value); tokenized.put(tokens, value); } } } });
@Override public CharSequence getNormalForm(Iterable<? extends CharSequence> tokens) { return "log4j." + Util.joinAsCamelCase(tokens); }
@Test public void testTokenize() throws Exception { List<CharSequence> tokens = PropertySource.Util.tokenize(value); assertEquals(expectedTokens, tokens); } }
private boolean containsKey(final String key) { return normalized.containsKey(key) || literal.containsKey(key) || hasSystemProperty(key) || tokenized.containsKey(PropertySource.Util.tokenize(key)); } }
private String get(final String key) { if (normalized.containsKey(key)) { return normalized.get(key); } if (literal.containsKey(key)) { return literal.get(key); } if (hasSystemProperty(key)) { return System.getProperty(key); } return tokenized.get(PropertySource.Util.tokenize(key)); }
@Parameterized.Parameters(name = "{0}") public static Object[][] data() { return new Object[][]{ {"log4j2.configurationFile", Arrays.asList("configuration", "file")}, {"log4j2.fooBarProperty", Arrays.asList("foo", "bar", "property")}, {"log4j2.EXACT", Collections.singletonList("EXACT")}, {"log4j2.testPropertyName", PropertySource.Util.tokenize("Log4jTestPropertyName")}, }; }
@Test public void testJoinAsCamelCase() throws Exception { assertEquals(expected, PropertySource.Util.joinAsCamelCase(tokens)); } }
@Override public CharSequence getNormalForm(final Iterable<? extends CharSequence> tokens) { return PREFIX + Util.joinAsCamelCase(tokens); } }
@Parameterized.Parameters(name = "{0}") public static Object[][] data() { return new Object[][]{ {"LOG4J_CONFIGURATION_FILE", Arrays.asList("configuration", "file")}, {"LOG4J_FOO_BAR_PROPERTY", Arrays.asList("foo", "bar", "property")}, {"LOG4J_EXACT", Collections.singletonList("EXACT")}, {"LOG4J_TEST_PROPERTY_NAME", PropertySource.Util.tokenize("Log4jTestPropertyName")}, }; }
@Override public CharSequence getNormalForm(final Iterable<? extends CharSequence> tokens) { return PREFIX + Util.joinAsCamelCase(tokens); }