Skip to content
This repository

OCPsoft URL-Rewriting Framework

Octocat-spinner-32 addressbuilder [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 annotations-api [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 annotations-impl [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 api-el [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 api-servlet Rewrite no longer wraps Exceptions unnecessarily February 14, 2014
Octocat-spinner-32 api-tests Added Parameter.configuredBy() aggregate API March 05, 2014
Octocat-spinner-32 api Added Parameter.configuredBy() aggregate API March 05, 2014
Octocat-spinner-32 config-annotations [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 config-jodatime [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 config-prettyfaces-tests [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 config-prettyfaces config-prettyfaces now uses rewrite-anotation-impl for class scanning February 14, 2014
Octocat-spinner-32 config-proxy [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 config-servlet-tests [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 config-servlet Don't URL encode the path when sending a forward (#165) March 27, 2014
Octocat-spinner-32 config-tuckey [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 distribution [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 documentation Update index.asciidoc April 13, 2014
Octocat-spinner-32 examples [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 impl-servlet-2.5 [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 impl-servlet-3.0 [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 impl-servlet-tests Fix for potential NPE on wildfly. Added tests but could not reproduce. March 05, 2014
Octocat-spinner-32 impl-servlet Don't URL encode the path when sending a forward (#165) March 27, 2014
Octocat-spinner-32 impl-tests [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 impl [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 integration-cdi-tests [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 integration-cdi [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 integration-faces-tests Added tests to reproduce #166 March 18, 2014
Octocat-spinner-32 integration-faces Rewrite no longer wraps Exceptions unnecessarily February 14, 2014
Octocat-spinner-32 integration-gwt [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 integration-spring SpringBeanNameResolver failed to resolve beans using scoped proxies (… March 25, 2014
Octocat-spinner-32 rewrite-servlet [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 security-integration-shiro [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 showcase [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 test-base [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 test-harness [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 transform-less [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 transform-markup [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 transform-minify [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 transform [maven-release-plugin] prepare for next development iteration February 13, 2014
Octocat-spinner-32 .gitignore Added examples project to assemble example source zipfiles April 22, 2013
Octocat-spinner-32 .travis.yml Travis: Wildfly on JDK8 works fine November 25, 2013
Octocat-spinner-32 CHANGELOG.md changelog again July 24, 2012
Octocat-spinner-32 LICENSE Initial import June 24, 2011
Octocat-spinner-32 NOTICE rewrite-servlet and distribution modules working April 04, 2012
Octocat-spinner-32 README.md Update README.md February 13, 2014
Octocat-spinner-32 ocpsoft-eclipse-code-format.xml Added code style format profile for Eclipse August 05, 2011
Octocat-spinner-32 pom.xml [maven-release-plugin] prepare for next development iteration February 13, 2014
README.md

Rewrite:

A highly configurable URL-rewriting tool for Java EE 6+ and Servlet 2.5+ applications, supporting integration with:

  • CDI
  • Spring DI
  • JodaTime configuration
  • Tuckey.org URLRewriteFilter configuration
  • JavaServer Faces (JSF)
  • JavaServer Pages (JSP)
  • Struts
  • Wicket
  • Grails
  • Spring Roo
  • Spring Web Flow
  • Any servlet & web framework!
  • All major servlet containers and application servers

Get Help

Get Started

  1. It is recommended but not required to remove other URL-rewriting tools from your application before using Rewrite. If you choose to leave them in place, weird things may happen, be warned.

  2. Include OCPSoft Rewrite in your application's POM file:

    <dependency>
       <groupId>org.ocpsoft.rewrite</groupId>
       <artifactId>rewrite-servlet</artifactId>
       <version>${rewrite.version}</version>
    </dependency>
    
  3. Add a configuration provider implementing the 'org.ocpsoft.rewrite.config.ConfigurationProvider' interface, or extending from the abstract HttpConfigurationProvider class for convenience:

    package com.example;
    
    @RewriteConfiguration
    public class ExampleConfigurationProvider extends HttpConfigurationProvider
    {
    
       @Override
       public int priority()
       {
         return 10;
       }
    
       @Override
       public Configuration getConfiguration(final ServletContext context)
       {
         return ConfigurationBuilder.begin()
           .defineRule()
             .when(Direction.isInbound().and(Path.matches("/some/page/{p}/")))
             .perform(Forward.to("/new-page/{p}.html"));
        }
    }
    
  4. You must either annotate your ConfigurationProvider class with the @RewriteConfiguration annotation, OR create a file named: '/META-INF/services/org.ocpsoft.rewrite.config.ConfigurationProvider' which contains the fully qualified name of your ConfigurationProvider implementation:

    /META-INF/services/org.ocpsoft.rewrite.config.ConfigurationProvider
    ---
    com.example.ExampleConfigurationProvider
    
  5. Add rules to your configuration. Condition objects such as 'Direction.isInbound()' and 'Path.matches(...)' can be found in the 'org.ocpsoft.rewrite.config.' and 'org.ocpsoft.rewrite.servlet.config.' packages.

  6. Consider using Rewrite extensions for extra power:

  7. Run your application!

FEEDBACK

This project is looking for your feedback! What would make your task easier? How can we simplify this experience?

TODO's

  • Continue simplification of Configuration objects and convenience APIs.

  • Implement additional xml & file-based configuration support.

  • Implement http://localhost:8080/rewrite-status monitoring tool

Something went wrong with that request. Please try again.