package com.hundsun.jresplus.web.url; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.lang.StringUtils; import com.hundsun.jresplus.web.velocity.eventhandler.DirectOutput; /** * * @author LeoHu copy by sagahl copy by fish * */ public class StampURLBroker extends URLBroker { private String stamp; private String stampName = "t"; private Map<String, StaticQueryData> urlCache = new ConcurrentHashMap<String, StaticQueryData>(); /** * * @param key * @return */ @Override public QueryData setTarget(String resource) { if (resource == null) { throw new NullPointerException("resource can't be null."); } if (urlCache.containsKey(resource)) { return urlCache.get(resource); } QueryData qd = super.setTarget(resource); String appendStamp = null; if (StringUtils.isNotBlank(stamp)) { int i = resource.lastIndexOf('.'); if (i != -1) { appendStamp = stamp + resource.substring(i); } } if (appendStamp != null) { qd.addQueryData(stampName, appendStamp); } StaticQueryData back = new StaticQueryData(qd.toString()); urlCache.put(resource, back); return back; } public class StaticQueryData extends QueryData implements DirectOutput { private String resouceUrl; public StaticQueryData(String resouceUrl) { this.resouceUrl = resouceUrl; } @Override public String toString() { return resouceUrl; } } public String getStamp() { return stamp; } public void setStamp(String stamp) { this.stamp = stamp; } public String getStampName() { return stampName; } public void setStampName(String stampName) { this.stampName = stampName; } }