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;
+ }
+ }
}