1 28 29 package com.idaremedia.antx.valueuri; 30 31 import java.util.Map ; 32 33 import org.apache.tools.ant.Project; 34 35 import com.idaremedia.antx.ExportedProperties; 36 import com.idaremedia.antx.FixtureExaminer; 37 import com.idaremedia.antx.apis.Requester; 38 import com.idaremedia.antx.helpers.SIDs; 39 import com.idaremedia.antx.helpers.Tk; 40 import com.idaremedia.antx.starters.ValueURIHandlerSkeleton; 41 42 77 78 public final class NewRefIdValueURIHandler extends ValueURIHandlerSkeleton 79 { 80 private static final String DEFAULT_PREFIX= "refid"; 81 82 85 public NewRefIdValueURIHandler() 86 { 87 super(); 88 } 89 90 91 96 public String valueFrom(String uriFragment, String fullUri, Requester clnt) 97 { 98 final Project project = clnt.getProject(); 99 String variable = null; 100 101 String prefix = DEFAULT_PREFIX; 102 int i = uriFragment.indexOf("?"); 103 if (i>=0) { 104 prefix = uriFragment.substring(0,i++); 105 if (prefix.length()==0) { 106 prefix = DEFAULT_PREFIX; 107 } else { 108 prefix = Tk.resolveString(project,prefix,true); 109 } 110 if (i<uriFragment.length()) { 111 variable = Tk.resolveString(project,uriFragment.substring(i),true); 112 } 113 } else if (uriFragment.length()>0) { 114 prefix = Tk.resolveString(project,uriFragment,true); 115 } 116 117 final Map refs = clnt.getProject().getReferences(); 118 SIDs.Finder refidFinder = new SIDs.Finder() { 119 public boolean exists(String sid) { 120 return refs.containsKey(sid); 121 } 122 }; 123 String refid; 124 synchronized(refs) { 125 refid = SIDs.next(refidFinder,prefix); 126 if (!Tk.isWhitespace(variable)) { 127 refs.put(refid,FixtureExaminer.PENDING_REFERENCE); 128 ExportedProperties.set(variable,refid); 129 } 130 } 131 return refid; 132 } 133 } 134 135 | Popular Tags |