This is an automated email from the ASF dual-hosted git repository. elsloo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-trafficcontrol.git
commit a7a22ed7db1ba52972ea2aeb0ed423cf2a2dde82 Author: Jesse Rivas <jesse_ri...@comcast.com> AuthorDate: Tue Apr 24 15:51:54 2018 -0600 updated PR #736 to use JsonUtils instead of org.json --- .../traffic_router/core/config/ConfigHandler.java | 22 +++--- .../traffic_router/core/ds/DeliveryService.java | 4 +- .../traffic_router/core/loc/AnonymousIp.java | 45 ++++++------ .../core/loc/AnonymousIpWhitelist.java | 14 ++-- .../core/loc/AnonymousIpWhitelistTest.java | 79 ++++++++++++---------- 5 files changed, 90 insertions(+), 74 deletions(-) diff --git a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/config/ConfigHandler.java b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/config/ConfigHandler.java index aa55f0a..2c33409 100644 --- a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/config/ConfigHandler.java +++ b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/config/ConfigHandler.java @@ -562,14 +562,14 @@ public class ConfigHandler { } } - private void parseAnonymousIpConfig(final JSONObject jo) throws JSONException { + private void parseAnonymousIpConfig(final JsonNode jo) throws JsonUtilsException { final String anonymousPollingUrl = "anonymousip.polling.url"; final String anonymousPollingInterval = "anonymousip.polling.interval"; final String anonymousPolicyConfiguration = "anonymousip.policy.configuration"; - - final JSONObject config = jo.getJSONObject("config"); - final String configUrl = config.optString(anonymousPolicyConfiguration, null); - final String databaseUrl = config.optString(anonymousPollingUrl, null); + + final JsonNode config = JsonUtils.getJsonNode(jo,"config"); + final String configUrl = JsonUtils.optString(config, anonymousPolicyConfiguration, null); + final String databaseUrl = JsonUtils.optString(config, anonymousPollingUrl, null); if (configUrl == null) { LOGGER.info(anonymousPolicyConfiguration + " not configured; stopping service updater and disabling feature"); @@ -586,11 +586,13 @@ public class ConfigHandler { } if (jo.has(deliveryServicesKey)) { - final JSONObject dss = jo.getJSONObject(deliveryServicesKey); - for (final String ds : JSONObject.getNames(dss)) { - if (dss.getJSONObject(ds).has("anonymousBlockingEnabled") && - dss.getJSONObject(ds).getString("anonymousBlockingEnabled").equals("true")) { - final long interval = config.optLong(anonymousPollingInterval); + final JsonNode dss = JsonUtils.getJsonNode(jo, deliveryServicesKey); + final Iterator<String> dsNames = dss.fieldNames(); + while (dsNames.hasNext()) { + final String ds = dsNames.next(); + final JsonNode dsNode = JsonUtils.getJsonNode(dss, ds); + if (JsonUtils.optString(dsNode, "anonymousBlockingEnabled").equals("true")) { + final long interval = JsonUtils.optLong(config, anonymousPollingInterval); getAnonymousIpConfigUpdater().setDataBaseURL(configUrl, interval); getAnonymousIpDatabaseUpdater().setDataBaseURL(databaseUrl, interval); AnonymousIp.getCurrentConfig().enabled = true; diff --git a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/ds/DeliveryService.java b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/ds/DeliveryService.java index 41637b3..441378c 100644 --- a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/ds/DeliveryService.java +++ b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/ds/DeliveryService.java @@ -33,8 +33,6 @@ import java.util.Set; import java.util.Iterator; import java.util.concurrent.atomic.AtomicInteger; -import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtils; -import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtilsException; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.JsonNode; import org.apache.log4j.Logger; @@ -49,6 +47,8 @@ import com.comcast.cdn.traffic_control.traffic_router.core.request.HTTPRequest; import com.comcast.cdn.traffic_control.traffic_router.core.router.StatTracker.Track; import com.comcast.cdn.traffic_control.traffic_router.core.router.StatTracker.Track.ResultType; import com.comcast.cdn.traffic_control.traffic_router.core.router.StatTracker.Track.ResultDetails; +import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtils; +import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtilsException; import com.comcast.cdn.traffic_control.traffic_router.core.util.StringProtector; @SuppressWarnings({"PMD.TooManyFields","PMD.CyclomaticComplexity", "PMD.AvoidDuplicateLiterals"}) diff --git a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIp.java b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIp.java index 6de381f..26f8fe9 100644 --- a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIp.java +++ b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIp.java @@ -15,15 +15,15 @@ package com.comcast.cdn.traffic_control.traffic_router.core.loc; import java.io.File; -import java.io.FileReader; import java.net.InetAddress; import java.net.MalformedURLException; import java.net.URL; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.net.InetAddresses; +import com.maxmind.geoip2.model.AnonymousIpResponse; import org.apache.log4j.Logger; -import org.apache.wicket.ajax.json.JSONException; -import org.apache.wicket.ajax.json.JSONObject; -import org.apache.wicket.ajax.json.JSONTokener; import com.comcast.cdn.traffic_control.traffic_router.core.cache.Cache; import com.comcast.cdn.traffic_control.traffic_router.core.ds.DeliveryService; @@ -33,8 +33,8 @@ import com.comcast.cdn.traffic_control.traffic_router.core.router.HTTPRouteResul import com.comcast.cdn.traffic_control.traffic_router.core.router.StatTracker.Track; import com.comcast.cdn.traffic_control.traffic_router.core.router.StatTracker.Track.ResultType; import com.comcast.cdn.traffic_control.traffic_router.core.router.TrafficRouter; -import com.google.common.net.InetAddresses; -import com.maxmind.geoip2.model.AnonymousIpResponse; +import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtils; +import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtilsException; public final class AnonymousIp { @@ -91,22 +91,22 @@ public final class AnonymousIp { return ipv6Whitelist; } - private static void parseIPv4Whitelist(final JSONObject config, final AnonymousIp anonymousIp) throws JSONException { - if (config.optJSONArray("ip4Whitelist") != null) { + private static void parseIPv4Whitelist(final JsonNode config, final AnonymousIp anonymousIp) throws JsonUtilsException { + if (config.has("ip4Whitelist")) { try { anonymousIp.ipv4Whitelist = new AnonymousIpWhitelist(); - anonymousIp.ipv4Whitelist.init(config.optJSONArray("ip4Whitelist")); + anonymousIp.ipv4Whitelist.init(JsonUtils.getJsonNode(config, "ip4Whitelist")); } catch (NetworkNodeException e) { LOGGER.error("Anonymous Ip ERR: Network node err ", e); } } } - private static void parseIPv6Whitelist(final JSONObject config, final AnonymousIp anonymousIp) throws JSONException { - if (config.optJSONArray("ip6Whitelist") != null) { + private static void parseIPv6Whitelist(final JsonNode config, final AnonymousIp anonymousIp) throws JsonUtilsException { + if (config.has("ip6Whitelist")) { try { - anonymousIp.ipv6Whitelist = new AnonymousIpWhitelist(); - anonymousIp.ipv6Whitelist.init(config.optJSONArray("ip6Whitelist")); + anonymousIp.ipv4Whitelist = new AnonymousIpWhitelist(); + anonymousIp.ipv4Whitelist.init(JsonUtils.getJsonNode(config, "ip6Whitelist")); } catch (NetworkNodeException e) { LOGGER.error("Anonymous Ip ERR: Network node err ", e); } @@ -114,15 +114,15 @@ public final class AnonymousIp { } @SuppressWarnings({ "PMD.NPathComplexity", "PMD.CyclomaticComplexity" }) - private static AnonymousIp parseConfigJson(final JSONObject config) { + private static AnonymousIp parseConfigJson(final JsonNode config) { final AnonymousIp anonymousIp = new AnonymousIp(); try { - final JSONObject blockingTypes = config.getJSONObject("anonymousIp"); + final JsonNode blockingTypes = JsonUtils.getJsonNode(config, "anonymousIp"); - anonymousIp.blockAnonymousIp = blockingTypes.getBoolean("blockAnonymousVPN"); - anonymousIp.blockHostingProvider = blockingTypes.getBoolean("blockHostingProvider"); - anonymousIp.blockPublicProxy = blockingTypes.getBoolean("blockPublicProxy"); - anonymousIp.blockTorExitNode = blockingTypes.getBoolean("blockTorExitNode"); + anonymousIp.blockAnonymousIp = JsonUtils.getBoolean(blockingTypes, "blockAnonymousVPN"); + anonymousIp.blockHostingProvider = JsonUtils.getBoolean(blockingTypes, "blockHostingProvider"); + anonymousIp.blockPublicProxy = JsonUtils.getBoolean(blockingTypes, "blockPublicProxy"); + anonymousIp.blockTorExitNode = JsonUtils.getBoolean(blockingTypes, "blockTorExitNode"); anonymousIp.enabled = AnonymousIp.currentConfig.enabled; @@ -130,7 +130,7 @@ public final class AnonymousIp { parseIPv6Whitelist(config, anonymousIp); if (config.has("redirectUrl")) { - anonymousIp.redirectUrl = config.getString("redirectUrl"); + anonymousIp.redirectUrl = JsonUtils.getString(config, "redirectUrl"); } return anonymousIp; @@ -143,9 +143,10 @@ public final class AnonymousIp { @SuppressWarnings({ "PMD.NPathComplexity" }) public static boolean parseConfigFile(final File f, final boolean verifyOnly) { - JSONObject json = null; + JsonNode json = null; try { - json = new JSONObject(new JSONTokener(new FileReader(f))); + final ObjectMapper mapper = new ObjectMapper(); + json = mapper.readTree(f); } catch (Exception e) { LOGGER.error("AnonymousIp ERR: json file exception " + f, e); return false; diff --git a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIpWhitelist.java b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIpWhitelist.java index 0aec389..b05aaaf 100644 --- a/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIpWhitelist.java +++ b/traffic_router/core/src/main/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIpWhitelist.java @@ -15,8 +15,8 @@ package com.comcast.cdn.traffic_control.traffic_router.core.loc; import org.apache.log4j.Logger; -import org.apache.wicket.ajax.json.JSONArray; -import org.apache.wicket.ajax.json.JSONException; +import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtilsException; +import com.fasterxml.jackson.databind.JsonNode; public class AnonymousIpWhitelist { private static final Logger LOGGER = Logger.getLogger(AnonymousIpWhitelist.class); @@ -27,10 +27,12 @@ public class AnonymousIpWhitelist { whitelist = new NetworkNode.SuperNode(); } - public void init(final JSONArray config) throws JSONException, NetworkNodeException { - for (int i = 0; i < config.length(); i++) { - final String network = config.getString(i); - this.add(network); + public void init(final JsonNode config) throws JsonUtilsException, NetworkNodeException { + if (config.isArray()) { + for (final JsonNode node : config) { + final String network = node.asText(); + this.add(network); + } } } diff --git a/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIpWhitelistTest.java b/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIpWhitelistTest.java index eaf6af3..2a80bdc 100644 --- a/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIpWhitelistTest.java +++ b/traffic_router/core/src/test/java/com/comcast/cdn/traffic_control/traffic_router/core/loc/AnonymousIpWhitelistTest.java @@ -17,27 +17,27 @@ package com.comcast.cdn.traffic_control.traffic_router.core.loc; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ThreadLocalRandom; - -import org.apache.wicket.ajax.json.JSONArray; -import org.apache.wicket.ajax.json.JSONException; +import com.comcast.cdn.traffic_control.traffic_router.core.util.JsonUtilsException; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.Before; import org.junit.Test; +import java.io.IOException; + public class AnonymousIpWhitelistTest { AnonymousIpWhitelist ip4whitelist; AnonymousIpWhitelist ip6whitelist; @Before - public void setup() throws JSONException, NetworkNodeException { + public void setup() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); + ip4whitelist = new AnonymousIpWhitelist(); - ip4whitelist.init(new JSONArray("[\"192.168.30.0/24\", \"10.0.2.0/24\", \"10.0.0.0/16\"]")); + ip4whitelist.init(mapper.readTree("[\"192.168.30.0/24\", \"10.0.2.0/24\", \"10.0.0.0/16\"]")); ip6whitelist = new AnonymousIpWhitelist(); - ip6whitelist.init(new JSONArray("[\"::1/32\", \"2001::/64\"]")); + ip6whitelist.init(mapper.readTree("[\"::1/32\", \"2001::/64\"]")); } @Test @@ -104,8 +104,10 @@ public class AnonymousIpWhitelistTest { } @Test - public void testWhitelistCreationLeafFirst() throws JSONException, NetworkNodeException { - ip4whitelist.init(new JSONArray("[\"10.0.2.0/24\", \"10.0.0.0/16\"]")); + public void testWhitelistCreationLeafFirst() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); + + ip4whitelist.init(mapper.readTree("[\"10.0.2.0/24\", \"10.0.0.0/16\"]")); assertThat(ip4whitelist.contains("10.0.2.1"), equalTo(true)); @@ -113,8 +115,10 @@ public class AnonymousIpWhitelistTest { } @Test - public void testWhitelistCreationParentFirst() throws JSONException, NetworkNodeException { - ip4whitelist.init(new JSONArray("[\"10.0.0.0/16\"], \"10.0.2.0/24\"")); + public void testWhitelistCreationParentFirst() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); + + ip4whitelist.init(mapper.readTree("[\"10.0.0.0/16\"], \"10.0.2.0/24\"")); assertThat(ip4whitelist.contains("10.0.2.1"), equalTo(true)); @@ -123,52 +127,59 @@ public class AnonymousIpWhitelistTest { /* IPv4 validation */ - @Test(expected = JSONException.class) - public void badIPv4Input1() throws JSONException, NetworkNodeException { + @Test(expected = IOException.class) + public void badIPv4Input1() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); AnonymousIpWhitelist badlist = new AnonymousIpWhitelist(); - badlist.init(new JSONArray("[\"\"192.168.1/24\"]")); + badlist.init(mapper.readTree("[\"\"192.168.1/24\"]")); assertThat(badlist.contains("192.168.0.1"), equalTo(false)); } - @Test(expected = JSONException.class) - public void badIPv4Input2() throws JSONException, NetworkNodeException { + @Test(expected = IOException.class) + public void badIPv4Input2() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); AnonymousIpWhitelist badlist = new AnonymousIpWhitelist(); - badlist.init(new JSONArray("[\"\"256.168.0.1/24\"]")); + badlist.init(mapper.readTree("[\"\"256.168.0.1/24\"]")); assertThat(badlist.contains("192.168.0.1"), equalTo(false)); } - @Test(expected = JSONException.class) - public void badNetmaskInput1() throws JSONException, NetworkNodeException { + @Test(expected = IOException.class) + public void badNetmaskInput1() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); AnonymousIpWhitelist badlist = new AnonymousIpWhitelist(); - badlist.init(new JSONArray("[\"\"192.168.0.1/33\"]")); + badlist.init(mapper.readTree("[\"\"192.168.0.1/33\"]")); assertThat(badlist.contains("192.168.0.1"), equalTo(false)); } - @Test(expected = JSONException.class) - public void badNetmaskInput2() throws JSONException, NetworkNodeException { + @Test(expected = IOException.class) + public void badNetmaskInput2() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); AnonymousIpWhitelist badlist = new AnonymousIpWhitelist(); - badlist.init(new JSONArray("[\"\"::1/129\"]")); + badlist.init(mapper.readTree("[\"\"::1/129\"]")); assertThat(badlist.contains("::1"), equalTo(false)); } - @Test(expected = JSONException.class) - public void badNetmaskInput3() throws JSONException, NetworkNodeException { + @Test(expected = IOException.class) + public void badNetmaskInput3() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); AnonymousIpWhitelist badlist = new AnonymousIpWhitelist(); - badlist.init(new JSONArray("[\"\"192.168.0.1/-1\"]")); + badlist.init(mapper.readTree("[\"\"192.168.0.1/-1\"]")); assertThat(badlist.contains("192.168.0.1"), equalTo(false)); } - @Test(expected = JSONException.class) - public void validIPv4Input() throws JSONException, NetworkNodeException { + @Test(expected = IOException.class) + public void validIPv4Input() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); AnonymousIpWhitelist badlist = new AnonymousIpWhitelist(); - badlist.init(new JSONArray("[\"\"192.168.0.1/32\"]")); + badlist.init(mapper.readTree("[\"\"192.168.0.1/32\"]")); assertThat(badlist.contains("192.168.0.1"), equalTo(false)); } - @Test(expected = JSONException.class) - public void validIPv6Input() throws JSONException, NetworkNodeException { + @Test(expected = IOException.class) + public void validIPv6Input() throws IOException, JsonUtilsException, NetworkNodeException { + final ObjectMapper mapper = new ObjectMapper(); AnonymousIpWhitelist badlist = new AnonymousIpWhitelist(); - badlist.init(new JSONArray("[\"\"::1/128\"]")); + badlist.init(mapper.readTree("[\"\"::1/128\"]")); assertThat(badlist.contains("::1"), equalTo(false)); } -- To stop receiving notification emails like this one, please contact els...@apache.org.