You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2010/12/22 08:42:56 UTC
svn commit: r1051781 - in
/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src:
main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java
test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java
Author: xuhaihong
Date: Wed Dec 22 07:42:56 2010
New Revision: 1051781
URL: http://svn.apache.org/viewvc?rev=1051781&view=rev
Log:
GERONIMO-5726 Still use JAXB for TLD parsing
Modified:
geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java
geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java
Modified: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java?rev=1051781&r1=1051780&r2=1051781&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java (original)
+++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java Wed Dec 22 07:42:56 2010
@@ -17,7 +17,6 @@
package org.apache.geronimo.jasper.deployment;
-import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
@@ -39,7 +38,6 @@ import org.apache.geronimo.deployment.De
import org.apache.geronimo.deployment.DeployableJarFile;
import org.apache.geronimo.deployment.ModuleIDBuilder;
import org.apache.geronimo.deployment.service.EnvironmentBuilder;
-import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.gbean.GBeanData;
import org.apache.geronimo.gbean.GBeanInfo;
@@ -65,13 +63,15 @@ import org.apache.geronimo.web.info.Serv
import org.apache.geronimo.web.info.WebAppInfo;
import org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder;
import org.apache.geronimo.web25.deployment.WebAppInfoBuilder;
+import org.apache.openejb.jee.JaxbJavaee;
import org.apache.openejb.jee.JspConfig;
import org.apache.openejb.jee.JspPropertyGroup;
+import org.apache.openejb.jee.Listener;
+import org.apache.openejb.jee.Tag;
import org.apache.openejb.jee.Taglib;
+import org.apache.openejb.jee.TldTaglib;
import org.apache.openejb.jee.WebApp;
import org.apache.xbean.finder.ClassFinder;
-import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -343,84 +343,54 @@ public class JspModuleBuilderExtension i
if (log.isDebugEnabled()) {
log.debug("parseTLDFile( " + url.toString() + " ): Entry");
}
- List<String> listenerClassNames = new ArrayList<String>();
- List<String> tagClassNames = new ArrayList<String>();
- parseTldFile(url, listenerClassNames, tagClassNames);
-
- // Get all the listeners from the TLD file
- for (String className : listenerClassNames) {
- if (!excludedListenerNames.contains(className)) {
+ try {
+ InputStream in = null;
+ TldTaglib tl;
+ try {
+ in = url.openStream();
+ tl = (TldTaglib) JaxbJavaee.unmarshalTaglib(TldTaglib.class, in);
+ } finally {
+ IOUtils.close(in);
+ }
+
+ // Get all the listeners from the TLD file
+ for (Listener listener : tl.getListener()) {
+ String className = listener.getListenerClass();
+ if (!excludedListenerNames.contains(className)) {
+ try {
+ Class<?> clas = bundle.loadClass(className);
+ while (clas != null) {
+ classes.add(clas);
+ clas = clas.getSuperclass();
+ }
+ listenerNames.add(className);
+ } catch (ClassNotFoundException e) {
+ log.warn("JspModuleBuilderExtension: Could not load listener class: " + className + " mentioned in TLD file at " + url.toString());
+ }
+ }
+ }
+
+ // Get all the tags from the TLD file
+ for (Tag tag : tl.getTag()) {
+ String className = tag.getTagClass();
try {
Class<?> clas = bundle.loadClass(className);
while (clas != null) {
classes.add(clas);
clas = clas.getSuperclass();
}
- listenerNames.add(className);
} catch (ClassNotFoundException e) {
- log.warn("JspModuleBuilderExtension: Could not load listener class: " + className + " mentioned in TLD file at " + url.toString());
- }
- }
- }
-
- // Get all the tags from the TLD file
- for (String className : tagClassNames) {
- try {
- Class<?> clas = bundle.loadClass(className);
- while (clas != null) {
- classes.add(clas);
- clas = clas.getSuperclass();
+ log.warn("JspModuleBuilderExtension: Could not load tag class: " + className + " mentioned in TLD file at " + url.toString());
}
- } catch (ClassNotFoundException e) {
- log.warn("JspModuleBuilderExtension: Could not load tag class: " + className + " mentioned in TLD file at " + url.toString());
}
+ } catch (Exception ioe) {
+ throw new DeploymentException("Could not find TLD file at " + url.toString(), ioe);
}
if (log.isDebugEnabled()) {
log.debug("parseTLDFile(): Exit");
}
}
- protected void parseTldFile(URL url, List<String> listenerClassNames, List<String> tagClassNames)
- throws DeploymentException {
- InputStream in = null;
- XmlCursor cursor = null;
- try {
- in = url.openStream();
- XmlObject xmlObject = XmlBeansUtil.parse(in);
- cursor = xmlObject.newCursor();
- cursor.toStartDoc();
- cursor.toFirstChild();
- String namespaceURI = cursor.getName().getNamespaceURI();
- cursor.toStartDoc();
- cursor.toChild(namespaceURI, "taglib");
- if (!cursor.toFirstChild()) {
- return;
- }
- do {
- String name = cursor.getName().getLocalPart();
- if ("tag".equals(name)) {
- cursor.push();
- if (cursor.toChild(namespaceURI, "tag-class") || cursor.toChild(namespaceURI, "tagclass")) {
- tagClassNames.add(cursor.getTextValue());
- }
- cursor.pop();
- } else if ("listener".equals(name)) {
- cursor.push();
- if (cursor.toChild(namespaceURI, "listener-class")) {
- listenerClassNames.add(cursor.getTextValue());
- }
- cursor.pop();
- }
- } while (cursor.toNextSibling());
- } catch (IOException e) {
- throw new DeploymentException("JspModuleBuilderExtension: Could not parse tld file " + url, e);
- } catch (XmlException e) {
- throw new DeploymentException("JspModuleBuilderExtension: Could not parse tld file " + url, e);
- } finally {
- IOUtils.close(in);
- }
- }
-
private URI createURI(String path) throws URISyntaxException {
path = path.replaceAll(" ", "%20");
return new URI(path);
Modified: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java?rev=1051781&r1=1051780&r2=1051781&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java (original)
+++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/test/java/org/apache/geronimo/jasper/deployment/SchemaParseTest.java Wed Dec 22 07:42:56 2010
@@ -17,20 +17,20 @@
package org.apache.geronimo.jasper.deployment;
+import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
import junit.framework.TestCase;
-import org.apache.geronimo.common.DeploymentException;
-import org.apache.geronimo.j2ee.deployment.NamingBuilder;
-import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.web.info.ServletInfo;
-import org.apache.geronimo.web.info.WebAppInfo;
+import org.apache.geronimo.kernel.util.IOUtils;
+import org.apache.openejb.jee.JaxbJavaee;
+import org.apache.openejb.jee.Listener;
+import org.apache.openejb.jee.Tag;
+import org.apache.openejb.jee.TldTaglib;
import org.junit.Assert;
/**
@@ -38,97 +38,74 @@ import org.junit.Assert;
*/
public class SchemaParseTest extends TestCase {
- private TestJspModuleBuilderExtension jspModuleBuilderExtension;
-
private ClassLoader classLoader = SchemaParseTest.class.getClassLoader();
- @Override
- public void setUp() {
- //webAppInfo is used to prevent the NPE in JspModuleBuilderExtension constructor
- WebAppInfo webAppInfo = new WebAppInfo();
- webAppInfo.servlets.add(new ServletInfo());
- jspModuleBuilderExtension = new TestJspModuleBuilderExtension(null, null, webAppInfo, null);
- }
-
public void testParse11DTD() throws Exception {
URL url = classLoader.getResource("1_1_dtd/taglib-tag-listener.tld");
- List<String> expectedTagClassNames = Arrays.asList("org.apache.struts.taglib.nested.NestedPropertyTag",
- "org.apache.struts.taglib.nested.NestedWriteNestingTag",
- "org.apache.struts.taglib.nested.NestedRootTag",
- "org.apache.struts.taglib.nested.bean.NestedDefineTag",
- "org.apache.struts.taglib.nested.bean.NestedMessageTag",
- "org.apache.struts.taglib.nested.bean.NestedSizeTag",
- "org.apache.struts.taglib.nested.bean.NestedWriteTag",
- "org.apache.struts.taglib.nested.html.NestedCheckboxTag",
- "org.apache.struts.taglib.nested.html.NestedErrorsTag",
- "org.apache.struts.taglib.nested.html.NestedFileTag");
+ List<String> expectedTagClassNames = Arrays.asList("org.apache.struts.taglib.nested.NestedPropertyTag", "org.apache.struts.taglib.nested.NestedWriteNestingTag",
+ "org.apache.struts.taglib.nested.NestedRootTag", "org.apache.struts.taglib.nested.bean.NestedDefineTag", "org.apache.struts.taglib.nested.bean.NestedMessageTag",
+ "org.apache.struts.taglib.nested.bean.NestedSizeTag", "org.apache.struts.taglib.nested.bean.NestedWriteTag", "org.apache.struts.taglib.nested.html.NestedCheckboxTag",
+ "org.apache.struts.taglib.nested.html.NestedErrorsTag", "org.apache.struts.taglib.nested.html.NestedFileTag");
List<String> expectedListenerClassNames = Collections.<String> emptyList();
- jspModuleBuilderExtension.testParse(url, expectedListenerClassNames, expectedTagClassNames);
+ parseTldFile(url, expectedListenerClassNames, expectedTagClassNames);
}
public void testParse12DTD() throws Exception {
URL url = classLoader.getResource("1_2_dtd/taglib-tag-listener.tld");
List<String> expectedTagClassNames = Arrays.asList("examples.LogTag");
List<String> expectedListenerClassNames = Arrays.asList("TestListenerClassName");
- jspModuleBuilderExtension.testParse(url, expectedListenerClassNames, expectedTagClassNames);
+ parseTldFile(url, expectedListenerClassNames, expectedTagClassNames);
}
public void testParse20XSD() throws Exception {
URL url = classLoader.getResource("2_0_xsd/taglib-tag-listener.tld");
- List<String> expectedTagClassNames = Arrays.asList("org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag",
- "org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag",
- "org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag",
- "org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag",
- "org.apache.taglibs.standard.tag.rt.fmt.BundleTag",
- "org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag",
- "org.apache.taglibs.standard.tag.rt.fmt.MessageTag", "org.apache.taglibs.standard.tag.rt.fmt.ParamTag",
- "org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag",
- "org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag",
- "org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag",
+ List<String> expectedTagClassNames = Arrays.asList("org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag", "org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag",
+ "org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag", "org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag", "org.apache.taglibs.standard.tag.rt.fmt.BundleTag",
+ "org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag", "org.apache.taglibs.standard.tag.rt.fmt.MessageTag", "org.apache.taglibs.standard.tag.rt.fmt.ParamTag",
+ "org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag", "org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag", "org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag",
"org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag");
List<String> expectedListenerClassNames = Arrays.asList("TestListenerA", "TestListenerB");
- jspModuleBuilderExtension.testParse(url, expectedListenerClassNames, expectedTagClassNames);
+ parseTldFile(url, expectedListenerClassNames, expectedTagClassNames);
}
public void testParse21XSD() throws Exception {
URL url = classLoader.getResource("2_1_xsd/taglib-tag-listener.tld");
- List<String> expectedTagClassNames = Arrays.asList("org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag",
- "org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag",
- "org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag",
- "org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag",
- "org.apache.taglibs.standard.tag.rt.fmt.BundleTag",
- "org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag",
- "org.apache.taglibs.standard.tag.rt.fmt.MessageTag", "org.apache.taglibs.standard.tag.rt.fmt.ParamTag",
- "org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag",
- "org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag",
- "org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag",
+ List<String> expectedTagClassNames = Arrays.asList("org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag", "org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag",
+ "org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag", "org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag", "org.apache.taglibs.standard.tag.rt.fmt.BundleTag",
+ "org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag", "org.apache.taglibs.standard.tag.rt.fmt.MessageTag", "org.apache.taglibs.standard.tag.rt.fmt.ParamTag",
+ "org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag", "org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag", "org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag",
"org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag");
List<String> expectedListenerClassNames = Arrays.asList("TestListenerA", "TestListenerB");
- jspModuleBuilderExtension.testParse(url, expectedListenerClassNames, expectedTagClassNames);
+ parseTldFile(url, expectedListenerClassNames, expectedTagClassNames);
}
- static class TestJspModuleBuilderExtension extends JspModuleBuilderExtension {
+ private void parseTldFile(URL url, List<String> expectedListenerClassNames, List<String> expectedTagClassNames) throws Exception {
+ InputStream in = null;
+ TldTaglib tl;
+ try {
+ in = url.openStream();
+ tl = (TldTaglib) JaxbJavaee.unmarshalTaglib(TldTaglib.class, in);
+ } finally {
+ IOUtils.close(in);
+ }
+ List<String> listenerClassNames = new ArrayList<String>();
- public TestJspModuleBuilderExtension(Environment defaultEnvironment, Collection<String> excludedListenerNames,
- WebAppInfo defaultJspServlet, NamingBuilder namingBuilders) {
- super(defaultEnvironment, excludedListenerNames, defaultJspServlet, namingBuilders);
+ for (Listener listener : tl.getListener()) {
+ listenerClassNames.add(listener.getListenerClass());
+ }
+ List<String> tagClassNames = new ArrayList<String>();
+ // Get all the tags from the TLD file
+ for (Tag tag : tl.getTag()) {
+ tagClassNames.add(tag.getTagClass());
}
- public void testParse(URL url, List<String> expectedListenerClassNames, List<String> expectedTagClassNames)
- throws DeploymentException {
- List<String> listenerClassNames = new ArrayList<String>();
- List<String> tagClassNames = new ArrayList<String>();
- parseTldFile(url, listenerClassNames, tagClassNames);
- Assert.assertEquals(expectedListenerClassNames.size(), listenerClassNames.size());
- for (String expectedListenerClassName : expectedListenerClassNames) {
- Assert.assertTrue("expected class name " + expectedListenerClassName + "is not found in the result"
- + listenerClassNames, listenerClassNames.contains(expectedListenerClassName));
- }
- Assert.assertEquals(expectedTagClassNames.size(), tagClassNames.size());
- for (String expectedTagClassName : expectedTagClassNames) {
- Assert.assertTrue("expected class name " + expectedTagClassName + "is not found in the result"
- + listenerClassNames, tagClassNames.contains(expectedTagClassName));
- }
+ Assert.assertEquals(expectedListenerClassNames.size(), listenerClassNames.size());
+ for (String expectedListenerClassName : expectedListenerClassNames) {
+ Assert.assertTrue("expected class name " + expectedListenerClassName + "is not found in the result" + listenerClassNames, listenerClassNames.contains(expectedListenerClassName));
+ }
+ Assert.assertEquals(expectedTagClassNames.size(), tagClassNames.size());
+ for (String expectedTagClassName : expectedTagClassNames) {
+ Assert.assertTrue("expected class name " + expectedTagClassName + "is not found in the result" + listenerClassNames, tagClassNames.contains(expectedTagClassName));
}
}
}