1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.discovery.resource.names;
18
19 import java.util.Hashtable;
20 import java.util.Map;
21
22 import org.apache.commons.discovery.ResourceNameDiscover;
23 import org.apache.commons.discovery.ResourceNameIterator;
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26
27
28
29
30
31
32
33
34
35
36
37 public class DiscoverMappedNames extends ResourceNameDiscoverImpl implements ResourceNameDiscover {
38
39 private static Log log = LogFactory.getLog(DiscoverMappedNames.class);
40
41
42
43
44
45
46
47 @Deprecated
48 public static void setLog(Log _log) {
49 log = _log;
50 }
51
52
53
54
55 private final Map<String, String[]> mapping = new Hashtable<String, String[]>();
56
57
58
59
60 public DiscoverMappedNames() {
61 }
62
63
64
65
66
67
68
69 public void map(String fromName, String toName) {
70 map(fromName, new String[]{ toName });
71 }
72
73
74
75
76
77
78
79 public void map(String fromName, String [] toNames) {
80 mapping.put(fromName, toNames);
81 }
82
83
84
85
86 @Override
87 public ResourceNameIterator findResourceNames(final String resourceName) {
88 if (log.isDebugEnabled()) {
89 log.debug("find: resourceName='" + resourceName + "', mapping to constants");
90 }
91
92 final String[] names = mapping.get(resourceName);
93
94 return new ResourceNameIterator() {
95
96 private int idx = 0;
97
98 public boolean hasNext() {
99 if (names != null) {
100 while (idx < names.length && names[idx] == null) {
101 idx++;
102 }
103 return idx < names.length;
104 }
105 return false;
106 }
107
108 public String nextResourceName() {
109 return hasNext() ? names[idx++] : null;
110 }
111 };
112 }
113
114 }