1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.commons.launcher.types; 19 20 import java.io.File; 21 22 import org.apache.tools.ant.ProjectHelper; 23 import org.apache.tools.ant.types.DataType; 24 import org.apache.tools.ant.types.Path; 25 26 /** 27 * A class that represents nested <sysproperty> or <env> elements. This class 28 * provides the same functionality as the class that represents these same 29 * elements in a "java" task. In addition, this class supports conditional "if" 30 * and "unless" attributes. 31 * 32 * @author Patrick Luby 33 */ 34 public class ConditionalVariable extends DataType { 35 36 //------------------------------------------------------------------ Fields 37 38 /** 39 * Cached "if" condition flag. 40 */ 41 private String ifCondition = null; 42 43 /** 44 * Cached key. 45 */ 46 private String key = null; 47 48 /** 49 * Cached "unless" condition flag. 50 */ 51 private String unlessCondition = null; 52 53 /** 54 * Cached value. 55 */ 56 private String value = null; 57 58 //----------------------------------------------------------------- Methods 59 60 /** 61 * Get the "if" condition flag. 62 * 63 * @return the "if" condition flag 64 */ 65 public String getIf() { 66 67 return ProjectHelper.replaceProperties(project, ifCondition, project.getProperties()); 68 69 } 70 71 /** 72 * Get the key. 73 * 74 * @return the key for this variable 75 */ 76 public String getKey() { 77 78 return ProjectHelper.replaceProperties(project, key, project.getProperties()); 79 80 } 81 82 /** 83 * Get the "unless" condition flag. 84 * 85 * @return the "unless" condition flag 86 */ 87 public String getUnless() { 88 89 return ProjectHelper.replaceProperties(project, unlessCondition, project.getProperties()); 90 91 } 92 93 /** 94 * Get the value. 95 * 96 * @return the value for this variable 97 */ 98 public String getValue() { 99 100 return ProjectHelper.replaceProperties(project, value, project.getProperties()); 101 102 } 103 104 /** 105 * Set the value to a {@link File}. 106 * 107 * @param file the {@link File} for this variable 108 */ 109 public void setFile(File file) { 110 111 this.value = file.getAbsolutePath(); 112 113 } 114 115 /** 116 * Set the value to a {@link Path}. 117 * 118 * @param path the {@link Path} for this variable 119 */ 120 public void setPath(Path path) { 121 122 this.value = path.toString(); 123 124 } 125 126 /** 127 * Set the "if" condition. Tasks that nest this class as an element 128 * should evaluate this flag in their {@link org.apache.tools.ant.Task#execute()} method. If the 129 * following conditions are true, the task should process this element: 130 * <ul> 131 * <ol>The flag is neither null nor a empty string 132 * <ol>The property that the flag resolves to after macro substitution 133 * is defined 134 * </ul> 135 * 136 * @param property a property name or macro 137 */ 138 public void setIf(String property) { 139 140 this.ifCondition = property; 141 142 } 143 144 /** 145 * Set the key. 146 * 147 * @param key the key for this variable 148 */ 149 public void setKey(String key) { 150 151 this.key = key; 152 153 } 154 155 /** 156 * Set the value to a {@link Path}. 157 * 158 * @param path the {@link Path} for this variable 159 */ 160 public void setFile(Path path) { 161 162 this.value = path.toString(); 163 164 } 165 166 /** 167 * Set the "unless" condition. Tasks that nest this class as an element 168 * should evaluate this flag in their {@link org.apache.tools.ant.Task#execute()} method. If the 169 * following conditions are true, the task should ignore this element: 170 * <ul> 171 * <ol>The flag is neither null nor a empty string 172 * <ol>The property that the flag resolves to after macro substitution 173 * is defined 174 * </ul> 175 * 176 * @param property a property name or macro 177 */ 178 public void setUnless(String property) { 179 180 this.unlessCondition = property; 181 182 } 183 184 /** 185 * Set the value. 186 * 187 * @param value the value for this variable 188 */ 189 public void setValue(String value) { 190 191 this.value = value; 192 193 } 194 195 }