KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tcsimulator > ConfigWriter


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

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 JavaDoc;
19 import java.io.FileWriter JavaDoc;
20 import java.io.IOException JavaDoc;
21 import java.util.Collection JavaDoc;
22 import java.util.Iterator JavaDoc;
23
24 public final class ConfigWriter {
25
26   private static final String JavaDoc LICENSE_FILENAME = "license.lic";
27
28   private final Collection JavaDoc classesToVisit;
29   private final ServerSpec sSpec;
30   private final File JavaDoc licenseFile;
31   private final File JavaDoc serverHome;
32   private final File JavaDoc configFile;
33
34   public ConfigWriter(ServerSpec sSpec, Collection JavaDoc 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 JavaDoc(sSpec.getTestHome(), LICENSE_FILENAME);
41     if (!licenseFile.exists()) { throw new RuntimeException JavaDoc(
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 JavaDoc {
49     String JavaDoc 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     // NOTE: am I missing something? Why would you instrument/autolock everything then visit each app config to dicide what to instrument
78
//cfg.addWriteAutolock("* *..*.*(..)");
79
//cfg.addIncludePattern("*..*");
80

81     ConfigVisitor configVisitor = new ConfigVisitor();
82     for (Iterator JavaDoc i = classesToVisit.iterator(); i.hasNext();) {
83       configVisitor.visitDSOApplicationConfig(cfg, (Class JavaDoc) i.next());
84     }
85
86     cfg.writeTo(appConfigBuilder);
87
88     FileWriter JavaDoc cfgOut = new FileWriter JavaDoc(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