You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/02/04 19:25:23 UTC

svn commit: r1442289 - /tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java

Author: rmannibucau
Date: Mon Feb  4 18:25:23 2013
New Revision: 1442289

URL: http://svn.apache.org/viewvc?rev=1442289&view=rev
Log:
importing fix from jax jee descriptor parsing for old taglibs

Modified:
    tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java

Modified: tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java?rev=1442289&r1=1442288&r2=1442289&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java (original)
+++ tomee/tomee/trunk/container/openejb-jee-accessors/src/main/java/org/apache/openejb/sxc/TldTaglibXml.java Mon Feb  4 18:25:23 2013
@@ -19,7 +19,10 @@ package org.apache.openejb.sxc;
 import org.apache.openejb.jee.TldTaglib;
 import org.apache.openejb.jee.TldTaglib$JAXB;
 import org.apache.openejb.loader.IO;
+import org.metatype.sxc.util.XoXMLStreamReaderImpl;
 
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.util.StreamReaderDelegate;
 import javax.xml.transform.stream.StreamResult;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -37,7 +40,8 @@ public class TldTaglibXml {
     public static TldTaglib unmarshal(URL url) throws Exception {
         final InputStream inputStream = IO.read(url);
         try {
-            return Sxc.unmarshalJavaee(new TldTaglib$JAXB(), inputStream);
+            final XMLStreamReader filter = new TaglibNamespaceFilter(Sxc.prepareReader(inputStream));
+            return Sxc.unmarhsal(new TldTaglib$JAXB(), new XoXMLStreamReaderImpl(filter));
         } finally {
             IO.close(inputStream);
         }
@@ -46,4 +50,36 @@ public class TldTaglibXml {
     public static void marshal(TldTaglib taglib, OutputStream outputStream) throws Exception {
         Sxc.marshal(new TldTaglib$JAXB(), taglib, new StreamResult(outputStream));
     }
+
+    public static class TaglibNamespaceFilter extends StreamReaderDelegate {
+        public TaglibNamespaceFilter(final XMLStreamReader xmlStreamReader) {
+            super(xmlStreamReader);
+        }
+
+        @Override
+        public String getLocalName() {
+            return fixLocalName(super.getLocalName());
+        }
+
+        protected String fixLocalName(final String localName) {
+            if (localName.equals("tlibversion")) {
+                return "tlib-version";
+            } else if (localName.equals("jspversion")) {
+                return "jsp-version";
+            } else if (localName.equals("shortname")) {
+                return "short-name";
+            } else if (localName.equals("tagclass")) {
+                return "tag-class";
+            } else if (localName.equals("teiclass")) {
+                return "tei-class";
+            } else if (localName.equals("bodycontent")) {
+                return "body-content";
+            } else if (localName.equals("jspversion")) {
+                return "jsp-version";
+            } else if (localName.equals("info")) {
+                return "description";
+            }
+            return localName;
+        }
+    }
 }