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.module.cache.cachekey; |
35 |
|
|
36 |
|
import info.magnolia.cms.core.AggregationState; |
37 |
|
import info.magnolia.cms.security.MgnlUserManager; |
38 |
|
import info.magnolia.cms.security.User; |
39 |
|
import info.magnolia.context.MgnlContext; |
40 |
|
|
41 |
|
import java.io.Serializable; |
42 |
|
import java.util.ArrayList; |
43 |
|
import java.util.Collections; |
44 |
|
import java.util.List; |
45 |
|
import java.util.Locale; |
46 |
|
import java.util.Map; |
47 |
|
import java.util.SortedMap; |
48 |
|
import java.util.TreeMap; |
49 |
|
|
50 |
|
import javax.servlet.http.HttpServletRequest; |
51 |
|
|
52 |
|
import org.apache.commons.lang3.StringUtils; |
53 |
|
|
54 |
|
|
55 |
|
|
56 |
|
|
|
|
| 75.8% |
Uncovered Elements: 15 (62) |
Complexity: 16 |
Complexity Density: 0.46 |
|
57 |
|
public class DefaultCacheKeyGenerator implements CacheKeyGenerator<DefaultCacheKey> { |
58 |
|
|
59 |
|
private boolean useRequestParameters = true; |
60 |
|
private boolean useRequestUri = true; |
61 |
|
private boolean useRequestMethod = true; |
62 |
|
private boolean useRequestGetSecure = true; |
63 |
|
private boolean useRequestServerName = true; |
64 |
|
|
65 |
|
private boolean useUserName = true; |
66 |
|
private boolean useLocale = true; |
67 |
|
private boolean useChannel = true; |
68 |
|
|
|
|
| 69.8% |
Uncovered Elements: 13 (43) |
Complexity: 12 |
Complexity Density: 0.52 |
|
69 |
10 |
@Override... |
70 |
|
public DefaultCacheKey generateKey(final AggregationState aggregationState) { |
71 |
|
|
72 |
10 |
final String uri = useRequestUri ? aggregationState.getOriginalURI() : null; |
73 |
|
|
74 |
|
|
75 |
10 |
final String serverName; |
76 |
10 |
final Map<String, String> params; |
77 |
10 |
final boolean isSecure; |
78 |
10 |
final String method; |
79 |
10 |
if (MgnlContext.isWebContext()) { |
80 |
10 |
HttpServletRequest request = MgnlContext.getWebContext().getRequest(); |
81 |
10 |
params = useRequestParameters ? getParametersFromRequest(request) : null; |
82 |
10 |
serverName = useRequestServerName ? request.getServerName() : null; |
83 |
10 |
isSecure = useRequestGetSecure ? request.isSecure() : false; |
84 |
10 |
method = useRequestMethod ? request.getMethod().toLowerCase() : null; |
85 |
|
} else { |
86 |
0 |
serverName = null; |
87 |
0 |
params = null; |
88 |
0 |
isSecure = false; |
89 |
0 |
method = null; |
90 |
|
} |
91 |
|
|
92 |
|
|
93 |
10 |
final Locale locale = useLocale ? aggregationState.getLocale() : null; |
94 |
10 |
final String localeStr = locale == null ? null : locale.toString(); |
95 |
|
|
96 |
10 |
final SortedMap<String, Serializable> additionalAttributes = new TreeMap<>(); |
97 |
10 |
final String userName = MgnlContext.getUser().getName(); |
98 |
10 |
if (useUserName && !MgnlUserManager.ANONYMOUS_USER.equals(userName)) { |
99 |
10 |
additionalAttributes.put(User.class.getName(), userName); |
100 |
|
} |
101 |
10 |
final String channel = useChannel ? aggregationState.getChannel().getName() : null; |
102 |
|
|
103 |
10 |
return this.createKey(aggregationState, uri, serverName, localeStr, channel, method, params, isSecure, additionalAttributes); |
104 |
|
} |
105 |
|
|
|
|
| 60% |
Uncovered Elements: 2 (5) |
Complexity: 3 |
Complexity Density: 3 |
|
106 |
10 |
protected DefaultCacheKey createKey(final AggregationState aggregationState, String uri, String serverName, String locale, String channel, String method,... |
107 |
|
Map<String, String> params, Boolean isSecure, SortedMap<String, Serializable> additionalAttributes) { |
108 |
|
|
109 |
10 |
return new DefaultCacheKey( |
110 |
|
uri, |
111 |
|
serverName, |
112 |
|
locale, |
113 |
|
channel, |
114 |
|
method, |
115 |
10 |
params == null ? null : Collections.unmodifiableMap(params), |
116 |
|
isSecure, |
117 |
10 |
additionalAttributes == null ? null : Collections.unmodifiableMap(additionalAttributes) |
118 |
|
); |
119 |
|
} |
120 |
|
|
121 |
|
|
122 |
|
|
123 |
|
|
124 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (11) |
Complexity: 1 |
Complexity Density: 0.09 |
|
125 |
10 |
private Map<String, String> getParametersFromRequest(HttpServletRequest request) {... |
126 |
10 |
Map<String, String> map = new TreeMap<String, String>(); |
127 |
10 |
for (Object obj : request.getParameterMap().entrySet()) { |
128 |
8 |
Map.Entry<String, String[]> entry = (Map.Entry) obj; |
129 |
8 |
String[] values = entry.getValue(); |
130 |
8 |
List<String> newValues = new ArrayList<String>(); |
131 |
8 |
for (String val : values) { |
132 |
16 |
String str = val.replace(";", ";;"); |
133 |
16 |
newValues.add(str); |
134 |
|
} |
135 |
8 |
String value = StringUtils.join(newValues, ";"); |
136 |
8 |
map.put(entry.getKey(), value); |
137 |
|
} |
138 |
10 |
return map; |
139 |
|
} |
140 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
141 |
|
public boolean isUseLocale() {... |
142 |
|
return useLocale; |
143 |
|
} |
144 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
145 |
|
public void setUseLocale(boolean useLocale) {... |
146 |
|
this.useLocale = useLocale; |
147 |
|
} |
148 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
149 |
|
public boolean isUseRequestMethod() {... |
150 |
|
return useRequestMethod; |
151 |
|
} |
152 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
153 |
|
public void setUseRequestMethod(boolean useRequestMethod) {... |
154 |
|
this.useRequestMethod = useRequestMethod; |
155 |
|
} |
156 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
157 |
|
public boolean isUseRequestParameters() {... |
158 |
|
return useRequestParameters; |
159 |
|
} |
160 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
161 |
|
public void setUseRequestParameters(boolean useRequestParameters) {... |
162 |
|
this.useRequestParameters = useRequestParameters; |
163 |
|
} |
164 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
165 |
|
public boolean isUseRequestUri() {... |
166 |
|
return useRequestUri; |
167 |
|
} |
168 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
169 |
|
public void setUseRequestUri(boolean useRequestUri) {... |
170 |
|
this.useRequestUri = useRequestUri; |
171 |
|
} |
172 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
173 |
|
public boolean isUseRequestGetSecure() {... |
174 |
|
return useRequestGetSecure; |
175 |
|
} |
176 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
177 |
|
public void setUseRequestGetSecure(boolean useRequestGetSecure) {... |
178 |
|
this.useRequestGetSecure = useRequestGetSecure; |
179 |
|
} |
180 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
181 |
|
public boolean isUseRequestServerName() {... |
182 |
|
return useRequestServerName; |
183 |
|
} |
184 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
185 |
|
public void setUseRequestServerName(boolean useRequestServerName) {... |
186 |
|
this.useRequestServerName = useRequestServerName; |
187 |
|
} |
188 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
189 |
|
public boolean isUseUserName() {... |
190 |
|
return useUserName; |
191 |
|
} |
192 |
|
|
|
|
| - |
Uncovered Elements: 0 (0) |
Complexity: 1 |
Complexity Density: - |
|
193 |
|
public void setUseUserName(boolean useUserName) {... |
194 |
|
this.useUserName = useUserName; |
195 |
|
} |
196 |
|
} |