What's the point of CommonEmptyHeader? It's definied in CommonUiLabels.xml as:
<property key="CommonEmptyHeader"> <!-- do not remove this! --> <value xml:lang="en" xml:space="preserve"> </value> </property> It is just a simple space (0x20) It is used ~500 times in forms as a title in a field definition Example: <form name="EditPerson" type="single" target="updatePerson" ... <field name="cancelLink" title="${uiLabelMap.CommonEmptyHeader}" <hyperlink target="${donePage}" also-hidden="false" description="${uiLabelMap.CommonCancelDone}"> <parameter param-name="partyId"/> </hyperlink> </field> </form> This is a button which should have no label, but if the title attribute is empty then the name attribute is used as label. Why not just put a space (" ") into the title attribute - still a hack, but exactly same result a using CommonEmptyHeader without the need using CommonEmptyHeader. The real solution is of course not to display a label if the title attribute is empty. Christian Adrian Crum schrieb: > The bad thing about this change is that it is not necessary. This change > hides a problem - it does not solve it. I mentioned that in the Jira issue. > > The method is supposed to pretty-print an XML document, and if you turn > off space removal, the indentation will be wrong. In other words, it > will not be pretty. > > -1 on this change in any version. > > -Adrian > > On 5/16/2012 2:25 AM, Scott Gray wrote: >> I see in your subsequent commits that you encountered the problems >> caused by this type of change. >> >> They're also a pretty good indication that once again you didn't >> compile or test before back-porting, I'm not sure what I can do to >> make the need for this any clearer to you. Please remember your >> responsibilities as a committer. >> >> Regards >> Scott >> >> On 16/05/2012, at 1:17 PM, Scott Gray wrote: >> >>> You've changed the signature on the UtilXml methods, that should not >>> be done and especially not be back-ported to the branches. Even in >>> the trunk the correct thing to do is to add a new method with the new >>> signature and then (if needed) deprecate the old method. Obviously >>> deprecation shouldn't be back-ported. >>> >>> There's nothing new in this comment Jacques, the general rule of >>> thumb is never change a method signature unless it is private. >>> >>> Regards >>> Scott >>> >>> On 16/05/2012, at 7:11 AM, jler...@apache.org wrote: >>> >>>> Author: jleroux >>>> Date: Tue May 15 19:11:13 2012 >>>> New Revision: 1338836 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=1338836&view=rev >>>> Log: >>>> "Applied fix from trunk for revision: 1338831" (conflict in >>>> CommonUiLabels.xml handled by hand) >>>> ------------------------------------------------------------------------ >>>> >>>> r1338831 | jleroux | 2012-05-15 21:03:26 +0200 (mar., 15 mai 2012) | >>>> 14 lines >>>> >>>> Fixes https://issues.apache.org/jira/browse/OFBIZ-4652 "The Label >>>> Manager is wrongly overriding CommonEmptyHeader" >>>> * Adds a keepSpace boolean to UtilXml.writeXmlDocument(), this >>>> allows to use xsl:preserve-space into UtilXml.createOutputTransformer() >>>> * Uses it into SaveLabelsToXmlFile.saveLabelsToXmlFile() >>>> * Adds some French labels into CommonUiLabels.xml using Labels >>>> Manager to test the new functionality >>>> * Adds the xml:space attribute into the valueType complexType >>>> * Adds the ofbiz-properties.xsd schema into the base-catalog.xml >>>> >>>> I got an issue when 1st trying to commit: >>>> Commit failed (details follow): >>>> While preparing >>>> 'D:\workspace\ofbizClean\framework\common\config\CommonUiLabels.xml' >>>> for commit >>>> Inconsistent line ending style >>>> >>>> So I forced the EOLs to my locale platform value (Win XP) >>>> ------------------------------------------------------------------------ >>>> >>>> >>>> >>>> Modified: >>>> ofbiz/branches/release12.04/ (props changed) >>>> ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml >>>> ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd >>>> >>>> ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java >>>> >>>> >>>> ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml >>>> >>>> ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java >>>> >>>> >>>> Propchange: ofbiz/branches/release12.04/ >>>> ------------------------------------------------------------------------------ >>>> >>>> Merged /ofbiz/trunk:r1338831 >>>> >>>> Modified: >>>> ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml?rev=1338836&r1=1338835&r2=1338836&view=diff >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml >>>> (original) >>>> +++ ofbiz/branches/release12.04/framework/base/dtd/base-catalog.xml >>>> Tue May 15 19:11:13 2012 >>>> @@ -29,4 +29,5 @@ under the License. >>>> <system systemId="http://ofbiz.apache.org/dtds/jndi-config.xsd" >>>> uri="jndi-config.xsd"/> >>>> <system >>>> systemId="http://ofbiz.apache.org/dtds/ofbiz-component.xsd" >>>> uri="ofbiz-component.xsd"/> >>>> <system >>>> systemId="http://ofbiz.apache.org/dtds/ofbiz-containers.xsd" >>>> uri="ofbiz-containers.xsd"/> >>>> +<system >>>> systemId="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd" >>>> uri="ofbiz-properties.xsd"/> >>>> </catalog> >>>> >>>> Modified: >>>> ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd?rev=1338836&r1=1338835&r2=1338836&view=diff >>>> >>>> ============================================================================== >>>> >>>> --- >>>> ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd >>>> (original) >>>> +++ >>>> ofbiz/branches/release12.04/framework/base/dtd/ofbiz-properties.xsd >>>> Tue May 15 19:11:13 2012 >>>> @@ -42,6 +42,7 @@ under the License. >>>> <xs:simpleContent> >>>> <xs:extension base="xs:string"> >>>> <xs:attribute ref="xml:lang"/> >>>> +<xs:attribute ref="xml:space"/> >>>> </xs:extension> >>>> </xs:simpleContent> >>>> </xs:complexType> >>>> >>>> Modified: >>>> ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java >>>> >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java?rev=1338836&r1=1338835&r2=1338836&view=diff >>>> >>>> ============================================================================== >>>> >>>> --- >>>> ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java >>>> (original) >>>> +++ >>>> ofbiz/branches/release12.04/framework/base/src/org/ofbiz/base/util/UtilXml.java >>>> Tue May 15 19:11:13 2012 >>>> @@ -158,20 +158,26 @@ public class UtilXml { >>>> >>>> // ----- TrAX Methods ----------------- // >>>> >>>> - /** Creates a JAXP TrAX Transformer suitable for >>>> pretty-printing an >>>> - * XML document. This method is provided as an alternative to the >>>> - * >>>> deprecated<code>org.apache.xml.serialize.OutputFormat</code> class. >>>> - * @param encoding Optional encoding, defaults to UTF-8 >>>> - * @param omitXmlDeclaration If<code>true</code> the xml >>>> declaration >>>> - * will be omitted from the output >>>> - * @param indent If<code>true</code>, the output will be indented >>>> - * @param indentAmount If<code>indent</code> is<code>true</code>, >>>> - * the number of spaces to indent. Default is 4. >>>> + /** >>>> + * Creates a JAXP TrAX Transformer suitable for pretty-printing >>>> an XML document. This method is provided as an alternative to the >>>> deprecated >>>> + *<code>org.apache.xml.serialize.OutputFormat</code> class. >>>> + * >>>> + * @param encoding >>>> + * Optional encoding, defaults to UTF-8 >>>> + * @param omitXmlDeclaration >>>> + * If<code>true</code> the xml declaration will be >>>> omitted from the output >>>> + * @param indent >>>> + * If<code>true</code>, the output will be indented >>>> + * @param indentAmount >>>> + * If<code>indent</code> is<code>true</code>, the >>>> number of spaces to indent. Default is 4. >>>> + * @param keepSpace >>>> + * If<code>true</code> spaces are preserved, else >>>> striped >>>> * @return A<code>Transformer</code> instance >>>> * @see<a >>>> href="http://java.sun.com/javase/6/docs/api/javax/xml/transform/package-summary.html">JAXP >>>> TrAX</a> >>>> * @throws TransformerConfigurationException >>>> */ >>>> - public static Transformer createOutputTransformer(String >>>> encoding, boolean omitXmlDeclaration, boolean indent, int >>>> indentAmount) throws TransformerConfigurationException { >>>> + public static Transformer createOutputTransformer(String >>>> encoding, boolean omitXmlDeclaration, boolean indent, int >>>> indentAmount, boolean keepSpace) >>>> + throws TransformerConfigurationException { >>>> StringBuilder sb = new StringBuilder(); >>>> sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); >>>> sb.append("<xsl:stylesheet >>>> xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" >>>> xmlns:xalan=\"http://xml.apache.org/xslt\" version=\"1.0\">\n"); >>>> @@ -189,7 +195,11 @@ public class UtilXml { >>>> sb.append(indentAmount<= 0 ? 4 : indentAmount); >>>> sb.append("\""); >>>> } >>>> - sb.append("/>\n<xsl:strip-space elements=\"*\"/>\n"); >>>> + if (keepSpace) { >>>> + sb.append("/>\n<xsl:preserve-space elements=\"*\"/>\n"); >>>> + } else { >>>> + sb.append("/>\n<xsl:strip-space elements=\"*\"/>\n"); >>>> + } >>>> sb.append("<xsl:template match=\"@*|node()\">\n"); >>>> sb.append("<xsl:copy><xsl:apply-templates >>>> select=\"@*|node()\"/></xsl:copy>\n"); >>>> sb.append("</xsl:template>\n</xsl:stylesheet>\n"); >>>> @@ -212,21 +222,29 @@ public class UtilXml { >>>> transformer.transform(source, result); >>>> } >>>> >>>> - /** Serializes a DOM<code>Node</code> to >>>> an<code>OutputStream</code> >>>> - * using JAXP TrAX. >>>> - * @param node The<code>Node</code> to serialize >>>> - * @param os The<code>OutputStream</code> to serialize to >>>> - * @param encoding Optional encoding, defaults to UTF-8 >>>> - * @param omitXmlDeclaration If<code>true</code> the xml >>>> declaration >>>> - * will be omitted from the output >>>> - * @param indent If<code>true</code>, the output will be indented >>>> - * @param indentAmount If<code>indent</code> is<code>true</code>, >>>> - * the number of spaces to indent. Default is 4. >>>> + /** >>>> + * Serializes a DOM<code>Node</code> to >>>> an<code>OutputStream</code> using JAXP TrAX. >>>> + * >>>> + * @param node >>>> + * The<code>Node</code> to serialize >>>> + * @param os >>>> + * The<code>OutputStream</code> to serialize to >>>> + * @param encoding >>>> + * Optional encoding, defaults to UTF-8 >>>> + * @param omitXmlDeclaration >>>> + * If<code>true</code> the xml declaration will be >>>> omitted from the output >>>> + * @param keepSpace >>>> + * If<code>true</code> spaces are preserved, else >>>> striped >>>> + * @param indent >>>> + * If<code>true</code>, the output will be indented >>>> + * @param indentAmount >>>> + * If<code>indent</code> is<code>true</code>, the >>>> number of spaces to indent. Default is 4. >>>> * @see<a >>>> href="http://java.sun.com/javase/6/docs/api/javax/xml/transform/package-summary.html">JAXP >>>> TrAX</a> >>>> * @throws TransformerException >>>> */ >>>> - public static void writeXmlDocument(Node node, OutputStream os, >>>> String encoding, boolean omitXmlDeclaration, boolean indent, int >>>> indentAmount) throws TransformerException { >>>> - Transformer transformer = createOutputTransformer(encoding, >>>> omitXmlDeclaration, indent, indentAmount); >>>> + public static void writeXmlDocument(Node node, OutputStream os, >>>> String encoding, boolean omitXmlDeclaration, boolean indent, int >>>> indentAmount, >>>> + boolean keepSpace) throws TransformerException { >>>> + Transformer transformer = createOutputTransformer(encoding, >>>> omitXmlDeclaration, indent, indentAmount, keepSpace); >>>> transformDomDocument(transformer, node, os); >>>> } >>>> >>>> @@ -325,9 +343,9 @@ public class UtilXml { >>>> return; >>>> } >>>> // OutputFormat defaults are: indent on, indent = 4, include >>>> XML declaration, >>>> - // charset = UTF-8, line width = 72 >>>> + // charset = UTF-8, line width = 72, strip spaces >>>> try { >>>> - writeXmlDocument(node, os, "UTF-8", false, true, 4); >>>> + writeXmlDocument(node, os, "UTF-8", false, true, 4, >>>> false); >>>> } catch (TransformerException e) { >>>> // Wrapping this exception for backwards compatibility >>>> throw new IOException(e.getMessage()); >>>> >>>> Modified: >>>> ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml?rev=1338836&r1=1338835&r2=1338836&view=diff >>>> >>>> ============================================================================== >>>> >>>> --- >>>> ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml >>>> (original) >>>> +++ >>>> ofbiz/branches/release12.04/framework/common/config/CommonUiLabels.xml >>>> Tue May 15 19:11:13 2012 >>>> @@ -8,6 +8,7 @@ >>>> to you under the Apache License, Version 2.0 (the >>>> "License"); you may not use this file except in compliance >>>> with the License. You may obtain a copy of the License at >>>> + >>>> http://www.apache.org/licenses/LICENSE-2.0 >>>> >>>> Unless required by applicable law or agreed to in writing, >>>> @@ -17,13 +18,13 @@ >>>> specific language governing permissions and limitations >>>> under the License. >>>> --> >>>> -<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >>>> +<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd"> >>>> >>>> <property key="AP"> >>>> <value xml:lang="de">Kreditoren</value> >>>> <value xml:lang="en">AP</value> >>>> <value xml:lang="es">Compras</value> >>>> <value xml:lang="fr">Cpt. fourn.</value> >>>> -<value xml:lang="hi_IN">लेखा देय</value> >>>> +<value xml:lang="hi-IN">लेखा देय</value> >>>> <value xml:lang="it">AP</value> >>>> <value xml:lang="nl">Schulden</value> >>>> <value xml:lang="pt_BR">Contas a pagar</value> >>>> @@ -127,6 +128,7 @@ >>>> <property key="CommonAbort"> >>>> <value xml:lang="en">Abort</value> >>>> <value xml:lang="es">Cancelar</value> >>>> +<value xml:lang="fr">Abandonner</value> >>>> <value xml:lang="vi">Hủy</value> >>>> </property> >>>> <property key="CommonAccepted"> >>>> @@ -413,6 +415,7 @@ >>>> <value xml:lang="de">Die Adresse wurde nicht gefunden.</value> >>>> <value xml:lang="en">Address not found.</value> >>>> <value xml:lang="es">Dirección no encontrada.</value> >>>> +<value xml:lang="fr">Adresse inconnue</value> >>>> <value xml:lang="vi">Không tìm thấy địa chỉ</value> >>>> </property> >>>> <property key="CommonAddresses"> >>>> @@ -2770,7 +2773,8 @@ >>>> <value xml:lang="zh_TW">電子郵件</value> >>>> </property> >>>> <property key="CommonEmptyHeader"> >>>> -<value xml:lang="en" xml:space="preserve"> </value><!-- do not >>>> remove this! --> >>>> +<!-- do not remove this! --> >>>> +<value xml:lang="en" xml:space="preserve"> </value> >>>> </property> >>>> <property key="CommonEnable"> >>>> <value xml:lang="en">Enable</value> >>>> @@ -11081,6 +11085,31 @@ >>>> <value xml:lang="zh">有效日期</value> >>>> <value xml:lang="zh_TW">有效日</value> >>>> </property> >>>> +<property key="FormFieldTitle_expireButton"> >>>> +<value xml:lang="ar">نهاية الصلاحية</value> >>>> +<value xml:lang="cs">Vypršet</value> >>>> +<value xml:lang="de">Ablaufen</value> >>>> +<value xml:lang="en">Expire</value> >>>> +<value xml:lang="es">Expiración</value> >>>> +<value xml:lang="fr">Invalider</value> >>>> +<value xml:lang="hi-IN">निश्वासन</value> >>>> +<value xml:lang="it">Scade</value> >>>> +<value xml:lang="nl">Maak verlopen</value> >>>> +<value xml:lang="pt">Expirar</value> >>>> +<value xml:lang="pt-PT">Terminar</value> >>>> +<value xml:lang="ro">Expira</value> >>>> +<value xml:lang="ru">Прекратить</value> >>>> +<value xml:lang="th">หมดเขต</value> >>>> +<value xml:lang="vi">Hết hạn</value> >>>> +<value xml:lang="zh">过期</value> >>>> +<value xml:lang="zh-CN">过期</value> >>>> +<value xml:lang="zh-TW">過期</value> >>>> +</property> >>>> +<property key="FormFieldTitle_extDevicePurposeActionId"> >>>> +<value xml:lang="en">External Device Purpose Action Id</value> >>>> +<value xml:lang="es">Código acción dispositivo externo</value> >>>> +<value xml:lang="fr">Obj. de l'action</value> >>>> +</property> >>>> <property key="FormFieldTitle_externalDeviceId"> >>>> <value xml:lang="en">External Device Id</value> >>>> <value xml:lang="es">Código dispositivo externo</value> >>>> @@ -11091,11 +11120,6 @@ >>>> <value xml:lang="es">Código tipo dispositivo externo</value> >>>> <value xml:lang="fr">Type de Mat. Externe</value> >>>> </property> >>>> -<property key="FormFieldTitle_extDevicePurposeActionId"> >>>> -<value xml:lang="en">External Device Purpose Action Id</value> >>>> -<value xml:lang="es">Código acción dispositivo externo</value> >>>> -<value xml:lang="fr">Obj. de l'action</value> >>>> -</property> >>>> <property key="FormFieldTitle_fromDate"> >>>> <value xml:lang="ar">تاريخ البدء</value> >>>> <value xml:lang="de">Von Datum</value> >>>> >>>> Modified: >>>> ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java >>>> >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java?rev=1338836&r1=1338835&r2=1338836&view=diff >>>> >>>> ============================================================================== >>>> >>>> --- >>>> ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java >>>> (original) >>>> +++ >>>> ofbiz/branches/release12.04/framework/webtools/src/org/ofbiz/webtools/labelmanager/SaveLabelsToXmlFile.java >>>> Tue May 15 19:11:13 2012 >>>> @@ -34,10 +34,8 @@ import org.ofbiz.base.util.UtilPropertie >>>> import org.ofbiz.base.util.UtilValidate; >>>> import org.ofbiz.base.util.UtilXml; >>>> import org.ofbiz.base.util.cache.UtilCache; >>>> - >>>> import org.ofbiz.service.DispatchContext; >>>> import org.ofbiz.service.ServiceUtil; >>>> - >>>> import org.w3c.dom.Comment; >>>> import org.w3c.dom.Document; >>>> import org.w3c.dom.Element; >>>> @@ -151,7 +149,7 @@ public class SaveLabelsToXmlFile { >>>> if (apacheLicenseText != null) { >>>> fos.write(apacheLicenseText.getBytes()); >>>> } >>>> - UtilXml.writeXmlDocument(resourceElem, fos, >>>> "UTF-8", !(apacheLicenseText == null), true, 4); >>>> + UtilXml.writeXmlDocument(resourceElem, fos, >>>> "UTF-8", !(apacheLicenseText == null), true, 4, true); >>>> } finally { >>>> fos.close(); >>>> // clear cache to see immediately the new >>>> labels and >>>> >>>> >