DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=35970>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=35970 Summary: white spaces in empty elements with indentation active Product: Commons Version: unspecified Platform: Other OS/Version: All Status: NEW Severity: minor Priority: P4 Component: Betwixt AssignedTo: commons-dev@jakarta.apache.org ReportedBy: [EMAIL PROTECTED] Element's name contains trailing spaces caused by indentation algorithm, under specific circumstances. When xml is written from the org.apache.commons.betwixt.io.BeanWriter, an empty (property value is null) element's name contains trailing spaces if: a. pretty printing is enabled b. setEndTagForEmptyElement is set to true The output looks like this: <emptytag ></emptytag> The number of spaces depends on the indentation level of the tag being written. Note:I'm not sure that this could be considered a bug, but it causes some real problems for one of our application where a third-party CORBA component parses the tag without trimming the spaces, and thus is unable to correctly identify the tag name. A work-around is to set pretty print off. The issue is present in codebase for Betwixt 0.7 revision 226973. http://svn.apache.org/repos/asf/jakarta/commons/proper/betwixt/branches/RELEASE_0_7_BRANCH/src/java/org/apache/commons/betwixt/io/BeanWriter.java The culprit is in the endElement() method, as shown in the following snippet: protected void endElement( WriteContext context, String uri, String localName, String qualifiedName) throws IOException, SAXException { if ( !addEndTagForEmptyElement && !closedStartTag && currentElementIsEmpty ) { writer.write( "/>" ); closedStartTag = true; } else { if (!currentElementHasBodyText) { indent(); /*<------ LOOK HERE */ } if ( addEndTagForEmptyElement && !closedStartTag ) { writer.write( ">" ); closedStartTag = true; } writer.write( "</" ); writer.write( qualifiedName ); writer.write( '>' ); } indentLevel--; printLine(); currentElementHasBodyText = false; } Actually I can't manage to understand why indent() is called but for a null property it tries to indent the output *before* closing the opening tag resulting in trailing spaces in the tag name (and after the attibutes when present, I assume...). Thank you. -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]