Author: giacomo Date: Mon Nov 22 23:55:14 2004 New Revision: 106285 Modified: cocoon/branches/BRANCH_2_1_X/src/documentation/xdocs/userdocs/transformers/encodeurl-transformer.xml cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/EncodeURLTransformer.java Log: add value to pattern, too
Modified: cocoon/branches/BRANCH_2_1_X/src/documentation/xdocs/userdocs/transformers/encodeurl-transformer.xml Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/documentation/xdocs/userdocs/transformers/encodeurl-transformer.xml?view=diff&rev=106285&p1=cocoon/branches/BRANCH_2_1_X/src/documentation/xdocs/userdocs/transformers/encodeurl-transformer.xml&r1=106284&p2=cocoon/branches/BRANCH_2_1_X/src/documentation/xdocs/userdocs/transformers/encodeurl-transformer.xml&r2=106285 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/documentation/xdocs/userdocs/transformers/encodeurl-transformer.xml (original) +++ cocoon/branches/BRANCH_2_1_X/src/documentation/xdocs/userdocs/transformers/encodeurl-transformer.xml Mon Nov 22 23:55:14 2004 @@ -42,9 +42,10 @@ </p> <p> You can specify which attributes hold URL values in order to restrict - URL rewriting to specific attributes only. In the current implementation + URL rewriting to specific attributes and values only. In the current implementation you specify include, and exclude patterns as regular expressions, concatting - element-name + "/@" + attribute-name. + element-name-regexp + "/@" + attribute-name-regexp [ + "=" + attribute-value-regexp ] + whereas the part in brackets [] are optional. </p> <p> The EncodeURLTransformer has several configuration options. These options @@ -52,9 +53,10 @@ </p> <dl> <dt>include-name</dt> - <dd>RE pattern for including attributes from encode URL rewriting, + <dd>RE pattern for including attributes for encode URL rewriting, The attribute values are encoded, if an - expressions of the form <code>element-name/@attribute-name</code> + expressions of the form + <code>element-name-regexp/@attribute-name-regexp[=attribute-value-regexp]</code> matches. <br/> By default <code>include-name</code> is defined as @@ -63,7 +65,8 @@ <dt>exclude-name</dt> <dd>RE pattern for excluding attributes from encode URL rewriting, The attribute values are not encoded, if an - expressions of the form <code>element-name/@attribute-name</code> + expressions of the form + <code>element-name-regexp/@attribute-name-regexp[=attribute-value-regexp]</code> matches. <br/> By default <code>exclude-name</code> is defined as @@ -91,7 +94,7 @@ src="org.apache.cocoon.transformation.EncodeURLTransformer"> <!-- default configuration, explicitly defined --> <include-name>.*/@href|.*/@action|frame/@src</include-name> - <exclude-name>img/@src</exclude-name> + <exclude-name>img/@src|(a/@href|iframe/@src)=.*adserver</exclude-name> </map:transformer> ... ]]></source> Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/EncodeURLTransformer.java Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/EncodeURLTransformer.java?view=diff&rev=106285&p1=cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/EncodeURLTransformer.java&r1=106284&p2=cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/EncodeURLTransformer.java&r2=106285 ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/EncodeURLTransformer.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/transformation/EncodeURLTransformer.java Mon Nov 22 23:55:14 2004 @@ -75,7 +75,7 @@ * ... * <map:transformer type="encodeURL" * src="org.apache.cocoon.optional.transformation.EncodeURLTransformer"> - * <exclude-name>img/@src</exclude-name> + * <exclude-name>img/@src|a/@href=.&asterik;adserver</exclude-name> * <include-name>.&asterik;/@href|.&asterik;/@src|.&asterik;/@action</include-name> * </map:transformer> * ... @@ -266,7 +266,7 @@ String value = new_attributes.getValue(i); - if (elementAttributeMatching.matchesElementAttribute(lname, attr_lname)) { + if (elementAttributeMatching.matchesElementAttribute(lname, attr_lname, value)) { // don't use simply this.response.encodeURL(value) // but be more smart about the url encoding final String new_value = this.encodeURL(value); @@ -353,14 +353,15 @@ /** * 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 element_attr_name = canonicalizeElementAttribute(element_name, attr_name); + 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) && @@ -377,13 +378,14 @@ * 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) { - return element_name + "/@" + attr_name; + private String canonicalizeElementAttribute(String element_name, String attr_name, String value) { + return element_name + "/@" + attr_name + "=" + value; }