[Jboss-cvs] JBossAS SVN: r57001 - trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Sep 20 07:02:25 EDT 2006
Author: remy.maucherat at jboss.com
Date: 2006-09-20 07:02:24 -0400 (Wed, 20 Sep 2006)
New Revision: 57001
Removed:
trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper/JspServletOptions.java
trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper/TagLibCache.java
Log:
- Remove old files.
Deleted: trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper/JspServletOptions.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper/JspServletOptions.java 2006-09-20 10:41:42 UTC (rev 57000)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper/JspServletOptions.java 2006-09-20 11:02:24 UTC (rev 57001)
@@ -1,792 +0,0 @@
-/*
- * Copyright 1999,2004 The Apache Software Foundation.
- *
- * Licensed 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, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.web.tomcat.tc5.jasper;
-
-import java.util.Properties;
-import java.util.Enumeration;
-import java.util.ArrayList;
-import java.util.Map;
-import java.io.File;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-
-import org.apache.jasper.Options;
-import org.apache.jasper.Constants;
-import org.apache.jasper.xmlparser.ParserUtils;
-import org.apache.jasper.compiler.TldLocationsCache;
-import org.apache.jasper.compiler.JspConfig;
-import org.apache.jasper.compiler.TagPluginManager;
-import org.apache.jasper.compiler.Localizer;
-import org.jboss.logging.Logger;
-
-/**
- * Override the default JspServletOptions to externalize the jsp layer
- * configuration. This overrides the default TagLibCache to the jboss version.
- *
- * @author Scott.Stark at jboss.org
- * @version $Revision$
- */
-public class JspServletOptions
- implements Options
-{
- static Logger log = Logger.getLogger(JspServletOptions.class);
-
- private Properties settings = new Properties();
-
- /**
- * Is Jasper being used in development mode?
- */
- private boolean development = true;
-
- /**
- * Should Ant fork its java compiles of JSP pages.
- */
- public boolean fork = true;
-
- /**
- * Do you want to keep the generated Java files around?
- */
- private boolean keepGenerated = true;
-
- /**
- * Should white spaces between directives or actions be trimmed?
- */
- private boolean trimSpaces = false;
-
- /**
- * Determines whether tag handler pooling is enabled.
- */
- private boolean isPoolingEnabled = true;
-
- /**
- * Do you want support for "mapped" files? This will generate servlet that
- * has a print statement per line of the JSP file. This seems like a really
- * nice feature to have for debugging.
- */
- private boolean mappedFile = true;
-
- /**
- * Do you want stack traces and such displayed in the client's browser? If
- * this is false, such messages go to the standard error or a log file if the
- * standard error is redirected.
- */
- private boolean sendErrorToClient = false;
-
- /**
- * Do we want to include debugging information in the class file?
- */
- private boolean classDebugInfo = true;
-
- /**
- * Background compile thread check interval in seconds.
- */
- private int checkInterval = 0;
-
- /**
- * Is the generation of SMAP info for JSR45 debuggin suppressed?
- */
- private boolean isSmapSuppressed = false;
-
- /**
- * Should SMAP info for JSR45 debugging be dumped to a file?
- */
- private boolean isSmapDumped = false;
-
- /**
- * Are Text strings to be generated as char arrays?
- */
- private boolean genStringAsCharArray = false;
-
- private boolean errorOnUseBeanInvalidClassAttribute = true;
-
- /**
- * I want to see my generated servlets. Which directory are they in?
- */
- private File scratchDir;
-
- /**
- * Need to have this as is for versions 4 and 5 of IE. Can be set from the
- * initParams so if it changes in the future all that is needed is to have a
- * jsp initParam of type ieClassId="<value>"
- */
- private String ieClassId = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93";
-
- /**
- * What classpath should I use while compiling generated servlets?
- */
- private String classpath = null;
-
- /**
- * Compiler to use.
- */
- private String compiler = null;
-
- /**
- * The compiler class name.
- */
- private String compilerClassName = null;
-
- /**
- * Compiler target VM.
- */
- private String compilerTargetVM = "1.4";
-
- /**
- * The compiler source VM.
- */
- private String compilerSourceVM = "1.4";
-
- /**
- * Cache for the TLD locations
- */
- private TldLocationsCache tldLocationsCache = null;
-
- /**
- * Jsp config information
- */
- private JspConfig jspConfig = null;
-
- /**
- * TagPluginManager
- */
- private TagPluginManager tagPluginManager = null;
-
- /**
- * Java platform encoding to generate the JSP page servlet.
- */
- private String javaEncoding = "UTF8";
-
- /**
- * Modification test interval.
- */
- private int modificationTestInterval = 4;
-
- private boolean ignoreAnnotations;
-
-
-
- /**
- * Is generation of X-Powered-By response header enabled/disabled?
- */
- private boolean xpoweredBy;
-
-
- public boolean getIgnoreAnnotations()
- {
- return ignoreAnnotations;
- }
-
- public void setIgnoreAnnotations(boolean ignoreAnnotations)
- {
- this.ignoreAnnotations = ignoreAnnotations;
- }
-
- public String getProperty(String name)
- {
- return settings.getProperty(name);
- }
-
- public void setProperty(String name, String value)
- {
- if (name != null && value != null)
- {
- settings.setProperty(name, value);
- }
- }
-
- /**
- * Are we keeping generated code around?
- */
- public boolean getKeepGenerated()
- {
- return keepGenerated;
- }
-
- /**
- * Should white spaces between directives or actions be trimmed?
- */
- public boolean getTrimSpaces()
- {
- return trimSpaces;
- }
-
- public boolean isPoolingEnabled()
- {
- return isPoolingEnabled;
- }
-
- /**
- * Are we supporting HTML mapped servlets?
- */
- public boolean getMappedFile()
- {
- return mappedFile;
- }
-
- /**
- * Should errors be sent to client or thrown into stderr?
- */
- public boolean getSendErrorToClient()
- {
- return sendErrorToClient;
- }
-
- /**
- * Should class files be compiled with debug information?
- */
- public boolean getClassDebugInfo()
- {
- return classDebugInfo;
- }
-
- /**
- * Background JSP compile thread check intervall
- */
- public int getCheckInterval()
- {
- return checkInterval;
- }
-
- /**
- * Modification test interval.
- */
- public int getModificationTestInterval()
- {
- return modificationTestInterval;
- }
-
- /**
- * Is Jasper being used in development mode?
- */
- public boolean getDevelopment()
- {
- return development;
- }
-
- /**
- * Is the generation of SMAP info for JSR45 debuggin suppressed?
- */
- public boolean isSmapSuppressed()
- {
- return isSmapSuppressed;
- }
-
- /**
- * Should SMAP info for JSR45 debugging be dumped to a file?
- */
- public boolean isSmapDumped()
- {
- return isSmapDumped;
- }
-
- /**
- * Are Text strings to be generated as char arrays?
- */
- public boolean genStringAsCharArray()
- {
- return this.genStringAsCharArray;
- }
-
- /**
- * Class ID for use in the plugin tag when the browser is IE.
- */
- public String getIeClassId()
- {
- return ieClassId;
- }
-
- /**
- * What is my scratch dir?
- */
- public File getScratchDir()
- {
- return scratchDir;
- }
-
- /**
- * What classpath should I use while compiling the servlets generated from
- * JSP files?
- */
- public String getClassPath()
- {
- return classpath;
- }
-
- /**
- * Is generation of X-Powered-By response header enabled/disabled?
- */
- public boolean isXpoweredBy()
- {
- return xpoweredBy;
- }
-
- /**
- * Compiler to use.
- */
- public String getCompiler()
- {
- return compiler;
- }
-
- /**
- * @see Options#getCompilerClassName
- */
- public String getCompilerClassName()
- {
- return compilerClassName;
- }
-
- /**
- * @see Options#getCompilerTargetVM
- */
- public String getCompilerTargetVM()
- {
- return compilerTargetVM;
- }
-
- /**
- * @see Options#getCompilerSourceVM
- */
- public String getCompilerSourceVM()
- {
- return compilerSourceVM;
- }
-
- public boolean getErrorOnUseBeanInvalidClassAttribute()
- {
- return errorOnUseBeanInvalidClassAttribute;
- }
-
- public void setErrorOnUseBeanInvalidClassAttribute(boolean b)
- {
- errorOnUseBeanInvalidClassAttribute = b;
- }
-
- public TldLocationsCache getTldLocationsCache()
- {
- return tldLocationsCache;
- }
-
- public void setTldLocationsCache(TldLocationsCache tldC)
- {
- tldLocationsCache = tldC;
- }
-
- public String getJavaEncoding()
- {
- return javaEncoding;
- }
-
- public boolean getFork()
- {
- return fork;
- }
-
- public JspConfig getJspConfig()
- {
- return jspConfig;
- }
-
- public TagPluginManager getTagPluginManager()
- {
- return tagPluginManager;
- }
-
- /**
- * Is caching enabled (used for precompilation).
- */
- public boolean isCaching()
- {
- return false;
- }
-
- /**
- * The web-application wide cache for the returned TreeNode
- * by parseXMLDocument in TagLibraryInfoImpl.parseTLD,
- * if isCaching returns true.
- *
- * @return the Map(String uri, TreeNode tld) instance.
- */
- public Map getCache()
- {
- return null;
- }
-
- /**
- * Create an EmbeddedServletOptions object using data available from
- * ServletConfig and ServletContext.
- */
- public JspServletOptions(ServletConfig config, ServletContext context)
- {
-
- Enumeration enumeration = config.getInitParameterNames();
- while (enumeration.hasMoreElements())
- {
- String k = (String) enumeration.nextElement();
- String v = config.getInitParameter(k);
- setProperty(k, v);
- }
-
- // quick hack
- String validating = config.getInitParameter("validating");
- if ("false".equals(validating)) ParserUtils.validating = false;
-
- String keepgen = config.getInitParameter("keepgenerated");
- if (keepgen != null)
- {
- if (keepgen.equalsIgnoreCase("true"))
- {
- this.keepGenerated = true;
- }
- else if (keepgen.equalsIgnoreCase("false"))
- {
- this.keepGenerated = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.keepgen"));
- }
- }
-
-
- String trimsp = config.getInitParameter("trimSpaces");
- if (trimsp != null)
- {
- if (trimsp.equalsIgnoreCase("true"))
- {
- trimSpaces = true;
- }
- else if (trimsp.equalsIgnoreCase("false"))
- {
- trimSpaces = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.trimspaces"));
- }
- }
-
- this.isPoolingEnabled = true;
- String poolingEnabledParam
- = config.getInitParameter("enablePooling");
- if (poolingEnabledParam != null
- && !poolingEnabledParam.equalsIgnoreCase("true"))
- {
- if (poolingEnabledParam.equalsIgnoreCase("false"))
- {
- this.isPoolingEnabled = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.enablePooling"));
- }
- }
-
- String mapFile = config.getInitParameter("mappedfile");
- if (mapFile != null)
- {
- if (mapFile.equalsIgnoreCase("true"))
- {
- this.mappedFile = true;
- }
- else if (mapFile.equalsIgnoreCase("false"))
- {
- this.mappedFile = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.mappedFile"));
- }
- }
-
- String senderr = config.getInitParameter("sendErrToClient");
- if (senderr != null)
- {
- if (senderr.equalsIgnoreCase("true"))
- {
- this.sendErrorToClient = true;
- }
- else if (senderr.equalsIgnoreCase("false"))
- {
- this.sendErrorToClient = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.sendErrToClient"));
- }
- }
-
- String debugInfo = config.getInitParameter("classdebuginfo");
- if (debugInfo != null)
- {
- if (debugInfo.equalsIgnoreCase("true"))
- {
- this.classDebugInfo = true;
- }
- else if (debugInfo.equalsIgnoreCase("false"))
- {
- this.classDebugInfo = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.classDebugInfo"));
- }
- }
-
- String checkInterval = config.getInitParameter("checkInterval");
- if (checkInterval != null)
- {
- try
- {
- this.checkInterval = Integer.parseInt(checkInterval);
- if (this.checkInterval == 0)
- {
- this.checkInterval = 300;
- log.warn(Localizer.getMessage("jsp.warning.checkInterval"));
- }
- }
- catch (NumberFormatException ex)
- {
- log.warn(Localizer.getMessage("jsp.warning.checkInterval"));
- }
- }
-
- String modificationTestInterval = config.getInitParameter("modificationTestInterval");
- if (modificationTestInterval != null)
- {
- try
- {
- this.modificationTestInterval = Integer.parseInt(modificationTestInterval);
- }
- catch (NumberFormatException ex)
- {
- log.warn(Localizer.getMessage("jsp.warning.modificationTestInterval"));
- }
- }
-
- String development = config.getInitParameter("development");
- if (development != null)
- {
- if (development.equalsIgnoreCase("true"))
- {
- this.development = true;
- }
- else if (development.equalsIgnoreCase("false"))
- {
- this.development = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.development"));
- }
- }
-
- String suppressSmap = config.getInitParameter("suppressSmap");
- if (suppressSmap != null)
- {
- if (suppressSmap.equalsIgnoreCase("true"))
- {
- isSmapSuppressed = true;
- }
- else if (suppressSmap.equalsIgnoreCase("false"))
- {
- isSmapSuppressed = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.suppressSmap"));
- }
- }
-
- String dumpSmap = config.getInitParameter("dumpSmap");
- if (dumpSmap != null)
- {
- if (dumpSmap.equalsIgnoreCase("true"))
- {
- isSmapDumped = true;
- }
- else if (dumpSmap.equalsIgnoreCase("false"))
- {
- isSmapDumped = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.dumpSmap"));
- }
- }
-
- String genCharArray = config.getInitParameter("genStrAsCharArray");
- if (genCharArray != null)
- {
- if (genCharArray.equalsIgnoreCase("true"))
- {
- genStringAsCharArray = true;
- }
- else if (genCharArray.equalsIgnoreCase("false"))
- {
- genStringAsCharArray = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.genchararray"));
- }
- }
-
- String errBeanClass =
- config.getInitParameter("errorOnUseBeanInvalidClassAttribute");
- if (errBeanClass != null)
- {
- if (errBeanClass.equalsIgnoreCase("true"))
- {
- errorOnUseBeanInvalidClassAttribute = true;
- }
- else if (errBeanClass.equalsIgnoreCase("false"))
- {
- errorOnUseBeanInvalidClassAttribute = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.errBean"));
- }
- }
-
- String ieClassId = config.getInitParameter("ieClassId");
- if (ieClassId != null)
- this.ieClassId = ieClassId;
-
- String classpath = config.getInitParameter("classpath");
- if (classpath != null)
- this.classpath = classpath;
-
- /*
- * scratchdir
- */
- String dir = config.getInitParameter("scratchdir");
- if (dir != null)
- {
- scratchDir = new File(dir);
- }
- else
- {
- // First try the Servlet 2.2 javax.servlet.context.tempdir property
- scratchDir = (File) context.getAttribute(Constants.TMP_DIR);
- if (scratchDir == null)
- {
- // Not running in a Servlet 2.2 container.
- // Try to get the JDK 1.2 java.io.tmpdir property
- dir = System.getProperty("java.io.tmpdir");
- if (dir != null)
- scratchDir = new File(dir);
- }
- }
- if (this.scratchDir == null)
- {
- log.fatal(Localizer.getMessage("jsp.error.no.scratch.dir"));
- return;
- }
-
- if (!(scratchDir.exists() && scratchDir.canRead() &&
- scratchDir.canWrite() && scratchDir.isDirectory()))
- log.fatal(Localizer.getMessage("jsp.error.bad.scratch.dir",
- scratchDir.getAbsolutePath()));
-
- this.compiler = config.getInitParameter("compiler");
-
- String compilerTargetVM = config.getInitParameter("compilerTargetVM");
- if (compilerTargetVM != null)
- {
- this.compilerTargetVM = compilerTargetVM;
- }
-
- String compilerSourceVM = config.getInitParameter("compilerSourceVM");
- if (compilerSourceVM != null)
- {
- this.compilerSourceVM = compilerSourceVM;
- }
-
- String javaEncoding = config.getInitParameter("javaEncoding");
- if (javaEncoding != null)
- {
- this.javaEncoding = javaEncoding;
- }
-
- String compilerClassName = config.getInitParameter("compilerClassName");
- if(compilerClassName != null)
- {
- this.compilerClassName = compilerClassName;
- }
-
- String fork = config.getInitParameter("fork");
- if (fork != null)
- {
- if (fork.equalsIgnoreCase("true"))
- {
- this.fork = true;
- }
- else if (fork.equalsIgnoreCase("false"))
- {
- this.fork = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.fork"));
- }
- }
-
- String xpoweredBy = config.getInitParameter("xpoweredBy");
- if (xpoweredBy != null)
- {
- if (xpoweredBy.equalsIgnoreCase("true"))
- {
- this.xpoweredBy = true;
- }
- else if (xpoweredBy.equalsIgnoreCase("false"))
- {
- this.xpoweredBy = false;
- }
- else
- {
- log.warn(Localizer.getMessage("jsp.warning.xpoweredBy"));
- }
- }
-
- /* Setup the global Tag Libraries location cache for this web app. The
- tagLibJarN entries define the jars the cache should scan.
- */
- String base = "tagLibJar";
- ArrayList tldJars = new ArrayList();
- int count = 0;
- String jarPath = null;
- do
- {
- String name = base + count;
- jarPath = config.getInitParameter(name);
- if( jarPath != null )
- tldJars.add(jarPath);
- count ++;
- } while( jarPath != null );
-
- tldLocationsCache = new TagLibCache(context, tldJars);
-
- // Setup the jsp config info for this web app.
- jspConfig = new JspConfig(context);
-
- // Create a Tag plugin instance
- tagPluginManager = new TagPluginManager(context);
- }
-
-}
Deleted: trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper/TagLibCache.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper/TagLibCache.java 2006-09-20 10:41:42 UTC (rev 57000)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/tc5/jasper/TagLibCache.java 2006-09-20 11:02:24 UTC (rev 57001)
@@ -1,446 +0,0 @@
-/*
- * Copyright 1999,2004 The Apache Software Foundation.
- *
- * Licensed 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, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.web.tomcat.tc5.jasper;
-
-import java.util.Set;
-import java.util.Iterator;
-import java.util.HashMap;
-import java.util.ArrayList;
-import java.util.jar.JarEntry;
-import java.util.jar.JarInputStream;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.MalformedURLException;
-import javax.servlet.ServletContext;
-import java.util.Map; // SYNC
-
-import org.apache.jasper.compiler.TldLocationsCache;
-import org.apache.jasper.compiler.Localizer;
-import org.apache.jasper.JasperException;
-import org.apache.jasper.Constants;
-import org.apache.jasper.xmlparser.TreeNode;
-import org.apache.jasper.xmlparser.ParserUtils;
-import org.jboss.logging.Logger;
-
-/**
- * A prototype TagLibCache that allows one to obtain shared tlds from the
- * jbossweb sar conf/tlds directory.
- * @author Scott.Stark at jboss.org
- * @version $Revision$
- */
-public class TagLibCache extends TldLocationsCache
-{
- private static final String WEB_XML = "/WEB-INF/web.xml";
- private static final String JAR_FILE_SUFFIX = ".jar";
-
- private static Logger log = Logger.getLogger(TagLibCache.class);
-
- private ServletContext ctx;
- private HashMap mappings;
- private ArrayList tagLibJars;
-
- public TagLibCache(ServletContext ctx, ArrayList tagLibJars)
- {
- super(ctx, true);
- this.ctx = ctx;
- this.tagLibJars = tagLibJars;
- }
-
- /**
- * Gets the 'location' of the TLD associated with the given taglib 'uri'.
- *
- * Returns null if the uri is not associated with any tag library 'exposed'
- * in the web application. A tag library is 'exposed' either explicitly in
- * web.xml or implicitly via the uri tag in the TLD of a taglib deployed in a
- * jar file (WEB-INF/lib).
- * @param uri The taglib uri
- * @return An array of two Strings: The first element denotes the real path
- * to the TLD. If the path to the TLD points to a jar file, then the
- * second element denotes the name of the TLD entry in the jar file.
- * Returns null if the uri is not associated with any tag library
- * 'exposed' in the web application.
- */
- public String[] getLocation(String uri) throws JasperException
- {
- if (mappings == null)
- init();
- String[] locations = (String[]) mappings.get(uri);
- return locations;
- }
-
- private synchronized void init() throws JasperException
- {
- if (mappings != null)
- {
- return;
- }
-
- HashMap tmpMappings = null;
- try
- {
- tmpMappings = new HashMap();
- processWebDotXml(tmpMappings);
- loadStandardTlds(tmpMappings);
- processTldsInFileSystem("/WEB-INF/", tmpMappings);
- }
- catch (Exception ex)
- {
- String msg = Localizer.getMessage("jsp.error.internal.tldinit", ex.getMessage());
- throw new JasperException(msg, ex);
- }
- finally
- {
- mappings = tmpMappings;
- }
- }
-
- /*
- * Populates taglib map described in web.xml.
- */
- protected void processWebDotXml(Map tmpMappings) throws Exception
- {
-
- InputStream is = null;
-
- try
- {
- // Acquire input stream to web application deployment descriptor
- String altDDName = (String) ctx.getAttribute(Constants.ALT_DD_ATTR);
- if (altDDName != null)
- {
- try
- {
- is = new FileInputStream(altDDName);
- }
- catch (FileNotFoundException e)
- {
- log.warn(Localizer.getMessage("jsp.error.internal.filenotfound",
- altDDName));
- }
- }
- else
- {
- is = ctx.getResourceAsStream(WEB_XML);
- if (is == null)
- {
- log.warn(Localizer.getMessage("jsp.error.internal.filenotfound",
- WEB_XML));
- }
- }
-
- if (is == null)
- {
- return;
- }
-
- // Parse the web application deployment descriptor
- TreeNode webtld = null;
- // altDDName is the absolute path of the DD
- if (altDDName != null)
- {
- webtld = new ParserUtils().parseXMLDocument(altDDName, is);
- }
- else
- {
- webtld = new ParserUtils().parseXMLDocument(WEB_XML, is);
- }
-
- // Allow taglib to be an element of the root or jsp-config (JSP2.0)
- TreeNode jspConfig = webtld.findChild("jsp-config");
- if (jspConfig != null)
- {
- webtld = jspConfig;
- }
- Iterator taglibs = webtld.findChildren("taglib");
- while (taglibs.hasNext())
- {
-
- // Parse the next <taglib> element
- TreeNode taglib = (TreeNode) taglibs.next();
- String tagUri = null;
- String tagLoc = null;
- TreeNode child = taglib.findChild("taglib-uri");
- if (child != null)
- tagUri = child.getBody();
- child = taglib.findChild("taglib-location");
- if (child != null)
- tagLoc = child.getBody();
-
- // Save this location if appropriate
- if (tagLoc == null)
- continue;
- if (uriType(tagLoc) == NOROOT_REL_URI)
- tagLoc = "/WEB-INF/" + tagLoc;
- String tagLoc2 = null;
- if (tagLoc.endsWith(JAR_FILE_SUFFIX))
- {
- tagLoc = ctx.getResource(tagLoc).toString();
- tagLoc2 = "META-INF/taglib.tld";
- }
- tmpMappings.put(tagUri, new String[]{tagLoc, tagLoc2}); // SYNC
- }
- }
- finally
- {
- if (is != null)
- {
- try
- {
- is.close();
- }
- catch (Throwable t)
- {
- }
- }
- }
- }
-
- protected void loadStandardTlds(Map tmpMappings) throws MalformedURLException // SYNC
- {
- if( tagLibJars.size() == 0 )
- return;
-
- // Locate the conf/web.xml
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- URL web = loader.getResource("conf/web.xml");
- URL sarURL = new URL(web, "..");
- for(int n = 0; n < tagLibJars.size(); n ++)
- {
- String jarPath = (String) tagLibJars.get(n);
- try
- {
- URL url = new URL(sarURL, jarPath);
- String resourcePath = url.toString();
- log.debug("Scanning for tlds in: "+resourcePath);
- URLConnection conn = url.openConnection();
- conn.setUseCaches(false);
- scanJar(conn, resourcePath, true, tmpMappings); // SYNC
- }
- catch (Exception e)
- {
- log.debug("Failed to scan: "+jarPath, e);
- }
- }
- }
-
- /*
- * Searches the filesystem under /WEB-INF for any TLD files, and adds
- * an implicit map entry to the taglib map for any TLD that has a <uri>
- * element.
- */
- protected void processTldsInFileSystem(String startPath, Map tmpMappings) // SYNC
- throws Exception
- {
-
- Set dirList = ctx.getResourcePaths(startPath);
- if (dirList != null)
- {
- Iterator it = dirList.iterator();
- while (it.hasNext())
- {
- String path = (String) it.next();
- if (path.endsWith("/"))
- {
- processTldsInFileSystem(path, tmpMappings); // SYNC
- }
- if( path.endsWith(".jar") )
- {
- URL resURL = ctx.getResource(path);
- URLConnection conn = resURL.openConnection();
- conn.setUseCaches(false);
- this.scanJar(conn, resURL.toString(), false, tmpMappings); // SYNC
- }
- else if ( path.endsWith(".tld") == true )
- {
- InputStream stream = ctx.getResourceAsStream(path);
- String uri = null;
- try
- {
- uri = getUriFromTld(path, stream);
- }
- finally
- {
- if (stream != null)
- {
- try
- {
- stream.close();
- }
- catch (Throwable t)
- {
- // do nothing
- }
- }
- }
- // Add implicit map entry only if its uri is not already
- // present in the map
- if (uri != null && tmpMappings.get(uri) == null) // SYNC
- {
- tmpMappings.put(uri, new String[]{path, null}); // SYNC
- }
- }
- }
- }
- }
-
- /**
- * Scans the given JarInputStream for TLD files located in META-INF (or a
- * subdirectory of it), adding an implicit map entry to the taglib map for
- * any TLD that has a <uri> element.
- * @param conn - the
- * @param ignore true if any exceptions raised when processing the given JAR
- * should be ignored, false otherwise
- */
- private void scanJar(URLConnection conn, String resourcePath, boolean ignore, Map tmpMappings) // SYNC
- throws JasperException, IOException
- {
- InputStream connIS = conn.getInputStream();
- JarInputStream jis = new JarInputStream(connIS);
- try
- {
- JarEntry entry = jis.getNextJarEntry();
- while( entry != null )
- {
- String name = entry.getName();
- if( name.endsWith(".tld") == false )
- {
- entry = jis.getNextJarEntry();
- continue;
- }
-
- EntryInputStream eis = new EntryInputStream(jis);
- String uri = getUriFromTld(resourcePath, eis);
- // Add implicit map entry only if its uri is not already
- // present in the map
- if (uri != null && tmpMappings.get(uri) == null) // SYNC
- {
- tmpMappings.put(uri, new String[]{resourcePath, name}); // SYNC
- }
- entry = jis.getNextJarEntry();
- }
- }
- catch (Exception ex)
- {
- if (!ignore)
- {
- throw new JasperException(ex);
- }
- }
- finally
- {
- if( jis != null )
- {
- try
- {
- jis.close();
- }
- catch (Throwable t)
- {
- // ignore
- }
- }
-
- if (connIS != null)
- {
- try
- {
- connIS.close();
- }
- catch (Throwable t)
- {
- // ignore
- }
- }
- }
- }
-
- /*
- * Returns the value of the uri element of the given TLD, or null if the
- * given TLD does not contain any such element.
- */
- private String getUriFromTld(String resourcePath, InputStream in)
- throws JasperException
- {
- // Parse the tag library descriptor at the specified resource path
- TreeNode tld = new ParserUtils().parseXMLDocument(resourcePath, in);
- TreeNode uri = tld.findChild("uri");
- if (uri != null)
- {
- String body = uri.getBody();
- if (body != null)
- return body;
- }
-
- return null;
- }
-
- /**
- * Used to ignore the close on the jar entry input stream since this
- * closes the jar stream, not just the entry.
- */
- static class EntryInputStream extends InputStream
- {
- private JarInputStream jis;
- EntryInputStream(JarInputStream jis)
- {
- this.jis = jis;
- }
-
- public int read() throws IOException
- {
- return jis.read();
- }
-
- public int available() throws IOException
- {
- return jis.available();
- }
-
- public void close() throws IOException
- {
-
- }
-
- public void reset() throws IOException
- {
- jis.reset();
- }
-
- public boolean markSupported()
- {
- return jis.markSupported();
- }
-
- public synchronized void mark(int readlimit)
- {
- jis.mark(readlimit);
- }
-
- public long skip(long n) throws IOException
- {
- return jis.skip(n);
- }
-
- public int read(byte b[], int off, int len) throws IOException
- {
- return jis.read(b, off, len);
- }
- }
-}
More information about the jboss-cvs-commits
mailing list