diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sos/SOS.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sos/SOS.java | 479 |
1 files changed, 0 insertions, 479 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sos/SOS.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sos/SOS.java deleted file mode 100644 index 03031d5e..00000000 --- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sos/SOS.java +++ /dev/null @@ -1,479 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tools.ant.taskdefs.optional.sos; - -import java.io.File; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.taskdefs.Execute; -import org.apache.tools.ant.taskdefs.LogStreamHandler; -import org.apache.tools.ant.types.Commandline; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.util.FileUtils; - -/** - * A base class for creating tasks for executing commands on SourceOffSite. - * - * These tasks were inspired by the VSS tasks. - * - */ - -public abstract class SOS extends Task implements SOSCmd { - - private static final int ERROR_EXIT_STATUS = 255; - - private String sosCmdDir = null; - private String sosUsername = null; - private String sosPassword = ""; - private String projectPath = null; - private String vssServerPath = null; - private String sosServerPath = null; - private String sosHome = null; - private String localPath = null; - private String version = null; - private String label = null; - private String comment = null; - private String filename = null; - - private boolean noCompress = false; - private boolean noCache = false; - private boolean recursive = false; - private boolean verbose = false; - - // CheckStyle:VisibilityModifier OFF - bc - /** Commandline to be executed. */ - protected Commandline commandLine; - // CheckStyle:VisibilityModifier ON - - /** - * Flag to disable the cache when set. - * Required if SOSHOME is set as an environment variable. - * Defaults to false. - * - * @param nocache True to disable caching. - */ - public final void setNoCache(boolean nocache) { - noCache = nocache; - } - - /** - * Flag to disable compression when set. Defaults to false. - * - * @param nocompress True to disable compression. - */ - public final void setNoCompress(boolean nocompress) { - noCompress = nocompress; - } - - /** - * The directory where soscmd(.exe) is located. - * soscmd must be on the path if omitted. - * - * @param dir The new sosCmd value. - */ - public final void setSosCmd(String dir) { - sosCmdDir = FileUtils.translatePath(dir); - } - - /** - * The SourceSafe username. - * - * @param username The new username value. - * - * @ant.attribute group="required" - */ - public final void setUsername(String username) { - sosUsername = username; - } - - /** - * The SourceSafe password. - * - * @param password The new password value. - */ - public final void setPassword(String password) { - sosPassword = password; - } - - /** - * The SourceSafe project path. - * - * @param projectpath The new projectpath value. - * - * @ant.attribute group="required" - */ - public final void setProjectPath(String projectpath) { - if (projectpath.startsWith(SOSCmd.PROJECT_PREFIX)) { - projectPath = projectpath; - } else { - projectPath = SOSCmd.PROJECT_PREFIX + projectpath; - } - } - - /** - * The path to the location of the ss.ini file. - * - * @param vssServerPath The new vssServerPath value. - * - * @ant.attribute group="required" - */ - public final void setVssServerPath(String vssServerPath) { - this.vssServerPath = vssServerPath; - } - - /** - * Path to the SourceOffSite home directory. - * - * @param sosHome The new sosHome value. - */ - public final void setSosHome(String sosHome) { - this.sosHome = sosHome; - } - - /** - * The address and port of SourceOffSite Server, - * for example 192.168.0.1:8888. - * - * @param sosServerPath The new sosServerPath value. - * - * @ant.attribute group="required" - */ - public final void setSosServerPath(String sosServerPath) { - this.sosServerPath = sosServerPath; - } - - /** - * Override the working directory and get to the specified path. - * - * @param path The new localPath value. - */ - public final void setLocalPath(Path path) { - localPath = path.toString(); - } - - /** - * Enable verbose output. Defaults to false. - * - * @param verbose True for verbose output. - */ - public void setVerbose(boolean verbose) { - this.verbose = verbose; - } - - // Special setters for the sub-classes - - /** - * Set the file name. - * @param file the filename to use. - */ - protected void setInternalFilename(String file) { - filename = file; - } - - /** - * Set the recursive flag. - * @param recurse if true use the recursive flag on the command line. - */ - protected void setInternalRecursive(boolean recurse) { - recursive = recurse; - } - - /** - * Set the comment text. - * @param text the comment text to use. - */ - protected void setInternalComment(String text) { - comment = text; - } - - /** - * Set the label. - * @param text the label to use. - */ - protected void setInternalLabel(String text) { - label = text; - } - - /** - * Set the version. - * @param text the version to use. - */ - protected void setInternalVersion(String text) { - version = text; - } - - /** - * Get the executable to run. Add the path if it was specified in the build file - * - * @return the executable to run. - */ - protected String getSosCommand() { - if (sosCmdDir == null) { - return COMMAND_SOS_EXE; - } else { - return sosCmdDir + File.separator + COMMAND_SOS_EXE; - } - } - - /** - * Get the comment - * @return if it was set, null if not. - */ - protected String getComment() { - return comment; - } - - /** - * Get the version - * @return if it was set, null if not. - */ - protected String getVersion() { - return version; - } - - /** - * Get the label - * @return if it was set, null if not. - */ - protected String getLabel() { - return label; - } - - /** - * Get the username - * @return if it was set, null if not. - */ - protected String getUsername() { - return sosUsername; - } - - /** - * Get the password - * @return empty string if it wasn't set. - */ - protected String getPassword() { - return sosPassword; - } - - /** - * Get the project path - * @return if it was set, null if not. - */ - protected String getProjectPath() { - return projectPath; - } - - /** - * Get the VSS server path - * @return if it was set, null if not. - */ - protected String getVssServerPath() { - return vssServerPath; - } - - /** - * Get the SOS home directory. - * @return if it was set, null if not. - */ - protected String getSosHome() { - return sosHome; - } - - /** - * Get the SOS serve path. - * @return if it was set, null if not. - */ - protected String getSosServerPath() { - return sosServerPath; - } - - /** - * Get the filename to be acted upon. - * @return if it was set, null if not. - */ - protected String getFilename() { - return filename; - } - - /** - * Get the NoCompress flag. - * - * @return the 'nocompress' Flag if the attribute was 'true', - * otherwise an empty string. - */ - protected String getNoCompress() { - return noCompress ? FLAG_NO_COMPRESSION : ""; - } - - /** - * Get the NoCache flag. - * - * @return the 'nocache' Flag if the attribute was 'true', otherwise an empty string. - */ - protected String getNoCache() { - return noCache ? FLAG_NO_CACHE : ""; - } - - /** - * Get the 'verbose' Flag. - * - * @return the 'verbose' Flag if the attribute was 'true', otherwise an empty string. - */ - protected String getVerbose() { - return verbose ? FLAG_VERBOSE : ""; - } - - /** - * Get the 'recursive' Flag. - * - * @return the 'recursive' Flag if the attribute was 'true', otherwise an empty string. - */ - protected String getRecursive() { - return recursive ? FLAG_RECURSION : ""; - } - - /** - * Builds and returns the working directory. - * <p> - * The localpath is created if it didn't exist. - * - * @return the absolute path of the working directory. - */ - protected String getLocalPath() { - if (localPath == null) { - return getProject().getBaseDir().getAbsolutePath(); - } else { - // make sure localDir exists, create it if it doesn't - File dir = getProject().resolveFile(localPath); - if (!dir.exists()) { - boolean done = dir.mkdirs() || dir.isDirectory(); - if (!done) { - String msg = "Directory " + localPath + " creation was not " - + "successful for an unknown reason"; - throw new BuildException(msg, getLocation()); - } - getProject().log("Created dir: " + dir.getAbsolutePath()); - } - return dir.getAbsolutePath(); - } - } - - /** - * Subclasses implement the logic required to construct the command line. - * - * @return The command line to execute. - */ - abstract Commandline buildCmdLine(); - - - /** - * Execute the created command line. - * - * @throws BuildException on error. - */ - public void execute() - throws BuildException { - int result = 0; - buildCmdLine(); - result = run(commandLine); - if (result == ERROR_EXIT_STATUS) { // This is the exit status - String msg = "Failed executing: " + commandLine.toString(); - throw new BuildException(msg, getLocation()); - } - } - - /** - * Execute the created command line. - * - * @param cmd The command line to run. - * @return int the exit code. - * @throws BuildException - */ - protected int run(Commandline cmd) { - try { - Execute exe = new Execute(new LogStreamHandler(this, - Project.MSG_INFO, - Project.MSG_WARN)); - - exe.setAntRun(getProject()); - exe.setWorkingDirectory(getProject().getBaseDir()); - exe.setCommandline(cmd.getCommandline()); - exe.setVMLauncher(false); // Use the OS VM launcher so we get environment variables - return exe.execute(); - } catch (java.io.IOException e) { - throw new BuildException(e, getLocation()); - } - } - - /** Sets the executable and add the required attributes to the command line. */ - protected void getRequiredAttributes() { - // Get the path to the soscmd(.exe) - commandLine.setExecutable(getSosCommand()); - // SOS server address is required - if (getSosServerPath() == null) { - throw new BuildException("sosserverpath attribute must be set!", getLocation()); - } - commandLine.createArgument().setValue(FLAG_SOS_SERVER); - commandLine.createArgument().setValue(getSosServerPath()); - // Login info is required - if (getUsername() == null) { - throw new BuildException("username attribute must be set!", getLocation()); - } - commandLine.createArgument().setValue(FLAG_USERNAME); - commandLine.createArgument().setValue(getUsername()); - // The SOS class knows that the SOS server needs the password flag, - // even if there is no password ,so we send a " " - commandLine.createArgument().setValue(FLAG_PASSWORD); - commandLine.createArgument().setValue(getPassword()); - // VSS Info is required - if (getVssServerPath() == null) { - throw new BuildException("vssserverpath attribute must be set!", getLocation()); - } - commandLine.createArgument().setValue(FLAG_VSS_SERVER); - commandLine.createArgument().setValue(getVssServerPath()); - // VSS project is required - if (getProjectPath() == null) { - throw new BuildException("projectpath attribute must be set!", getLocation()); - } - commandLine.createArgument().setValue(FLAG_PROJECT); - commandLine.createArgument().setValue(getProjectPath()); - } - - /** Adds the optional attributes to the command line. */ - protected void getOptionalAttributes() { - // -verbose - commandLine.createArgument().setValue(getVerbose()); - // Disable Compression - commandLine.createArgument().setValue(getNoCompress()); - // Path to the SourceOffSite home directory /home/user/.sos - if (getSosHome() == null) { - // If -soshome was not specified then we can look for nocache - commandLine.createArgument().setValue(getNoCache()); - } else { - commandLine.createArgument().setValue(FLAG_SOS_HOME); - commandLine.createArgument().setValue(getSosHome()); - } - //If a working directory was specified then add it to the command line - if (getLocalPath() != null) { - commandLine.createArgument().setValue(FLAG_WORKING_DIR); - commandLine.createArgument().setValue(getLocalPath()); - } - } -} |