package org.infinispan.tools.config; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.infinispan.Version; import org.infinispan.configuration.cache.Configuration; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.configuration.parsing.ConfigurationBuilderHolder; import org.infinispan.configuration.parsing.ParserRegistry; /** * ConfigurationConverter. * * @author Tristan Tarrant * @since 9.0 */ public class ConfigurationConverter { public static void convert(InputStream is, OutputStream os) throws Exception { ParserRegistry registry = new ParserRegistry(); ConfigurationBuilderHolder configHolder = registry.parse(is); Map<String, Configuration> configurations = new HashMap<>(); for(Entry<String, ConfigurationBuilder> config : configHolder.getNamedConfigurationBuilders().entrySet()) { configurations.put(config.getKey(), config.getValue().build()); } registry.serialize(os, configHolder.getGlobalConfigurationBuilder().build(), configurations); } public static final void main(String args[]) throws Exception { InputStream is = null; OutputStream os = null; switch(args.length) { case 0: is = System.in; os = System.out; break; case 1: is = new FileInputStream(args[0]); os = System.out; break; case 2: is = new FileInputStream(args[0]); os = new FileOutputStream(args[1]); break; default: System.err.printf("Infinispan configuration converter v%s\n", Version.getVersion()); System.err.println("Usage: converter [input [output]]"); System.exit(1); } convert(is, os); } }