Stephen, I have found two issues in Jira, CASTOR-746 (Open, minor improvement 15-Apr-04) and WSTX-25 (Open, minor new feature, 03-Dec-05) that mention this issue. More than that may exist. Would it be possible to increase the priority?
Thanks! Patty -----Original Message----- From: Stephen Bash [mailto:[EMAIL PROTECTED] Sent: Thursday, March 23, 2006 8:45 AM To: [email protected] Subject: Re: [castor-user] When unmarshalling, need Castor to validate entire document against schema instead of quitting after first validation error Patty- Unfortunately, I don't think you can replace the ErrorHandler in such a way that the change will stick. When you call unmarshal, the Unmarshaller sets the error handler just before starting parsing. So that means the fix needs to live inside Castor, unless we create a method for user-supplied ErrorHandlers. So looking into the problem briefly, it appears that the Castor ErrorHandler (implemented in UnmarshalHandler) simply throws a SAXException for all calls to the ErrorHandler (including warnings). We can probably make an option to "continue parsing on non-fatal-errors", which would log the exception text but not kill the parsing process. I had hoped that either the exception type was different for validation exceptions (so we can test if ex instanceof ValidationException), or that we could demote validation errors down to warnings using a parser feature. Doesn't look like either one of those is possible, so I think we'll have to give the user the option to continue parsing when ErrorHandler.warning or ErrorHandler.error are called, and only kill parsing when ErrorHandler.fatalError is called. Anyone else who wants to chime in on this solution, please do (or comment on the Jira issue once it is found/created). Thanks, Stephen On 3/23/06, Parker, Patricia (Contr) <[EMAIL PROTECTED]> wrote: > Stephen, > > Thanks for your quick reply! I'll check into Jira to see if an entry > has already been created. > > In the meantime, I have been trying to configure Castor's ErrorHandler > with one of my own in the following way: > > > LocalConfiguration.getInstance().getXMLReader().setErrorHandler(handle > r) > ; > > Where handler is my own implementation of an ErrorHandler class. It > is also the class that calls Castor's unmarshal method. I haven't had > any luck with it, but I'm still trying. > > Thanks again > > Patty > > > > -----Original Message----- > From: Stephen Bash [mailto:[EMAIL PROTECTED] > Sent: Thursday, March 23, 2006 8:26 AM > To: [email protected] > Subject: Re: [castor-user] When unmarshalling, need Castor to validate > entire document against schema instead of quitting after first > validation error > > Eek! I retract everything I said, it really probably is something we > can control in Castor. Patty, can you do a quick search in Jira to > make sure this issue doesn't already exist, and then create one so we > can keep track of the progress on the issue? > > Thanks, > Stephen > > > On 3/23/06, Stephen Bash <[EMAIL PROTECTED]> wrote: > > Patty- > > > > I'm not 100% sure, but I think this is really a parser issue. I > > think > > > validation errors look like normal SAXExceptions to Castor, so there > > isn't really a way to recover... But I'd be happy to be corrected. > > With that in mind, one parser feature you can look into is the > > following: > > > > http://apache.org/xml/features/continue-after-fatal-error > > > > Unfortunately on the Xerces website, the following warning is > attached: > > > > "The behavior of the parser when this feature is set to true is > > undetermined! Therefore use this feature with extreme caution > > because the parser may get stuck in an infinite loop or worse." > > > > This is actually a fairly regularly requested feature, so please let > > us know if you find something that does the trick. > > > > Stephen > > > > On 3/22/06, Parker, Patricia (Contr) <[EMAIL PROTECTED]> wrote: > > > > > > > > > Hi > > > > > > I would like to validate my entire instance document against an > > > XML schema during the unmarshalling process and accumulate all the > > > validation exceptions so that I may send them back to the document > > > creator so they may all be fixed. Right now, Castor is throwing > > > the > > > > first ValidationException and stopping the schema validation > > > process. Is there a way to tell Castor to validate the entire > > > document before stopping (i.e. make a ValidationException a > non-fatal error)? > > > > > > My Castor driver method: > > > > > > //unmarshal xml > > > boolean isSuccessful = true; > > > > > > Reader toParse = new StringReader((String) > > > xmlToParse); > > > > > > try > > > { > > > Mapping mapping = new Mapping(); > > > mapping.loadMapping(mapFileName); > > > Unmarshaller un = new > Unmarshaller(castorClass); > > > un.setMapping(mapping ); > > > un.setWhitespacePreserve(true); > > > un.setValidation(true); > > > try > > > { > > > castorVO = (AbstractCastorVO) > > > un.unmarshal(toParse); > > > } > > > catch (ValidationException ex) > > > { > > > > parserMessageList.add(ex.getMessage()); > > > } > > > catch(MarshalException ex) > > > { > > > > parserMessageList.add(ex.getMessage()); > > > } > > > > > > toParse.close(); > > > } > > > > > > catch (IOException ex) > > > { > > > isSuccessful = false; > > > parserMessageList.add(ex.getMessage()); > > > } > > > catch (MappingException ex) > > > { > > > isSuccessful = false; > > > parserMessageList.add(ex.getMessage()); > > > } > > > catch (MarshalException ex) > > > { > > > isSuccessful = false; > > > parserMessageList.add(ex.getMessage()); > > > } > > > > > > return isSuccessful; > > > > > > > > > My castor.properties settings: > > > > > > # True if xml documents should be validated by the SAX Parser # > > > org.exolab.castor.parser.validation=true > > > > > > # Per Patty - set to false when generating code # then set to true > > > for un/marshalling org.exolab.castor.parser.namespaces=true > > > > > > > > > # True if all documents should be validated by the marshalling > > > framework # org.exolab.castor.marshalling.validation=true > > > org.exolab.castor.unmarshalling.validation=true > > > > > > > org.exolab.castor.sax.features=http://xml.org/sax/features/validation, > \ > > > http://apache.org/xml/features/validation/schema,\ > > > > > > http://apache.org/xml/features/validation/schema-full-checking > > > > > > # Comma separated list of SAX 2 features that should be enabled # > > > for the default parser. > > > # > > > #org.exolab.castor.features= > > > > > > Thank you for your help > > > > > > Patty > > > > ------------------------------------------------- > If you wish to unsubscribe from this list, please send an empty > message to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > ------------------------------------------------- If you wish to unsubscribe from this list, please send an empty message to the following address: [EMAIL PROTECTED] -------------------------------------------------

