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