comparison src/main/java/de/mpiwg/itgroup/annotations/restlet/utils/UrlPrefixFilter.java @ 94:fcb6fe10e08c

added config option for webapp URL prefix.
author casties
date Tue, 10 Feb 2015 17:45:56 +0100
parents
children 8fefa4651d00
comparison
equal deleted inserted replaced
91:cf44d9e1a4a7 94:fcb6fe10e08c
1 package de.mpiwg.itgroup.annotations.restlet.utils;
2
3 /*
4 * #%L
5 * AnnotationManager
6 * %%
7 * Copyright (C) 2012 - 2015 MPIWG Berlin
8 * %%
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU Lesser General Public License as
11 * published by the Free Software Foundation, either version 3 of the
12 * License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Lesser Public License for more details.
18 *
19 * You should have received a copy of the GNU General Lesser Public
20 * License along with this program. If not, see
21 * <http://www.gnu.org/licenses/lgpl-3.0.html>.
22 * #L%
23 */
24
25 import org.restlet.Request;
26 import org.restlet.Response;
27 import org.restlet.data.Reference;
28 import org.restlet.routing.Filter;
29
30 /**
31 * Filter that adds a prefix path to all internally generated URLs.
32 *
33 * @author casties
34 *
35 */
36 public class UrlPrefixFilter extends Filter {
37
38 private String prefix = null;
39
40 /**
41 * Set the prefix to add.
42 *
43 * @param prefix
44 */
45 public void setPrefix(String prefix) {
46 if (!prefix.startsWith("/")) {
47 prefix = "/" + prefix;
48 }
49 this.prefix = prefix;
50 }
51
52 @Override
53 protected int beforeHandle(Request request, Response response) {
54 // get ref to change
55 Reference ref = request.getResourceRef();
56 String path = ref.getPath();
57 // add prefix to path
58 ref.setPath(prefix + path);
59 // change baseRef as well
60 Reference baseRef = ref.getBaseRef();
61 String basePath = baseRef.getPath();
62 // add prefix to base ref path
63 baseRef.setPath(prefix + basePath);
64 return super.beforeHandle(request, response);
65 }
66
67 }