Hey Everyone,
I have some changes I'd like to propose for the ResourceLoader class...
It appears that, since revision 36611, the 2-argument overload of the
getResourceAsDocument() method has been validating XML resources as they
are loaded. Before that revision, validation was off.
I'm not sure why validation became the default. Some JIRAs are
referenced that describe issues around getting validation to work, but I
don't see an explanation for why arbitrary XML resources ought to be
validated in the first place. These JIRAs seem to be concerned with
specific files -- not XML resources in general.
Here are the JIRAs for easy reference:
- http://www.ja-sig.org/issues/browse/UP-1197
- http://www.ja-sig.org/issues/browse/UP-1295
- http://www.ja-sig.org/issues/browse/UP-1780
The issue is that some XML configuration docs normally included w/
uPortal don't have a schema or DTD, and therefore will always fail
validation.
Andrew Petro committed a partial fix with revision 42275: first the
method tries every document *with* validation, then it tries without for
any document that fails. This change gets us to a portal that works,
but it leaves us with huge, ugly stack traces in the logs.
Here's the code, for reference:
*****
try {
// first try with validation turned on
return getResourceAsDocument(requestingClass, resource, true);
} catch (Exception e) {
if (log.isDebugEnabled()) {
log.debug("Problem getting resource [" + resource + "] as
requested by class [" + requestingClass.getName() + "]", e);
} else {
log.warn("Problem getting resource [" + resource + "] as
requested by class [" + requestingClass.getName() + "]");
}
// try again with validation turned off
return getResourceAsDocument(requestingClass, resource, false);
}
*****
I'm just not convinced we even need to try validation on an unknown,
arbitrary XML doc. When we *know* the document can & should be
validated, there's a 3-argument overload (referenced in the code above)
that will validate when told to do so (boolean 3rd argument).
I'd like to replace the code above with the following simple approach:
*****
return getResourceAsDocument(requestingClass, resource, false);
*****
This change would mean that the 2-argument overload goes back to not
validating; for documents where validation is desirable, we can instead
use the 3-argument version.
The code that's there now throws huge stack traces into the logs at the
WARN level in situations where the portal is operating normally -- at a
minimum I believe we should change that behavior. But as long as I'm
looking into it, I think it's better just to change back to
non-validating as the default.
Thoughts?
drew wills
--
Andrew Wills
UNICON, Inc.
Office: (480) 558-2476
http://code.google.com/p/cernunnos/
--
You are currently subscribed to [email protected] as: [EMAIL
PROTECTED]
To unsubscribe, change settings or access archives, see
http://www.ja-sig.org/wiki/display/JSG/uportal-dev