Skip to content

Commit

Permalink
Merge pull request #11 from juanpablo-santos/underscore_headers_names
Browse files Browse the repository at this point in the history
fix #10: replace "-" characters on header variable names
  • Loading branch information
tomasbjerre committed Jul 17, 2017
2 parents bedc35d + 72169e5 commit 7cb847e
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ public static String filter(String string, String regexpFilter) {
return string.replaceAll(regexpFilter, "");
}

public static String noWhitespace(String mixedString) {
return mixedString.replaceAll("\\s", "_");
public static String toVariableName(String mixedString) {
if (mixedString == null) {
return null;
}
return mixedString.replaceAll("\\s", "_").replaceAll("-", "_");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import static com.google.common.collect.Maps.newHashMap;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.filter;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.noWhitespace;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.toVariableName;

import java.util.List;
import java.util.Map;
Expand All @@ -12,21 +12,21 @@ public class JsonFlattener {
public JsonFlattener() {}

@SuppressWarnings("unchecked")
public Map<String, String> flatternJson(String key, String regexFilter, Object resolved) {
public Map<String, String> flattenJson(String key, String regexFilter, Object resolved) {
Map<String, String> resolvedVariables = newHashMap();
if (resolved instanceof List) {
int i = 0;
for (Object o : (List<?>) resolved) {
resolvedVariables.putAll(flatternJson(key + "_" + i, regexFilter, o));
resolvedVariables.putAll(flattenJson(key + "_" + i, regexFilter, o));
i++;
}
} else if (resolved instanceof Map) {
for (Entry<String, Object> entry : ((Map<String, Object>) resolved).entrySet()) {
resolvedVariables.putAll(
flatternJson(key + "_" + entry.getKey(), regexFilter, entry.getValue()));
flattenJson(key + "_" + entry.getKey(), regexFilter, entry.getValue()));
}
} else if (resolved != null) {
String noWhitespaces = noWhitespace(key);
String noWhitespaces = toVariableName(key);
resolvedVariables.put(noWhitespaces, filter(resolved.toString(), regexFilter));
}
return resolvedVariables;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ private Map<String, String> resolve(String incomingPostContent, GenericVariable

private Map<String, String> resolveJsonPath(String incomingPostContent, GenericVariable gv) {
Object resolved = JsonPath.read(incomingPostContent, gv.getValue());
return jsonFlattener.flatternJson(gv.getKey(), gv.getRegexpFilter(), resolved);
return jsonFlattener.flattenJson(gv.getKey(), gv.getRegexpFilter(), resolved);
}

private Map<String, String> resolveXPath(String incomingPostContent, GenericVariable gv)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static com.google.common.base.Optional.absent;
import static com.google.common.base.Optional.of;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.filter;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.toVariableName;

import java.util.Enumeration;
import java.util.HashMap;
Expand Down Expand Up @@ -32,11 +33,11 @@ public Map<String, String> getRequestHeaders(
String headerValue = headerEnumeration.nextElement();
String regexpFilter = configuredVariable.get().getRegexpFilter();
String filteredValue = filter(headerValue, regexpFilter);
found.put(headerName + "_" + i, filteredValue);
found.put(toVariableName(headerName) + "_" + i, filteredValue);
boolean firstAndOnlyValue = i == 0 && !headerEnumeration.hasMoreElements();
if (firstAndOnlyValue) {
//Users will probably expect this variable for parameters that are never a list
found.put(headerName, filteredValue);
found.put(toVariableName(headerName), filteredValue);
}
i++;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static com.google.common.base.Optional.absent;
import static com.google.common.collect.Maps.newHashMap;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.filter;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.toVariableName;

import java.util.List;
import java.util.Map;
Expand All @@ -28,11 +29,11 @@ public Map<String, String> getRequestParameters(
String[] values = incomingParameterMap.get(requestParamName);
for (int i = 0; i < values.length; i++) {
String filteredValue = filter(values[i], configuredVariable.get().getRegexpFilter());
resolvedVariables.put(requestParamName + "_" + i, filteredValue);
resolvedVariables.put(toVariableName(requestParamName) + "_" + i, filteredValue);
boolean firstAndOnlyValue = i == 0 && values.length == 1;
if (firstAndOnlyValue) {
//Users will probably expect this variable for parameters that are never a list
resolvedVariables.put(requestParamName, filteredValue);
resolvedVariables.put(toVariableName(requestParamName), filteredValue);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import static com.google.common.collect.Maps.newHashMap;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.filter;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.noWhitespace;
import static org.jenkinsci.plugins.gwt.resolvers.FlattenerUtils.toVariableName;

import java.util.Map;

Expand Down Expand Up @@ -31,15 +31,15 @@ private Map<String, String> flattenXmlNode(
String parentKey, String regexFilter, Node node, int level, boolean fromRootLevel) {
Map<String, String> resolvedVariables = newHashMap();
if (isXmlLeafNode(node)) {
String noWhitespaces = noWhitespace(parentKey);
String noWhitespaces = toVariableName(parentKey);
resolvedVariables.put(noWhitespaces, filter(node.getTextContent(), regexFilter));
} else {
for (int i = 0; i < node.getChildNodes().getLength(); i++) {
Node childNode = node.getChildNodes().item(i);
String childKey =
expandKey(parentKey, level, fromRootLevel) + "_" + childNode.getNodeName();
if (isXmlLeafNode(childNode)) {
String noWhitespace = noWhitespace(childKey);
String noWhitespace = toVariableName(childKey);
resolvedVariables.put(noWhitespace, filter(childNode.getTextContent(), regexFilter));
} else {
//leafnode and text inside leafnode are 2 nodes, so /2 to keep counter in line
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,12 @@ public void testGenericRequestParameters() throws Exception {
Map<String, Enumeration<String>> headers = new HashMap<>();
headers.put("someparam", enumeration("some value"));
headers.put("anotherparam", enumeration("another value", "even more"));
headers.put("content-type", enumeration("application/json"));
headers.put("param_not_mapped", enumeration("do not include"));
List<GenericHeaderVariable> genericHeaderVariables = new ArrayList<>();
genericHeaderVariables.add(new GenericHeaderVariable("someparam", ""));
genericHeaderVariables.add(new GenericHeaderVariable("anotherparam", "[^e]"));
genericHeaderVariables.add(new GenericHeaderVariable("content-type", ""));
Map<String, String> variables =
new VariablesResolver(
headers,
Expand All @@ -48,7 +50,8 @@ public void testGenericRequestParameters() throws Exception {
.containsEntry("someparam_0", "some value") //
.containsEntry("anotherparam_1", "eee") //
.containsEntry("anotherparam_0", "ee") //
.hasSize(4);
.containsEntry("content_type", "application/json") //
.hasSize(6);
}

private Enumeration<String> enumeration(final String... string) {
Expand Down

0 comments on commit 7cb847e

Please sign in to comment.