1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.cms.beans.config;
35
36 import java.util.regex.Matcher;
37 import java.util.regex.Pattern;
38
39 import org.apache.commons.lang3.StringUtils;
40
41
42
43
44
45
46 @Deprecated
47 public class HostBasedRegexpVirtualURIMapping extends HostBasedVirtualURIMapping implements QueryAwareVirtualURIMapping {
48
49 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(HostBasedRegexpVirtualURIMapping.class);
50 protected Pattern regexp;
51
52 @Override
53 public MappingResult mapURI(String uri) {
54 return this.mapURI(uri, null);
55 }
56
57 @Override
58 public MappingResult mapURI(final String uri, String queryString) {
59
60 if (regexp != null) {
61 final Matcher matcher;
62 if (queryString != null) {
63 matcher = regexp.matcher(uri + "?" + queryString);
64 } else {
65 matcher = regexp.matcher(uri);
66 }
67
68 if (matcher.find()) {
69 final MappingResult r = new MappingResult();
70 String hostMapping = this.tryToMapHost();
71 String replaced;
72 try {
73 if (StringUtils.isNotEmpty(hostMapping)) {
74 replaced = matcher.replaceAll(hostMapping);
75 } else {
76 replaced = matcher.replaceAll(toURI);
77 }
78
79 r.setLevel(matcher.groupCount() + 1);
80 r.setToURI(replaced);
81 return r;
82 } catch (IndexOutOfBoundsException e) {
83 log.warn("{} misconfigured: {}", toString(), e.getMessage());
84 }
85 }
86 }
87 return null;
88 }
89
90 @Override
91 public void setFromURI(String fromURI) {
92 this.fromURI = fromURI;
93
94 if (StringUtils.isNotEmpty(fromURI)) {
95 this.regexp = Pattern.compile(fromURI);
96 }
97 }
98
99 @Override
100 public boolean isValid() {
101 if (this.getClass().equals(HostBasedRegexpVirtualURIMapping.class)) {
102 return StringUtils.isNotEmpty(fromURI) && StringUtils.isNotEmpty(toURI);
103 }
104
105 return true;
106 }
107 }