1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.directory.api.ldap.schema.extractor;
20
21
22 import java.net.URL;
23 import java.util.ArrayList;
24 import java.util.Collections;
25 import java.util.Enumeration;
26 import java.util.List;
27
28
29
30
31
32
33
34
35 public class UniqueResourceException extends RuntimeException
36 {
37
38
39 private static final long serialVersionUID = 1L;
40
41
42 private final String resourceName;
43
44
45 private final List<URL> urls;
46
47
48 private final String resourceDescription;
49
50
51
52
53
54
55
56
57 public UniqueResourceException( String resourceName, String resourceDescription )
58 {
59 this( resourceName, null, resourceDescription );
60 }
61
62
63
64
65
66
67
68
69
70 public UniqueResourceException( String resourceName, List<URL> urls, String resourceDescription )
71 {
72 this.resourceName = resourceName;
73 this.urls = urls;
74 this.resourceDescription = resourceDescription;
75 }
76
77
78
79
80
81
82
83
84
85
86 public UniqueResourceException( String resourceName, URL first, Enumeration<URL> urlEnum, String resourceDescription )
87 {
88 this( resourceName, toList( first, urlEnum ), resourceDescription );
89 }
90
91
92 private static List<URL> toList( URL first, Enumeration<URL> urlEnum )
93 {
94 ArrayList<URL> urls = new ArrayList<>();
95 urls.add( first );
96 while ( urlEnum.hasMoreElements() )
97 {
98 urls.add( urlEnum.nextElement() );
99 }
100 return urls;
101 }
102
103
104
105
106
107 @Override
108 public String getMessage()
109 {
110 StringBuilder buf = new StringBuilder( "Problem locating " ).append( resourceDescription ).append( "\n" );
111
112 if ( urls == null )
113 {
114 buf.append( "No resources named '" ).append( resourceName ).append( "' located on classpath" );
115 }
116 else
117 {
118 buf.append( "Multiple copies of resource named '" ).append( resourceName ).append(
119 "' located on classpath at urls" );
120
121 for ( URL url : urls )
122 {
123 buf.append( "\n " ).append( url );
124 }
125 }
126
127 return buf.toString();
128 }
129
130
131
132
133
134
135
136 public String getResourceName()
137 {
138 return resourceName;
139 }
140
141
142
143
144
145
146
147 public List<URL> getUrls()
148 {
149 return Collections.unmodifiableList( urls );
150 }
151 }