001: /*
002: * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Scott Ferguson
028: */
029:
030: package com.caucho.server.deploy;
031:
032: import com.caucho.config.program.ConfigProgram;
033: import com.caucho.config.program.ContainerProgram;
034: import com.caucho.config.ConfigException;
035: import com.caucho.config.program.PropertyValueProgram;
036: import com.caucho.config.types.PathBuilder;
037: import com.caucho.config.types.Period;
038: import com.caucho.config.types.RawString;
039: import com.caucho.vfs.Path;
040: import com.caucho.vfs.Vfs;
041:
042: import java.util.Map;
043: import java.util.logging.Level;
044: import java.util.logging.Logger;
045:
046: /**
047: * The configuration for a deployable instance.
048: */
049: public class DeployConfig {
050: private final static Logger log = Logger
051: .getLogger(DeployConfig.class.getName());
052:
053: // The deploy id
054: private String _id = "";
055:
056: // The root directory
057: private String _rootDirectory;
058:
059: // The archive path;
060: private String _archivePath;
061:
062: // startup mode
063: private String _startupMode;
064:
065: // startup priority
066: private int _startupPriority;
067:
068: // redeploy mode
069: private String _redeployMode;
070:
071: // redeploy period
072: private Period _redeployCheckInterval;
073:
074: // if true, skip defaults
075: private boolean _isSkipDefaultConfig;
076:
077: // The configuration program
078: private ContainerProgram _program = new ContainerProgram();
079:
080: /**
081: * Sets the id.
082: */
083: public void setId(String id) {
084: _id = id;
085: }
086:
087: /**
088: * Gets the id.
089: */
090: public String getId() {
091: return _id;
092: }
093:
094: /**
095: * Sets the root directory string
096: */
097: public void setRootDirectory(RawString rootDirectory) {
098: _rootDirectory = rootDirectory.getValue();
099: }
100:
101: /**
102: * Gets the app-dir.
103: */
104: public String getRootDirectory() {
105: return _rootDirectory;
106: }
107:
108: /**
109: * Sets the archive-path
110: */
111: public void setArchivePath(RawString path) {
112: _archivePath = path.getValue();
113: }
114:
115: /**
116: * Gets the archive-path
117: */
118: public String getArchivePath() {
119: return _archivePath;
120: }
121:
122: /**
123: * Skip the defaults (for admin)
124: */
125: public boolean isSkipDefaultConfig() {
126: return _isSkipDefaultConfig;
127: }
128:
129: /**
130: * Skip the defaults (for admin)
131: */
132: public void setSkipDefaultConfig(boolean isDefault) {
133: _isSkipDefaultConfig = isDefault;
134: }
135:
136: /**
137: * Sets the startup-mode
138: */
139: public void setStartupMode(String mode) throws ConfigException {
140: _startupMode = DeployController.toStartupCode(mode);
141: }
142:
143: /**
144: * Gets the startup mode.
145: */
146: public String getStartupMode() {
147: return _startupMode;
148: }
149:
150: /**
151: * Sets the startup-priority
152: */
153: public void setStartupPriority(int priority) throws ConfigException {
154: _startupPriority = priority;
155: }
156:
157: /**
158: * Gets the startup priority.
159: */
160: public int getStartupPriority() {
161: return _startupPriority;
162: }
163:
164: /**
165: * Sets the redeploy-check-interval
166: */
167: public void setRedeployCheckInterval(Period period) {
168: _redeployCheckInterval = period;
169: }
170:
171: /**
172: * Gets the redeploy check interval.
173: */
174: public Period getRedeployCheckInterval() {
175: return _redeployCheckInterval;
176: }
177:
178: /**
179: * Sets the redeploy-mode
180: */
181: public void setRedeployMode(String mode) throws ConfigException {
182: _redeployMode = DeployController.toRedeployCode(mode);
183: }
184:
185: /**
186: * Gets the redeploy mode.
187: */
188: public String getRedeployMode() {
189: return _redeployMode;
190: }
191:
192: /**
193: * Returns the prologue.
194: */
195: public DeployConfig getPrologue() {
196: return null;
197: }
198:
199: /**
200: * Adds to the builder program.
201: */
202: public void addBuilderProgram(ConfigProgram program) {
203: _program.addProgram(program);
204: }
205:
206: /**
207: * Returns the program.
208: */
209: public ConfigProgram getBuilderProgram() {
210: return _program;
211: }
212:
213: /**
214: * Adds a program.
215: */
216: public void addPropertyProgram(String name, Object value) {
217: _program.addProgram(new PropertyValueProgram(name, value));
218: }
219:
220: /**
221: * Calculates the root directory for the config.
222: */
223: public Path calculateRootDirectory() {
224: return calculateRootDirectory(null);
225: }
226:
227: /**
228: * Calculates the root directory for the config.
229: */
230: public Path calculateRootDirectory(Map<String, Object> varMap) {
231: try {
232: String rawPath = getRootDirectory();
233: Path rootDir = null;
234:
235: if (rawPath != null)
236: rootDir = PathBuilder.lookupPath(rawPath, varMap);
237:
238: if (rootDir != null)
239: return rootDir;
240:
241: return Vfs.lookup();
242: } catch (Exception e) {
243: log.log(Level.WARNING, e.toString(), e);
244:
245: return null;
246: }
247: }
248: }
|