You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by km...@apache.org on 2015/11/16 16:29:48 UTC
knox git commit: KNOX-623: Gateway provider rewriter doesn't support
boolean attributes in HTML.
Repository: knox
Updated Branches:
refs/heads/master 4124b556b -> e7d7516b0
KNOX-623: Gateway provider rewriter doesn't support boolean attributes in HTML.
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/e7d7516b
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/e7d7516b
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/e7d7516b
Branch: refs/heads/master
Commit: e7d7516b0e25e6b4e1a3c1598b5cd411f2f84504
Parents: 4124b55
Author: Kevin Minder <ke...@hortonworks.com>
Authored: Mon Nov 16 10:29:36 2015 -0500
Committer: Kevin Minder <ke...@hortonworks.com>
Committed: Mon Nov 16 10:29:36 2015 -0500
----------------------------------------------------------------------
CHANGES | 1 +
.../rewrite/impl/html/HtmlFilterReaderBase.java | 32 +++++++++++---------
.../impl/html/HtmlFilterReaderBaseTest.java | 19 ++++++++++++
3 files changed, 37 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/e7d7516b/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 85ef05f..466bd46 100644
--- a/CHANGES
+++ b/CHANGES
@@ -31,6 +31,7 @@ Release Notes - Apache Knox - Version 0.7.0
* [KNOX-614] - Incorrect URI template expansion with {**} query params #fragments
* [KNOX-616] - XmlUrlRewriteStreamFilter unscapes escaped special characters
* [KNOX-394] - Request and response URLs must be parsed as literals not templates
+ * [KNOX-623] - Gateway provider rewriter doesn't support boolean attributes in HTML.
------------------------------------------------------------------------------
Release Notes - Apache Knox - Version 0.6.0
http://git-wip-us.apache.org/repos/asf/knox/blob/e7d7516b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
index e2cf9be..75a27d6 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBase.java
@@ -171,23 +171,25 @@ public abstract class HtmlFilterReaderBase extends Reader implements UrlRewriteF
}
private void processAttribute( Attribute attribute ) {
- String inputValue = attribute.getValue();
- String outputValue = inputValue;
- try {
- Level tag = stack.peek();
- outputValue = filterAttribute( tag.getQName(), tag.getQName( attribute.getName() ), inputValue, null );
- if( outputValue == null ) {
- outputValue = inputValue;
- }
- } catch ( Exception e ) {
- LOG.failedToFilterAttribute( attribute.getName(), e );
- }
writer.write( " " );
writer.write( attribute.getName() );
- writer.write( "=" );
- writer.write( attribute.getQuoteChar() );
- writer.write( outputValue );
- writer.write( attribute.getQuoteChar() );
+ if(attribute.hasValue()) {
+ String inputValue = attribute.getValue();
+ String outputValue = inputValue;
+ try {
+ Level tag = stack.peek();
+ outputValue = filterAttribute( tag.getQName(), tag.getQName( attribute.getName() ), inputValue, null );
+ if( outputValue == null ) {
+ outputValue = inputValue;
+ }
+ } catch ( Exception e ) {
+ LOG.failedToFilterAttribute( attribute.getName(), e );
+ }
+ writer.write( "=" );
+ writer.write( attribute.getQuoteChar() );
+ writer.write( outputValue );
+ writer.write( attribute.getQuoteChar() );
+ }
}
private void processText( Segment segment ) {
http://git-wip-us.apache.org/repos/asf/knox/blob/e7d7516b/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBaseTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBaseTest.java b/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBaseTest.java
index 2150cca..c790e89 100644
--- a/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBaseTest.java
+++ b/gateway-provider-rewrite/src/test/java/org/apache/hadoop/gateway/filter/rewrite/impl/html/HtmlFilterReaderBaseTest.java
@@ -66,6 +66,7 @@ import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
+import static org.junit.Assert.assertEquals;
import static org.xmlmatchers.XmlMatchers.hasXPath;
import static org.xmlmatchers.transform.XmlConverters.the;
@@ -206,6 +207,24 @@ public class HtmlFilterReaderBaseTest {
}
@Test
+ public void testSimpleBooleanAttribute() throws IOException, ParserConfigurationException {
+ String inputXml = "<root name/>";
+ StringReader inputReader = new StringReader(inputXml);
+ HtmlFilterReaderBase filterReader = new NoopXmlFilterReader(inputReader);
+ String outputHtml = new String(IOUtils.toCharArray(filterReader));
+ assertEquals(inputXml, outputHtml);
+ }
+
+ @Test
+ public void testComplexBooleanAttribute() throws IOException, ParserConfigurationException {
+ String inputXml = "<root boolean non-boolean='value' empty=''/>";
+ StringReader inputReader = new StringReader(inputXml);
+ HtmlFilterReaderBase filterReader = new NoopXmlFilterReader(inputReader);
+ String outputHtml = new String(IOUtils.toCharArray(filterReader));
+ assertEquals(inputXml, outputHtml);
+ }
+
+ @Test
public void testMappedText() throws IOException, ParserConfigurationException {
Map<String,String> map = new HashMap<String,String>();
map.put( "input-text", "output-text" );