1 4 package com.tcsimulator; 5 6 import com.tc.config.schema.builder.DSOApplicationConfigBuilder; 7 import com.tc.config.schema.test.ConfigBuilderFactoryImpl; 8 import com.tc.config.schema.test.L1ConfigBuilder; 9 import com.tc.config.schema.test.L2ConfigBuilder; 10 import com.tc.config.schema.test.SystemConfigBuilder; 11 import com.tc.config.schema.test.TerracottaConfigBuilder; 12 import com.tc.object.config.ConfigVisitor; 13 import com.tc.object.config.DSOApplicationConfig; 14 import com.tc.object.config.DSOApplicationConfigImpl; 15 import com.tc.simulator.distrunner.ArgParser; 16 import com.tcsimulator.distrunner.ServerSpec; 17 18 import java.io.File ; 19 import java.io.FileWriter ; 20 import java.io.IOException ; 21 import java.util.Collection ; 22 import java.util.Iterator ; 23 24 public final class ConfigWriter { 25 26 private static final String LICENSE_FILENAME = "license.lic"; 27 28 private final Collection classesToVisit; 29 private final ServerSpec sSpec; 30 private final File licenseFile; 31 private final File serverHome; 32 private final File configFile; 33 34 public ConfigWriter(ServerSpec sSpec, Collection classesToVisit, Sandbox sandbox) { 35 this.sSpec = sSpec; 36 this.classesToVisit = classesToVisit; 37 this.serverHome = sandbox.getServerHome(); 38 this.configFile = sandbox.getConfigFile(); 39 40 this.licenseFile = new File (sSpec.getTestHome(), LICENSE_FILENAME); 41 if (!licenseFile.exists()) { throw new RuntimeException ( 42 "No license file: " 43 + licenseFile 44 + ". Try this: cp src/test.data/licenses/license-for-tests.lic " 45 + licenseFile); } 46 } 47 48 public void writeConfigFile() throws IOException { 49 String fileSeparator = System.getProperty("file.separator"); 50 51 TerracottaConfigBuilder configBuilder = TerracottaConfigBuilder.newMinimalInstance(); 52 53 SystemConfigBuilder system = configBuilder.getSystem(); 54 system.setConfigurationModel(SystemConfigBuilder.CONFIG_MODEL_PRODUCTION); 55 56 L1ConfigBuilder l1Builder = L1ConfigBuilder.newMinimalInstance(); 57 l1Builder.setLogs("client-logs-%i"); 58 configBuilder.setClient(l1Builder); 59 60 L2ConfigBuilder l2Builder = L2ConfigBuilder.newMinimalInstance(); 61 l2Builder.setName(sSpec.getHostName()); 62 l2Builder.setData(this.serverHome + fileSeparator + "server-data"); 63 l2Builder.setLogs(this.serverHome + fileSeparator + "server-logs"); 64 int undefined = ArgParser.getUndefinedNumber(); 65 if (sSpec.getJmxPort() != undefined) { 66 l2Builder.setJMXPort(sSpec.getJmxPort()); 67 } 68 if (sSpec.getDsoPort() != undefined) { 69 l2Builder.setDSOPort(sSpec.getDsoPort()); 70 } 71 configBuilder.getServers().setL2s(new L2ConfigBuilder[] { l2Builder }); 72 73 DSOApplicationConfigBuilder appConfigBuilder = configBuilder.getApplication().getDSO(); 74 75 DSOApplicationConfig cfg = new DSOApplicationConfigImpl(new ConfigBuilderFactoryImpl()); 76 77 81 ConfigVisitor configVisitor = new ConfigVisitor(); 82 for (Iterator i = classesToVisit.iterator(); i.hasNext();) { 83 configVisitor.visitDSOApplicationConfig(cfg, (Class ) i.next()); 84 } 85 86 cfg.writeTo(appConfigBuilder); 87 88 FileWriter cfgOut = new FileWriter (configFile); 89 System.out.println("*******************************************************************************************"); 90 System.out.println(configBuilder.toString()); 91 System.out.println("*******************************************************************************************"); 92 cfgOut.write(configBuilder.toString()); 93 cfgOut.flush(); 94 cfgOut.close(); 95 } 96 97 } | Popular Tags |