/* * Copyright (c) 1998-2011 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * * Free Software Foundation, Inc. * 59 Temple Place, Suite 330 * Boston, MA 02111-1307 USA * * @author Scott Ferguson */ package com.caucho.env.deploy; import com.caucho.config.program.ConfigProgram; import com.caucho.config.program.ContainerProgram; import com.caucho.config.ConfigException; import com.caucho.config.program.PropertyValueProgram; import com.caucho.config.types.PathBuilder; import com.caucho.config.types.Period; import com.caucho.config.types.RawString; import com.caucho.config.types.FileSetType; import com.caucho.vfs.Path; import com.caucho.vfs.Vfs; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; /** * The configuration for a deployable instance. */ public class DeployConfig { private final static Logger log = Logger.getLogger(DeployConfig.class.getName()); // The deploy id private String _id; // The root directory private String _rootDirectory; // The archive path; private String _archivePath; // The expansion cleanup set private FileSetType _expandCleanupFileset; // startup priority private int _startupPriority; // startup mode private DeployMode _startupMode; // redeploy mode private DeployMode _redeployMode; // redeploy period private Period _redeployCheckInterval; // if true, skip defaults private boolean _isSkipDefaultConfig; // The classloader program private ContainerProgram _classLoaderProgram = new ContainerProgram(); // The configuration program private ContainerProgram _program = new ContainerProgram(); /** * Sets the id. */ public void setId(String id) { _id = id; } /** * Gets the id. */ public String getId() { return _id; } /** * Sets the root directory string */ public void setRootDirectory(RawString rootDirectory) { _rootDirectory = rootDirectory.getValue(); } /** * Gets the root-directory. */ public String getRootDirectory() { return _rootDirectory; } /** * Sets the archive-path */ public void setArchivePath(RawString path) { _archivePath = path.getValue(); } /** * Gets the archive-path */ public String getArchivePath() { return _archivePath; } /** * Skip the defaults (for admin) */ public boolean isSkipDefaultConfig() { return _isSkipDefaultConfig; } /** * Sets the archive auto-remove file set. */ public void setExpandCleanupFileset(FileSetType fileset) { _expandCleanupFileset = fileset; } /** * Gets the archive auto-remove file set. */ public FileSetType getExpandCleanupFileset() { return _expandCleanupFileset; } /** * Skip the defaults (for admin) */ public void setSkipDefaultConfig(boolean isDefault) { _isSkipDefaultConfig = isDefault; } /** * Sets the startup-mode */ public void setStartupMode(DeployMode mode) throws ConfigException { _startupMode = mode; } /** * Gets the startup mode. */ public DeployMode getStartupMode() { return _startupMode; } /** * Sets the startup-priority */ public void setStartupPriority(int priority) throws ConfigException { _startupPriority = priority; } /** * Gets the startup priority. */ public int getStartupPriority() { return _startupPriority; } /** * Sets the redeploy-check-interval */ public void setRedeployCheckInterval(Period period) { _redeployCheckInterval = period; } /** * Gets the redeploy check interval. */ public Period getRedeployCheckInterval() { return _redeployCheckInterval; } /** * Sets the redeploy-mode */ public void setRedeployMode(DeployMode mode) throws ConfigException { _redeployMode = mode; } /** * Gets the redeploy mode. */ public DeployMode getRedeployMode() { return _redeployMode; } /** * Returns the prologue. */ public DeployConfig getPrologue() { return null; } /** * Adds to the classloader */ public void addClassLoader(ConfigProgram program) { _classLoaderProgram.addProgram(program); } public ConfigProgram getClassLoaderProgram() { return _classLoaderProgram; } /** * Adds to the builder program. */ public void addBuilderProgram(ConfigProgram program) { _program.addProgram(program); } /** * Returns the program. */ public ConfigProgram getBuilderProgram() { return _program; } /** * Adds a program. */ public void addPropertyProgram(String name, Object value) { _program.addProgram(new PropertyValueProgram(name, value)); } /** * Calculates the root directory for the config. */ public Path calculateRootDirectory() { return calculateRootDirectory(null); } /** * Calculates the root directory for the config. */ public Path calculateRootDirectory(Map<String,Object> varMap) { try { String rawPath = getRootDirectory(); Path rootDir = null; if (rawPath != null) rootDir = PathBuilder.lookupPath(rawPath, varMap); if (rootDir != null) return rootDir; return Vfs.lookup(); } catch (Exception e) { log.log(Level.WARNING, e.toString(), e); return null; } } }