1 28 29 package com.idaremedia.antx.condition.solo; 30 31 import org.apache.tools.ant.Location; 32 import org.apache.tools.ant.Project; 33 import org.apache.tools.ant.TaskAdapter; 34 import org.apache.tools.ant.taskdefs.condition.Condition; 35 36 import com.idaremedia.antx.Iteration; 37 import com.idaremedia.antx.NoiseLevel; 38 import com.idaremedia.antx.apis.Requester; 39 import com.idaremedia.antx.helpers.Strings; 40 import com.idaremedia.antx.starters.ValueURIHandlerSkeleton; 41 42 85 86 public final class ConditionValueURIHandler extends ValueURIHandlerSkeleton 87 { 88 private static final String T= Strings.TRUE; 89 private static final String F= Strings.FALSE; 90 private static final String E= "error"; 91 92 93 96 public ConditionValueURIHandler() 97 { 98 } 99 100 101 108 public String valueFrom(String uriFragment, String fullUri, Requester clnt) 109 { 110 final Project project = clnt.getProject(); 111 Object value = project.getReference(uriFragment); 112 113 if (value instanceof TaskAdapter) { 114 value = ((TaskAdapter)value).getProxy(); 115 } 116 117 if (value instanceof ShareableCondition) { 119 ShareableCondition c = (ShareableCondition)value; 120 NoiseLevel effect = c.getFailureEffect(); 121 if (effect!=null && effect.isAsBadAs(NoiseLevel.ERROR)) { 122 String e = Iteration.uistrs().get 123 ("brul.referal.valueuri.mismatch",fullUri); 124 clnt.problem(e, Project.MSG_WARN); 125 } 126 try { 127 return c.eval(new Adapter(clnt)) ? T : F; 128 } catch(RuntimeException anyX) { 129 if (Iteration.defaultdefaults().isHaltIfError("valueuris")) { 130 throw anyX; 131 } 132 return E; 133 } 134 } 135 else if (value instanceof Condition) { 137 Condition c = (Condition)value; 138 try { 139 return c.eval() ? T : F; 140 } catch(RuntimeException anyX) { 141 if (Iteration.defaultdefaults().isHaltIfError("valueuris")) { 142 throw anyX; 143 } 144 return E; 145 } 146 } 147 return null; 148 } 149 150 151 160 static class Adapter implements ShareableConditionUser 161 { 162 Adapter(Requester clnt) 163 { 164 this.clnt = clnt; 165 } 166 public String getMsgId() 167 { 168 return null; 169 } 170 public Location getLocation() 171 { 172 return clnt.getLocation(); 173 } 174 public String getUpdateProperty() 175 { 176 return null; 177 } 178 public String getUpdateVariable() 179 { 180 return null; 181 } 182 public String getUpdateValue() 183 { 184 return null; 185 } 186 private final Requester clnt; 187 } 188 } 189 190 | Popular Tags |