1 15 package org.apache.tapestry.engine.encoders; 16 17 import org.apache.tapestry.Tapestry; 18 import org.apache.tapestry.asset.AssetService; 19 import org.apache.tapestry.engine.ServiceEncoder; 20 import org.apache.tapestry.engine.ServiceEncoding; 21 import org.apache.tapestry.services.ServiceConstants; 22 23 30 public class AssetEncoder implements ServiceEncoder 31 { 32 private String _path; 33 34 public void setPath(String path) 35 { 36 _path = path; 37 } 38 39 public void encode(ServiceEncoding encoding) 40 { 41 if (!encoding.getParameterValue(ServiceConstants.SERVICE).equals(Tapestry.ASSET_SERVICE)) 42 return; 43 44 String path = encoding.getParameterValue(AssetService.PATH); 45 String digest = encoding.getParameterValue(AssetService.DIGEST); 46 47 49 String fullPath = _path + digest + path; 50 51 encoding.setServletPath(fullPath); 52 encoding.setParameterValue(AssetService.PATH, null); 53 encoding.setParameterValue(AssetService.DIGEST, null); 54 encoding.setParameterValue(ServiceConstants.SERVICE, null); 55 } 56 57 public void decode(ServiceEncoding encoding) 58 { 59 String fullPath = encoding.getServletPath(); 60 61 if (!fullPath.startsWith(_path)) 62 return; 63 64 String pathInfo = fullPath.substring(_path.length()); 65 int slashx = pathInfo.indexOf('/'); 66 67 encoding.setParameterValue(ServiceConstants.SERVICE, Tapestry.ASSET_SERVICE); 68 encoding.setParameterValue(AssetService.DIGEST, pathInfo.substring(0, slashx)); 69 encoding.setParameterValue(AssetService.PATH, pathInfo.substring(slashx)); 70 } 71 72 } | Popular Tags |