View Javadoc

1   /***
2    * 
3    */
4   package net.trajano.twiff.internal.servlet;
5   
6   import java.io.Serializable;
7   import javax.servlet.http.HttpServletRequest;
8   import net.trajano.twiff.PageLookup;
9   import net.trajano.twiff.ViewServletConfiguration;
10  import org.apache.commons.lang.StringUtils;
11  
12  /***
13   * This is a simple page lookup implementation. It does not perform any caching.
14   * 
15   * @author Archimedes Trajano
16   */
17  public class ViewPageLookup implements PageLookup {
18      /***
19       * @param configuration
20       */
21      public ViewPageLookup(final ViewServletConfiguration configuration) {
22          this.configuration = configuration;
23      }
24  
25      /***
26       * Configuration
27       */
28      private final ViewServletConfiguration configuration;
29  
30      /***
31       * @see net.trajano.twiff.PageLookup#getPageName(javax.servlet.http.HttpServletRequest)
32       */
33      public String getPageName(final HttpServletRequest request) {
34          if (StringUtils.isEmpty(request.getPathInfo())) {
35              return request.getServletPath().substring(1, request.getServletPath().lastIndexOf('.'));
36          } else {
37              return request.getPathInfo().substring(1);
38          }
39      }
40  
41      /***
42       * @see net.trajano.twiff.PageLookup#getPageBeanClassName(javax.servlet.http.HttpServletRequest)
43       */
44      public String getPageBeanClassName(final HttpServletRequest request) {
45          StringBuffer buf = new StringBuffer(configuration.getPackageContext());
46          String[] components = StringUtils.split(getPageName(request), '/');
47          for (int i = 0; i < components.length - 1; ++i) {
48              buf.append('.');
49              buf.append(components[i].toLowerCase());
50          }
51          buf.append('.');
52          buf.append(Character.toUpperCase(components[components.length - 1].charAt(0)));
53          buf.append(components[components.length - 1].substring(1));
54          return buf.toString();
55      }
56  
57      /***
58       * @see net.trajano.twiff.PageLookup#getPageBeanClass(javax.servlet.http.HttpServletRequest)
59       */
60      public Class<? extends Serializable> getPageBeanClass(final HttpServletRequest request) throws ClassNotFoundException {
61          return (Class<? extends Serializable>) Class.forName(getPageBeanClassName(request));
62      }
63  }