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 }