- /*
- * Copyright 1999-2004 The Apache Software Foundation.
- *
- * Licensed 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.commons.launcher.types;
-
- import java.io.File;
-
- import org.apache.tools.ant.ProjectHelper;
- import org.apache.tools.ant.types.Commandline;
- import org.apache.tools.ant.types.DataType;
- import org.apache.tools.ant.types.Path;
-
- /**
- * A class that represents nested <arg> or <jvmarg> elements. This class
- * provides the same functionality as the class that represents these same
- * elements in a "java" task. In addition, this class supports conditional "if"
- * and "unless" attributes.
- *
- * @author Patrick Luby
- */
- public class ConditionalArgument extends DataType {
-
- //------------------------------------------------------------------ Fields
-
- /**
- * Cached "if" condition flag.
- */
- private String ifCondition = null;
-
- /**
- * Cached "unless" condition flag.
- */
- private String unlessCondition = null;
-
- /**
- * Cached command line arguments.
- */
- private String[] parts = null;
-
- //----------------------------------------------------------------- Methods
-
- /**
- * Get the "if" condition flag.
- *
- * @return the "if" condition flag
- */
- public String getIf() {
-
- return ProjectHelper.replaceProperties(project, ifCondition, project.getProperties());
-
- }
-
- /**
- * Get a single command line argument.
- *
- * @return a single command line argument
- */
- public String[] getParts() {
-
- String[] list = new String[parts.length];
- for (int i = 0; i < parts.length; i++)
- list[i] = ProjectHelper.replaceProperties(project, parts[i], project.getProperties());
- return list;
-
- }
-
- /**
- * Get the "unless" condition flag.
- *
- * @return the "unless" condition flag
- */
- public String getUnless() {
-
- return ProjectHelper.replaceProperties(project, unlessCondition, project.getProperties());
-
- }
-
- /**
- * Set a single command line argument to the absolute
- * filename of the specified file.
- *
- * @param file a single command line argument
- */
- public void setFile(File file) {
-
- this.parts = new String[]{ file.getAbsolutePath() };
-
- }
-
- /**
- * Set the "if" condition. Tasks that nest this class as an element
- * should evaluate this flag in their {@link org.apache.tools.ant.Task#execute()} method. If the
- * following conditions are true, the task should process this element:
- * <ul>
- * <ol>The flag is neither null nor a empty string
- * <ol>The property that the flag resolves to after macro substitution
- * is defined
- * </ul>
- *
- * @param property a property name or macro
- */
- public void setIf(String property) {
-
- this.ifCondition = property;
-
- }
-
- /**
- * Set a line to split into several command line arguments.
- *
- * @param line line to split into several commandline arguments
- */
- public void setLine(String line) {
-
- parts = Commandline.translateCommandline(line);
-
- }
-
- /**
- * Set a single command line argument and treat it like a path. The
- * correct path separator for the platform is used.
- *
- * @param path a single command line argument
- */
- public void setPath(Path path) {
-
- this.parts = new String[]{ path.toString() };
-
- }
-
- /**
- * Set the "unless" condition. Tasks that nest this class as an element
- * should evaluate this flag in their {@link org.apache.tools.ant.Task#execute()} method. If the
- * following conditions are true, the task should ignore this element:
- * <ul>
- * <ol>The flag is neither null nor a empty string
- * <ol>The property that the flag resolves to after macro substitution
- * is defined
- * </ul>
- *
- * @param property a property name or macro
- */
- public void setUnless(String property) {
-
- this.unlessCondition = property;
-
- }
-
- /**
- * Set a single command line argument.
- *
- * @param value a single command line argument
- */
- public void setValue(String value) {
-
- this.parts = new String[]{ value };
-
- }
-
- }