Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id F076C200D41 for ; Wed, 8 Nov 2017 02:38:48 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id EF1CD160BED; Wed, 8 Nov 2017 01:38:48 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 1A582160C00 for ; Wed, 8 Nov 2017 02:38:47 +0100 (CET) Received: (qmail 95500 invoked by uid 500); 8 Nov 2017 01:38:47 -0000 Mailing-List: contact commits-help@streams.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@streams.apache.org Delivered-To: mailing list commits@streams.apache.org Received: (qmail 95491 invoked by uid 99); 8 Nov 2017 01:38:47 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 08 Nov 2017 01:38:47 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 5B67C1A0F3C for ; Wed, 8 Nov 2017 01:38:46 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -99.202 X-Spam-Level: X-Spam-Status: No, score=-99.202 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id fI7AA1EA4xYy for ; Wed, 8 Nov 2017 01:38:42 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 3193565FC5 for ; Wed, 8 Nov 2017 01:38:05 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 70F53E259D for ; Wed, 8 Nov 2017 01:38:03 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 41B32241BF for ; Wed, 8 Nov 2017 01:38:01 +0000 (UTC) Date: Wed, 8 Nov 2017 01:38:01 +0000 (UTC) From: "ASF GitHub Bot (JIRA)" To: commits@streams.incubator.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (STREAMS-549) Bug in PropertyUtil.mergeProperties MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 08 Nov 2017 01:38:49 -0000 [ https://issues.apache.org/jira/browse/STREAMS-549?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16243241#comment-16243241 ] ASF GitHub Bot commented on STREAMS-549: ---------------------------------------- steveblackmon closed pull request #403: STREAMS-549: Bug in PropertyUtil.mergeProperties URL: https://github.com/apache/streams/pull/403 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/streams-util/src/main/java/org/apache/streams/util/PropertyUtil.java b/streams-util/src/main/java/org/apache/streams/util/PropertyUtil.java index 93ff76af6..63678f68b 100644 --- a/streams-util/src/main/java/org/apache/streams/util/PropertyUtil.java +++ b/streams-util/src/main/java/org/apache/streams/util/PropertyUtil.java @@ -128,6 +128,10 @@ public static ObjectNode mergeProperties(ObjectNode content, ObjectNode parent) if( merged.get(fieldId) != null ) { if( merged.get(fieldId).getNodeType().equals(JsonNodeType.OBJECT)) { merged.put(fieldId, mergeProperties(field.getValue().deepCopy(), (ObjectNode)merged.get(fieldId))); + } else if ( merged.get(fieldId).getNodeType().equals(JsonNodeType.ARRAY)) { + merged.put(fieldId, mergeArrays(((ArrayNode)field.getValue()), ((ArrayNode)merged.get(fieldId)))); + } else { + merged.put(fieldId, content.get(fieldId)); } } else { merged.put(fieldId, content.get(fieldId)); @@ -136,4 +140,14 @@ public static ObjectNode mergeProperties(ObjectNode content, ObjectNode parent) return merged; } + /** + * merge two arrays. + * @param content ArrayNode + * @param parent ArrayNode + * @return merged ArrayNode + */ + private static ArrayNode mergeArrays(ArrayNode content, ArrayNode parent) { + return parent.deepCopy().addAll(content); + } + } diff --git a/streams-util/src/test/java/org/apache/streams/util/schema/test/PropertyUtilTest.java b/streams-util/src/test/java/org/apache/streams/util/test/PropertyUtilTest.java similarity index 84% rename from streams-util/src/test/java/org/apache/streams/util/schema/test/PropertyUtilTest.java rename to streams-util/src/test/java/org/apache/streams/util/test/PropertyUtilTest.java index 062d719e1..fdba3f029 100644 --- a/streams-util/src/test/java/org/apache/streams/util/schema/test/PropertyUtilTest.java +++ b/streams-util/src/test/java/org/apache/streams/util/test/PropertyUtilTest.java @@ -16,13 +16,14 @@ * under the License. */ -package org.apache.streams.util.schema.test; +package org.apache.streams.util.test; import org.apache.streams.util.PropertyUtil; import org.apache.streams.util.schema.SchemaUtil; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import org.junit.Test; @@ -56,13 +57,19 @@ public void testUnflattenObjectNode() throws Exception { public void testMergeProperties() throws Exception { ObjectMapper mapper = new ObjectMapper(); ObjectNode left = mapper.createObjectNode(); - left.put("objectType", "post").putObject("actor").putObject("author").put("id", "authorId"); + left.put("objectType", "post"); + left.putArray("links").add("link1"); + left.putObject("actor").put("id", "leftId").putObject("author").put("id", "authorId"); ObjectNode right = mapper.createObjectNode(); - right.putObject("actor").put("id", "actorId").putObject("image").put("url", "http://url.com"); + right.putArray("links").add("link2"); + right.putObject("actor").put("id", "rightId").putObject("image").put("url", "http://url.com"); JsonNode merged = PropertyUtil.mergeProperties(left, right); assert( merged.has("objectType")); assert( merged.has("actor")); + assert( merged.has("links")); + assert( (merged.get("links")).size() == 2); assert( merged.get("actor").has("id")); + assert( merged.get("actor").get("id").asText().equals("leftId")); assert( merged.get("actor").has("author")); assert( merged.get("actor").get("author").has("id")); assert( merged.get("actor").has("image")); ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: users@infra.apache.org > Bug in PropertyUtil.mergeProperties > ----------------------------------- > > Key: STREAMS-549 > URL: https://issues.apache.org/jira/browse/STREAMS-549 > Project: Streams > Issue Type: Bug > Reporter: Steve Blackmon > Assignee: Steve Blackmon > Original Estimate: 4h > Remaining Estimate: 4h > > ValueNodes should over-write even when present on the fallback -- This message was sent by Atlassian JIRA (v6.4.14#64029)