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    }