| 1 28 29 package com.idaremedia.antx.flowcontrol.call; 30 31 import java.util.List ; 32 33 import org.apache.tools.ant.BuildException; 34 import org.apache.tools.ant.Project; 35 import org.apache.tools.ant.Task; 36 import org.apache.tools.ant.TaskContainer; 37 import org.apache.tools.ant.taskdefs.Ant; 38 import org.apache.tools.ant.taskdefs.Property; 39 import org.apache.tools.ant.types.PropertySet; 40 41 import com.idaremedia.antx.AntX; 42 import com.idaremedia.antx.AntXFixture; 43 import com.idaremedia.antx.helpers.InnerNameValuePair; 44 import com.idaremedia.antx.helpers.Tk; 45 import com.idaremedia.antx.ownhelpers.ProjectDependentSkeleton; 46 import com.idaremedia.antx.solo.CopyReferenceTask; 47 48 59 60 public final class OverlayParametersHelper extends ProjectDependentSkeleton 61 { 62 private static final String IAM_= AntX.utilities+"OverlayParametersHelper"; 63 64 65 68 public OverlayParametersHelper() 69 { 70 } 71 72 73 78 public OverlayParametersHelper(Project project) 79 { 80 setProject(project); 81 } 82 83 84 85 90 public void addOverride(TaskContainer tc) 91 { 92 m_deferredTo = tc; 93 } 94 95 96 97 102 protected List getParameters() 103 { 104 return m_paramsList; 105 } 106 107 108 109 115 public void addParameter(Object item) 116 { 117 AntX.require_(item!=null,IAM_,"add- nonzro item"); 118 if (m_deferredTo!=null && (item instanceof Task)) { 119 m_deferredTo.addTask((Task)item); 120 } else { 121 m_paramsList.add(item); } 123 } 124 125 126 127 133 public void transferParameters(TargetCaller helper) 134 { 135 List params = getParameters(); 136 for (int i=0,N=params.size();i<N;i++) { 137 Object param = params.get(i); 138 if (param instanceof Property) { 139 Property source = (Property)param; 140 Property dest = helper.createProperty(); 141 Tk.transferProperty(source, dest); 142 if (dest.getValue()==null) { 143 String attr = "value|property|variable|reference"; 144 String ermsg = AntX.uistrs().get("task.needs.this.attr", 145 source.getTaskName(),attr); 146 source.log(ermsg,Project.MSG_ERR); 147 throw new BuildException(ermsg,source.getLocation()); 148 } 149 } 150 else if (param instanceof PropertySet) { 151 PropertySet dest = helper.createPropertySet(); 152 dest.addPropertyset((PropertySet)param); 153 } 154 else if (param instanceof CopyReferenceTask) { 155 CopyReferenceTask source = (CopyReferenceTask)param; 156 source.verifyExists(getProject(),null,null); 157 Ant.Reference dest = helper.createReference(); 158 if (dest!=null) { 159 dest.setRefId(source.getRefId()); 160 dest.setToRefid(source.getToRefId()); 161 } else { 162 String warning = AntX.uistrs(). 163 get("taskset.nested.task.disallowed", 164 "reference","call+mode=local"); source.log(warning,Project.MSG_WARN); 166 } 167 } 168 else if (param instanceof InnerNameValuePair) { 169 if (helper instanceof ConfigurableCaller) { 170 ConfigurableCaller cc = (ConfigurableCaller)helper; 171 InnerNameValuePair source = (InnerNameValuePair)param; 172 InnerNameValuePair dest = cc.createAttribute(); 173 dest.setNV(source.getName(),source.getValue()); 174 } else { 175 InnerNameValuePair source = (InnerNameValuePair)param; 176 source.verifyNamed(); 177 Property dest = helper.createProperty(); 178 dest.setName(source.getName()); 179 dest.setValue(source.getValue()); 180 } 181 } 182 } 183 } 184 185 186 private List m_paramsList= AntXFixture.newList(); 187 private TaskContainer m_deferredTo; 188 } 189 190 191 | Popular Tags |