You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by kr...@apache.org on 2018/11/15 13:48:41 UTC
knox git commit: KNOX-1602 - JsonFilterReader should handle strings,
numbers, booleans, and null at root
Repository: knox
Updated Branches:
refs/heads/master 986172bb5 -> 1c887df8e
KNOX-1602 - JsonFilterReader should handle strings, numbers, booleans, and null at root
Signed-off-by: Kevin Risden <kr...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/1c887df8
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/1c887df8
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/1c887df8
Branch: refs/heads/master
Commit: 1c887df8e303b9267a879e58b86c4908a0b26225
Parents: 986172b
Author: Kevin Risden <kr...@apache.org>
Authored: Wed Nov 14 17:26:32 2018 -0500
Committer: Kevin Risden <kr...@apache.org>
Committed: Wed Nov 14 17:26:36 2018 -0500
----------------------------------------------------------------------
.../rewrite/impl/json/JsonFilterReader.java | 16 ++++++++
.../rewrite/impl/json/JsonFilterReaderTest.java | 42 ++++++++++++++++++++
2 files changed, 58 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/1c887df8/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReader.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReader.java b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReader.java
index 2e47a58..ecc7925 100644
--- a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReader.java
+++ b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReader.java
@@ -305,6 +305,10 @@ class JsonFilterReader extends Reader {
Level child;
Level parent;
String value = null;
+ if(stack.isEmpty()) {
+ generator.writeString( parser.getText() );
+ return;
+ }
parent = stack.peek();
if( parent.isArray() ) {
ArrayNode array = (ArrayNode)parent.node;
@@ -337,6 +341,10 @@ class JsonFilterReader extends Reader {
private void processValueNumber() throws IOException {
Level child;
Level parent;
+ if(stack.isEmpty()) {
+ processedUnbufferedValueNumber();
+ return;
+ }
parent = stack.peek();
if( parent.isArray() ) {
if( bufferingLevel != null ) {
@@ -430,6 +438,10 @@ class JsonFilterReader extends Reader {
private void processValueBoolean() throws IOException {
Level child;
Level parent;
+ if(stack.isEmpty()) {
+ generator.writeBoolean(parser.getBooleanValue());
+ return;
+ }
parent = stack.peek();
if( parent.isArray() ) {
((ArrayNode)parent.node ).add( parser.getBooleanValue() );
@@ -453,6 +465,10 @@ class JsonFilterReader extends Reader {
private void processValueNull() throws IOException {
Level child;
+ if(stack.isEmpty()) {
+ generator.writeNull();
+ return;
+ }
Level parent = stack.peek();
if( parent.isArray() ) {
((ArrayNode)parent.node ).addNull();
http://git-wip-us.apache.org/repos/asf/knox/blob/1c887df8/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReaderTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReaderTest.java b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReaderTest.java
index b92363a..25488a0 100644
--- a/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReaderTest.java
+++ b/gateway-provider-rewrite/src/test/java/org/apache/knox/gateway/filter/rewrite/impl/json/JsonFilterReaderTest.java
@@ -33,6 +33,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -56,6 +59,45 @@ public class JsonFilterReaderTest {
assertThat( output, containsString( "\"startedTime\":1399975176760}" ) );
}
+ @Test
+ public void testString() throws IOException {
+ String inputJson = "\"abc\"";
+ StringReader inputReader = new StringReader( inputJson );
+ JsonFilterReader filterReader = new TestJsonFilterReader( inputReader, null );
+ String outputJson = new String( IOUtils.toCharArray( filterReader ) );
+ JsonAssert.with( outputJson ).assertThat( "$", is( "abc" ) );
+ }
+
+ @Test
+ public void testNumber() throws IOException {
+ int num = new Random().nextInt();
+ String inputJson = String.valueOf(num);
+ StringReader inputReader = new StringReader( inputJson );
+ JsonFilterReader filterReader = new TestJsonFilterReader( inputReader, null );
+ String outputJson = new String( IOUtils.toCharArray( filterReader ) );
+ JsonAssert.with( outputJson ).assertThat( "$", is( num ) );
+ }
+
+ @Test
+ public void testBoolean() throws IOException {
+ List<Boolean> booleans = Arrays.asList(true, false);
+ for(boolean bool : booleans) {
+ String inputJson = String.valueOf(bool);
+ StringReader inputReader = new StringReader(inputJson);
+ JsonFilterReader filterReader = new TestJsonFilterReader(inputReader, null);
+ String outputJson = new String(IOUtils.toCharArray(filterReader));
+ JsonAssert.with(outputJson).assertThat("$", is(bool));
+ }
+ }
+
+ @Test
+ public void testNull() throws IOException {
+ String inputJson = "null";
+ StringReader inputReader = new StringReader( inputJson );
+ JsonFilterReader filterReader = new TestJsonFilterReader( inputReader, null );
+ String outputJson = new String( IOUtils.toCharArray( filterReader ) );
+ assertThat(inputJson, is(outputJson));
+ }
@Test
public void testSimple() throws IOException {