KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > test > server > tcconfig > StandardTerracottaAppServerConfig


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.tc.test.server.tcconfig;
5
6 import com.tc.config.schema.builder.DSOApplicationConfigBuilder;
7 import com.tc.config.schema.builder.InstrumentedClassConfigBuilder;
8 import com.tc.config.schema.builder.LockConfigBuilder;
9 import com.tc.config.schema.builder.RootConfigBuilder;
10 import com.tc.config.schema.builder.WebApplicationConfigBuilder;
11 import com.tc.config.schema.test.ApplicationConfigBuilder;
12 import com.tc.config.schema.test.DSOApplicationConfigBuilderImpl;
13 import com.tc.config.schema.test.InstrumentedClassConfigBuilderImpl;
14 import com.tc.config.schema.test.L1ConfigBuilder;
15 import com.tc.config.schema.test.L2ConfigBuilder;
16 import com.tc.config.schema.test.L2SConfigBuilder;
17 import com.tc.config.schema.test.LockConfigBuilderImpl;
18 import com.tc.config.schema.test.RootConfigBuilderImpl;
19 import com.tc.config.schema.test.SystemConfigBuilder;
20 import com.tc.config.schema.test.TerracottaConfigBuilder;
21 import com.tc.config.schema.test.WebApplicationConfigBuilderImpl;
22 import com.tc.util.PortChooser;
23
24 import java.io.File JavaDoc;
25 import java.util.ArrayList JavaDoc;
26 import java.util.HashMap JavaDoc;
27 import java.util.List JavaDoc;
28 import java.util.Map JavaDoc;
29
30 /**
31  * This class delegates to {@link TerracottaConfigBuilder} laying out the elements for a minimal config used to run
32  * appserver modules such as sessions. The build() method must be called to update the internal object tree to it's
33  * current state. The toString() method is used to obtain the actual XML text.
34  */

35 public class StandardTerracottaAppServerConfig {
36
37   private static final String JavaDoc MODE = "development";
38   private static final String JavaDoc DOMAIN = "localhost";
39   private static final String JavaDoc LOGS = "stderr:";
40   private static final String JavaDoc DATALOCATION = "server-data";
41   private static final String JavaDoc LOGSLOCATION = "logs/client-logs-%(NODE)";
42
43   private final List JavaDoc instrumented = new ArrayList JavaDoc();
44   private final List JavaDoc webapps = new ArrayList JavaDoc();
45   private final List JavaDoc roots = new ArrayList JavaDoc();
46   private final List JavaDoc locks = new ArrayList JavaDoc();
47   private final DSOApplicationConfigBuilder dacb;
48   private final TerracottaConfigBuilder configBuilder;
49   private final int dsoPort;
50   private final int jmxPort;
51
52   public StandardTerracottaAppServerConfig(File JavaDoc baseDir) {
53     PortChooser portChooser = new PortChooser();
54
55     this.jmxPort = portChooser.chooseRandomPort();
56     this.dsoPort = portChooser.chooseRandomPort();
57
58     this.configBuilder = new TerracottaConfigBuilder();
59
60     SystemConfigBuilder scb = new SystemConfigBuilder();
61     scb.setConfigurationModel(MODE);
62
63     configBuilder.setSystem(scb);
64
65     L2ConfigBuilder[] l2cbArray = new L2ConfigBuilder[1];
66     L2ConfigBuilder l2cb = new L2ConfigBuilder();
67     l2cb.setName(DOMAIN);
68     l2cb.setData(baseDir + File.separator + DATALOCATION);
69     l2cb.setLogs(LOGS);
70     l2cb.setDSOPort(dsoPort);
71     l2cb.setJMXPort(jmxPort);
72
73     l2cbArray[0] = l2cb;
74
75     L2SConfigBuilder l2scb = new L2SConfigBuilder();
76     l2scb.setL2s(l2cbArray);
77
78     configBuilder.setServers(l2scb);
79
80     L1ConfigBuilder l1cb = new L1ConfigBuilder();
81     l1cb.setLogs(baseDir + File.separator + LOGSLOCATION);
82
83     configBuilder.setClient(l1cb);
84
85     dacb = new DSOApplicationConfigBuilderImpl();
86
87     ApplicationConfigBuilder acb = new ApplicationConfigBuilder();
88     acb.setDSO(dacb);
89
90     configBuilder.setApplication(acb);
91   }
92
93   public int getDsoPort() {
94     return dsoPort;
95   }
96
97   public int getJmxPort() {
98     return jmxPort;
99   }
100
101   public void addWebApplication(String JavaDoc appName) {
102     WebApplicationConfigBuilder wacbImpl = new WebApplicationConfigBuilderImpl();
103     wacbImpl.setWebApplicationName(appName);
104     webapps.add(wacbImpl);
105   }
106   
107   public void addWebApplication(String JavaDoc appName, boolean isSynchronousWrite) {
108     WebApplicationConfigBuilder builder = new WebApplicationConfigBuilderImpl();
109     builder.setWebApplicationName(appName);
110     Map JavaDoc attributes = new HashMap JavaDoc();
111     attributes.put(WebApplicationConfigBuilder.ATTRIBUTE_NAME, "" + isSynchronousWrite);
112     builder.setWebApplicationAttributes(attributes);
113     webapps.add(builder);
114   }
115
116   public final void addExclude(String JavaDoc exclude) {
117     InstrumentedClassConfigBuilder iccbImpl = new InstrumentedClassConfigBuilderImpl();
118     iccbImpl.setIsInclude(false);
119     iccbImpl.setClassExpression(exclude);
120     instrumented.add(iccbImpl);
121   }
122
123   public final void addRoot(String JavaDoc fieldName, String JavaDoc rootName) {
124     RootConfigBuilder rootConfigBuilder = new RootConfigBuilderImpl();
125     rootConfigBuilder.setFieldName(fieldName);
126     rootConfigBuilder.setRootName(rootName);
127     roots.add(rootConfigBuilder);
128   }
129
130   public final void addLock(boolean isAutolock, String JavaDoc methodExp, String JavaDoc lockLevel, String JavaDoc lockName) {
131     String JavaDoc tag = isAutolock ? LockConfigBuilder.TAG_AUTO_LOCK : LockConfigBuilder.TAG_NAMED_LOCK;
132     LockConfigBuilder lockConfigBuilder = new LockConfigBuilderImpl(tag);
133     lockConfigBuilder.setMethodExpression(methodExp);
134     lockConfigBuilder.setLockLevel(lockLevel);
135     if (!isAutolock && lockName != null) {
136       lockConfigBuilder.setLockName(lockName);
137     }
138     locks.add(lockConfigBuilder);
139   }
140
141   /**
142    * Generates the current object tree representation in {@link TerracottaConfigBuilder}
143    */

144   public void build() {
145     if (instrumented.size() > 0) {
146       dacb.setInstrumentedClasses((InstrumentedClassConfigBuilder[]) instrumented
147           .toArray(new InstrumentedClassConfigBuilder[0]));
148     }
149     if (webapps.size() > 0) {
150       dacb.setWebApplications((WebApplicationConfigBuilder[]) webapps.toArray(new WebApplicationConfigBuilder[0]));
151     }
152     if (roots.size() > 0) {
153       dacb.setRoots((RootConfigBuilder[]) roots.toArray(new RootConfigBuilder[0]));
154     }
155     if (locks.size() > 0) {
156       dacb.setLocks((LockConfigBuilder[]) locks.toArray(new LockConfigBuilder[0]));
157     }
158   }
159
160   public String JavaDoc toString() {
161     return configBuilder.toString();
162   }
163
164   public TerracottaConfigBuilder getConfigBuilder() {
165     return configBuilder;
166   }
167
168   public void addInclude(String JavaDoc classExpression) {
169     InstrumentedClassConfigBuilder iccb = new InstrumentedClassConfigBuilderImpl();
170     iccb.setClassExpression(classExpression);
171     instrumented.add(iccb);
172   }
173 }
174
Popular Tags