[
https://issues.apache.org/jira/browse/AXIS2-5870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thorsten Schöning updated AXIS2-5870:
-------------------------------------
Attachment: AXIS2-5870 generated.xsd.patch
"custom_schemas/generated.xsd" was not read by "readWSDLFromFile" and therefore
not covered by the former fix to work in memory only. So I added an additional
implementation in SchemaWriter allowing to serialize into memory only and use
that result to compare schemas.
> XMLPrettyPrinter.prettify uses OS-dependant newlines
> ----------------------------------------------------
>
> Key: AXIS2-5870
> URL: https://issues.apache.org/jira/browse/AXIS2-5870
> Project: Axis2
> Issue Type: Bug
> Components: kernel
> Affects Versions: 1.7.6
> Environment: Windows 10 Pro x86-64, JDK 1.7.0_80
> Reporter: Thorsten Schöning
> Priority: Minor
> Attachments: AXIS2-5870 generated.xsd.patch, AXIS2-5870
> InMemory-prettify.patch, printWSDLreference.wsdl.png
>
>
> I'm building version 1.7.6 on Windows checked out using SVN by simply running
> "mvn install" and recognized that after running a successful build some WSDL
> and XSD files in my working copy have changed. TortoiseSVN is saying that the
> only differences in those files are newlines. Two things are interesting
> here: 1. It's not all WSDLs and XSDs, only very few. 2. It's not all newlines
> within the files which get changed, so the result actually is an inconsistent
> mix of Unix and Windows newlines. The changed files are the following:
> modules/codegen/test-resources/schemas/custom_schemas/generated.xsd
> modules/kernel/test-resources/wsdl/printWSDLreference.wsdl
> modules/kernel/test-resources/wsdl/testGenerateInterfaceOperationElement11_WSDL.wsdl
> modules/kernel/test-resources/wsdl/testGenerateInterfaceOperationElement_WSDL.wsdl
> I'm attaching a screenshot where you can see that the license information
> keeps it's newlines, while the XML itself is changed to get Windows newlines.
> "keeps" is actually wrong, though, because during my tests I changed the file
> to Windows newlines only, executed a build and the newlines of the license
> text only were actually changed back to be Unix style.
> So it seems that whatever is changing those files, it actively sets the
> newlines of the license text to Unix style and that of the XML to Windows
> style.
> What seems to be responsible is XMLPrettyPrinter.prettify, because all the
> files changed are going through that function, either directly or using
> XMLSchemaTest.readWSDLFromFile:
> {CODE}
> public String readWSDLFromFile(String path) throws Exception {
> File file=new File(path);
> XMLPrettyPrinter.prettify(file); //this is used to correct
> unnecessary formatting in the file
> return readFile(path);
> }
> {CODE}
> If I simply remove all the code in XMLPrettyPrinter.prettify, all changed
> files are kept as they are. That means by default they keep their Unix style
> newlines and if I change the files to have Windows style newlines they keep
> those. So it really seems that only prettify is introducing the changes I
> see. Without prettify the newlines are as placed in the file and always
> consistent.
> From my point of view running tests or such shouldn't change files under
> version control at all and it seems that most likely it isn't. Else it's
> unnecessary difficult to distinguish those changes from those one is making
> during development. So I would like to suggest to simply remove changing the
> files itself in readWSDLFromFile. It's even very unexpected that a method
> named "read" writes the file before... The applied prettify can easily work
> in memory only if really needed. The other approach would be to make sure
> that all platforms use the same consistent newlines, which is a bit difficult
> for some unknown reason...
> As prettify already relies on Xalan, the latter in theory should easily
> possible by setting the newline character to use:
> {CODE}
> transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator","\n");
> {CODE}
> or
> {CODE}
> <xsl:output xalan:line-separator=" " />
> {CODE}
> https://stackoverflow.com/a/12278483/2055163
> Tried that dozen of times, but for some reason it is not working as expected,
> the newline still is Windows style for the XML. I even tried using "___" and
> such nonsense as line separator and in theory that should work as well, but
> didn't. So it seems like the statement itself is ignored for some reason OR
> there's some other thing going on after Xalan which introduces the Windows
> style newlines. Remember that removing the code in prettify fixes the
> problem, so it must be something in there. Xalan itself is working fine,
> because the following is properly applied to the XML:
> {CODE}
> xalan:indent-amount='4'
> {CODE}
> vs.
> {CODE}
> xalan:indent-amount='40'
> {CODE}
> "line-separator" has been introduced in Xalan 2.7.0, because the associated
> bug has been resolved "02/Jun/05 06:18" and 2.7.0 has been published in
> "2005-08-08 04:26". The JDK I'm using provides Xalan 2.7.0 as well, so in
> theory everything should work. I've even downloaded the 2.7.0 source to check
> if the necessary code is present, it is.
> https://issues.apache.org/jira/browse/XALANJ-2093
> http://archive.apache.org/dist/xml/xalan-j/
> {QUOTE}
> /*
> * $Id: TransformerImpl.java,v 1.167 2005/07/15 22:21:30 mcnamara Exp $
> */
> [...]
> * The recognized Xalan extension elements are:
> * <ul>
> * <li>content-handler
> * <li>entities
> * <li>indent-amount
> * <li>line-separator
> * <li>omit-meta-tag
> * <li>use-url-escaping
> * </ul>
> {QUOTE}
> {QUOTE}
> C:\Users\tschoening>"C:\Program Files\Java\jdk1.7\bin\java"
> com.sun.org.apache.xalan.internal.xslt.EnvironmentCheck
> \#---- BEGIN writeEnvironmentReport($Revision: 1.10 $): Useful stuff found:
> ----
> java.version=1.7.0_80
> version.xalan2x=not-present
> version.JAXP=1.4
> java.ext.dirs=C:\Program
> Files\Java\jdk1.7\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
> version.SAX=2.0
> version.crimson=not-present
> java.class.path=.
> version.ant=not-present
> sun.boot.class.path=C:\Program
> Files\Java\jdk1.7\jre\lib\resources.jar;C:\Program
> Files\Java\jdk1.7\jre\lib\rt.jar;C:\Program
> Files\Java\jdk1.7\jre\lib\sunrsasign.jar;C:\Program
> Files\Java\jdk1.7\jre\lib\jsse.jar;C:\Program
> Files\Java\jdk1.7\jre\lib\jce.jar;C:\Program
> Files\Java\jdk1.7\jre\lib\charsets.jar;C:\Program
> Files\Java\jdk1.7\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7\jre\classes
> version.DOM=3.0
> version.xalan1=not-present
> version.xalan2_2=Xalan Java 2.7.0
> version.xerces2=Xerces-J 2.7.1
> version.xerces1=not-present
> \#----- END writeEnvironmentReport: Useful properties found: -----
> \# YAHOO! Your environment seems to be OK.
> {QUOTE}
> Not sure if it's worth investigating this further instead of simply removing
> rewriting the files and let prettify work in memory only.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]