82 * @param baseURI
83 * @param secureValidation
84 * @return the instance
85 *
86 * @throws ResourceResolverException
87 */
88 public static final ResourceResolver getInstance(
89 Attr uriAttr, String baseURI, boolean secureValidation
90 ) throws ResourceResolverException {
91 ResourceResolverContext context = new ResourceResolverContext(uriAttr, baseURI, secureValidation);
92 return internalGetInstance(context);
93 }
94
95 private static <N> ResourceResolver internalGetInstance(ResourceResolverContext context)
96 throws ResourceResolverException {
97 synchronized (resolverList) {
98 for (ResourceResolver resolver : resolverList) {
99 ResourceResolver resolverTmp = resolver;
100 if (!resolver.resolverSpi.engineIsThreadSafe()) {
101 try {
102 resolverTmp =
103 new ResourceResolver(resolver.resolverSpi.getClass().newInstance());
104 } catch (InstantiationException e) {
105 throw new ResourceResolverException("", e, context.attr, context.baseUri);
106 } catch (IllegalAccessException e) {
107 throw new ResourceResolverException("", e, context.attr, context.baseUri);
108 }
109 }
110
111 if (log.isLoggable(java.util.logging.Level.FINE)) {
112 log.log(java.util.logging.Level.FINE,
113 "check resolvability by class " + resolverTmp.getClass().getName()
114 );
115 }
116
117 if ((resolverTmp != null) && resolverTmp.canResolve(context)) {
118 // Check to see whether the Resolver is allowed
119 if (context.secureValidation
120 && (resolverTmp.resolverSpi instanceof ResolverLocalFilesystem
121 || resolverTmp.resolverSpi instanceof ResolverDirectHTTP)) {
122 Object exArgs[] = { resolverTmp.resolverSpi.getClass().getName() };
123 throw new ResourceResolverException(
229 try {
230 Class<ResourceResolverSpi> resourceResolverClass =
231 (Class<ResourceResolverSpi>) Class.forName(className);
232 register(resourceResolverClass, true);
233 } catch (ClassNotFoundException e) {
234 log.log(java.util.logging.Level.WARNING, "Error loading resolver " + className + " disabling it");
235 }
236 }
237
238 /**
239 * Registers a ResourceResolverSpi class. This method logs a warning if the class
240 * cannot be registered.
241 * @param className
242 * @param start
243 * @throws SecurityException if a security manager is installed and the
244 * caller does not have permission to register a resource resolver
245 */
246 public static void register(Class<? extends ResourceResolverSpi> className, boolean start) {
247 JavaUtils.checkRegisterPermission();
248 try {
249 ResourceResolverSpi resourceResolverSpi = className.newInstance();
250 register(resourceResolverSpi, start);
251 } catch (IllegalAccessException e) {
252 log.log(java.util.logging.Level.WARNING, "Error loading resolver " + className + " disabling it");
253 } catch (InstantiationException e) {
254 log.log(java.util.logging.Level.WARNING, "Error loading resolver " + className + " disabling it");
255 }
256 }
257
258 /**
259 * Registers a ResourceResolverSpi instance. This method logs a warning if the class
260 * cannot be registered.
261 * @param resourceResolverSpi
262 * @param start
263 * @throws SecurityException if a security manager is installed and the
264 * caller does not have permission to register a resource resolver
265 */
266 public static void register(ResourceResolverSpi resourceResolverSpi, boolean start) {
267 JavaUtils.checkRegisterPermission();
268 synchronized(resolverList) {
|
82 * @param baseURI
83 * @param secureValidation
84 * @return the instance
85 *
86 * @throws ResourceResolverException
87 */
88 public static final ResourceResolver getInstance(
89 Attr uriAttr, String baseURI, boolean secureValidation
90 ) throws ResourceResolverException {
91 ResourceResolverContext context = new ResourceResolverContext(uriAttr, baseURI, secureValidation);
92 return internalGetInstance(context);
93 }
94
95 private static <N> ResourceResolver internalGetInstance(ResourceResolverContext context)
96 throws ResourceResolverException {
97 synchronized (resolverList) {
98 for (ResourceResolver resolver : resolverList) {
99 ResourceResolver resolverTmp = resolver;
100 if (!resolver.resolverSpi.engineIsThreadSafe()) {
101 try {
102 @SuppressWarnings("deprecation")
103 ResourceResolver tmp = new ResourceResolver(resolver.resolverSpi.getClass().newInstance());
104 resolverTmp = tmp;
105 ;
106 } catch (InstantiationException e) {
107 throw new ResourceResolverException("", e, context.attr, context.baseUri);
108 } catch (IllegalAccessException e) {
109 throw new ResourceResolverException("", e, context.attr, context.baseUri);
110 }
111 }
112
113 if (log.isLoggable(java.util.logging.Level.FINE)) {
114 log.log(java.util.logging.Level.FINE,
115 "check resolvability by class " + resolverTmp.getClass().getName()
116 );
117 }
118
119 if ((resolverTmp != null) && resolverTmp.canResolve(context)) {
120 // Check to see whether the Resolver is allowed
121 if (context.secureValidation
122 && (resolverTmp.resolverSpi instanceof ResolverLocalFilesystem
123 || resolverTmp.resolverSpi instanceof ResolverDirectHTTP)) {
124 Object exArgs[] = { resolverTmp.resolverSpi.getClass().getName() };
125 throw new ResourceResolverException(
231 try {
232 Class<ResourceResolverSpi> resourceResolverClass =
233 (Class<ResourceResolverSpi>) Class.forName(className);
234 register(resourceResolverClass, true);
235 } catch (ClassNotFoundException e) {
236 log.log(java.util.logging.Level.WARNING, "Error loading resolver " + className + " disabling it");
237 }
238 }
239
240 /**
241 * Registers a ResourceResolverSpi class. This method logs a warning if the class
242 * cannot be registered.
243 * @param className
244 * @param start
245 * @throws SecurityException if a security manager is installed and the
246 * caller does not have permission to register a resource resolver
247 */
248 public static void register(Class<? extends ResourceResolverSpi> className, boolean start) {
249 JavaUtils.checkRegisterPermission();
250 try {
251 @SuppressWarnings("deprecation")
252 ResourceResolverSpi resourceResolverSpi = className.newInstance();
253 register(resourceResolverSpi, start);
254 } catch (IllegalAccessException e) {
255 log.log(java.util.logging.Level.WARNING, "Error loading resolver " + className + " disabling it");
256 } catch (InstantiationException e) {
257 log.log(java.util.logging.Level.WARNING, "Error loading resolver " + className + " disabling it");
258 }
259 }
260
261 /**
262 * Registers a ResourceResolverSpi instance. This method logs a warning if the class
263 * cannot be registered.
264 * @param resourceResolverSpi
265 * @param start
266 * @throws SecurityException if a security manager is installed and the
267 * caller does not have permission to register a resource resolver
268 */
269 public static void register(ResourceResolverSpi resourceResolverSpi, boolean start) {
270 JavaUtils.checkRegisterPermission();
271 synchronized(resolverList) {
|