01: /*
02: * Copyright 2005-2007 Noelios Consulting.
03: *
04: * The contents of this file are subject to the terms of the Common Development
05: * and Distribution License (the "License"). You may not use this file except in
06: * compliance with the License.
07: *
08: * You can obtain a copy of the license at
09: * http://www.opensource.org/licenses/cddl1.txt See the License for the specific
10: * language governing permissions and limitations under the License.
11: *
12: * When distributing Covered Code, include this CDDL HEADER in each file and
13: * include the License file at http://www.opensource.org/licenses/cddl1.txt If
14: * applicable, add the following below this CDDL HEADER, with the fields
15: * enclosed by brackets "[]" replaced with your own identifying information:
16: * Portions Copyright [yyyy] [name of copyright owner]
17: */
18:
19: package org.restlet.example.tutorial;
20:
21: import org.restlet.Application;
22: import org.restlet.Component;
23: import org.restlet.Redirector;
24: import org.restlet.Restlet;
25: import org.restlet.Route;
26: import org.restlet.data.Protocol;
27:
28: /**
29: * URI rewriting and redirection.
30: *
31: * @author Jerome Louvel (contact@noelios.com)
32: */
33: public class Part10 {
34: public static void main(String[] args) throws Exception {
35: // Create a component
36: Component component = new Component();
37: component.getServers().add(Protocol.HTTP, 8182);
38:
39: // Create an application
40: Application application = new Application(component
41: .getContext()) {
42: @Override
43: public Restlet createRoot() {
44: // Create a Redirector to Google search service
45: String target = "http://www.google.com/search?q=site:mysite.org+{keywords}";
46: return new Redirector(getContext(), target,
47: Redirector.MODE_CLIENT_TEMPORARY);
48: }
49: };
50:
51: // Attach the application to the component's default host
52: Route route = component.getDefaultHost().attach("/search",
53: application);
54:
55: // While routing requests to the application, extract a query parameter
56: // For instance :
57: // http://localhost:8182/search?kwd=myKeyword1+myKeyword2
58: // will be routed to
59: // http://www.google.com/search?q=site:mysite.org+myKeyword1%20myKeyword2
60: route.extractQuery("keywords", "kwd", true);
61:
62: // Start the component
63: component.start();
64: }
65:
66: }
|