jdk/src/share/classes/com/sun/org/apache/xml/internal/security/utils/resolver/ResourceResolver.java
equal
deleted
inserted
replaced
54 |
54 |
55 /** Field _alreadyInitialized */ |
55 /** Field _alreadyInitialized */ |
56 static boolean _alreadyInitialized = false; |
56 static boolean _alreadyInitialized = false; |
57 |
57 |
58 /** these are the system-wide resolvers */ |
58 /** these are the system-wide resolvers */ |
59 static List _resolverVector = null; |
59 static List<ResourceResolver> _resolverVector = null; |
60 |
60 |
61 static boolean allThreadSafeInList=true; |
61 static boolean allThreadSafeInList=true; |
62 |
62 |
63 /** Field transformSpi */ |
63 /** Field transformSpi */ |
64 protected ResourceResolverSpi _resolverSpi = null; |
64 protected ResourceResolverSpi _resolverSpi = null; |
100 public static final ResourceResolver getInstance(Attr uri, String BaseURI) |
100 public static final ResourceResolver getInstance(Attr uri, String BaseURI) |
101 throws ResourceResolverException { |
101 throws ResourceResolverException { |
102 int length=ResourceResolver._resolverVector.size(); |
102 int length=ResourceResolver._resolverVector.size(); |
103 for (int i = 0; i < length; i++) { |
103 for (int i = 0; i < length; i++) { |
104 ResourceResolver resolver = |
104 ResourceResolver resolver = |
105 (ResourceResolver) ResourceResolver._resolverVector.get(i); |
105 ResourceResolver._resolverVector.get(i); |
106 ResourceResolver resolverTmp=null; |
106 ResourceResolver resolverTmp=null; |
107 try { |
107 try { |
108 resolverTmp = allThreadSafeInList || resolver._resolverSpi.engineIsThreadSafe() ? resolver : |
108 resolverTmp = allThreadSafeInList || resolver._resolverSpi.engineIsThreadSafe() ? resolver : |
109 new ResourceResolver((ResourceResolverSpi)resolver._resolverSpi.getClass().newInstance()); |
109 new ResourceResolver((ResourceResolverSpi)resolver._resolverSpi.getClass().newInstance()); |
110 } catch (InstantiationException e) { |
110 } catch (InstantiationException e) { |
118 |
118 |
119 if ((resolver != null) && resolverTmp.canResolve(uri, BaseURI)) { |
119 if ((resolver != null) && resolverTmp.canResolve(uri, BaseURI)) { |
120 if (i!=0) { |
120 if (i!=0) { |
121 //update resolver. |
121 //update resolver. |
122 //System.out.println("Swaping"); |
122 //System.out.println("Swaping"); |
123 List resolverVector=(List)((ArrayList)_resolverVector).clone(); |
123 List<ResourceResolver> resolverVector=getResolverVectorClone(); |
124 resolverVector.remove(i); |
124 resolverVector.remove(i); |
125 resolverVector.add(0,resolver); |
125 resolverVector.add(0,resolver); |
126 _resolverVector=resolverVector; |
126 _resolverVector=resolverVector; |
127 } else { |
127 } else { |
128 //System.out.println("hitting"); |
128 //System.out.println("hitting"); |
137 : "null"), BaseURI }; |
137 : "null"), BaseURI }; |
138 |
138 |
139 throw new ResourceResolverException("utils.resolver.noClass", exArgs, |
139 throw new ResourceResolverException("utils.resolver.noClass", exArgs, |
140 uri, BaseURI); |
140 uri, BaseURI); |
141 } |
141 } |
|
142 |
|
143 /** |
|
144 * Method getResolverVectorClone |
|
145 * |
|
146 * @return clone of _resolverVector |
|
147 */ |
|
148 @SuppressWarnings("unchecked") |
|
149 private static List<ResourceResolver> getResolverVectorClone() { |
|
150 return (List<ResourceResolver>)((ArrayList<ResourceResolver>)_resolverVector).clone(); |
|
151 } |
|
152 |
142 /** |
153 /** |
143 * Method getInstance |
154 * Method getInstance |
144 * |
155 * |
145 * @param uri |
156 * @param uri |
146 * @param BaseURI |
157 * @param BaseURI |
148 * @return the instance |
159 * @return the instance |
149 * |
160 * |
150 * @throws ResourceResolverException |
161 * @throws ResourceResolverException |
151 */ |
162 */ |
152 public static final ResourceResolver getInstance( |
163 public static final ResourceResolver getInstance( |
153 Attr uri, String BaseURI, List individualResolvers) |
164 Attr uri, String BaseURI, List<ResourceResolver> individualResolvers) |
154 throws ResourceResolverException { |
165 throws ResourceResolverException { |
155 if (log.isLoggable(java.util.logging.Level.FINE)) { |
166 if (log.isLoggable(java.util.logging.Level.FINE)) { |
156 |
167 |
157 log.log(java.util.logging.Level.FINE, "I was asked to create a ResourceResolver and got " + (individualResolvers==null? 0 : individualResolvers.size()) ); |
168 log.log(java.util.logging.Level.FINE, "I was asked to create a ResourceResolver and got " + (individualResolvers==null? 0 : individualResolvers.size()) ); |
158 log.log(java.util.logging.Level.FINE, " extra resolvers to my existing " + ResourceResolver._resolverVector.size() + " system-wide resolvers"); |
169 log.log(java.util.logging.Level.FINE, " extra resolvers to my existing " + ResourceResolver._resolverVector.size() + " system-wide resolvers"); |
161 // first check the individual Resolvers |
172 // first check the individual Resolvers |
162 int size=0; |
173 int size=0; |
163 if ((individualResolvers != null) && ((size=individualResolvers.size()) > 0)) { |
174 if ((individualResolvers != null) && ((size=individualResolvers.size()) > 0)) { |
164 for (int i = 0; i < size; i++) { |
175 for (int i = 0; i < size; i++) { |
165 ResourceResolver resolver = |
176 ResourceResolver resolver = |
166 (ResourceResolver) individualResolvers.get(i); |
177 individualResolvers.get(i); |
167 |
178 |
168 if (resolver != null) { |
179 if (resolver != null) { |
169 String currentClass = resolver._resolverSpi.getClass().getName(); |
180 String currentClass = resolver._resolverSpi.getClass().getName(); |
170 if (log.isLoggable(java.util.logging.Level.FINE)) |
181 if (log.isLoggable(java.util.logging.Level.FINE)) |
171 log.log(java.util.logging.Level.FINE, "check resolvability by class " + currentClass); |
182 log.log(java.util.logging.Level.FINE, "check resolvability by class " + currentClass); |
184 * The init() function is called by com.sun.org.apache.xml.internal.security.Init.init() |
195 * The init() function is called by com.sun.org.apache.xml.internal.security.Init.init() |
185 */ |
196 */ |
186 public static void init() { |
197 public static void init() { |
187 |
198 |
188 if (!ResourceResolver._alreadyInitialized) { |
199 if (!ResourceResolver._alreadyInitialized) { |
189 ResourceResolver._resolverVector = new ArrayList(10); |
200 ResourceResolver._resolverVector = new ArrayList<ResourceResolver>(10); |
190 _alreadyInitialized = true; |
201 _alreadyInitialized = true; |
191 } |
202 } |
192 } |
203 } |
193 |
204 |
194 /** |
205 /** |
286 /** |
297 /** |
287 * Method addProperties |
298 * Method addProperties |
288 * |
299 * |
289 * @param properties |
300 * @param properties |
290 */ |
301 */ |
291 public void addProperties(Map properties) { |
302 public void addProperties(Map<String,String> properties) { |
292 this._resolverSpi.engineAddProperies(properties); |
303 this._resolverSpi.engineAddProperies(properties); |
293 } |
304 } |
294 |
305 |
295 /** |
306 /** |
296 * Method getPropertyKeys |
307 * Method getPropertyKeys |