[ 
https://issues.apache.org/jira/browse/UIMA-2453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13429490#comment-13429490
 ] 

Marshall Schor commented on UIMA-2453:
--------------------------------------

It took a day to track this down.  I found that running the Junit test in 
Eclipse (the single class) worked with Java 7.  To get it to fail, I had to set 
JAVA_HOME to Java or a late Sun Java 6, and run "mvn test".  The failure was 
eventually traced to a bit of sloppy test code which, for this particular test, 
failed to specify one way or the other if the UIMA parser should be run as a 
"validating" parser or not.  It turns out that this is implemented as a 
stateful (remembered) aspect of the UIMA framework, settable by UIMAFrameWork 
Because this test class didn't specify, 
UIMAFramework.getXMLParser().enableSchemaValidation(true) (or false), it just 
got whatever setting a previous test left the parser in.  Maven surefire ran 
the junit tests in some order, which for Java 7 ended up running with 
schemaValidation set to true.  Before Java 7, the order ended up running with 
it set to false.

If schemavalidation is false, then the XML parser can't tell if white space is 
"ignorable" or not, so it assumes it's not, and calls the SAX handler 
"characters".  If it's true, then for ignorable white space it calls the SAX 
handler "ignorableWhiteSpace".  

The way UIMA's XML parser is implemented is to do SAX parsing, get SAX events, 
and transform them into a DOM using an "identity" XSLT transform.  (The reason 
for this design I don't know - it's from a long time ago).  The "identity" XSLT 
transform, for ignorable white space, ignores it...   Which means, it isn't 
captured in the DOM.  When preserving comments and white space, we need to 
capture it.  So, the fix is to change the logic for the SAX handlers use when 
parsing - if preserve comments is true, we'll convert an ignorableWhiteSpace 
call (only called by SAX when in validating mode) to a characters call - so the 
DOM will preserve the ignorable white space.
                
> Some JUnit tests fail with Java 7
> ---------------------------------
>
>                 Key: UIMA-2453
>                 URL: https://issues.apache.org/jira/browse/UIMA-2453
>             Project: UIMA
>          Issue Type: Bug
>          Components: Core Java Framework
>         Environment: Java 7
>            Reporter: Burn Lewis
>            Assignee: Marshall Schor
>            Priority: Minor
>             Fix For: 2.4.1SDK
>
>
> Problem reported by Alan Sergeant

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to