@Test public void testExtractSubset() throws Exception { assertHasAllProperties(PropertiesUtil.extractSubset(properties, "a")); assertHasAllProperties(PropertiesUtil.extractSubset(properties, "b.")); assertHasAllProperties(PropertiesUtil.extractSubset(properties, "c.1")); assertHasAllProperties(PropertiesUtil.extractSubset(properties, "dd")); assertEquals(0, properties.size()); }
private <B extends FilterableComponentBuilder<? extends ComponentBuilder<?>>> B addFiltersToComponent( final B componentBuilder, final Properties properties) { final Map<String, Properties> filters = PropertiesUtil.partitionOnCommonPrefixes( PropertiesUtil.extractSubset(properties, "filter")); for (final Map.Entry<String, Properties> entry : filters.entrySet()) { componentBuilder.add(createFilter(entry.getKey().trim(), entry.getValue())); } return componentBuilder; }
private <B extends LoggableComponentBuilder<? extends ComponentBuilder<?>>> B addLoggersToComponent( final B loggerBuilder, final Properties properties) { final Map<String, Properties> appenderRefs = PropertiesUtil.partitionOnCommonPrefixes( PropertiesUtil.extractSubset(properties, "appenderRef")); for (final Map.Entry<String, Properties> entry : appenderRefs.entrySet()) { loggerBuilder.add(createAppenderRef(entry.getKey().trim(), entry.getValue())); } return loggerBuilder; }
private static <B extends ComponentBuilder<?>> B processRemainingProperties(final B builder, final Properties properties) { while (properties.size() > 0) { final String propertyName = properties.stringPropertyNames().iterator().next(); final int index = propertyName.indexOf('.'); if (index > 0) { final String prefix = propertyName.substring(0, index); final Properties componentProperties = PropertiesUtil.extractSubset(properties, prefix); builder.addComponent(createComponent(builder, prefix, componentProperties)); } else { builder.addAttribute(propertyName, properties.getProperty(propertyName)); properties.remove(propertyName); } } return builder; }
props.setProperty(key, configuration.get(key).toString()); props = PropertiesUtil.extractSubset(props, "log4j2"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); props.store(baos, null);
final Properties propertyPlaceholders = PropertiesUtil.extractSubset(rootProperties, "property"); for (final String key : propertyPlaceholders.stringPropertyNames()) { builder.addProperty(key, propertyPlaceholders.getProperty(key)); PropertiesUtil.extractSubset(rootProperties, "script")); for (final Map.Entry<String, Properties> entry : scripts.entrySet()) { final Properties scriptProps = entry.getValue(); final Properties levelProps = PropertiesUtil.extractSubset(rootProperties, "customLevel"); if (levelProps.size() > 0) { for (final String key : levelProps.stringPropertyNames()) { for (final String filterName : filterNames) { final String name = filterName.trim(); builder.add(createFilter(name, PropertiesUtil.extractSubset(rootProperties, "filter." + name))); .partitionOnCommonPrefixes(PropertiesUtil.extractSubset(rootProperties, "filter")); for (final Map.Entry<String, Properties> entry : filters.entrySet()) { builder.add(createFilter(entry.getKey().trim(), entry.getValue())); final String name = appenderName.trim(); builder.add(createAppender(appenderName.trim(), PropertiesUtil.extractSubset(rootProperties, "appender." + name))); .partitionOnCommonPrefixes(PropertiesUtil.extractSubset(rootProperties, Appender.ELEMENT_TYPE)); for (final Map.Entry<String, Properties> entry : appenders.entrySet()) { builder.add(createAppender(entry.getKey().trim(), entry.getValue())); final String name = loggerName.trim();
private AppenderComponentBuilder createAppender(final String key, final Properties properties) { final String name = (String) properties.remove(CONFIG_NAME); if (Strings.isEmpty(name)) { throw new ConfigurationException("No name attribute provided for Appender " + key); } final String type = (String) properties.remove(CONFIG_TYPE); if (Strings.isEmpty(type)) { throw new ConfigurationException("No type attribute provided for Appender " + key); } final AppenderComponentBuilder appenderBuilder = builder.newAppender(name, type); addFiltersToComponent(appenderBuilder, properties); final Properties layoutProps = PropertiesUtil.extractSubset(properties, "layout"); if (layoutProps.size() > 0) { appenderBuilder.add(createLayout(name, layoutProps)); } return processRemainingProperties(appenderBuilder, properties); }