Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WW-4572 Http parameters #58

Merged
merged 103 commits into from
Jul 15, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
6b20fb5
Introduces new class to represent HTTP parameters
lukaszlenart Oct 5, 2015
787f2f9
Introduces new class to represent expression evaluation
lukaszlenart Oct 5, 2015
330a0ed
Uses the class instead of a Map
lukaszlenart Oct 5, 2015
5508352
Uses HttpParameters class instead of a generic Map
lukaszlenart Oct 5, 2015
6ad4f9f
Updates implementation and fixes test
lukaszlenart Oct 5, 2015
2623559
Fixes issue with filtering out excluded params
lukaszlenart Oct 5, 2015
8282d60
Adjusts test
lukaszlenart Oct 5, 2015
fe1cbc4
Updates test
lukaszlenart Oct 5, 2015
c393a42
Fixes test and cleans up naming
lukaszlenart Oct 5, 2015
2c110e2
Fixes test
lukaszlenart Oct 5, 2015
fcd407c
Fixes test
lukaszlenart Oct 5, 2015
b0a2fbc
Fixes test
lukaszlenart Oct 5, 2015
560f030
Fixes test
lukaszlenart Oct 5, 2015
b373d6a
Fixes test
lukaszlenart Oct 5, 2015
1fa8eac
Fixes test
lukaszlenart Oct 5, 2015
4b8f7b0
Fixes test
lukaszlenart Oct 5, 2015
6fd94e8
Fixes test
lukaszlenart Oct 5, 2015
bda06c8
Fixes test
lukaszlenart Oct 5, 2015
8dc6f77
Creates ActionMapping with empty params
lukaszlenart Oct 5, 2015
bb115be
Fixes support for checkboxes
lukaszlenart Oct 5, 2015
48602b8
Fixes test
lukaszlenart Oct 5, 2015
c14791a
Fixes test
lukaszlenart Oct 5, 2015
582bb32
Adjusts interceptor
lukaszlenart Oct 5, 2015
9640c2b
Fixes test
lukaszlenart Oct 5, 2015
bb096d6
Fixes test
lukaszlenart Oct 5, 2015
3a0bd4c
Updates tests
lukaszlenart Oct 6, 2015
ce8ac8e
Introduces getObject getter to keep compatibility
lukaszlenart Nov 25, 2015
60b9d85
Adjusts usage of parameters
lukaszlenart Nov 25, 2015
059ebc7
Updates tests
lukaszlenart Nov 25, 2015
278b22a
Renames method to better express its meaning
lukaszlenart Dec 19, 2015
d789719
Drops unused method
lukaszlenart Dec 19, 2015
7feaa85
Adds required dependencies
lukaszlenart Nov 25, 2015
443cc65
Re-implements tiles integration based on new API
lukaszlenart Nov 25, 2015
061a3ba
Drops unused classes
lukaszlenart Nov 25, 2015
e76865a
Replaces call to deprecated api
lukaszlenart Nov 25, 2015
795d45f
Updates Portal Tiles integration
lukaszlenart Nov 25, 2015
dacc583
Adds missing header with license
lukaszlenart Nov 25, 2015
0185a2b
Registers Tiles model
lukaszlenart Nov 27, 2015
f4bf759
Fixes dependency clash
lukaszlenart Nov 27, 2015
aff7a56
WW-2069 Replaces 'id' and 'name' with 'var'.
aleksandr-m Nov 27, 2015
da55360
WW-4570 Defines a minimal jar set to be used by users
lukaszlenart Nov 20, 2015
3573c1b
WW-4570 Uses proper schema for assembly descriptor
lukaszlenart Nov 20, 2015
e901ff6
WW-4570 Drops ASM from minimal set of Jars
lukaszlenart Nov 22, 2015
37445b0
WW-4570 Drops XWork core from min-lib
lukaszlenart Nov 28, 2015
7038701
WW-4569 Adds support for .tech
lukaszlenart Nov 28, 2015
624d8b0
WW-4365 Fixes issue with evaluating doubleHeaderValue and doubleHeade…
lukaszlenart Nov 30, 2015
680ad75
fix for WW-4269
victorsosa Dec 30, 2015
3c372b0
Fix to ww-4577 and ww-4576
victorsosa Dec 31, 2015
26d8a9e
fix for WW-4564
victorsosa Dec 31, 2015
55f1a9a
fix for WW-4564
victorsosa Jan 1, 2016
db33d65
version removed
victorsosa Jan 2, 2016
8fd4f8c
remove empty comments
victorsosa Jan 2, 2016
3a29bc3
fix for WW-4573
victorsosa Jan 2, 2016
8d4bb89
fix for WW-4573
victorsosa Jan 2, 2016
9420789
Patch WW-3462
victorsosa Jan 3, 2016
cee303a
A proper way to close the db connection
victorsosa Jan 3, 2016
49a7fe1
make test passed for people not using GMT.
Jan 4, 2016
8966787
Patch WW-3945
victorsosa Jan 3, 2016
bccf099
Update JasperReportsResult.java
victorsosa Jan 4, 2016
a446cda
Patch WW-4381
victorsosa Jan 4, 2016
e9bd945
fix conflict
victorsosa Jan 4, 2016
fd33dc8
Fix for WW-4312
victorsosa Jan 4, 2016
dad437b
WW-3710 Adds test to proof support for wildcards in <include/>
lukaszlenart Jan 5, 2016
6fd37d8
added testcase for WW-4312 / #69
Jan 5, 2016
b84fd6f
WW-4583 JakartaStreamMultiPartRequest fails on short file name and on…
aleksandr-m Jan 6, 2016
c067020
Patch WW-3266
victorsosa Jan 7, 2016
46f3cf2
Adds additional pattern to prevent access to getClass method
lukaszlenart Jan 10, 2016
61f9b07
Prevents eval expressions at all
lukaszlenart Jan 10, 2016
a35a9a8
Adds new result 'JSONActionRedirectResult' to json-plugin. Contains t…
Jan 11, 2016
bdb3b2e
WW-3731 Uses import to reduce noise in code
lukaszlenart Jan 12, 2016
9f665f7
Drops Tiles 3 plugin
lukaszlenart Jan 12, 2016
adb8a13
Removes module
lukaszlenart Jan 12, 2016
bdf4f0b
Ports solution from 2.3.x branch
lukaszlenart Jan 12, 2016
4e3f950
Upgrade Tiles dependencies
lukaszlenart Jan 12, 2016
8d83dc2
Ports solution to resolve problem with EL functions
lukaszlenart Jan 12, 2016
0737d72
Adds missing Tiles API dependency
lukaszlenart Jan 12, 2016
9249aac
Adjusts code to Tiles 3
lukaszlenart Jan 12, 2016
0748886
Uses new way to access TileContainer
lukaszlenart Jan 12, 2016
f6d0e15
Migrates tiles-portlet to the same version
lukaszlenart Jan 12, 2016
8a2f083
made methods non static and private, javadoc updates
Jan 12, 2016
21a1e8b
Renames class to match pattern used in Tiles
lukaszlenart Jan 12, 2016
375faa4
Adds missing dependencies to tiles-request
lukaszlenart Jan 13, 2016
4c6e51b
Defines helper method to fetch ActionContext from request
lukaszlenart Jan 13, 2016
828b237
Overrides method to use defined base instead of fetching it again
lukaszlenart Jan 13, 2016
e53a119
Extends logging
lukaszlenart Jan 13, 2016
4e36a54
Simplifies logic to fetch HttpServletRequest
lukaszlenart Jan 14, 2016
b0613a6
increased visibilty of methods and constants for better extensibility
Jan 14, 2016
76f1884
WW-4507 - clone Tomcat UDecoder and use it for in query string handling
rgielen Jan 14, 2016
4720f46
WW-4507 - adjust Tomcat url decoding code to Log4j 2 logging used in …
rgielen Jan 14, 2016
50c95d4
WW-4403 - add JDK 8 profile, disabling JavaDoc lint checker when buil…
rgielen Jan 14, 2016
dd849e8
WW-4381 - exclude org.olap4j:olap4j for compile, to fix broken builds…
rgielen Jan 14, 2016
5eaef08
WW-4585 Struts2 Rest plugin doesn't handle JSESSIONID with DMI
aleksandr-m Jan 14, 2016
6274820
Uses existing constants instead of literals
lukaszlenart Jan 15, 2016
4771dfa
Extracts constants representing expression languages
lukaszlenart Jan 15, 2016
42628da
Adds support to use Struts' Locale
lukaszlenart Jan 15, 2016
47c6467
Adds support for I18N
lukaszlenart Jan 15, 2016
8b60785
Simplifies logging
lukaszlenart Jan 17, 2016
abd8c6b
Merge branch 'master' into http-parameters
lukaszlenart Jan 19, 2016
bb21dbe
Merge remote-tracking branch 'upstream/master' into http-parameters
lukaszlenart Mar 12, 2016
31826bc
Drops unused import
lukaszlenart Mar 12, 2016
b48082a
Fixes test to use HttpParameters instead of Map
lukaszlenart Mar 12, 2016
9ad0dfb
Merge branch 'master' into http-parameters
lukaszlenart May 18, 2016
70fdc00
Merge remote-tracking branch 'upstream/master' into http-parameters
lukaszlenart Jul 15, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions core/src/main/java/com/opensymphony/xwork2/ActionContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.util.ValueStack;
import org.apache.struts2.dispatcher.HttpParameters;

import java.io.Serializable;
import java.util.HashMap;
Expand Down Expand Up @@ -259,7 +260,7 @@ public String getName() {
*
* @param parameters the parameters for the current action.
*/
public void setParameters(Map<String, Object> parameters) {
public void setParameters(HttpParameters parameters) {
put(PARAMETERS, parameters);
}

Expand All @@ -270,8 +271,8 @@ public void setParameters(Map<String, Object> parameters) {
* @return a Map of HttpServletRequest parameters or a multipart map when in a servlet environment, or a
* generic Map of parameters otherwise.
*/
public Map<String, Object> getParameters() {
return (Map<String, Object>) get(PARAMETERS);
public HttpParameters getParameters() {
return (HttpParameters) get(PARAMETERS);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@
import com.opensymphony.xwork2.config.entities.ActionConfig;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.util.ClearableValueStack;
import com.opensymphony.xwork2.util.Evaluated;
import com.opensymphony.xwork2.util.LocalizedTextUtil;
import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.util.ValueStackFactory;
import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.dispatcher.HttpParameters;

import java.util.Map;

Expand Down Expand Up @@ -157,18 +159,18 @@ public void setAliasesKey(String aliasesKey) {
Map.Entry entry = (Map.Entry) o;
String name = entry.getKey().toString();
String alias = (String) entry.getValue();
Object value = stack.findValue(name);
if (null == value) {
Evaluated value = new Evaluated(stack.findValue(name));
if (!value.isDefined()) {
// workaround
Map<String, Object> contextParameters = ActionContext.getContext().getParameters();
HttpParameters contextParameters = ActionContext.getContext().getParameters();

if (null != contextParameters) {
value = contextParameters.get(name);
value = new Evaluated(contextParameters.get(name));
}
}
if (null != value) {
if (value.isDefined()) {
try {
newStack.setValue(alias, value);
newStack.setValue(alias, value.get());
} catch (RuntimeException e) {
if (devMode) {
String developerNotification = LocalizedTextUtil.findText(ParametersInterceptor.class, "devmode.notification", ActionContext.getContext().getLocale(), "Developer Notification:\n{0}", new Object[]{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.struts2.dispatcher.HttpParameters;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -198,9 +198,10 @@ public String intercept(ActionInvocation invocation) throws Exception {
List<ExceptionMappingConfig> exceptionMappings = invocation.getProxy().getConfig().getExceptionMappings();
ExceptionMappingConfig mappingConfig = this.findMappingFromExceptions(exceptionMappings, e);
if (mappingConfig != null && mappingConfig.getResult()!=null) {
Map parameterMap = mappingConfig.getParams();
Map<String, String> mappingParams = mappingConfig.getParams();
// create a mutable HashMap since some interceptors will remove parameters, and parameterMap is immutable
invocation.getInvocationContext().setParameters(new HashMap<String, Object>(parameterMap));
HttpParameters parameters = HttpParameters.create(mappingParams).build();
invocation.getInvocationContext().setParameters(parameters);
result = mappingConfig.getResult();
publishException(invocation, new ExceptionHolder(e));
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import com.opensymphony.xwork2.util.LocalizedTextUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.dispatcher.Parameter;
import org.apache.struts2.dispatcher.HttpParameters;

import java.util.Arrays;
import java.util.Locale;
Expand Down Expand Up @@ -167,7 +169,7 @@ protected Locale storeLocale(ActionInvocation invocation, Locale locale, String

protected class LocaleFinder {
protected String storage = Storage.SESSION.toString();
protected Object requestedLocale = null;
protected Parameter requestedLocale = null;

protected ActionInvocation actionInvocation = null;

Expand All @@ -178,17 +180,17 @@ protected LocaleFinder(ActionInvocation invocation) {

protected void find() {
//get requested locale
Map<String, Object> params = actionInvocation.getInvocationContext().getParameters();
HttpParameters params = actionInvocation.getInvocationContext().getParameters();

storage = Storage.SESSION.toString();

requestedLocale = findLocaleParameter(params, parameterName);
if (requestedLocale != null) {
if (requestedLocale.isDefined()) {
return;
}

requestedLocale = findLocaleParameter(params, requestOnlyParameterName);
if (requestedLocale != null) {
if (requestedLocale.isDefined()) {
storage = Storage.NONE.toString();
}
}
Expand All @@ -197,8 +199,8 @@ public String getStorage() {
return storage;
}

public Object getRequestedLocale() {
return requestedLocale;
public String getRequestedLocale() {
return requestedLocale.getValue();
}
}

Expand Down Expand Up @@ -264,13 +266,11 @@ protected Locale readStoredLocalFromCurrentInvocation(ActionInvocation invocatio
return locale;
}

protected Object findLocaleParameter(Map<String, Object> params, String parameterName) {
Object requestedLocale = params.remove(parameterName);
if (requestedLocale != null && requestedLocale.getClass().isArray()
&& ((Object[]) requestedLocale).length > 0) {
requestedLocale = ((Object[]) requestedLocale)[0];

LOG.debug("Requested locale: {}", requestedLocale);
protected Parameter findLocaleParameter(HttpParameters params, String parameterName) {
Parameter requestedLocale = params.get(parameterName);
params.remove(parameterName);
if (requestedLocale.isDefined()) {
LOG.debug("Requested locale: {}", requestedLocale.getValue());
}
return requestedLocale;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.dispatcher.HttpParameters;

import java.util.Collection;
import java.util.HashSet;
Expand Down Expand Up @@ -107,31 +108,27 @@ public class ParameterFilterInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {

Map<String, Object> parameters = invocation.getInvocationContext().getParameters();
HashSet<String> paramsToRemove = new HashSet<>();
HttpParameters parameters = invocation.getInvocationContext().getParameters();

Map<String, Boolean> includesExcludesMap = getIncludesExcludesMap();

for (String param : parameters.keySet()) {
for (String param : parameters.getNames()) {
boolean currentAllowed = !isDefaultBlock();

for (String currRule : includesExcludesMap.keySet()) {
if (param.startsWith(currRule)
&& (param.length() == currRule.length()
|| isPropertySeparator(param.charAt(currRule.length())))) {
currentAllowed = includesExcludesMap.get(currRule).booleanValue();
if (param.startsWith(currRule) &&
(param.length() == currRule.length() || isPropertySeparator(param.charAt(currRule.length())))
) {
currentAllowed = includesExcludesMap.get(currRule);
}
}
if (!currentAllowed) {
paramsToRemove.add(param);
LOG.debug("Removing param: {}", param);
parameters = parameters.remove(param);
}
}

LOG.debug("Params to remove: {}", paramsToRemove);

for (Object aParamsToRemove : paramsToRemove) {
parameters.remove(aParamsToRemove);
}
invocation.getInvocationContext().setParameters(parameters);

return invocation.invoke();
}
Expand All @@ -142,7 +139,7 @@ public String intercept(ActionInvocation invocation) throws Exception {
* @param c the char
* @return <tt>true</tt>, if char is property separator, <tt>false</tt> otherwise.
*/
private static boolean isPropertySeparator(char c) {
private boolean isPropertySeparator(char c) {
return c == '.' || c == '(' || c == '[';
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@
import com.opensymphony.xwork2.util.TextParseUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.dispatcher.Parameter;
import org.apache.struts2.dispatcher.HttpParameters;

import java.util.Collections;
import java.util.Map;
import java.util.Set;

/**
Expand Down Expand Up @@ -98,22 +99,17 @@ public String intercept(ActionInvocation invocation) throws Exception {
if (!(invocation.getAction() instanceof NoParameters)
&& (null != this.paramNames)) {
ActionContext ac = invocation.getInvocationContext();
final Map<String, Object> parameters = ac.getParameters();
HttpParameters parameters = ac.getParameters();

if (parameters != null) {
for (String removeName : paramNames) {
// see if the field is in the parameter map
if (parameters.containsKey(removeName)) {

try {
String[] values = (String[]) parameters.get(removeName);
String value = values[0];
if (null != value && this.paramValues.contains(value)) {
parameters.remove(removeName);
}
} catch (Exception e) {
LOG.error("Failed to convert parameter to string", e);
try {
Parameter parameter = parameters.get(removeName);
if (parameter.isDefined() && this.paramValues.contains(parameter.getValue())) {
parameters.remove(removeName);
}
} catch (Exception e) {
LOG.error("Failed to convert parameter to string", e);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.XWorkConstants;
import com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler;
import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.security.AcceptedPatternsChecker;
import com.opensymphony.xwork2.security.ExcludedPatternsChecker;
Expand All @@ -28,6 +26,8 @@
import org.apache.commons.lang3.BooleanUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.struts2.dispatcher.Parameter;
import org.apache.struts2.dispatcher.HttpParameters;

import java.util.Collection;
import java.util.Comparator;
Expand Down Expand Up @@ -108,7 +108,7 @@ public String doIntercept(ActionInvocation invocation) throws Exception {
Object action = invocation.getAction();
if (!(action instanceof NoParameters)) {
ActionContext ac = invocation.getInvocationContext();
final Map<String, Object> parameters = retrieveParameters(ac);
HttpParameters parameters = retrieveParameters(ac);

if (LOG.isDebugEnabled()) {
LOG.debug("Setting params {}", getParameterLogMap(parameters));
Expand Down Expand Up @@ -139,7 +139,7 @@ public String doIntercept(ActionInvocation invocation) throws Exception {
* @param ac The action context
* @return The parameter map to apply
*/
protected Map<String, Object> retrieveParameters(ActionContext ac) {
protected HttpParameters retrieveParameters(ActionContext ac) {
return ac.getParameters();
}

Expand All @@ -154,26 +154,24 @@ protected Map<String, Object> retrieveParameters(ActionContext ac) {
* In subclasses both retrieveParameters() and addParametersToContext() should be overridden.
* </p>
*/
protected void addParametersToContext(ActionContext ac, Map<String, Object> newParams) {
protected void addParametersToContext(ActionContext ac, Map<String, ?> newParams) {
}

protected void setParameters(final Object action, ValueStack stack, final Map<String, Object> parameters) {
Map<String, Object> params;
Map<String, Object> acceptableParameters;
protected void setParameters(final Object action, ValueStack stack, HttpParameters parameters) {
HttpParameters params;
Map<String, Parameter> acceptableParameters;
if (ordered) {
params = new TreeMap<>(getOrderedComparator());
params = HttpParameters.createEmpty().withComparator(getOrderedComparator()).withParent(parameters).build();
acceptableParameters = new TreeMap<>(getOrderedComparator());
params.putAll(parameters);
} else {
params = new TreeMap<>(parameters);
params = HttpParameters.createEmpty().withParent(parameters).build();
acceptableParameters = new TreeMap<>();
}

for (Map.Entry<String, Object> entry : params.entrySet()) {
String name = entry.getKey();
Object value = entry.getValue();
for (String name : params.getNames()) {
Parameter parameter = params.get(name);
if (isAcceptableParameter(name, action)) {
acceptableParameters.put(name, entry.getValue());
acceptableParameters.put(name, parameter);
}
}

Expand Down Expand Up @@ -201,11 +199,11 @@ protected void setParameters(final Object action, ValueStack stack, final Map<St
accessValueStack.setExcludeProperties(excludedPatterns.getExcludedPatterns());
}

for (Map.Entry<String, Object> entry : acceptableParameters.entrySet()) {
for (Map.Entry<String, Parameter> entry : acceptableParameters.entrySet()) {
String name = entry.getKey();
Object value = entry.getValue();
Parameter value = entry.getValue();
try {
newStack.setParameter(name, value);
newStack.setParameter(name, value.getValue());
} catch (RuntimeException e) {
if (devMode) {
notifyDeveloperParameterException(action, name, e.getMessage());
Expand Down Expand Up @@ -258,30 +256,16 @@ protected Comparator<String> getOrderedComparator() {
return rbCollator;
}

protected String getParameterLogMap(Map<String, Object> parameters) {
protected String getParameterLogMap(HttpParameters parameters) {
if (parameters == null) {
return "NONE";
}

StringBuilder logEntry = new StringBuilder();
for (Map.Entry entry : parameters.entrySet()) {
logEntry.append(String.valueOf(entry.getKey()));
for (String name : parameters.getNames()) {
logEntry.append(String.valueOf(name));
logEntry.append(" => ");
if (entry.getValue() instanceof Object[]) {
Object[] valueArray = (Object[]) entry.getValue();
logEntry.append("[ ");
if (valueArray.length > 0 ) {
for (int indexA = 0; indexA < (valueArray.length - 1); indexA++) {
Object valueAtIndex = valueArray[indexA];
logEntry.append(String.valueOf(valueAtIndex));
logEntry.append(", ");
}
logEntry.append(String.valueOf(valueArray[valueArray.length - 1]));
}
logEntry.append(" ] ");
} else {
logEntry.append(String.valueOf(entry.getValue()));
}
logEntry.append(parameters.get(name).getValue());
}

return logEntry.toString();
Expand Down
Loading