1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.osgi.context.support;
18
19 import java.util.Iterator;
20 import java.util.LinkedHashMap;
21 import java.util.Map;
22
23 import org.apache.commons.logging.Log;
24 import org.apache.commons.logging.LogFactory;
25 import org.springframework.beans.factory.xml.NamespaceHandler;
26 import org.springframework.beans.factory.xml.NamespaceHandlerResolver;
27 import org.springframework.util.Assert;
28
29
30
31
32
33
34
35 class DelegatedNamespaceHandlerResolver implements NamespaceHandlerResolver {
36
37
38 private static final Log log = LogFactory.getLog(DelegatedNamespaceHandlerResolver.class);
39
40 private final Map resolvers = new LinkedHashMap(2);
41
42
43 public void addNamespaceHandler(NamespaceHandlerResolver resolver, String resolverToString) {
44 Assert.notNull(resolver);
45 resolvers.put(resolver, resolverToString);
46 }
47
48 public NamespaceHandler resolve(String namespaceUri) {
49 boolean trace = log.isTraceEnabled();
50
51 for (Iterator iterator = resolvers.entrySet().iterator(); iterator.hasNext();) {
52 Map.Entry entry = (Map.Entry) iterator.next();
53 NamespaceHandlerResolver handlerResolver = (NamespaceHandlerResolver) entry.getKey();
54 if (trace)
55 log.trace("Trying to resolve namespace [" + namespaceUri + "] through resolver " + entry.getValue());
56 NamespaceHandler handler = handlerResolver.resolve(namespaceUri);
57
58 String resolvedMsg = (handler != null ? "" : "not ");
59 if (trace)
60 log.trace("Namespace [" + namespaceUri + "] was " + resolvedMsg + "resolved through handler resolver "
61 + entry.getValue());
62
63 if (handler != null) {
64 return handler;
65 }
66
67 }
68 return null;
69 }
70 }