1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.uruma.util.resource;
17
18 import java.net.URL;
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import org.seasar.uruma.util.resource.impl.FileResourceTraverser;
23
24
25
26
27
28
29 public class ResourceTraverserFactory {
30 private static final List<ResourceTraverser> traversers = new ArrayList<ResourceTraverser>();
31
32 static {
33 addResourceTraverser(new FileResourceTraverser());
34 }
35
36 private ResourceTraverserFactory() {
37
38 }
39
40
41
42
43
44
45
46
47 public static void addResourceTraverser(final ResourceTraverser traverser) {
48 ResourceTraverser known = getResourceTraverser(traverser.getProtocol());
49 if (known != null) {
50 traversers.remove(known);
51 }
52 traversers.add(traverser);
53 }
54
55
56
57
58
59
60
61
62
63 public static ResourceTraverser getResourceTraverser(final String protocol) {
64 if (protocol == null) {
65 return null;
66 }
67 int size = traversers.size();
68 for (int i = 0; i < size; i++) {
69 ResourceTraverser traverser = traversers.get(i);
70 if (protocol.equals(traverser.getProtocol())) {
71 return traverser;
72 }
73 }
74 return null;
75 }
76
77
78
79
80
81
82
83
84
85 public static ResourceTraverser getResourceTraverser(final URL url) {
86 if (url == null) {
87 return null;
88 } else {
89 return getResourceTraverser(url.getProtocol());
90 }
91 }
92 }