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 org.apache.commons.discovery.ResourceNameDiscover;
20 import org.apache.commons.discovery.ResourceNameIterator;
21
22
23
24
25 public abstract class ResourceNameDiscoverImpl implements ResourceNameDiscover {
26
27
28
29
30
31
32
33 public abstract ResourceNameIterator findResourceNames(String resourceName);
34
35
36
37
38
39
40
41 public ResourceNameIterator findResourceNames(final ResourceNameIterator inputNames) {
42 return new ResourceNameIterator() {
43
44 private ResourceNameIterator resourceNames = null;
45
46 private String resourceName = null;
47
48 public boolean hasNext() {
49 if (resourceName == null) {
50 resourceName = getNextResourceName();
51 }
52 return resourceName != null;
53 }
54
55 public String nextResourceName() {
56 String name = resourceName;
57 resourceName = null;
58 return name;
59 }
60
61 private String getNextResourceName() {
62 while (inputNames.hasNext() && (resourceNames == null || !resourceNames.hasNext())) {
63 resourceNames =
64 findResourceNames(inputNames.nextResourceName());
65 }
66
67 return (resourceNames != null && resourceNames.hasNext())
68 ? resourceNames.nextResourceName()
69 : null;
70 }
71 };
72 }
73
74 }