1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.jdigg.arguments;
17
18 import java.io.UnsupportedEncodingException;
19 import java.net.URLEncoder;
20 import java.util.HashMap;
21 import java.util.Iterator;
22 import java.util.Map;
23 import java.util.Set;
24
25 import net.sf.jdigg.util.Assert;
26
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29
30
31
32
33
34
35
36
37 public abstract class AbstractArguments {
38
39 protected final Log log = LogFactory.getLog(getClass());
40
41 private static final String APPKEY_ARGUMENT_NAME = "appkey";
42
43 private static final String CHARACTER_ENCODING = "UTF-8";
44
45 private Map argumentMap = new HashMap();
46
47 public AbstractArguments(String appkey) {
48 Assert.notNull(appkey, "'appkey' must not be 'null'!");
49 setAppkey(appkey);
50 }
51
52
53
54
55
56
57 private void setAppkey(String appkey) {
58 addArgument(APPKEY_ARGUMENT_NAME, appkey);
59 }
60
61 protected void addArgument(String argumentName, String value) {
62 try {
63 String encodedValue = URLEncoder.encode(value, CHARACTER_ENCODING);
64 argumentMap.put(argumentName, encodedValue);
65 } catch (UnsupportedEncodingException e) {
66
67 log.error("Character encoding is not supported:" + CHARACTER_ENCODING, e);
68 }
69 }
70
71
72 public String getUrlEncodedArgumentList() {
73 StringBuffer result = new StringBuffer();
74 boolean isFirst = true;
75
76 Set argumentMapEntrySet = argumentMap.entrySet();
77
78 for (Iterator argumentMapEntrySetIterator = argumentMapEntrySet.iterator();
79 argumentMapEntrySetIterator.hasNext();) {
80 Map.Entry argumentMapEntry = (Map.Entry) argumentMapEntrySetIterator.next();
81 if (isFirst) {
82 isFirst = false;
83 } else {
84 result.append("&");
85 }
86 result.append(argumentMapEntry.getKey() + "=" + argumentMapEntry.getValue());
87 }
88
89 return result.toString();
90 }
91
92 }