1 28 29 package com.idaremedia.antx.condition; 30 31 import org.apache.tools.ant.Task; 32 33 import com.idaremedia.antx.AntX; 34 import com.idaremedia.antx.apis.Requester; 35 import com.idaremedia.antx.helpers.InstanceFactory; 36 import com.idaremedia.antx.helpers.Tk; 37 import com.idaremedia.antx.starters.ValueURIHandlerSkeleton; 38 39 79 80 public class ShortHandValueURIHandler extends ValueURIHandlerSkeleton 81 { 82 85 private static InstanceFactory m_IF= new InstanceFactory(); 86 static { 87 m_IF.put("$isset:",IsSet.class); 88 m_IF.put("$isnotset:",IsNotSet.class); 89 m_IF.put("$notset:",IsNotSet.class); 90 m_IF.put("$issettrue:",IsSetTrue.class); 91 m_IF.put("$allset:",AllSet.class); 92 m_IF.put("$allsettrue:",AllSetTrue.class); 93 m_IF.put("$alltrue:",AllSetTrue.class); 94 m_IF.put("$anyset:",AnySet.class); 95 m_IF.put("$anysettrue:",AnySetTrue.class); 96 m_IF.put("$anytrue:",AnySetTrue.class); 97 m_IF.put("$noneset:",NoneSet.class); 98 m_IF.put("$isbool:",IsBoolean.class); 99 m_IF.put("$isboolean:",IsBoolean.class); 100 m_IF.put("$isnumeric:",IsNumeric.class); 101 m_IF.put("$isnumber:",IsNumeric.class); 102 m_IF.put("$notwhitespace:",IsNotWhitespace.class); 103 m_IF.put("$isnotwhitespace:",IsNotWhitespace.class); 104 m_IF.put("$isref:",IsReference.class); 105 m_IF.put("$isreference:",IsReference.class); 106 m_IF.put("$isantversion:",IsAntVersion.class); 107 m_IF.put("$filenotempty:",FileNotEmpty.class); 108 m_IF.put("$isdirectory:",IsDirectory.class); 109 m_IF.put("$isdir:",IsDirectory.class); 110 m_IF.put("$isresource:",IsResource.class); 111 m_IF.put("$isres:",IsResource.class); 112 } 113 114 115 116 122 public ShortHandValueURIHandler() 123 { 124 } 125 126 127 128 136 public static void addMapping(String name, Class claz) 137 { 138 AntX.require_(name!=null && claz!=null, 139 AntX.conditions+"ValueURIHandler:", "addMapin- nonzro args"); 140 141 if (!URIable.class.isAssignableFrom(claz)) { 142 throw new ClassCastException (claz.getName()); 143 } 144 145 synchronized(m_IF) { 146 m_IF.put(name,claz); 147 } 148 } 149 150 151 152 160 protected Boolean eval(String uriFragment, String fullUri, Requester clnt) 161 { 162 int i= fullUri.indexOf(':'); 163 if (i>0) { 164 String which= fullUri.substring(0,++i); 165 if (i<fullUri.length()) { 166 Object c= m_IF.newInstance(which); 167 if (c instanceof URIable) { 168 clnt.getProject().setProjectReference(c); 169 if (c instanceof Task) { 170 Task t = (Task)c; 171 t.setLocation(clnt.getLocation()); 172 t.init(); 173 } 174 String fragment = fullUri.substring(i); 175 fragment = Tk.resolveString(clnt.getProject(),fragment,true); 176 ((URIable)c).xsetFromURI(fragment); 177 return ((URIable)c).eval() ? Boolean.TRUE : Boolean.FALSE; 178 } 179 } 180 } 181 return null; 182 } 183 184 185 186 194 public String valueFrom(String uriFragment, String fullUri, Requester clnt) 195 { 196 Boolean B = eval(uriFragment, fullUri, clnt); 197 if (B!=null) { 198 return String.valueOf(B.booleanValue()); 199 } 200 return getDefaultValue(fullUri,clnt); 201 } 202 } 203 204 205 | Popular Tags |