1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.common.util.spring.convert.support;
17
18 import static org.kuali.common.util.base.Exceptions.illegalArgument;
19 import static org.kuali.common.util.base.Precondition.checkNotBlank;
20
21 import java.io.ByteArrayInputStream;
22 import java.io.IOException;
23 import java.util.Properties;
24
25 import org.kuali.common.util.Encodings;
26 import org.springframework.core.convert.converter.Converter;
27
28 public final class XmlStringToPropertiesConverter implements Converter<String, Properties> {
29
30 public XmlStringToPropertiesConverter() {
31 this(Encodings.UTF8);
32 }
33
34 public XmlStringToPropertiesConverter(String encoding) {
35 this.encoding = checkNotBlank(encoding, "encoding");
36 }
37
38 private final String encoding;
39
40 @Override
41 public Properties convert(String source) {
42 try {
43 byte[] bytes = source.getBytes(encoding);
44 ByteArrayInputStream in = new ByteArrayInputStream(bytes);
45 Properties props = new Properties();
46 props.loadFromXML(in);
47 return props;
48 } catch (IOException e) {
49 throw illegalArgument(e, "unexpected io error converting xml string into a properties object - encoding=[%s]\n\n%s\n\n", encoding, source);
50 }
51 }
52
53 public String getEncoding() {
54 return encoding;
55 }
56 }