94
|
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 }
|