This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch WW-5233-tiles
in repository https://gitbox.apache.org/repos/asf/struts.git


The following commit(s) were added to refs/heads/WW-5233-tiles by this push:
     new 30f8832be WW-5233 Drops useless @version tag and addresses some 
potential RegEx vulnerabilities
30f8832be is described below

commit 30f8832be0b4e5eabd9aeb9c93e60d7ff2df6d21
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Sun Oct 2 18:43:45 2022 +0200

    WW-5233 Drops useless @version tag and addresses some potential RegEx 
vulnerabilities
---
 .../main/java/org/apache/tiles/api/Attribute.java  |   5 +-
 .../apache/tiles/api/preparer/ViewPreparer.java    |   2 -
 .../autotag/core/runtime/AbstractModelBody.java    |   2 -
 .../tiles/autotag/core/runtime/ModelBody.java      |   2 -
 .../autotag/core/runtime/annotation/Parameter.java |   2 -
 .../autotag/core/runtime/util/NullWriter.java      |   2 -
 .../apache/tiles/autotag/model/TemplateClass.java  |   2 -
 .../apache/tiles/autotag/model/TemplateMethod.java |   2 -
 .../tiles/autotag/model/TemplateParameter.java     |   2 -
 .../apache/tiles/autotag/model/TemplateSuite.java  |   2 -
 .../tiles/core/definition/DefinitionsFactory.java  |   2 -
 .../core/definition/NoSuchDefinitionException.java |   2 -
 .../UnresolvingLocaleDefinitionsFactory.java       |   2 -
 .../digester/DigesterDefinitionsReader.java        |   2 -
 .../DigesterDefinitionsReaderException.java        |   2 -
 .../pattern/DefinitionPatternMatcher.java          |   2 -
 .../pattern/DefinitionPatternMatcherFactory.java   |   2 -
 .../org/apache/tiles/request/RequestException.java |   2 -
 .../NotAvailableFreemarkerServletException.java    |   2 -
 .../autotag/FreemarkerAutotagException.java        |   2 -
 .../render/AttributeValueFreemarkerServlet.java    |  51 ------
 .../request/freemarker/render/package-info.java    |  24 ---
 .../SharedVariableLoaderFreemarkerServlet.java     | 200 ---------------------
 .../servlet/WebappClassTemplateLoader.java         |   2 -
 .../tiles/request/jsp/JspPrintWriterAdapter.java   |   2 -
 .../request/locale/URLApplicationResource.java     |   2 -
 .../reflect/CannotInstantiateObjectException.java  |   2 -
 .../tiles/request/render/DispatchRenderer.java     |   2 -
 .../tiles/template/InsertAttributeModel.java       |   2 -
 .../tiles/template/InsertDefinitionModel.java      |   2 -
 30 files changed, 2 insertions(+), 330 deletions(-)

diff --git a/plugins/tiles/src/main/java/org/apache/tiles/api/Attribute.java 
b/plugins/tiles/src/main/java/org/apache/tiles/api/Attribute.java
index c49f07a96..e84039c73 100644
--- a/plugins/tiles/src/main/java/org/apache/tiles/api/Attribute.java
+++ b/plugins/tiles/src/main/java/org/apache/tiles/api/Attribute.java
@@ -19,6 +19,7 @@
 
 package org.apache.tiles.api;
 
+import com.opensymphony.xwork2.util.TextParseUtil;
 import org.apache.tiles.request.Request;
 
 import java.io.Serializable;
@@ -205,9 +206,7 @@ public class Attribute implements Serializable, Cloneable {
      */
     public void setRole(String role) {
         if (role != null && role.trim().length() > 0) {
-            String[] rolesStrings = role.split("\\s*,\\s*");
-            roles = new HashSet<>();
-            Collections.addAll(roles, rolesStrings);
+            roles = TextParseUtil.commaDelimitedStringToSet(role);
         } else {
             roles = null;
         }
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/api/preparer/ViewPreparer.java 
b/plugins/tiles/src/main/java/org/apache/tiles/api/preparer/ViewPreparer.java
index 94527a45b..9abf720a6 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/api/preparer/ViewPreparer.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/api/preparer/ViewPreparer.java
@@ -38,8 +38,6 @@ import org.apache.tiles.request.Request;
  * <li>&lt;insert&gt;</li>
  * <li>&lt;definition&gt;</li>
  * </ul>>
- *
- * @version $Rev$ $Date$
  */
 public interface ViewPreparer {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/AbstractModelBody.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/AbstractModelBody.java
index 1054f338a..72b3a9938 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/AbstractModelBody.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/AbstractModelBody.java
@@ -27,8 +27,6 @@ import java.util.regex.Pattern;
 
 /**
  * Base class for the abstraction of the body.
- *
- * @version $Rev$ $Date$
  */
 public abstract class AbstractModelBody implements ModelBody {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/ModelBody.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/ModelBody.java
index feedca8c8..0f97ec0d0 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/ModelBody.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/ModelBody.java
@@ -23,8 +23,6 @@ import java.io.Writer;
 
 /**
  * Abstracts a tag/directive body.
- *
- * @version $Rev$ $Date$
  */
 public interface ModelBody {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/annotation/Parameter.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/annotation/Parameter.java
index 1c6373f7f..8833eddeb 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/annotation/Parameter.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/annotation/Parameter.java
@@ -25,8 +25,6 @@ import java.lang.annotation.Target;
 
 /**
  * Specifies behaviour for a parameter of the "execute" method of a template 
class.
- *
- * @version $Rev$ $Date$
  */
 @Retention(RetentionPolicy.SOURCE)
 @Target(ElementType.PARAMETER)
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/util/NullWriter.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/util/NullWriter.java
index 76a19b6b4..4905e6c63 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/util/NullWriter.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/core/runtime/util/NullWriter.java
@@ -23,8 +23,6 @@ import java.io.Writer;
 
 /**
  * A writer that does not write anything.
- *
- * @version $Rev$ $Date$
  */
 public class NullWriter extends Writer {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
index f130fa9d1..0aeb990ce 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateClass.java
@@ -24,8 +24,6 @@ import java.util.Map;
 
 /**
  * It represents a parsed template class.
- *
- * @version $Rev$ $Date$
  */
 public class TemplateClass {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
index 2390c2119..2bccf2ddd 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateMethod.java
@@ -24,8 +24,6 @@ import java.util.Map;
 
 /**
  * It represents a parsed method in a parsed template class.
- *
- * @version $Rev$ $Date$
  */
 public class TemplateMethod {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
index ab4e8dc58..0540954c1 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateParameter.java
@@ -22,8 +22,6 @@ import org.apache.tiles.autotag.core.runtime.ModelBody;
 
 /**
  * It represents a parameter in a method in a parsed template class.
- *
- * @version $Rev$ $Date$
  */
 public class TemplateParameter {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
index ff96b9eda..de14b466f 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/autotag/model/TemplateSuite.java
@@ -24,8 +24,6 @@ import java.util.Map;
 
 /**
  * It represents a suite of template classes.
- *
- * @version $Rev$ $Date$
  */
 public class TemplateSuite {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/DefinitionsFactory.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/DefinitionsFactory.java
index a7165a981..8f0dcc7aa 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/DefinitionsFactory.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/DefinitionsFactory.java
@@ -31,8 +31,6 @@ import org.apache.tiles.request.Request;
  * sets. Implementations also know how to append locale-specific configuration
  * data to an existing Definitions set.
  * </p>
- *
- * @version $Rev$ $Date$
  */
 public interface DefinitionsFactory {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/NoSuchDefinitionException.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/NoSuchDefinitionException.java
index aa78661bd..6815f2db9 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/NoSuchDefinitionException.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/NoSuchDefinitionException.java
@@ -20,8 +20,6 @@ package org.apache.tiles.core.definition;
 
 /**
  * Exception thrown when a definition is not found.
- *
- * @version $Rev$ $Date$
  */
 public class NoSuchDefinitionException extends DefinitionsFactoryException {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/UnresolvingLocaleDefinitionsFactory.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/UnresolvingLocaleDefinitionsFactory.java
index ca69310f4..5a35e4825 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/UnresolvingLocaleDefinitionsFactory.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/UnresolvingLocaleDefinitionsFactory.java
@@ -35,8 +35,6 @@ import java.util.Locale;
  * {@link org.apache.tiles.core.definition.digester.DigesterDefinitionsReader}
  * class unless another implementation is specified.
  * </p>
- *
- * @version $Rev$ $Date$
  * @since 2.2.1
  */
 public class UnresolvingLocaleDefinitionsFactory implements DefinitionsFactory 
{
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/digester/DigesterDefinitionsReader.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/digester/DigesterDefinitionsReader.java
index b751c5607..4d756bbb2 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/digester/DigesterDefinitionsReader.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/digester/DigesterDefinitionsReader.java
@@ -61,8 +61,6 @@ import java.util.Map;
  * method. This means that instances of this class are <strong>not</strong>
  * thread-safe and access by multiple threads must be synchronized.
  * </p>
- *
- * @version $Rev$ $Date$
  */
 public class DigesterDefinitionsReader implements DefinitionsReader {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/digester/DigesterDefinitionsReaderException.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/digester/DigesterDefinitionsReaderException.java
index 0aeb324bc..ca501e089 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/digester/DigesterDefinitionsReaderException.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/digester/DigesterDefinitionsReaderException.java
@@ -23,8 +23,6 @@ import org.apache.tiles.api.TilesException;
 /**
  * Indicates that something went wrong during the use of
  * {@link DigesterDefinitionsReader}.
- *
- * @version $Rev$ $Date$
  * @since 2.1.0
  */
 public class DigesterDefinitionsReaderException extends TilesException {
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/pattern/DefinitionPatternMatcher.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/pattern/DefinitionPatternMatcher.java
index 8e913bca1..657780650 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/pattern/DefinitionPatternMatcher.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/pattern/DefinitionPatternMatcher.java
@@ -23,8 +23,6 @@ import org.apache.tiles.api.Definition;
 /**
  * Matches a definition name to a definition, through pattern-matching. The
  * matched pattern should be a single one.
- *
- * @version $Rev$ $Date$
  * @since 2.2.0
  */
 public interface DefinitionPatternMatcher {
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/pattern/DefinitionPatternMatcherFactory.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/pattern/DefinitionPatternMatcherFactory.java
index d58858a50..df5890744 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/core/definition/pattern/DefinitionPatternMatcherFactory.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/core/definition/pattern/DefinitionPatternMatcherFactory.java
@@ -23,8 +23,6 @@ import org.apache.tiles.api.Definition;
 /**
  * Creates a new definition pattern matcher for the given pattern and the given
  * base definition with pattern expressions.
- *
- * @version $Rev$ $Date$
  * @since 2.2.0
  */
 public interface DefinitionPatternMatcherFactory {
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/RequestException.java 
b/plugins/tiles/src/main/java/org/apache/tiles/request/RequestException.java
index 192dff6b7..dcd8daeae 100644
--- a/plugins/tiles/src/main/java/org/apache/tiles/request/RequestException.java
+++ b/plugins/tiles/src/main/java/org/apache/tiles/request/RequestException.java
@@ -20,8 +20,6 @@ package org.apache.tiles.request;
 
 /**
  * Thrown when something related to a request fails.
- *
- * @version $Rev$ $Date$
  */
 public class RequestException extends RuntimeException {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java
index 13c5dd0f8..c34b91168 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/NotAvailableFreemarkerServletException.java
@@ -22,8 +22,6 @@ import org.apache.tiles.request.NotAvailableFeatureException;
 
 /**
  * Thrown when the Freemarker servlet is not available.
- *
- * @version $Rev$ $Date$
  */
 public class NotAvailableFreemarkerServletException extends 
NotAvailableFeatureException {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagException.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagException.java
index dfd95cd06..9ba13c882 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagException.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/autotag/FreemarkerAutotagException.java
@@ -20,8 +20,6 @@ package org.apache.tiles.request.freemarker.autotag;
 
 /**
  * Thrown when a Freemarker problem under Autotag runtime part happens.
- *
- * @version $Rev$ $Date$
  */
 public class FreemarkerAutotagException extends RuntimeException {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/render/AttributeValueFreemarkerServlet.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/render/AttributeValueFreemarkerServlet.java
deleted file mode 100644
index 8162c815d..000000000
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/render/AttributeValueFreemarkerServlet.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.apache.tiles.request.freemarker.render;
-
-import 
org.apache.tiles.request.freemarker.servlet.SharedVariableLoaderFreemarkerServlet;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Extends {@link SharedVariableLoaderFreemarkerServlet} to use the attribute 
value as the template name.
- */
-public class AttributeValueFreemarkerServlet extends 
SharedVariableLoaderFreemarkerServlet {
-
-    /**
-     * Holds the value that should be used as the template name.
-     */
-    private final ThreadLocal<String> valueHolder = new ThreadLocal<>();
-
-    /**
-     * Sets the value to use as the template name.
-     *
-     * @param value The template name.
-     */
-    public void setValue(String value) {
-        valueHolder.set(value);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected String requestUrlToTemplatePath(HttpServletRequest request) {
-        return valueHolder.get();
-    }
-}
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/render/package-info.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/render/package-info.java
deleted file mode 100644
index 925f6a2f7..000000000
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/render/package-info.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * $Id: package-info.java 1049711 2010-12-15 21:12:00Z apetrelli $
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-/**
- * Rendering of Freemarker templates.
- */
-package org.apache.tiles.request.freemarker.render;
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/servlet/SharedVariableLoaderFreemarkerServlet.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/servlet/SharedVariableLoaderFreemarkerServlet.java
deleted file mode 100644
index 8cec74b1f..000000000
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/servlet/SharedVariableLoaderFreemarkerServlet.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.apache.tiles.request.freemarker.servlet;
-
-import freemarker.cache.TemplateLoader;
-import freemarker.ext.servlet.FreemarkerServlet;
-import freemarker.template.Configuration;
-import org.apache.tiles.request.reflect.ClassUtil;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import java.util.Enumeration;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * Extends FreemarkerServlet to load Tiles directives as a shared variable.
- */
-public class SharedVariableLoaderFreemarkerServlet extends FreemarkerServlet {
-
-    /**
-     * The init parameter under which the factories will be put. The value of 
the parameter
-     * must be a semicolon (;) separated list of couples, each member of the 
couple must
-     * be separated by commas (,).
-     */
-    public static final String CUSTOM_SHARED_VARIABLE_FACTORIES_INIT_PARAM =
-        "org.apache.tiles.request.freemarker.CUSTOM_SHARED_VARIABLE_FACTORIES";
-
-    /**
-     * Maps a name of a shared variable to its factory.
-     */
-    private final Map<String, SharedVariableFactory> name2variableFactory = 
new LinkedHashMap<>();
-
-    @Override
-    public void init(ServletConfig config) throws ServletException {
-        String param = 
config.getInitParameter(CUSTOM_SHARED_VARIABLE_FACTORIES_INIT_PARAM);
-        if (param != null) {
-            String[] couples = param.split("\\s*;\\s*");
-            for (String s : couples) {
-                String[] couple = s.split("\\s*,\\s*");
-                if (couple.length != 2) {
-                    throw new ServletException("Cannot parse custom shared 
variable partial init param: '" + s + "'");
-                }
-                name2variableFactory.put(couple[0], (SharedVariableFactory) 
ClassUtil.instantiate(couple[1]));
-            }
-        }
-        super.init(new ExcludingParameterServletConfig(config));
-    }
-
-    /**
-     * Adds anew shared variable factory in a manual way.
-     *
-     * @param variableName The name of the shared variable.
-     * @param factory The shared variable factory.
-     */
-    public void addSharedVariableFactory(String variableName, 
SharedVariableFactory factory) {
-        name2variableFactory.put(variableName, factory);
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    protected Configuration createConfiguration() {
-        Configuration configuration = super.createConfiguration();
-
-        for (Map.Entry<String, SharedVariableFactory> entry : 
name2variableFactory.entrySet()) {
-            configuration.setSharedVariable(entry.getKey(), 
entry.getValue().create());
-        }
-        return configuration;
-    }
-
-    /** {@inheritDoc} */
-
-    @Override
-    protected TemplateLoader createTemplateLoader(String templatePath) {
-        return new WebappClassTemplateLoader(getServletContext());
-    }
-
-    /**
-     * Servlet configuration that excludes some parameters. It is useful to 
adapt to
-     * FreemarkerServlet behaviour, because it gets angry if it sees some extra
-     * parameters that it does not recognize.
-     */
-    private static class ExcludingParameterServletConfig implements 
ServletConfig {
-
-        /**
-         * The servlet configuration.
-         */
-        private final ServletConfig config;
-
-        /**
-         * Constructor.
-         *
-         * @param config The servlet configuration.
-         */
-        public ExcludingParameterServletConfig(ServletConfig config) {
-            this.config = config;
-        }
-
-        @Override
-        public String getServletName() {
-            return config.getServletName();
-        }
-
-        @Override
-        public ServletContext getServletContext() {
-            return config.getServletContext();
-        }
-
-        @Override
-        public String getInitParameter(String name) {
-            if (CUSTOM_SHARED_VARIABLE_FACTORIES_INIT_PARAM.equals(name)) {
-                return null;
-            }
-            return config.getInitParameter(name);
-        }
-
-        @SuppressWarnings({ "rawtypes", "unchecked" })
-        @Override
-        public Enumeration getInitParameterNames() {
-            return new SkippingEnumeration(config.getInitParameterNames());
-        }
-
-    }
-
-    /**
-     * An enumeration that skip just
-     * {@link 
SharedVariableLoaderFreemarkerServlet#CUSTOM_SHARED_VARIABLE_FACTORIES_INIT_PARAM},
-     * again not to let the FreemarkerServlet be angry about it.
-     */
-    private static class SkippingEnumeration implements Enumeration<String> {
-
-        /**
-         * The original enumeration.
-         */
-        private final Enumeration<String> enumeration;
-
-        /**
-         * The next element.
-         */
-        private String next = null;
-
-        /**
-         * Constructor.
-         *
-         * @param enumeration The original enumeration.
-         */
-        public SkippingEnumeration(Enumeration<String> enumeration) {
-            this.enumeration = enumeration;
-            updateNextElement();
-        }
-
-        @Override
-        public boolean hasMoreElements() {
-            return next != null;
-        }
-
-        @Override
-        public String nextElement() {
-            String retValue = next;
-            updateNextElement();
-            return retValue;
-        }
-
-        /**
-         * Updates the next element that will be passed.
-         */
-        private void updateNextElement() {
-            String value = null;
-            boolean done = false;
-            while (this.enumeration.hasMoreElements() && !done) {
-                value = this.enumeration.nextElement();
-                if (value.equals(CUSTOM_SHARED_VARIABLE_FACTORIES_INIT_PARAM)) 
{
-                    value = null;
-                } else {
-                    done = true;
-                }
-            }
-            next = value;
-        }
-
-    }
-}
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/servlet/WebappClassTemplateLoader.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/servlet/WebappClassTemplateLoader.java
index ce5629fa7..5103903a5 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/servlet/WebappClassTemplateLoader.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/request/freemarker/servlet/WebappClassTemplateLoader.java
@@ -31,8 +31,6 @@ import java.io.Reader;
  * Delegates loading templates using a {@link WebappTemplateLoader} and, if not
  * found, a {@link ClassTemplateLoader}. The resources are loaded from the
  * webapp root and from the classpath root.
- *
- * @version $Rev$ $Date$
  */
 public class WebappClassTemplateLoader implements TemplateLoader {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/jsp/JspPrintWriterAdapter.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/jsp/JspPrintWriterAdapter.java
index 81c6e579f..a7b2e2629 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/jsp/JspPrintWriterAdapter.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/request/jsp/JspPrintWriterAdapter.java
@@ -27,8 +27,6 @@ import java.io.PrintWriter;
 
 /**
  * Adapts a {@link JspWriter} to a {@link PrintWriter}, swallowing {@link 
IOException}.
- *
- * @version $Rev$ $Date$
  */
 public class JspPrintWriterAdapter extends PrintWriter {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/locale/URLApplicationResource.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/locale/URLApplicationResource.java
index e88b25db7..a4e71a818 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/locale/URLApplicationResource.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/request/locale/URLApplicationResource.java
@@ -38,8 +38,6 @@ import java.util.Set;
 
 /**
  * A {@link PostfixedApplicationResource} that can be accessed through a URL.
- *
- * @version $Rev$ $Date$
  */
 
 public class URLApplicationResource extends PostfixedApplicationResource {
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/reflect/CannotInstantiateObjectException.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/reflect/CannotInstantiateObjectException.java
index 953ae68c4..7b922fd8f 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/reflect/CannotInstantiateObjectException.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/request/reflect/CannotInstantiateObjectException.java
@@ -22,8 +22,6 @@ import org.apache.tiles.request.RequestException;
 
 /**
  * Indicates that an object cannot be instantiated.
- *
- * @version $Rev$ $Date$
  */
 public class CannotInstantiateObjectException extends RequestException {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java
index fa5b78749..b1db6a09e 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/request/render/DispatchRenderer.java
@@ -26,8 +26,6 @@ import org.apache.tiles.request.RequestWrapper;
 
 /**
  * Renders an attribute that contains a reference to a template.
- *
- * @version $Rev$ $Date$
  */
 public class DispatchRenderer implements Renderer {
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/template/InsertAttributeModel.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/template/InsertAttributeModel.java
index 2ee9bb396..4c2ea7ef1 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/template/InsertAttributeModel.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/template/InsertAttributeModel.java
@@ -53,8 +53,6 @@ import java.util.Deque;
  *           &lt;tiles:insertAttribute name=&quot;body&quot; /&gt;
  *         &lt;/code&gt;
  * </pre>
- *
- * @version $Rev$ $Date$
  * @since 2.2.0
  */
 public class InsertAttributeModel {
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java
index cff71b65f..a34bb3760 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/template/InsertDefinitionModel.java
@@ -61,8 +61,6 @@ import java.io.IOException;
  *           &lt;/tiles:insertDefinition&gt;
  *         &lt;/code&gt;
  * </pre>
- *
- * @version $Rev$ $Date$
  * @since 2.2.0
  */
 public class InsertDefinitionModel {

Reply via email to