You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

UrlRewrite Component

Available as of Camel 2.11

The camel-urlrewrite component allows to plugin url rewrite functionality to HTTP, HTTP4, Jetty, or AHC components. This component integrates the UrlRewriteFilter project with Apache Camel. This allows you to use the capabilities from the url rewrite project with your Camel routes.

This component requires that your Camel routes starts from a servlet based endpoint such as Jetty or SERVLET.

Options

The camel-urlrewrite component offers the following options

Unknown macro: {div}

Name

Default Value

Description

conf

null

To use a custom org.tuckey.web.filters.urlrewrite.Conf as the configuration for the url rewrite filter.

configFile

null

Refers to a file name to load as the configuration file. The file should be XML file.

modRewriteConfFile

null

Refers to a file name to load as the mod based configuration file. This file should be a plain text file.

modRewriteConfText

null

Is used to quickly configure a mod based configuration without using a file.

useQueryString

false

Whether to use query strings in the url rewrite rules.

useContext

false

Whether to include context-path or not in the matching. Will be default remove the context-path.

defaultMatchType

"regex"

Which match type to use. Can be either "wildcard" or "regex".

decodeUsing

null

To use a specific encoding such as "utf-8" or "iso-8859-1".

Usage

The following component producers supports using together with the camel-urlrewrite component: HTTP, HTTP4 Jetty.

Unknown macro: {div}

Component

Class

camel-http

org.apache.camel.component.urlrewrite.http.HttpUrlRewrite

camel-jetty

org.apache.camel.component.urlrewrite.http.HttpUrlRewrite

camel-http4

org.apache.camel.component.urlrewrite.http4.HttpUrlRewrite

You setup the url rewrite as a bean of the type org.apache.camel.component.urlrewrite.http.HttpUrlRewrite (when using HTTP component) as shown below:

Error formatting macro: snippet: java.lang.NullPointerException

And in XML DSL you can do:

<bean id="myRewrite" class="org.apache.camel.component.urlrewrite.HttpUrlRewrite">
  <property name="configFile" value="example/urlrewrite2.xml"/>
</bean>

In the Camel routes, you bridge the endpoints, and refer to the url rewrite on the producer endpoint as shown below. Notice how we refer to our url rewrite filter using the urlRewrite option in the endpoint uri.

Error formatting macro: snippet: java.lang.NullPointerException

Writing custom url rewriters

You can implement your custom url rewriters by implementing either of the following interfaces from the component of choice:

Component(s): camel-http / camel-jetty

  • org.apache.camel.component.http.UrlRewrite
  • org.apache.camel.component.http.HttpServletUrlRewrite

Component(s): camel-http4

  • org.apache.camel.component.http4.UrlRewrite
  • org.apache.camel.component.http4.HttpServletUrlRewrite

The former is a simple and generic interface, which is not dependent on the Servlet API.
The later is servlet based which requires the Camel route to start from a servlet based component such as Jetty or SERVLET. The servlet based is more feature rich and that's the API we use to integrate with the UrlRewriteFilter project in this camel-urlrewrite component.

A simple url rewrite filter

In this example we implement a custom org.apache.camel.component.http.UrlRewrite that just replaces yahoo with google. Mind this example is based on a unit test, and only for demonstration purposes. As its java code you have full power to implement more complex logic.

The url parameter contains the full url including scheme://hostname:port/path?query. The relativeUrl parameter is the url without the endpoint configured path. Notice this option may be null if the url doesn't start with the endpoint configured path.

Error formatting macro: snippet: java.lang.NullPointerException

See Also

  • No labels