Thanks for doing this.  Did you also delete ElementAttributeMatching from
the util directory?


[EMAIL PROTECTED] said:
> Author: cziegeler
> Date: Tue May  2 02:41:56 2006
> New Revision: 398882
>
> URL: http://svn.apache.org/viewcvs?rev=398882&view=rev
> Log:
> Merge changes from 2.1.x
>
> Modified:
>     
> cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/transformation/EncodeURLTransformer.java
>
> Modified:
> cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/transformation/EncodeURLTransformer.java
> URL:
> http://svn.apache.org/viewcvs/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/transformation/EncodeURLTransformer.java?rev=398882&r1=398881&r2=398882&view=diff
> ==============================================================================
> ---
> cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/transformation/EncodeURLTransformer.java
> (original)
> +++
> cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/transformation/EncodeURLTransformer.java
> Tue May  2 02:41:56 2006
> @@ -17,12 +17,14 @@
>
>  import java.io.IOException;
>  import java.util.Map;
> +import java.util.regex.Pattern;
> +import java.util.regex.PatternSyntaxException;
> +
>  import org.apache.avalon.framework.configuration.Configurable;
>  import org.apache.avalon.framework.configuration.Configuration;
>  import org.apache.avalon.framework.configuration.ConfigurationException;
>  import org.apache.avalon.framework.parameters.Parameters;
>  import org.apache.cocoon.ProcessingException;
> -import org.apache.cocoon.util.ElementAttributeMatching;
>  import org.apache.cocoon.caching.CacheableProcessingComponent;
>  import org.apache.cocoon.environment.ObjectModelHelper;
>  import org.apache.cocoon.environment.Request;
> @@ -31,7 +33,6 @@
>  import org.apache.cocoon.environment.SourceResolver;
>  import org.apache.excalibur.source.SourceValidity;
>  import org.apache.excalibur.source.impl.validity.NOPValidity;
> -import org.apache.regexp.RESyntaxException;
>  import org.xml.sax.Attributes;
>  import org.xml.sax.SAXException;
>  import org.xml.sax.helpers.AttributesImpl;
> @@ -105,13 +106,13 @@
>       * Configuration default exclude pattern,
>       * ie img/@src
>       */
> -    public final static String EXCLUDE_NAME_DEFAULT = "img/@src";
> +    public final static String EXCLUDE_NAME_DEFAULT = "img/@src=";
>
>      /**
>       * Configuration default exclude pattern,
>       * ie .*\/@href|.*\/@action|frame/@src
>       */
> -    public final static String INCLUDE_NAME_DEFAULT =
> ".*/@href|.*/@action|frame/@src";
> +    public final static String INCLUDE_NAME_DEFAULT =
> ".*/@href=|.*/@action=|frame/@src=";
>
>      private String includeNameConfigure = INCLUDE_NAME_DEFAULT;
>      private String excludeNameConfigure = EXCLUDE_NAME_DEFAULT;
> @@ -168,7 +169,7 @@
>                                                                 
> this.excludeNameConfigure);
>              try {
>                  this.elementAttributeMatching = new
> ElementAttributeMatching(includeName, excludeName);
> -            } catch (RESyntaxException reex) {
> +            } catch (PatternSyntaxException reex) {
>                  final String message = "Cannot parse include-name: " +
> includeName + " " +
>                      "or exclude-name: " + excludeName + "!";
>                  throw new ProcessingException(message, reex);
> @@ -307,6 +308,108 @@
>              encoded_url = url;
>          }
>          return encoded_url;
> +    }
> +
> +    /**
> +     * A helper class for matching element names, and attribute names.
> +     *
> +     * <p>
> +     *  For given include-name, exclude-name decide if element-attribute
> pair
> +     *  matches. This class defines the precedence and matching
> algorithm.
> +     * </p>
> +     *
> +     * @author     <a href="mailto:[EMAIL PROTECTED]">Bernhard Huber</a>
> +     * @version    CVS $Id$
> +     */
> +    public static class ElementAttributeMatching {
> +        /**
> +         * Regular expression of including patterns
> +         *
> +         */
> +        protected Pattern includeNameRE;
> +        /**
> +         * Regular expression of excluding patterns
> +         *
> +         */
> +        protected Pattern excludeNameRE;
> +
> +
> +        /**
> +         *Constructor for the ElementAttributeMatching object
> +         *
> +         * @param  includeName            Description of Parameter
> +         * @param  excludeName            Description of Parameter
> +         * @exception  PatternSyntaxException  Description of Exception
> +         */
> +        public ElementAttributeMatching(String includeName, String
> excludeName) throws PatternSyntaxException {
> +            includeNameRE = Pattern.compile(includeName,
> Pattern.CASE_INSENSITIVE);
> +            excludeNameRE = Pattern.compile(excludeName,
> Pattern.CASE_INSENSITIVE);
> +        }
> +
> +
> +        /**
> +         * Return true iff element_name attr_name pair is not matched by
> exclude-name,
> +         * but is matched by include-name
> +         * @param  element_name
> +         * @param  attr_name
> +         * @param value TODO
> +         *
> +         * @return               boolean true iff value of attribute_name
> should get rewritten, else
> +         *   false.
> +         */
> +        public boolean matchesElementAttribute(String element_name,
> String attr_name, String value) {
> +            String element_attr_name =
> canonicalizeElementAttribute(element_name, attr_name, value);
> +
> +            if (excludeNameRE != null && includeNameRE != null) {
> +                return
> !matchesExcludesElementAttribute(element_attr_name) &&
> +
> matchesIncludesElementAttribute(element_attr_name);
> +            } else {
> +                return false;
> +            }
> +        }
> +
> +
> +        /**
> +         * Build from elementname, and attribute name a single string.
> +         * <p>
> +         *   String concatenated <code>element name + "/@" + attribute
> name</code>
> +         *   is matched against the include and excluding patterns.
> +         * </p>
> +         * @param  element_name  Description of Parameter
> +         * @param  attr_name     Description of Parameter
> +         * @param value The value
> +         *
> +         * @return               Description of the Returned Value
> +         */
> +        private String canonicalizeElementAttribute(String element_name,
> String attr_name, String value) {
> +            return element_name + "/@" + attr_name + "=" + value;
> +        }
> +
> +
> +        /**
> +         * Return true iff element_name attr_name pair is matched by
> exclude-name.
> +         *
> +         * @param  element_attr_name
> +         * @return                    boolean true iff exclude-name
> matches element_name, attr_name, else
> +         *   false.
> +         */
> +        private boolean matchesExcludesElementAttribute(String
> element_attr_name) {
> +            boolean match =
> excludeNameRE.matcher(element_attr_name).lookingAt();
> +            return match;
> +        }
> +
> +
> +        /**
> +         * Return true iff element_name attr_name pair is matched by
> include-name.
> +         *
> +         * @param  element_attr_name
> +         * @return                    boolean true iff include-name
> matches element_name, attr_name, else
> +         *   false.
> +         */
> +        private boolean matchesIncludesElementAttribute(String
> element_attr_name) {
> +            boolean match =
> includeNameRE.matcher(element_attr_name).lookingAt();
> +            return match;
> +        }
>      }
>  }
>
>
>
>

Reply via email to