1 28 29 package com.idaremedia.antx.solo; 30 31 import org.apache.tools.ant.BuildException; 32 import org.apache.tools.ant.Project; 33 import org.apache.tools.ant.PropertyHelper; 34 35 import com.idaremedia.antx.AntX; 36 import com.idaremedia.antx.AssertableTask; 37 import com.idaremedia.antx.ExportedProperties; 38 import com.idaremedia.antx.apis.AntLibFriendly; 39 import com.idaremedia.antx.parameters.FeedbackLevel; 40 import com.idaremedia.antx.parameters.FlexValueSupport; 41 import com.idaremedia.antx.parameters.IsA; 42 43 61 62 public class UnassignTask extends AssertableTask 63 implements FlexValueSupport, AntLibFriendly 64 { 65 private static final int _NOTYPE= -1; 67 68 72 public UnassignTask() 73 { 74 super(AntX.fixture+"UnassignTask:"); 75 } 76 77 78 82 89 public void setProperty(String property) 90 { 91 require_(property!=null,"setProperty- nonzro name"); 92 verifyNotNamed(); 93 if (getProject().getUserProperty(property)!=null) { 94 String error = getAntXMsg("task.cant.repl.userprop",property); 95 log(error,Project.MSG_ERR); 96 throw new BuildException(error, getLocation()); 97 } 98 m_name = property; 99 m_type = IsA.PROPERTY_INDEX; 100 } 101 102 103 104 109 public void setVariable(String variable) 110 { 111 require_(variable!=null,"setVariable- nonzro name"); 112 verifyNotNamed(); 113 m_name = variable; 114 m_type = IsA.VARIABLE_INDEX; 115 } 116 117 118 119 122 public final void setVar(String variable) 123 { 124 setVariable(variable); 125 } 126 127 128 129 137 public void setReference(String refid) 138 { 139 require_(refid!=null,"setReference- nonzro name"); 140 verifyNotNamed(); 141 m_name = refid; 142 m_type = IsA.REFERENCE_INDEX; 143 } 144 145 146 147 153 public void setFeedback(String level) 154 { 155 require_(level!=null,"setFeedback- nonzro level"); 156 FeedbackLevel fb = FeedbackLevel.from(level); 157 if (fb==null) { 158 String e = getAntXMsg("task.illegal.param.value", 159 getTaskName(), level,"feedbacklevel"); 160 log(e, Project.MSG_ERR); 161 throw new BuildException(e, getLocation()); 162 } 163 m_fbLevel = fb; 164 } 165 166 167 171 177 protected void verifyCanExecute(String calr) 178 { 179 super.verifyCanExecute_(calr); 180 if (m_name==null) { 181 String error = getAntXMsg("task.needs.this.attr", 182 getTaskName(), "property|reference|variable"); 183 log(error, Project.MSG_ERR); 184 throw new BuildException(error, getLocation()); 185 } 186 } 187 188 189 190 195 public void execute() 196 { 197 verifyCanExecute_("exec"); 198 199 final Project myproject = getProject(); 200 switch(m_type) { 201 case IsA.PROPERTY_INDEX: { 202 PropertyHelper ph = PropertyHelper.getPropertyHelper(myproject); 203 synchronized(ph) { 204 if (ph.getProperty(null,m_name)!=null) { 205 ph.setProperty(null,m_name,"",false); 206 } 207 } 208 break; 209 } 210 case IsA.VARIABLE_INDEX: { 211 ExportedProperties.delete(m_name); 212 break; 213 } 214 case IsA.REFERENCE_INDEX: { 215 if (m_name.startsWith("ant.") && 216 !FeedbackLevel.isQuietish(m_fbLevel,true)) { 217 String warning = getAntXMsg("unassign.warn.ant.runtime.ref",m_name); 218 log(warning, Project.MSG_VERBOSE); 219 } 220 myproject.getReferences().remove(m_name); 221 break; 222 } 223 } 224 } 225 226 227 228 233 protected final void verifyNotNamed(String errid) 234 { 235 if (m_name!=null) { 236 if (errid==null) { 237 errid = "task.too.many.flex.attrs"; 238 } 239 String error = getAntXMsg(errid); 240 log(error, Project.MSG_ERR); 241 throw new BuildException(error, getLocation()); 242 } 243 } 244 245 246 private void verifyNotNamed() 247 { 248 verifyNotNamed(null); 249 } 250 251 252 private String m_name; 253 private int m_type=_NOTYPE; 254 private FeedbackLevel m_fbLevel=FeedbackLevel.NORMAL; 255 } 256 257 | Popular Tags |