package siebog.agents; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import javax.ws.rs.FormParam; import org.jboss.resteasy.annotations.Form; /** * Wrapper class for agent initialization arguments. * * @author <a href="mitrovic.dejan@gmail.com">Dejan Mitrovic</a> */ public class AgentInitArgs implements Serializable { // cannot use String directly, see https://issues.jboss.org/browse/RESTEASY-821 public static class StringWrapper implements Serializable { private static final long serialVersionUID = 1L; @FormParam("value") public String value; } private static final long serialVersionUID = 1L; @Form(prefix = "arg") private Map<String, StringWrapper> args; public AgentInitArgs() { args = new HashMap<>(); } /** * Accepts an array of strings in the form of "key=value". * * @param keyValues */ public AgentInitArgs(String... keyValues) { args = new HashMap<>(keyValues.length); for (String str : keyValues) { String[] kv = str.split("="); StringWrapper arg = new StringWrapper(); arg.value = kv[1]; args.put(kv[0], arg); } } public void put(String key, String value) { StringWrapper arg = new StringWrapper(); arg.value = value; args.put(key, arg); } public String get(String key, String def) { StringWrapper arg = args.get(key); String str = arg != null ? arg.value : null; return str != null ? str : def; } public int getInt(String key, int def) { return Integer.parseInt(get(key, String.valueOf(def))); } public Map<String, String> toStringMap() { Map<String, String> map = new HashMap<>(args.size()); for (Entry<String, StringWrapper> e : args.entrySet()) map.put(e.getKey(), e.getValue().value); return map; } }