My favorites | Sign in
Project Home Downloads Issues Source
Project Information
Members
Featured
Downloads
Links

Scenic3 is a liberally to wrap Slim3's Controller. If you don't feel good Slim3 because you must create a controller class each an action method.

Scenic3 create controller classes each action methods on PageClass by APT when compile. And analyze request pattern to create a MatcherClass (this class is glue between PageClass and Slim3's Controller class). So, Scenic3 don't setup when App Engine's instance is spin-up. Page class is classloaded by Reflection API when requested, so have a little overhead of classload compared with Slim3.

Release Notes

  • 2011.05.20 0.5.0 Released
    • support slim3 1.0.11 / appengine-SDK 1.5.0
    • default parameter value
  • 2011.03.19 0.4.2 Released
    • fix bugs: ScenicPage#response is not set valid charset (issue: 9)
    • fix bugs: cant create Macher and Controller when Page has only @Default method (issue: 10)
    • support slim3 1.0.9 / appengine-SDK 1.4.2
  • 2011.03.01 0.4.1 Released
    • fix bugs: setUp method can't call after setupPage (issue: 6)
    • add download method to ScenicPage (issue: 7)
    • support slim3 1.0.8 / appengine-SDK 1.4.2
  • 2011.02.24 0.4.0 Released
    • RESTful API support
    • support slim3 1.0.7 / appengine-SDK 1.4.2
  • 2010.12.23 0.3.0 Released
    • minnor bug fix
    • support slim3 1.0.6 / appengine-SDK 1.4.0
  • 2010.08.29 0.2.0 Released
    • Improve unit tests
  • 2010.08.04 0.1.0 Released

Futures

  • You can write action methods in same PageClass.
  • You don't have to change all controller's class name when Action URL is changed.
  • You have no trouble by many many controllers.
  • You can create a PageClass like Slim3's controller.
  • URL captcher without Slim3's Router
  • create an controller by APT.
  • support Slim3's Hot-Reloading

Samples

@Page("/")
public class FrontPage extends ScenicPage {
    // /view/100  /view/200
    @ActionPath("view/{id}")
    public Navigation view(@Var("id") String id) {
        super.request.setAttribute("x", id);
        return forward("/view.jsp");
    }

    // /
    @Default
    public Navigation index() {
        return forward("/index.jsp");
    }
}
Powered by Google Project Hosting