001 package org.apache.tapestry.engine.encoders; 002 003 import org.apache.tapestry.engine.ServiceEncoder; 004 import org.apache.tapestry.engine.ServiceEncoding; 005 import org.apache.tapestry.services.ServiceConstants; 006 007 /** 008 * Encoder for mapping service names as simple paths such as "/service" . 009 */ 010 public class PathEncoder implements ServiceEncoder { 011 012 private String _path; 013 014 private String _service; 015 016 public void setPath(String path) 017 { 018 _path = path; 019 } 020 021 public void setService(String service) 022 { 023 _service = service; 024 } 025 026 public void encode(ServiceEncoding encoding) 027 { 028 if (!encoding.getParameterValue(ServiceConstants.SERVICE).equals(_service)) 029 return; 030 031 encoding.setServletPath(_path); 032 encoding.setParameterValue(ServiceConstants.SERVICE, null); 033 } 034 035 public void decode(ServiceEncoding encoding) 036 { 037 if (!encoding.getServletPath().equals(_path)) 038 return; 039 040 encoding.setParameterValue(ServiceConstants.SERVICE, _service); 041 } 042 }