
net.anthavio.httl.HttlParameterSetter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hatatitla Show documentation
Show all versions of hatatitla Show documentation
Compact but tweakable REST client library you have been dreaming of
The newest version!
package net.anthavio.httl;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Array;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import net.anthavio.httl.HttlSender.Multival;
/**
*
* Handle/convert request parameters when building HttlRequest
*
* @author martin.vanek
*
*/
public interface HttlParameterSetter {
/**
*
*/
public void handle(Multival parameters, boolean reset, String paramName, Object paramValue);
/**
* Default RequestParamSetter implementation
*
* TODO introduce builder
*/
public static class ConfigurableParamSetter implements HttlParameterSetter {
public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ssZ";
private final boolean keepNull;
private final boolean keepEmpty;
private final boolean urlEncodeValues;
private final boolean urlEncodeNames;
private final String datePattern;
private final SimpleDateFormat dateFormat;
public ConfigurableParamSetter() {
this(false, true, false, false, DEFAULT_DATE_PATTERN);
}
public ConfigurableParamSetter(String dateParamPattern) {
this(false, true, false, false, dateParamPattern);
}
public ConfigurableParamSetter(boolean keepNullParams, boolean keepEmptyParams, boolean urlEncodeNames,
boolean urlEncodeValues, String dateParamPattern) {
this.keepNull = keepNullParams;
this.keepEmpty = keepEmptyParams;
this.urlEncodeNames = urlEncodeNames;
this.urlEncodeValues = urlEncodeValues;
this.datePattern = dateParamPattern;
this.dateFormat = new SimpleDateFormat(dateParamPattern);
}
public boolean isKeepNull() {
return keepNull;
}
public boolean isKeepEmpty() {
return keepEmpty;
}
public boolean isUrlEncodeValues() {
return urlEncodeValues;
}
public String getDatePattern() {
return datePattern;
}
public SimpleDateFormat getDateFormat() {
return dateFormat;
}
@Override
public void handle(Multival parameters, boolean reset, String paramName, Object paramValue) {
if (urlEncodeNames) {
try {
if (paramName.charAt(0) != ';') {
paramName = URLEncoder.encode(paramName, "UTF-8");
} else {
paramName = ';' + URLEncoder.encode(paramName.substring(1), "UTF-8");
}
} catch (UnsupportedEncodingException uex) {
throw new IllegalStateException("Encoding UTF-8 is unsupported");
}
}
if (paramValue == null) {
if (keepNull) {
parameters.put(paramName, null, reset);
}
} else {
if (paramValue instanceof Collection) {
collection(parameters, reset, paramName, (Collection>) paramValue);
} else if (paramValue instanceof Map) {
map(parameters, reset, paramName, (Map, ?>) paramValue);
} else if (paramValue instanceof Iterator) {
iterator(parameters, reset, paramName, (Iterator>) paramValue);
} else if (paramValue.getClass().isArray()) {
array(parameters, reset, paramName, paramValue);
} else {
String string = convert(paramName, paramValue);
if (string != null) {
parameters.put(paramName, string, reset);
}
}
}
}
protected void collection(Multival parameters, boolean reset, String paramName, Collection> paramValue) {
List list = parameters.get(paramName, reset);
Collection> collection = (Collection>) paramValue;
for (Object element : collection) {
element(list, paramName, element);
}
}
public void map(Multival parameters, boolean reset, String paramName, Map paramValue) {
Set> entrySet = paramValue.entrySet();
for (Entry
© 2015 - 2025 Weber Informatics LLC | Privacy Policy