[Yanel-commits] rev 22073 - public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation

michi at wyona.com michi at wyona.com
Wed Jan 24 00:21:05 CET 2007


Author: michi
Date: 2007-01-24 00:21:03 +0100 (Wed, 24 Jan 2007)
New Revision: 22073

Modified:
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java
Log:
thanks to Simon empty element bug fixed

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java	2007-01-23 23:17:48 UTC (rev 22072)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/transformation/I18nTransformer.java	2007-01-23 23:21:03 UTC (rev 22073)
@@ -16,6 +16,7 @@
     private ResourceBundle messageBundle = null;
     private ByteArrayInputStream byteArrayInputStream = null;
     private StringBuffer transformedXmlAsBuffer = null;
+    private String cachedEname;
 
     public I18nTransformer(String messages, String language) {
         currentLocale = new Locale(language);
@@ -49,7 +50,7 @@
             
             log.debug("TAG [key] " + key + " [message]" + i18nText);
             char[] i18nMessage = i18nText.toCharArray(); 
-            characters(i18nMessage, 0, i18nMessage.length);
+            characters(i18nMessage, 0, i18nMessage.length-1);
         } else {
             transformedXmlAsBuffer.append("<" + eName);
             for(int i = 0; i < attrs.getLength(); i++) {
@@ -74,6 +75,7 @@
                 transformedXmlAsBuffer.append(" " + aName + "=\"" + aValue + "\"");
             }
             transformedXmlAsBuffer.append(">");
+            cachedEname = eName;
         }
     }
 
@@ -81,12 +83,17 @@
         String eName = ("".equals(localName)) ? qName : localName;
         if ((eName.equals("message")) || (eName.equals("i18n:message"))) {
             /*ignore these tags*/
+        } else if(cachedEname != null && cachedEname.equals(cachedEname)){
+            transformedXmlAsBuffer.deleteCharAt(transformedXmlAsBuffer.length()-1);
+            transformedXmlAsBuffer.append("/>");
+            cachedEname = null;
         } else {
             transformedXmlAsBuffer.append("</" + eName + ">");
         }
     }
 
     public void characters(char[] buf, int offset, int len) throws SAXException {
+        cachedEname = null;
         String s = new String(buf, offset, len);
         s =  replaceAmpersand(s);
         transformedXmlAsBuffer.append(s);




More information about the Yanel-commits mailing list