1 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 ; 25 import java.util.ArrayList ; 26 import java.util.HashMap ; 27 import java.util.List ; 28 import java.util.Map ; 29 30 35 public class StandardTerracottaAppServerConfig { 36 37 private static final String MODE = "development"; 38 private static final String DOMAIN = "localhost"; 39 private static final String LOGS = "stderr:"; 40 private static final String DATALOCATION = "server-data"; 41 private static final String LOGSLOCATION = "logs/client-logs-%(NODE)"; 42 43 private final List instrumented = new ArrayList (); 44 private final List webapps = new ArrayList (); 45 private final List roots = new ArrayList (); 46 private final List locks = new ArrayList (); 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 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 appName) { 102 WebApplicationConfigBuilder wacbImpl = new WebApplicationConfigBuilderImpl(); 103 wacbImpl.setWebApplicationName(appName); 104 webapps.add(wacbImpl); 105 } 106 107 public void addWebApplication(String appName, boolean isSynchronousWrite) { 108 WebApplicationConfigBuilder builder = new WebApplicationConfigBuilderImpl(); 109 builder.setWebApplicationName(appName); 110 Map attributes = new HashMap (); 111 attributes.put(WebApplicationConfigBuilder.ATTRIBUTE_NAME, "" + isSynchronousWrite); 112 builder.setWebApplicationAttributes(attributes); 113 webapps.add(builder); 114 } 115 116 public final void addExclude(String 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 fieldName, String 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 methodExp, String lockLevel, String lockName) { 131 String 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 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 toString() { 161 return configBuilder.toString(); 162 } 163 164 public TerracottaConfigBuilder getConfigBuilder() { 165 return configBuilder; 166 } 167 168 public void addInclude(String classExpression) { 169 InstrumentedClassConfigBuilder iccb = new InstrumentedClassConfigBuilderImpl(); 170 iccb.setClassExpression(classExpression); 171 instrumented.add(iccb); 172 } 173 } 174 | Popular Tags |