1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.settings4j.connector;
21
22 import java.nio.charset.Charset;
23
24 import org.apache.commons.io.Charsets;
25 import org.settings4j.ContentResolver;
26 import org.settings4j.contentresolver.ClasspathContentResolver;
27 import org.settings4j.contentresolver.UnionContentResolver;
28
29
30
31
32
33
34
35
36
37 public class ClasspathConnector extends AbstractConnector {
38
39 private final ClasspathContentResolver classpathContentResolver;
40 private UnionContentResolver unionContentResolver;
41 private Charset charset = Charsets.UTF_8;
42
43
44 public ClasspathConnector() {
45 this(new ClasspathContentResolver());
46 }
47
48
49
50
51
52
53
54 protected ClasspathConnector(final ClasspathContentResolver classpathContentResolver) {
55 super();
56 this.classpathContentResolver = classpathContentResolver;
57 this.unionContentResolver = new UnionContentResolver(this.classpathContentResolver);
58 }
59
60 @Override
61 public byte[] getContent(final String key) {
62 return this.classpathContentResolver.getContent(key);
63 }
64
65 @Override
66 public Object getObject(final String key) {
67 if (getObjectResolver() != null) {
68 return getObjectResolver().getObject(key, this.unionContentResolver);
69 }
70
71 return null;
72
73 }
74
75 @Override
76 public String getString(final String key) {
77 final byte[] content = getContent(key);
78 if (content != null) {
79 return new String(this.classpathContentResolver.getContent(key), this.charset);
80 }
81 return null;
82 }
83
84 public String getCharset() {
85 return this.charset.name();
86 }
87
88
89
90
91
92
93 public void setCharset(final String charset) {
94 this.charset = Charset.forName(charset);
95 }
96
97 @Override
98 public void setContentResolver(final ContentResolver contentResolver) {
99 this.unionContentResolver = new UnionContentResolver(this.classpathContentResolver);
100 this.unionContentResolver.addContentResolver(contentResolver);
101 }
102
103 @Override
104 protected ContentResolver getContentResolver() {
105 if (hasCustomContentResolver()) {
106 return this.unionContentResolver.getContentResolvers()[1];
107 }
108 return null;
109 }
110
111 private boolean hasCustomContentResolver() {
112 return this.unionContentResolver.getContentResolvers().length > 1;
113 }
114 }