You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2013/01/14 17:19:22 UTC

svn commit: r1432975 - /geronimo/external/trunk/tomcat-parent-7.0.27/jasper/src/main/java/org/apache/jasper/compiler/TagPluginManager.java

Author: gawor
Date: Mon Jan 14 16:19:22 2013
New Revision: 1432975

URL: http://svn.apache.org/viewvc?rev=1432975&view=rev
Log:
Configurable system level tagPlugins.xml - https://issues.apache.org/bugzilla/show_bug.cgi?id=54240

Modified:
    geronimo/external/trunk/tomcat-parent-7.0.27/jasper/src/main/java/org/apache/jasper/compiler/TagPluginManager.java

Modified: geronimo/external/trunk/tomcat-parent-7.0.27/jasper/src/main/java/org/apache/jasper/compiler/TagPluginManager.java
URL: http://svn.apache.org/viewvc/geronimo/external/trunk/tomcat-parent-7.0.27/jasper/src/main/java/org/apache/jasper/compiler/TagPluginManager.java?rev=1432975&r1=1432974&r2=1432975&view=diff
==============================================================================
--- geronimo/external/trunk/tomcat-parent-7.0.27/jasper/src/main/java/org/apache/jasper/compiler/TagPluginManager.java (original)
+++ geronimo/external/trunk/tomcat-parent-7.0.27/jasper/src/main/java/org/apache/jasper/compiler/TagPluginManager.java Mon Jan 14 16:19:22 2013
@@ -14,10 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.jasper.compiler;
 
+import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Iterator;
 
@@ -33,9 +35,10 @@ import org.apache.jasper.xmlparser.TreeN
  * Manages tag plugin optimizations.
  * @author Kin-man Chung
  */
-
 public class TagPluginManager {
 
+    private static final String META_INF_JASPER_TAG_PLUGINS_XML =
+            "META-INF/org.apache.jasper/tagPlugins.xml";
     private static final String TAG_PLUGINS_XML = "/WEB-INF/tagPlugins.xml";
     private static final String TAG_PLUGINS_ROOT_ELEM = "tag-plugins";
 
@@ -73,12 +76,62 @@ public class TagPluginManager {
         if (initialized)
             return;
 
-        InputStream is = ctxt.getResourceAsStream(TAG_PLUGINS_XML);
-        if (is == null)
-            return;
+        tagPlugins = new HashMap<String, TagPlugin>();
+
+        Enumeration<URL> urls = null;
+        try {
+            urls = ctxt.getClassLoader().getResources(
+                    META_INF_JASPER_TAG_PLUGINS_XML);
+        } catch (IOException ioe) {
+            throw new JasperException(ioe);
+        }
+
+        if (urls != null) {
+            while(urls.hasMoreElements()) {
+                URL url = urls.nextElement();
+                InputStream is = null;
+                try {
+                    is = url.openStream();
+                    loadTagPlugins(err, is);
+                } catch(IOException ioe) {
+                    throw new JasperException(ioe);
+                } finally {
+                    if (is != null) {
+                        try {
+                            is.close();
+                        } catch (IOException ioe) {
+                            throw new JasperException(ioe);
+                        }
+                    }
+                }
+            }
+        }
+
+        InputStream is = null;
+        try {
+            is = ctxt.getResourceAsStream(TAG_PLUGINS_XML);
+            if (is != null) {
+                loadTagPlugins(err, is);
+            }
+        } finally {
+            try {
+                if (is != null) {
+                    is.close();
+                }
+            } catch (IOException ioe) {
+                throw new JasperException(ioe);
+            }
+        }
+
+        initialized = true;
+    }
+
+
+    private void loadTagPlugins(ErrorDispatcher err, InputStream is)
+            throws JasperException {
 
-        TreeNode root = (new ParserUtils()).parseXMLDocument(TAG_PLUGINS_XML,
-                                                             is);
+        TreeNode root =
+                (new ParserUtils()).parseXMLDocument(TAG_PLUGINS_XML, is);
         if (root == null) {
             return;
         }