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.schemaextractor;
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<URL>();
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 public String getMessage()
108 {
109 StringBuffer buf = new StringBuffer( "Problem locating " ).append( resourceDescription ).append( "\n" );
110 if ( urls == null )
111 {
112 buf.append( "No resources named '" ).append( resourceName ).append( "' located on classpath" );
113 }
114 else
115 {
116 buf.append( "Multiple copies of resource named '" ).append( resourceName ).append(
117 "' located on classpath at urls" );
118 for ( URL url : urls )
119 {
120 buf.append( "\n " ).append( url );
121 }
122 }
123 return buf.toString();
124 }
125
126
127
128
129
130
131
132 public String getResourceName()
133 {
134 return resourceName;
135 }
136
137
138
139
140
141
142
143 public List<URL> getUrls()
144 {
145 return Collections.unmodifiableList( urls );
146 }
147 }