1 package org.musicontroller.gui.dynamic; 2 3 import org.apache.tapestry.engine.ServiceEncoder; 4 import org.apache.tapestry.engine.ServiceEncoding; 5 import org.apache.tapestry.services.ServiceConstants; 6 import org.musicontroller.streaming.RssService; 7 8 public class PodcastEncoder implements ServiceEncoder { 9 10 public void decode(ServiceEncoding encoding) { 11 String servletPath = encoding.getServletPath(); 12 13 if (servletPath.startsWith("/rss/")) { 14 String[] params = servletPath.split("/"); 15 16 encoding.setParameterValue(ServiceConstants.SERVICE, RssService.SERVICE_NAME); 17 encoding.setParameterValue("userid", params[2]); 18 encoding.setParameterValue("passhash", params[3]); 19 encoding.setParameterValue("id", params[4].replaceAll(".rss", "")); 20 } 21 } 22 23 public void encode(ServiceEncoding encoding) { 24 String service = encoding.getParameterValue(ServiceConstants.SERVICE); 25 if (service.equals(RssService.SERVICE_NAME)) { 26 StringBuilder sb = new StringBuilder("/rss/"); 27 sb.append(encoding.getParameterValue("userid")); 28 sb.append("/"); 29 sb.append(encoding.getParameterValue("passhash")); 30 sb.append("/"); 31 sb.append(encoding.getParameterValue("id")); 32 sb.append(".rss"); 33 encoding.setServletPath(sb.toString()); 34 35 encoding.setParameterValue(ServiceConstants.SERVICE, null); 36 encoding.setParameterValue("id", null); 37 encoding.setParameterValue("userid", null); 38 encoding.setParameterValue("passhash", null); 39 } 40 } 41 42 43 }