KNOX-1441 - Enable spotbugs for static build checking Signed-off-by: Kevin Risden <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/knox/repo Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/5bf7bc5d Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/5bf7bc5d Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/5bf7bc5d Branch: refs/heads/master Commit: 5bf7bc5d01d57481a53c04f6db05e26f42a0e9ca Parents: 16e1b62 Author: Kevin Risden <[email protected]> Authored: Fri Sep 21 09:25:41 2018 -0400 Committer: Kevin Risden <[email protected]> Committed: Mon Sep 24 19:26:40 2018 -0400 ---------------------------------------------------------------------- .travis.yml | 52 ++++++++ .../ambari/AmbariDynamicServiceURLCreator.java | 4 +- .../topology/discovery/ambari/RESTInvoker.java | 19 +-- .../ambari/SparkHistoryUIServiceURLCreator.java | 3 +- .../deploy/HaProviderDeploymentContributor.java | 10 +- .../DefaultIdentityAssertionFilterTest.java | 34 ++--- .../encrypturi/impl/DecryptUriProcessor.java | 11 +- .../apache/knox/gateway/GatewayCommandLine.java | 9 +- .../org/apache/knox/gateway/GatewayServer.java | 16 ++- .../org/apache/knox/gateway/GatewayServlet.java | 35 ++--- .../impl/ApplicationDeploymentContributor.java | 33 ++--- .../filter/BasicAuthChallengeFilter.java | 3 +- .../security/impl/RemoteAliasService.java | 7 +- .../DefaultRemoteConfigurationMonitor.java | 6 +- .../simple/ProviderConfigurationParser.java | 4 +- .../simple/SimpleDescriptorHandler.java | 33 +++-- .../apache/knox/gateway/trace/ErrorHandler.java | 42 ------ .../knox/gateway/trace/KnoxErrorHandler.java | 43 ++++++ .../org/apache/knox/gateway/util/KnoxCLI.java | 65 ++++----- .../gateway/util/ServiceDefinitionsLoader.java | 5 +- .../gateway/rm/dispatch/RMHaBaseDispatcher.java | 13 +- .../service/test/ServiceTestResource.java | 43 +++--- .../hdfs/dispatch/AbstractHdfsHaDispatch.java | 20 +-- .../org/apache/knox/gateway/shell/KnoxSh.java | 14 +- .../knox/gateway/dispatch/DefaultDispatch.java | 24 ++-- .../services/hostmap/FileBasedHostMapper.java | 3 +- .../security/impl/BaseKeystoreService.java | 3 +- .../security/impl/CMFMasterService.java | 5 +- .../main/java/org/apache/knox/test/Console.java | 7 +- .../java/org/apache/knox/test/TestUtils.java | 27 ++-- .../gateway/audit/log4j/audit/Log4jAuditor.java | 2 +- .../impl/DefaultConfigurationInjector.java | 8 +- pom.xml | 133 ++++++++++++------- src/spotbugs-filter.xml | 69 ++++++++++ 34 files changed, 494 insertions(+), 311 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/.travis.yml ---------------------------------------------------------------------- diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..3c18224 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,52 @@ +# Configuration file for Travis continuous integration. +# See https://travis-ci.org/apache/knox +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +language: java +matrix: + fast_finish: true + include: + - env: IMAGE=maven:3-jdk-8 + - env: IMAGE=maven:3-jdk-9 + - env: IMAGE=maven:3-jdk-10 + - env: IMAGE=maven:3-jdk-11 + allow_failures: + - env: IMAGE=maven:3-jdk-9 + - env: IMAGE=maven:3-jdk-10 + - env: IMAGE=maven:3-jdk-11 + +env: + global: + - DOCKERRUN="docker run -it --rm -v $PWD:/src -v $HOME/.m2:/root/.m2 -w /src" +services: + - docker +before_install: + - docker pull $IMAGE +install: + # Print the Maven version, skip tests and javadoc + - $DOCKERRUN $IMAGE mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Djavax.net.ssl.trustStorePassword=changeit -B -V +script: + # Print surefire output to the console instead of files + - unset _JAVA_OPTIONS + - $DOCKERRUN $IMAGE mvn -Dsurefire.useFile=false -Dsurefire.parallel= -Djavax.net.ssl.trustStorePassword=changeit verify +git: + depth: 1000 +sudo: required +cache: + directories: + - $HOME/.m2 +# End .travis.yml http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java ---------------------------------------------------------------------- diff --git a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java index 5f1e8a4..ed53f91 100644 --- a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java +++ b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/AmbariDynamicServiceURLCreator.java @@ -23,13 +23,13 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; - class AmbariDynamicServiceURLCreator implements ServiceURLCreator { static final String MAPPING_CONFIG_OVERRIDE_FILE = "ambari-discovery-url-mappings.xml"; @@ -56,7 +56,7 @@ class AmbariDynamicServiceURLCreator implements ServiceURLCreator { AmbariDynamicServiceURLCreator(AmbariCluster cluster, String mappings) { this.cluster = cluster; - config = new ServiceURLPropertyConfig(new ByteArrayInputStream(mappings.getBytes())); + config = new ServiceURLPropertyConfig(new ByteArrayInputStream(mappings.getBytes(StandardCharsets.UTF_8))); } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/RESTInvoker.java ---------------------------------------------------------------------- diff --git a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/RESTInvoker.java b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/RESTInvoker.java index b51bd1c..4df1c4d 100644 --- a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/RESTInvoker.java +++ b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/RESTInvoker.java @@ -18,23 +18,25 @@ package org.apache.knox.gateway.topology.discovery.ambari; import net.minidev.json.JSONObject; import net.minidev.json.JSONValue; +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.ConnectTimeoutException; +import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.message.BasicHeader; +import org.apache.http.util.EntityUtils; import org.apache.knox.gateway.config.ConfigurationException; import org.apache.knox.gateway.config.GatewayConfig; import org.apache.knox.gateway.i18n.messages.MessagesFactory; import org.apache.knox.gateway.services.security.AliasService; import org.apache.knox.gateway.services.security.AliasServiceException; -import org.apache.http.HttpEntity; -import org.apache.http.HttpStatus; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.message.BasicHeader; -import org.apache.http.util.EntityUtils; import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Base64; class RESTInvoker { @@ -130,8 +132,7 @@ class RESTInvoker { } // Add an auth header if credentials are available - String encodedCreds = - org.apache.commons.codec.binary.Base64.encodeBase64String((username + ":" + password).getBytes()); + String encodedCreds = Base64.getEncoder().encodeToString((username + ":" + password).getBytes(StandardCharsets.UTF_8)); request.addHeader(new BasicHeader("Authorization", "Basic " + encodedCreds)); // Ambari CSRF protection http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkHistoryUIServiceURLCreator.java ---------------------------------------------------------------------- diff --git a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkHistoryUIServiceURLCreator.java b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkHistoryUIServiceURLCreator.java index 09506c9..95c01e8 100644 --- a/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkHistoryUIServiceURLCreator.java +++ b/gateway-discovery-ambari/src/main/java/org/apache/knox/gateway/topology/discovery/ambari/SparkHistoryUIServiceURLCreator.java @@ -20,7 +20,6 @@ public class SparkHistoryUIServiceURLCreator extends SparkCommonServiceURLCreato private static final String RESOURCE_ROLE = "SPARKHISTORYUI"; - private static final String SSL_FLAG_PRIMARY = "spark.ssl.historyServer.enabled"; private static final String SSL_FLAG_SECONDARY = "spark.ssl.enabled"; @@ -49,7 +48,7 @@ public class SparkHistoryUIServiceURLCreator extends SparkCommonServiceURLCreato if (isSSL(comp)) { String sslPort = comp.getConfigProperty(SSL_PORT_PROPERTY); if (sslPort == null || sslPort.isEmpty()) { - int p = Integer.valueOf(comp.getConfigProperty(portConfigProperty)) + SSL_PORT_OFFSET; + int p = Integer.parseInt(comp.getConfigProperty(portConfigProperty)) + SSL_PORT_OFFSET; sslPort = String.valueOf(p); } port = sslPort; http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-provider-ha/src/main/java/org/apache/knox/gateway/ha/deploy/HaProviderDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-ha/src/main/java/org/apache/knox/gateway/ha/deploy/HaProviderDeploymentContributor.java b/gateway-provider-ha/src/main/java/org/apache/knox/gateway/ha/deploy/HaProviderDeploymentContributor.java index 633179d..875f6c1 100644 --- a/gateway-provider-ha/src/main/java/org/apache/knox/gateway/ha/deploy/HaProviderDeploymentContributor.java +++ b/gateway-provider-ha/src/main/java/org/apache/knox/gateway/ha/deploy/HaProviderDeploymentContributor.java @@ -110,27 +110,27 @@ public class HaProviderDeploymentContributor extends ProviderDeploymentContribut if (serviceLevelParams != null && !serviceLevelParams.isEmpty()) { String enabled = serviceLevelParams.get(Service.HA_ENABLED_PARAM); if (enabled != null) { - config.setEnabled(Boolean.valueOf(enabled)); + config.setEnabled(Boolean.parseBoolean(enabled)); } String failOverSleep = serviceLevelParams.get(HaServiceConfigConstants.CONFIG_PARAM_FAILOVER_SLEEP); if (failOverSleep != null) { - config.setFailoverSleep(Integer.valueOf(failOverSleep)); + config.setFailoverSleep(Integer.parseInt(failOverSleep)); } String failOverAttempts = serviceLevelParams.get(HaServiceConfigConstants.CONFIG_PARAM_MAX_FAILOVER_ATTEMPTS); if (failOverAttempts != null) { - config.setMaxFailoverAttempts(Integer.valueOf(failOverAttempts)); + config.setMaxFailoverAttempts(Integer.parseInt(failOverAttempts)); } String retrySleep = serviceLevelParams.get(HaServiceConfigConstants.CONFIG_PARAM_RETRY_SLEEP); if (retrySleep != null) { - config.setRetrySleep(Integer.valueOf(retrySleep)); + config.setRetrySleep(Integer.parseInt(retrySleep)); } String retryAttempts = serviceLevelParams.get(HaServiceConfigConstants.CONFIG_PARAM_MAX_RETRY_ATTEMPTS); if (retryAttempts != null) { - config.setMaxRetryAttempts(Integer.valueOf(retryAttempts)); + config.setMaxRetryAttempts(Integer.parseInt(retryAttempts)); } String zkEnsemble = serviceLevelParams.get(HaServiceConfigConstants.CONFIG_PARAM_ZOOKEEPER_ENSEMBLE); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-provider-identity-assertion-pseudo/src/test/java/org/apache/knox/gateway/identityasserter/filter/DefaultIdentityAssertionFilterTest.java ---------------------------------------------------------------------- diff --git a/gateway-provider-identity-assertion-pseudo/src/test/java/org/apache/knox/gateway/identityasserter/filter/DefaultIdentityAssertionFilterTest.java b/gateway-provider-identity-assertion-pseudo/src/test/java/org/apache/knox/gateway/identityasserter/filter/DefaultIdentityAssertionFilterTest.java index adfc95d..95a5909 100644 --- a/gateway-provider-identity-assertion-pseudo/src/test/java/org/apache/knox/gateway/identityasserter/filter/DefaultIdentityAssertionFilterTest.java +++ b/gateway-provider-identity-assertion-pseudo/src/test/java/org/apache/knox/gateway/identityasserter/filter/DefaultIdentityAssertionFilterTest.java @@ -17,21 +17,21 @@ */ package org.apache.knox.gateway.identityasserter.filter; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import java.security.Principal; +import org.apache.knox.gateway.security.GroupPrincipal; +import org.apache.knox.gateway.security.PrimaryPrincipal; +import org.easymock.EasyMock; +import org.junit.Test; import javax.security.auth.Subject; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; +import java.security.Principal; +import java.util.Arrays; -import org.apache.knox.gateway.security.GroupPrincipal; -import org.apache.knox.gateway.security.PrimaryPrincipal; -import org.easymock.EasyMock; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; /** * @@ -71,9 +71,9 @@ public class DefaultIdentityAssertionFilterTest { username = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName()); String[] mappedGroups = filter.mapGroupPrincipals(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName(), subject); assertEquals("hdfs", username); - assertTrue("mrgroup not found in groups: " + mappedGroups, groupFoundIn("mrgroup", mappedGroups)); - assertTrue("mrducks not found in groups: " + mappedGroups, groupFoundIn("mrducks", mappedGroups)); - assertFalse("group1 WAS found in groups: " + mappedGroups, groupFoundIn("group1", mappedGroups)); + assertTrue("mrgroup not found in groups: " + Arrays.toString(mappedGroups), groupFoundIn("mrgroup", mappedGroups)); + assertTrue("mrducks not found in groups: " + Arrays.toString(mappedGroups), groupFoundIn("mrducks", mappedGroups)); + assertFalse("group1 WAS found in groups: " + Arrays.toString(mappedGroups), groupFoundIn("group1", mappedGroups)); subject = new Subject(); @@ -91,7 +91,7 @@ public class DefaultIdentityAssertionFilterTest { username = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName()); mappedGroups = filter.mapGroupPrincipals(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName(), subject); assertEquals("hdfs", username); - assertTrue("group1 not found in groups: " + mappedGroups, groupFoundIn("group1", mappedGroups)); + assertTrue("group1 not found in groups: " + Arrays.toString(mappedGroups), groupFoundIn("group1", mappedGroups)); } /** @@ -147,9 +147,9 @@ public class DefaultIdentityAssertionFilterTest { username = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName()); groups = filter.mapGroupPrincipals(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName(), subject); assertEquals("hdfs", username); - assertTrue("mrgroup not found in groups: " + groups, groupFoundIn("mrgroup", groups)); - assertTrue("mrducks not found in groups: " + groups, groupFoundIn("mrducks", groups)); - assertFalse("group1 WAS found in groups: " + groups, groupFoundIn("group1", groups)); + assertTrue("mrgroup not found in groups: " + Arrays.toString(groups), groupFoundIn("mrgroup", groups)); + assertTrue("mrducks not found in groups: " + Arrays.toString(groups), groupFoundIn("mrducks", groups)); + assertFalse("group1 WAS found in groups: " + Arrays.toString(groups), groupFoundIn("group1", groups)); subject = new Subject(); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-provider-rewrite-step-encrypt-uri/src/main/java/org/apache/knox/gateway/encrypturi/impl/DecryptUriProcessor.java ---------------------------------------------------------------------- diff --git a/gateway-provider-rewrite-step-encrypt-uri/src/main/java/org/apache/knox/gateway/encrypturi/impl/DecryptUriProcessor.java b/gateway-provider-rewrite-step-encrypt-uri/src/main/java/org/apache/knox/gateway/encrypturi/impl/DecryptUriProcessor.java index c1b2e8e..a2df314 100644 --- a/gateway-provider-rewrite-step-encrypt-uri/src/main/java/org/apache/knox/gateway/encrypturi/impl/DecryptUriProcessor.java +++ b/gateway-provider-rewrite-step-encrypt-uri/src/main/java/org/apache/knox/gateway/encrypturi/impl/DecryptUriProcessor.java @@ -17,9 +17,6 @@ */ package org.apache.knox.gateway.encrypturi.impl; -import java.io.UnsupportedEncodingException; -import java.util.Arrays; - import org.apache.commons.codec.binary.Base64; import org.apache.knox.gateway.encrypturi.EncryptStepContextParams; import org.apache.knox.gateway.encrypturi.api.DecryptUriDescriptor; @@ -35,6 +32,10 @@ import org.apache.knox.gateway.util.urltemplate.Expander; import org.apache.knox.gateway.util.urltemplate.Parser; import org.apache.knox.gateway.util.urltemplate.Template; +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.util.Collections; + public class DecryptUriProcessor implements UrlRewriteStepProcessor<DecryptUriDescriptor> { @@ -63,7 +64,7 @@ public class DecryptUriProcessor .expandToString( template, context.getParameters(), context.getEvaluator() ); String url = decode( resolvedTemplate ); EncryptStepContextParams params = new EncryptStepContextParams(); - params.addParam( param, Arrays.asList( url ) ); + params.addParam( param, Collections.singletonList(url)); context.addParameters( params ); return UrlRewriteStepStatus.SUCCESS; } @@ -83,7 +84,7 @@ public class DecryptUriProcessor result.iv, result.salt); if (clear != null) { - return new String(clear); + return new String(clear, StandardCharsets.UTF_8); } return null; } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/GatewayCommandLine.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayCommandLine.java b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayCommandLine.java index 18aaa5c..a981c4e 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayCommandLine.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayCommandLine.java @@ -26,9 +26,12 @@ import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.apache.knox.gateway.i18n.resources.ResourcesFactory; +import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; -import static org.apache.commons.cli.HelpFormatter.*; +import static org.apache.commons.cli.HelpFormatter.DEFAULT_DESC_PAD; +import static org.apache.commons.cli.HelpFormatter.DEFAULT_LEFT_PAD; public class GatewayCommandLine { @@ -39,13 +42,13 @@ public class GatewayCommandLine { } public static void printUsage() { - PrintWriter printer = new PrintWriter( System.err ); + PrintWriter printer = new PrintWriter(new OutputStreamWriter( System.err, StandardCharsets.UTF_8), true); new HelpFormatter().printUsage( printer, LINE_WIDTH, COMMAND_NAME, createCommandLine() ); printer.flush(); } public static void printHelp() { - PrintWriter printer = new PrintWriter( System.err ); + PrintWriter printer = new PrintWriter(new OutputStreamWriter( System.err, StandardCharsets.UTF_8), true); new HelpFormatter().printHelp(printer, LINE_WIDTH, COMMAND_NAME, null, createCommandLine(), DEFAULT_LEFT_PAD, DEFAULT_DESC_PAD, null); printer.flush(); } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java index fc92f48..bf4929d 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServer.java @@ -48,7 +48,7 @@ import org.apache.knox.gateway.topology.Topology; import org.apache.knox.gateway.topology.TopologyEvent; import org.apache.knox.gateway.topology.TopologyListener; import org.apache.knox.gateway.trace.AccessHandler; -import org.apache.knox.gateway.trace.ErrorHandler; +import org.apache.knox.gateway.trace.KnoxErrorHandler; import org.apache.knox.gateway.trace.TraceHandler; import org.apache.knox.gateway.util.Urls; import org.apache.knox.gateway.util.XmlUtils; @@ -82,10 +82,11 @@ import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import java.io.File; -import java.io.FileWriter; +import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStreamWriter; import java.io.Serializable; import java.net.InetSocketAddress; import java.net.ServerSocket; @@ -93,6 +94,7 @@ import java.net.Socket; import java.net.URI; import java.net.URISyntaxException; import java.net.UnknownHostException; +import java.nio.charset.StandardCharsets; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; @@ -424,7 +426,7 @@ public class GatewayServer { String[] mimeTypes = {}; if (config.getMimeTypesToCompress() != null && !config.getMimeTypesToCompress().isEmpty()) { - mimeTypes = (String[]) config.getMimeTypesToCompress().toArray(); + mimeTypes = config.getMimeTypesToCompress().toArray(new String[0]); } gzipHandler.addIncludedMimeTypes(mimeTypes); gzipHandler.setHandler(correlationHandler); @@ -693,8 +695,8 @@ public class GatewayServer { return addresses; } - private ErrorHandler createErrorHandler() { - ErrorHandler errorHandler = new ErrorHandler(); + private KnoxErrorHandler createErrorHandler() { + KnoxErrorHandler errorHandler = new KnoxErrorHandler(); errorHandler.setShowStacks( false ); errorHandler.setTracedBodyFilter( System.getProperty( "org.apache.knox.gateway.trace.body.status.filter" ) ); return errorHandler; @@ -755,8 +757,8 @@ public class GatewayServer { originalRoot.appendChild( importedNode ); } } - - XmlUtils.writeXml( webXmlDoc, new FileWriter(webXmlFile) ); + + XmlUtils.writeXml( webXmlDoc, new OutputStreamWriter(new FileOutputStream(webXmlFile), StandardCharsets.UTF_8) ); } } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServlet.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServlet.java b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServlet.java index 21aa29b..020cafb 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServlet.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/GatewayServlet.java @@ -17,22 +17,6 @@ */ package org.apache.knox.gateway; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URISyntaxException; -import java.util.Enumeration; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletResponse; - import org.apache.knox.gateway.audit.api.Action; import org.apache.knox.gateway.audit.api.ActionOutcome; import org.apache.knox.gateway.audit.api.AuditService; @@ -49,6 +33,23 @@ import org.apache.knox.gateway.i18n.resources.ResourcesFactory; import org.apache.knox.gateway.services.GatewayServices; import org.apache.knox.gateway.services.metrics.MetricsService; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.util.Enumeration; + public class GatewayServlet implements Servlet, Filter { public static final String GATEWAY_DESCRIPTOR_LOCATION_DEFAULT = "gateway.xml"; @@ -214,7 +215,7 @@ public class GatewayServlet implements Servlet, Filter { GatewayFilter filter = null; if( stream != null ) { try { - GatewayDescriptor descriptor = GatewayDescriptorFactory.load( "xml", new InputStreamReader( stream ) ); + GatewayDescriptor descriptor = GatewayDescriptorFactory.load("xml", new InputStreamReader(stream, StandardCharsets.UTF_8)); filter = GatewayFactory.create( descriptor ); } finally { stream.close(); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ApplicationDeploymentContributor.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ApplicationDeploymentContributor.java b/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ApplicationDeploymentContributor.java index e02c0e5..2a8f872 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ApplicationDeploymentContributor.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/deploy/impl/ApplicationDeploymentContributor.java @@ -17,21 +17,6 @@ */ package org.apache.knox.gateway.deploy.impl; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.io.StringReader; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; - import org.apache.knox.gateway.config.GatewayConfig; import org.apache.knox.gateway.config.impl.GatewayConfigImpl; import org.apache.knox.gateway.deploy.DeploymentContext; @@ -52,6 +37,22 @@ import org.apache.knox.gateway.topology.Application; import org.apache.knox.gateway.topology.Service; import org.apache.knox.gateway.topology.Version; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class ApplicationDeploymentContributor extends ServiceDeploymentContributorBase { private static final String SERVICE_DEFINITION_FILE_NAME = "service.xml"; @@ -94,7 +95,7 @@ public class ApplicationDeploymentContributor extends ServiceDeploymentContribut if( !file.exists() ) { rules = UrlRewriteRulesDescriptorFactory.load( "xml", new StringReader( "<rules/>" ) ); } else { - FileReader reader = new FileReader( file ); + InputStreamReader reader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8); rules = UrlRewriteRulesDescriptorFactory.load( "xml", reader ); reader.close(); } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/filter/BasicAuthChallengeFilter.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/filter/BasicAuthChallengeFilter.java b/gateway-server/src/main/java/org/apache/knox/gateway/filter/BasicAuthChallengeFilter.java index 589c20f..49088c7 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/filter/BasicAuthChallengeFilter.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/filter/BasicAuthChallengeFilter.java @@ -26,6 +26,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.nio.charset.StandardCharsets; /** * @@ -67,7 +68,7 @@ public class BasicAuthChallengeFilter extends AbstractGatewayFilter { if( basicAuthResponse != null ) { String[] parts = basicAuthResponse.split( " " ); if( parts.length == 2 ) { - String usernamePassword = new String( Base64.decodeBase64( parts[1] ) ); + String usernamePassword = new String( Base64.decodeBase64( parts[1] ), StandardCharsets.UTF_8); parts = usernamePassword.split( ":" ); if( parts.length == 2 ) { String username = parts[0]; http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/RemoteAliasService.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/RemoteAliasService.java b/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/RemoteAliasService.java index f270ad1..4af4991 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/RemoteAliasService.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/services/security/impl/RemoteAliasService.java @@ -33,6 +33,7 @@ import org.apache.knox.gateway.services.security.EncryptionResult; import org.apache.knox.gateway.services.security.MasterService; import org.apache.zookeeper.ZooDefs; +import java.nio.charset.StandardCharsets; import java.security.cert.Certificate; import java.util.ArrayList; import java.util.Collections; @@ -566,12 +567,12 @@ public class RemoteAliasService implements AliasService { */ public String decrypt(final String encoded) throws Exception { - final String line = new String(Base64.decodeBase64(encoded)); + final String line = new String(Base64.decodeBase64(encoded), StandardCharsets.UTF_8); final String[] parts = line.split("::"); return new String(encryptor .decrypt(Base64.decodeBase64(parts[0]), Base64.decodeBase64(parts[1]), - Base64.decodeBase64(parts[2])), "UTF8"); + Base64.decodeBase64(parts[2])), StandardCharsets.UTF_8); } /** @@ -679,7 +680,7 @@ public class RemoteAliasService implements AliasService { && aliasService instanceof RemoteAliasService) { try { ((RemoteAliasService) aliasService) - .addAliasForClusterLocally(cluster, alias, remoteAliasService.decrypt(new String(data))); + .addAliasForClusterLocally(cluster, alias, remoteAliasService.decrypt(new String(data, StandardCharsets.UTF_8))); } catch (final Exception e) { /* log and move on */ LOG.errorAddingAliasLocally(cluster, alias, e.toString()); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/topology/monitor/DefaultRemoteConfigurationMonitor.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/topology/monitor/DefaultRemoteConfigurationMonitor.java b/gateway-server/src/main/java/org/apache/knox/gateway/topology/monitor/DefaultRemoteConfigurationMonitor.java index 6501288..d90ae03 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/topology/monitor/DefaultRemoteConfigurationMonitor.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/topology/monitor/DefaultRemoteConfigurationMonitor.java @@ -20,19 +20,19 @@ import org.apache.commons.io.FileUtils; import org.apache.knox.gateway.GatewayMessages; import org.apache.knox.gateway.config.GatewayConfig; import org.apache.knox.gateway.i18n.messages.MessagesFactory; +import org.apache.knox.gateway.services.config.client.RemoteConfigurationRegistryClient; import org.apache.knox.gateway.services.config.client.RemoteConfigurationRegistryClient.ChildEntryListener; import org.apache.knox.gateway.services.config.client.RemoteConfigurationRegistryClient.EntryListener; -import org.apache.knox.gateway.services.config.client.RemoteConfigurationRegistryClient; import org.apache.knox.gateway.services.config.client.RemoteConfigurationRegistryClientService; import org.apache.zookeeper.ZooDefs; import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; - class DefaultRemoteConfigurationMonitor implements RemoteConfigurationMonitor { private static final String NODE_KNOX = "/knox"; @@ -155,7 +155,7 @@ class DefaultRemoteConfigurationMonitor implements RemoteConfigurationMonitor { for (String providerConfig : providerConfigs) { File localFile = new File(providersDir, providerConfig); - byte[] remoteContent = client.getEntryData(NODE_KNOX_PROVIDERS + "/" + providerConfig).getBytes(); + byte[] remoteContent = client.getEntryData(NODE_KNOX_PROVIDERS + "/" + providerConfig).getBytes(StandardCharsets.UTF_8); if (!localFile.exists() || !Arrays.equals(remoteContent, FileUtils.readFileToByteArray(localFile))) { FileUtils.writeByteArrayToFile(localFile, remoteContent); log.downloadedRemoteConfigFile(providersDir.getName(), providerConfig); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/ProviderConfigurationParser.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/ProviderConfigurationParser.java b/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/ProviderConfigurationParser.java index 4515ff7..7c7c20b 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/ProviderConfigurationParser.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/ProviderConfigurationParser.java @@ -33,7 +33,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -45,7 +45,7 @@ public class ProviderConfigurationParser { private static final String EXT_YML = "yml"; private static final String EXT_YAML = "yaml"; - public static final List<String> SUPPORTED_EXTENSIONS = Arrays.asList(EXT_XML, EXT_JSON, EXT_YML, EXT_YAML); + public static final List<String> SUPPORTED_EXTENSIONS = Collections.unmodifiableList(Arrays.asList(EXT_XML, EXT_JSON, EXT_YML, EXT_YAML)); public static ProviderConfiguration parse(String path) throws Exception { http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/SimpleDescriptorHandler.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/SimpleDescriptorHandler.java b/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/SimpleDescriptorHandler.java index f3bc172..affd46f 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/SimpleDescriptorHandler.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/topology/simple/SimpleDescriptorHandler.java @@ -16,15 +16,27 @@ */ package org.apache.knox.gateway.topology.simple; +import org.apache.knox.gateway.GatewayServer; +import org.apache.knox.gateway.config.GatewayConfig; +import org.apache.knox.gateway.i18n.messages.MessagesFactory; +import org.apache.knox.gateway.services.GatewayServices; +import org.apache.knox.gateway.services.Service; +import org.apache.knox.gateway.services.security.AliasService; +import org.apache.knox.gateway.services.security.KeystoreService; +import org.apache.knox.gateway.services.security.MasterService; +import org.apache.knox.gateway.topology.discovery.DefaultServiceDiscoveryConfig; +import org.apache.knox.gateway.topology.discovery.ServiceDiscovery; +import org.apache.knox.gateway.topology.discovery.ServiceDiscoveryFactory; + import java.io.BufferedWriter; import java.io.File; -import java.io.FileWriter; +import java.io.FileOutputStream; import java.io.IOException; - +import java.io.OutputStreamWriter; import java.io.StringWriter; import java.net.URI; import java.net.URISyntaxException; - +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -33,19 +45,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import org.apache.knox.gateway.GatewayServer; -import org.apache.knox.gateway.config.GatewayConfig; -import org.apache.knox.gateway.i18n.messages.MessagesFactory; -import org.apache.knox.gateway.services.GatewayServices; -import org.apache.knox.gateway.services.Service; -import org.apache.knox.gateway.services.security.AliasService; -import org.apache.knox.gateway.services.security.KeystoreService; -import org.apache.knox.gateway.services.security.MasterService; -import org.apache.knox.gateway.topology.discovery.DefaultServiceDiscoveryConfig; -import org.apache.knox.gateway.topology.discovery.ServiceDiscovery; -import org.apache.knox.gateway.topology.discovery.ServiceDiscoveryFactory; - - /** * Processes simple topology descriptors, producing full topology files, which can subsequently be deployed to the * gateway. @@ -577,7 +576,7 @@ public class SimpleDescriptorHandler { } topologyDescriptor = new File(destDirectory, topologyFilename + ".xml"); - fw = new BufferedWriter(new FileWriter(topologyDescriptor)); + fw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(topologyDescriptor), StandardCharsets.UTF_8)); fw.write(sw.toString()); fw.flush(); } catch (IOException e) { http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/trace/ErrorHandler.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/trace/ErrorHandler.java b/gateway-server/src/main/java/org/apache/knox/gateway/trace/ErrorHandler.java deleted file mode 100644 index 694159d..0000000 --- a/gateway-server/src/main/java/org/apache/knox/gateway/trace/ErrorHandler.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.knox.gateway.trace; - -import org.eclipse.jetty.server.Request; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Set; - -public class ErrorHandler extends org.eclipse.jetty.server.handler.ErrorHandler { - - private Set<Integer> bodyFilter; - - public void setTracedBodyFilter( String s ) { - bodyFilter = TraceUtil.parseIntegerSet( s ); - } - - @Override - public void handle( String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response ) - throws IOException { - HttpServletResponse traceResponse = new TraceResponse( response, bodyFilter ); - super.handle( target, baseRequest, request, traceResponse ); - } - -} http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/trace/KnoxErrorHandler.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/trace/KnoxErrorHandler.java b/gateway-server/src/main/java/org/apache/knox/gateway/trace/KnoxErrorHandler.java new file mode 100644 index 0000000..3310ca3 --- /dev/null +++ b/gateway-server/src/main/java/org/apache/knox/gateway/trace/KnoxErrorHandler.java @@ -0,0 +1,43 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.knox.gateway.trace; + +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.handler.ErrorHandler; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Set; + +public class KnoxErrorHandler extends ErrorHandler { + + private Set<Integer> bodyFilter; + + public void setTracedBodyFilter( String s ) { + bodyFilter = TraceUtil.parseIntegerSet( s ); + } + + @Override + public void handle( String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response ) + throws IOException { + HttpServletResponse traceResponse = new TraceResponse( response, bodyFilter ); + super.handle( target, baseRequest, request, traceResponse ); + } + +} http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java b/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java index 6524ca0..6ff8a91 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/util/KnoxCLI.java @@ -17,30 +17,19 @@ */ package org.apache.knox.gateway.util; -import java.io.BufferedReader; -import java.io.Console; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.security.cert.Certificate; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.UUID; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLException; - import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.FileUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.conn.ssl.SSLContexts; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; import org.apache.knox.gateway.GatewayCommandLine; import org.apache.knox.gateway.config.GatewayConfig; import org.apache.knox.gateway.config.impl.GatewayConfigImpl; @@ -60,15 +49,6 @@ import org.apache.knox.gateway.services.topology.TopologyService; import org.apache.knox.gateway.topology.Provider; import org.apache.knox.gateway.topology.Topology; import org.apache.knox.gateway.topology.validation.TopologyValidator; -import org.apache.hadoop.util.Tool; -import org.apache.hadoop.util.ToolRunner; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.conn.ssl.SSLContexts; -import org.apache.http.conn.ssl.TrustSelfSignedStrategy; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; import org.apache.log4j.PropertyConfigurator; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; @@ -83,6 +63,27 @@ import org.eclipse.persistence.oxm.MediaType; import org.jboss.shrinkwrap.api.exporter.ExplodedExporter; import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLException; +import java.io.BufferedReader; +import java.io.Console; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintStream; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.nio.charset.StandardCharsets; +import java.security.cert.Certificate; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.UUID; + /** * */ @@ -1473,7 +1474,7 @@ public class KnoxCLI extends Configured implements Tool { this.username = c.readLine("Username: "); }else{ try { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); out.println("Username: "); this.username = reader.readLine(); reader.close(); @@ -1490,7 +1491,7 @@ public class KnoxCLI extends Configured implements Tool { this.password = c.readPassword("Password: "); }else{ try { - BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); out.println("Password: "); String pw = reader.readLine(); if(pw != null){ @@ -1766,7 +1767,7 @@ public class KnoxCLI extends Configured implements Tool { String authString = ""; // Create Authorization String if( user != null && pass != null) { - authString = "Basic " + Base64.encodeBase64String((user + ":" + pass).getBytes()); + authString = "Basic " + Base64.encodeBase64String((user + ":" + pass).getBytes(StandardCharsets.UTF_8)); } else { out.println("Username and/or password not supplied. Expect HTTP 401 Unauthorized responses."); } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java ---------------------------------------------------------------------- diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java b/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java index 5c97100..ad72342 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/util/ServiceDefinitionsLoader.java @@ -38,6 +38,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.HashSet; import java.util.Set; @@ -117,10 +118,10 @@ public class ServiceDefinitionsLoader { public static UrlRewriteRulesDescriptor loadRewriteRules(File servicesDir) { File rewriteFile = new File(servicesDir, REWRITE_FILE); if ( rewriteFile.exists() ) { - InputStream stream = null; + InputStream stream; try { stream = new FileInputStream(rewriteFile); - Reader reader = new InputStreamReader(stream); + Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8); UrlRewriteRulesDescriptor rules = UrlRewriteRulesDescriptorFactory.load( "xml", reader); reader.close(); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-service-rm/src/main/java/org/apache/knox/gateway/rm/dispatch/RMHaBaseDispatcher.java ---------------------------------------------------------------------- diff --git a/gateway-service-rm/src/main/java/org/apache/knox/gateway/rm/dispatch/RMHaBaseDispatcher.java b/gateway-service-rm/src/main/java/org/apache/knox/gateway/rm/dispatch/RMHaBaseDispatcher.java index 82cc247..f1ef169 100644 --- a/gateway-service-rm/src/main/java/org/apache/knox/gateway/rm/dispatch/RMHaBaseDispatcher.java +++ b/gateway-service-rm/src/main/java/org/apache/knox/gateway/rm/dispatch/RMHaBaseDispatcher.java @@ -16,21 +16,24 @@ package org.apache.knox.gateway.rm.dispatch; * See the License for the specific language governing permissions and * limitations under the License. */ + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.entity.BufferedHttpEntity; import org.apache.knox.gateway.dispatch.DefaultDispatch; import org.apache.knox.gateway.filter.AbstractGatewayFilter; import org.apache.knox.gateway.ha.provider.HaProvider; import org.apache.knox.gateway.ha.provider.impl.HaServiceConfigConstants; import org.apache.knox.gateway.i18n.messages.MessagesFactory; import org.apache.knox.gateway.rm.i18n.RMMessages; -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpRequestBase; -import org.apache.http.client.methods.HttpUriRequest; -import org.apache.http.entity.BufferedHttpEntity; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URI; +import java.nio.charset.StandardCharsets; import java.util.concurrent.atomic.AtomicInteger; class RMHaBaseDispatcher extends DefaultDispatch { @@ -119,7 +122,7 @@ class RMHaBaseDispatcher extends DefaultDispatch { inboundResponse.setEntity(entity); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); inboundResponse.getEntity().writeTo(outputStream); - String body = new String(outputStream.toByteArray()); + String body = new String(outputStream.toByteArray(), StandardCharsets.UTF_8); if (body.contains("This is standby RM")) { throw new StandbyException(); } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-service-test/src/main/java/org/apache/knox/gateway/service/test/ServiceTestResource.java ---------------------------------------------------------------------- diff --git a/gateway-service-test/src/main/java/org/apache/knox/gateway/service/test/ServiceTestResource.java b/gateway-service-test/src/main/java/org/apache/knox/gateway/service/test/ServiceTestResource.java index 7b74ff3..63a8189 100644 --- a/gateway-service-test/src/main/java/org/apache/knox/gateway/service/test/ServiceTestResource.java +++ b/gateway-service-test/src/main/java/org/apache/knox/gateway/service/test/ServiceTestResource.java @@ -17,12 +17,20 @@ */ package org.apache.knox.gateway.service.test; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.conn.ssl.SSLContexts; +import org.apache.http.conn.ssl.TrustSelfSignedStrategy; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.knox.gateway.config.GatewayConfig; +import org.apache.knox.gateway.services.GatewayServices; +import org.apache.knox.gateway.services.topology.TopologyService; +import org.apache.knox.gateway.topology.Service; +import org.apache.knox.gateway.topology.Topology; +import org.glassfish.jersey.internal.util.Base64; + import javax.net.ssl.SSLContext; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; @@ -36,20 +44,13 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; - -import org.apache.knox.gateway.config.GatewayConfig; -import org.apache.knox.gateway.services.GatewayServices; -import org.apache.knox.gateway.services.topology.TopologyService; -import org.apache.knox.gateway.topology.Service; -import org.apache.knox.gateway.topology.Topology; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ssl.SSLContexts; -import org.apache.http.conn.ssl.TrustSelfSignedStrategy; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.glassfish.jersey.internal.util.Base64; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import static javax.ws.rs.core.MediaType.APPLICATION_XML; @@ -76,7 +77,7 @@ public class ServiceTestResource { // Create Authorization String if( username != null && password != null) { - authString = "Basic " + Base64.encodeAsString((username + ":" + password).getBytes()); + authString = "Basic " + Base64.encodeAsString((username + ":" + password).getBytes(StandardCharsets.UTF_8)); } else if (request.getHeader("Authorization") != null) { authString = request.getHeader("Authorization"); } else { http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-service-webhdfs/src/main/java/org/apache/knox/gateway/hdfs/dispatch/AbstractHdfsHaDispatch.java ---------------------------------------------------------------------- diff --git a/gateway-service-webhdfs/src/main/java/org/apache/knox/gateway/hdfs/dispatch/AbstractHdfsHaDispatch.java b/gateway-service-webhdfs/src/main/java/org/apache/knox/gateway/hdfs/dispatch/AbstractHdfsHaDispatch.java index 1bd4136..64d94b4 100644 --- a/gateway-service-webhdfs/src/main/java/org/apache/knox/gateway/hdfs/dispatch/AbstractHdfsHaDispatch.java +++ b/gateway-service-webhdfs/src/main/java/org/apache/knox/gateway/hdfs/dispatch/AbstractHdfsHaDispatch.java @@ -17,15 +17,6 @@ */ package org.apache.knox.gateway.hdfs.dispatch; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.URI; -import java.util.concurrent.atomic.AtomicInteger; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.methods.HttpUriRequest; @@ -38,6 +29,15 @@ import org.apache.knox.gateway.ha.provider.impl.HaServiceConfigConstants; import org.apache.knox.gateway.hdfs.i18n.WebHdfsMessages; import org.apache.knox.gateway.i18n.messages.MessagesFactory; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.atomic.AtomicInteger; + public abstract class AbstractHdfsHaDispatch extends HdfsHttpClientDispatch { private static final String FAILOVER_COUNTER_ATTRIBUTE = "dispatch.ha.failover.counter"; @@ -104,7 +104,7 @@ public abstract class AbstractHdfsHaDispatch extends HdfsHttpClientDispatch { inboundResponse.setEntity(entity); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); inboundResponse.getEntity().writeTo(outputStream); - String body = new String(outputStream.toByteArray()); + String body = new String(outputStream.toByteArray(), StandardCharsets.UTF_8); if (body.contains("StandbyException")) { throw new StandbyException(); } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-shell/src/main/java/org/apache/knox/gateway/shell/KnoxSh.java ---------------------------------------------------------------------- diff --git a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/KnoxSh.java b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/KnoxSh.java index 7993a47..c80581f 100644 --- a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/KnoxSh.java +++ b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/KnoxSh.java @@ -17,12 +17,18 @@ */ package org.apache.knox.gateway.shell; +import org.apache.knox.gateway.shell.knox.token.Get; +import org.apache.knox.gateway.shell.knox.token.Token; +import org.apache.knox.gateway.util.JsonUtils; + import java.io.BufferedReader; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.attribute.PosixFilePermission; @@ -34,10 +40,6 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import org.apache.knox.gateway.shell.knox.token.Token; -import org.apache.knox.gateway.util.JsonUtils; -import org.apache.knox.gateway.shell.knox.token.Get; - /** * */ @@ -275,7 +277,7 @@ public class KnoxSh { } private String readFile(String file) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader (file)); + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)); String line = null; String content = null; StringBuilder stringBuilder = new StringBuilder(); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java ---------------------------------------------------------------------- diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java index 4f8c82f..8757192 100644 --- a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java +++ b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/DefaultDispatch.java @@ -17,6 +17,17 @@ */ package org.apache.knox.gateway.dispatch; +import org.apache.http.Header; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpHead; +import org.apache.http.client.methods.HttpOptions; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.entity.ContentType; import org.apache.knox.gateway.SpiGatewayMessages; import org.apache.knox.gateway.SpiGatewayResources; import org.apache.knox.gateway.audit.api.Action; @@ -31,17 +42,6 @@ import org.apache.knox.gateway.config.GatewayConfig; import org.apache.knox.gateway.i18n.messages.MessagesFactory; import org.apache.knox.gateway.i18n.resources.ResourcesFactory; import org.apache.knox.gateway.util.MimeTypes; -import org.apache.http.Header; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpDelete; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpHead; -import org.apache.http.client.methods.HttpOptions; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.client.methods.HttpPut; -import org.apache.http.client.methods.HttpUriRequest; -import org.apache.http.entity.ContentType; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -63,7 +63,7 @@ public class DefaultDispatch extends AbstractGatewayDispatch { protected static final SpiGatewayMessages LOG = MessagesFactory.get(SpiGatewayMessages.class); protected static final SpiGatewayResources RES = ResourcesFactory.get(SpiGatewayResources.class); - protected static Auditor auditor = AuditServiceFactory.getAuditService().getAuditor(AuditConstants.DEFAULT_AUDITOR_NAME, + protected static final Auditor auditor = AuditServiceFactory.getAuditService().getAuditor(AuditConstants.DEFAULT_AUDITOR_NAME, AuditConstants.KNOX_SERVICE_NAME, AuditConstants.KNOX_COMPONENT_NAME); private Set<String> outboundResponseExcludeHeaders; http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-spi/src/main/java/org/apache/knox/gateway/services/hostmap/FileBasedHostMapper.java ---------------------------------------------------------------------- diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/services/hostmap/FileBasedHostMapper.java b/gateway-spi/src/main/java/org/apache/knox/gateway/services/hostmap/FileBasedHostMapper.java index 1a9c958..30631f0 100644 --- a/gateway-spi/src/main/java/org/apache/knox/gateway/services/hostmap/FileBasedHostMapper.java +++ b/gateway-spi/src/main/java/org/apache/knox/gateway/services/hostmap/FileBasedHostMapper.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -33,7 +34,7 @@ public class FileBasedHostMapper implements HostMapper { public FileBasedHostMapper( URL url ) throws IOException { if( url != null ) { InputStream stream = url.openStream(); - BufferedReader reader = new BufferedReader( new InputStreamReader( stream ) ); + BufferedReader reader = new BufferedReader( new InputStreamReader( stream, StandardCharsets.UTF_8 ) ); String line = reader.readLine(); while( line != null ) { String[] lineSplit = line.split( "=" ); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/BaseKeystoreService.java ---------------------------------------------------------------------- diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/BaseKeystoreService.java b/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/BaseKeystoreService.java index 8155d7a..999a00c 100644 --- a/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/BaseKeystoreService.java +++ b/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/BaseKeystoreService.java @@ -29,6 +29,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.security.Key; import java.security.KeyStore; import java.security.KeyStoreException; @@ -197,7 +198,7 @@ public class BaseKeystoreService { protected char[] getCredential(String alias, char[] credential, KeyStore ks) { if (ks != null) { try { - credential = new String(ks.getKey(alias, masterService.getMasterSecret()).getEncoded()).toCharArray(); + credential = new String(ks.getKey(alias, masterService.getMasterSecret()).getEncoded(), StandardCharsets.UTF_8).toCharArray(); } catch (UnrecoverableKeyException e) { LOG.failedToGetCredential(e); } catch (KeyStoreException e) { http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/CMFMasterService.java ---------------------------------------------------------------------- diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/CMFMasterService.java b/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/CMFMasterService.java index b39e6ab..fa7736a 100644 --- a/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/CMFMasterService.java +++ b/gateway-spi/src/main/java/org/apache/knox/gateway/services/security/impl/CMFMasterService.java @@ -29,6 +29,7 @@ import org.apache.knox.gateway.services.security.EncryptionResult; import java.io.Console; import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -162,10 +163,10 @@ public class CMFMasterService { protected void initializeFromMaster(File masterFile) throws Exception { try { - List<String> lines = FileUtils.readLines(masterFile, "UTF8"); + List<String> lines = FileUtils.readLines(masterFile, StandardCharsets.UTF_8); String tag = lines.get(0); LOG.loadingFromPersistentMaster( tag ); - String line = new String(Base64.decodeBase64(lines.get(1))); + String line = new String(Base64.decodeBase64(lines.get(1)), StandardCharsets.UTF_8); String[] parts = line.split("::"); this.master = new String(encryptor.decrypt(Base64.decodeBase64(parts[0]), Base64.decodeBase64(parts[1]), Base64.decodeBase64(parts[2])), http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java ---------------------------------------------------------------------- diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java b/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java index 0965748..9891532 100644 --- a/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java +++ b/gateway-test-utils/src/main/java/org/apache/knox/test/Console.java @@ -19,6 +19,7 @@ package org.apache.knox.test; import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.io.UnsupportedEncodingException; public class Console { @@ -26,14 +27,14 @@ public class Console { PrintStream oldErr, newErr; ByteArrayOutputStream newOutBuf, newErrBuf; - public void capture() { + public void capture() throws UnsupportedEncodingException { oldErr = System.err; newErrBuf = new ByteArrayOutputStream(); - newErr = new PrintStream( newErrBuf ); + newErr = new PrintStream( newErrBuf, false, "UTF-8" ); oldOut = System.out; // I18N not required. newOutBuf = new ByteArrayOutputStream(); - newOut = new PrintStream( newOutBuf ); + newOut = new PrintStream( newOutBuf, false, "UTF-8" ); System.setErr( newErr ); System.setOut( newOut ); http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java ---------------------------------------------------------------------- diff --git a/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java b/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java index e5ed5c9..8d8ce24 100644 --- a/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java +++ b/gateway-test-utils/src/main/java/org/apache/knox/test/TestUtils.java @@ -17,6 +17,17 @@ */ package org.apache.knox.test; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.log4j.Logger; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.VelocityEngine; +import org.apache.velocity.runtime.RuntimeConstants; +import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; +import org.eclipse.jetty.http.HttpTester; +import org.eclipse.jetty.servlet.ServletTester; + import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -30,21 +41,11 @@ import java.net.ServerSocket; import java.net.Socket; import java.net.URL; import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; import java.util.Properties; import java.util.UUID; import java.util.concurrent.TimeUnit; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.apache.log4j.Logger; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; -import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; -import org.eclipse.jetty.http.HttpTester; -import org.eclipse.jetty.servlet.ServletTester; - public class TestUtils { private static Logger LOG = Logger.getLogger(TestUtils.class); @@ -204,10 +205,10 @@ public class TestUtils { public static HttpTester.Response execute( ServletTester server, HttpTester.Request request ) throws Exception { LOG.debug( "execute: request=" + request ); ByteBuffer requestBuffer = request.generate(); - LOG.trace( "execute: requestBuffer=[" + new String(requestBuffer.array(),0,requestBuffer.limit()) + "]" ); + LOG.trace( "execute: requestBuffer=[" + new String(requestBuffer.array(),0,requestBuffer.limit(), StandardCharsets.UTF_8) + "]" ); ByteBuffer responseBuffer = server.getResponses( requestBuffer, 30, TimeUnit.SECONDS ); HttpTester.Response response = HttpTester.parseResponse( responseBuffer ); - LOG.trace( "execute: responseBuffer=[" + new String(responseBuffer.array(),0,responseBuffer.limit()) + "]" ); + LOG.trace( "execute: responseBuffer=[" + new String(responseBuffer.array(),0,responseBuffer.limit(), StandardCharsets.UTF_8) + "]" ); LOG.debug( "execute: reponse=" + response ); return response; } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-util-common/src/main/java/org/apache/knox/gateway/audit/log4j/audit/Log4jAuditor.java ---------------------------------------------------------------------- diff --git a/gateway-util-common/src/main/java/org/apache/knox/gateway/audit/log4j/audit/Log4jAuditor.java b/gateway-util-common/src/main/java/org/apache/knox/gateway/audit/log4j/audit/Log4jAuditor.java index 30ea8d4..1e2911c 100644 --- a/gateway-util-common/src/main/java/org/apache/knox/gateway/audit/log4j/audit/Log4jAuditor.java +++ b/gateway-util-common/src/main/java/org/apache/knox/gateway/audit/log4j/audit/Log4jAuditor.java @@ -37,7 +37,7 @@ public class Log4jAuditor implements Auditor { /** Comma seperated list of query parameters who's values will be masked * e.g. -Dmasked_params=knoxtoken,ccNumber **/ - public static String MASKED_QUERY_PARAMS_OPTION = "masked_params"; + public static final String MASKED_QUERY_PARAMS_OPTION = "masked_params"; private Logger logger; private String componentName; private String serviceName; http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/gateway-util-configinjector/src/main/java/org/apache/knox/gateway/config/impl/DefaultConfigurationInjector.java ---------------------------------------------------------------------- diff --git a/gateway-util-configinjector/src/main/java/org/apache/knox/gateway/config/impl/DefaultConfigurationInjector.java b/gateway-util-configinjector/src/main/java/org/apache/knox/gateway/config/impl/DefaultConfigurationInjector.java index ad48199..f211e28 100755 --- a/gateway-util-configinjector/src/main/java/org/apache/knox/gateway/config/impl/DefaultConfigurationInjector.java +++ b/gateway-util-configinjector/src/main/java/org/apache/knox/gateway/config/impl/DefaultConfigurationInjector.java @@ -18,14 +18,14 @@ package org.apache.knox.gateway.config.impl; import org.apache.commons.beanutils.ConvertUtilsBean2; +import org.apache.knox.gateway.config.Alias; import org.apache.knox.gateway.config.ConfigurationAdapter; +import org.apache.knox.gateway.config.ConfigurationBinding; import org.apache.knox.gateway.config.ConfigurationException; import org.apache.knox.gateway.config.Configure; -import org.apache.knox.gateway.config.spi.ConfigurationInjector; -import org.apache.knox.gateway.config.Alias; -import org.apache.knox.gateway.config.ConfigurationBinding; import org.apache.knox.gateway.config.Default; import org.apache.knox.gateway.config.Optional; +import org.apache.knox.gateway.config.spi.ConfigurationInjector; import java.lang.annotation.Annotation; import java.lang.reflect.Field; @@ -157,7 +157,7 @@ public class DefaultConfigurationInjector implements ConfigurationInjector { private <T extends Annotation> T findAnnotation( Annotation[] annotations, Class<T> type ) { T found = null; for( Annotation current : annotations ) { - if( type.isAssignableFrom( current.getClass() ) ) { + if( type.isAssignableFrom( current.annotationType() ) ) { found = (T)current; break; } http://git-wip-us.apache.org/repos/asf/knox/blob/5bf7bc5d/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 09b0f0e..f9965a1 100644 --- a/pom.xml +++ b/pom.xml @@ -103,6 +103,12 @@ </modules> <properties> + <!-- + It is recommended to set the compiler version globally, + as the compiler plugin and the forbidden API checker both + use this version + --> + <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <repo.id>internal.repo</repo.id> @@ -112,18 +118,23 @@ <gateway-artifact>knox</gateway-artifact> <gateway-version>1.2.0-SNAPSHOT</gateway-version> <gateway-group>org.apache.knox</gateway-group> + + <!-- Dependencies sorted alphabetically --> + <apacheds-version>2.0.0-M16</apacheds-version> + <commons-beanutils-version>1.9.3</commons-beanutils-version> + <failsafe-version>2.19.1</failsafe-version> + <findsecbugs-plugin.version>1.8.0</findsecbugs-plugin.version> <groovy-version>2.4.8</groovy-version> <hadoop-version>3.0.0</hadoop-version> <jackson.version>2.9.5</jackson.version> - <jetty-version>9.2.25.v20180606</jetty-version> - <mockito-version>1.10.19</mockito-version> - <surefire-version>2.16</surefire-version> - <failsafe-version>2.19.1</failsafe-version> - <apacheds-version>2.0.0-M16</apacheds-version> <javax-websocket-version>1.1</javax-websocket-version> + <jetty-version>9.2.25.v20180606</jetty-version> <metrics-version>3.1.2</metrics-version> + <mockito-version>1.10.19</mockito-version> <shiro.version>1.2.6</shiro.version> - <commons-beanutils-version>1.9.3</commons-beanutils-version> + <spotbugs.version>3.1.7</spotbugs.version> + <spotbugs-maven-plugin.version>3.1.6</spotbugs-maven-plugin.version> + <surefire-version>2.16</surefire-version> </properties> <licenses> @@ -183,7 +194,9 @@ <execution> <id>source</id> <phase>package</phase> - <goals><goal>single</goal></goals> + <goals> + <goal>single</goal> + </goals> <configuration> <finalName>${gateway-artifact}-${gateway-version}</finalName> <outputDirectory>target/${gateway-version}</outputDirectory> @@ -227,7 +240,9 @@ <executions> <execution> <phase>verify</phase> - <goals><goal>check</goal></goals> + <goals> + <goal>check</goal> + </goals> </execution> </executions> <configuration> @@ -298,12 +313,10 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> - <version>3.3</version> + <version>3.8.0</version> <configuration> - <compilerId>javac</compilerId> - <source>1.8</source> - <target>1.8</target> - <debug>true</debug> + <source>${maven.compiler.target}</source> + <target>${maven.compiler.target}</target> </configuration> <dependencies> <dependency> @@ -351,25 +364,56 @@ <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M1</version> <executions> - <execution> - <id>enforce-maven</id> - <goals> - <goal>enforce</goal> - </goals> - <configuration> - <rules> - <requireMavenVersion> - <version>[3.0.2,)</version> - </requireMavenVersion> - <requireJavaVersion> - <version>[1.8,)</version> - </requireJavaVersion> - </rules> - </configuration> - </execution> + <execution> + <id>enforce-maven</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireMavenVersion> + <version>[3.0.2,)</version> + </requireMavenVersion> + <requireJavaVersion> + <version>[1.8,)</version> + </requireJavaVersion> + </rules> + </configuration> + </execution> </executions> </plugin> - + <plugin> + <groupId>com.github.spotbugs</groupId> + <artifactId>spotbugs-maven-plugin</artifactId> + <version>${spotbugs-maven-plugin.version}</version> + <configuration> + <threshold>High</threshold> + <failOnError>true</failOnError> + <excludeFilterFile>${session.executionRootDirectory}/src/spotbugs-filter.xml</excludeFilterFile> + <plugins> + <plugin> + <groupId>com.h3xstream.findsecbugs</groupId> + <artifactId>findsecbugs-plugin</artifactId> + <version>${findsecbugs-plugin.version}</version> <!-- Auto-update to the latest stable --> + </plugin> + </plugins> + </configuration> + <executions> + <execution> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + <dependencies> + <!-- overwrite dependency on spotbugs if you want to specify the version of spotbugs --> + <dependency> + <groupId>com.github.spotbugs</groupId> + <artifactId>spotbugs</artifactId> + <version>${spotbugs.version}</version> + </dependency> + </dependencies> + </plugin> </plugins> </build> @@ -419,11 +463,6 @@ </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> - <artifactId>findbugs-maven-plugin</artifactId> - <version>2.5.2</version> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> <artifactId>javancss-maven-plugin</artifactId> <version>2.0-beta-2</version> </plugin> @@ -763,16 +802,16 @@ <version>2.6</version> </dependency> <dependency> - <groupId>com.nimbusds</groupId> - <artifactId>nimbus-jose-jwt</artifactId> - <version>4.41.2</version> - <scope>compile</scope> - <exclusions> - <exclusion> - <groupId>org.bouncycastle</groupId> - <artifactId>bcprov-jdk15on</artifactId> - </exclusion> - </exclusions> + <groupId>com.nimbusds</groupId> + <artifactId>nimbus-jose-jwt</artifactId> + <version>4.41.2</version> + <scope>compile</scope> + <exclusions> + <exclusion> + <groupId>org.bouncycastle</groupId> + <artifactId>bcprov-jdk15on</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>net.minidev</groupId> @@ -823,7 +862,7 @@ <version>2.5.2</version> </dependency> - <dependency> + <dependency> <groupId>com.thetransactioncompany</groupId> <artifactId>cors-filter</artifactId> <version>2.4</version> @@ -1231,7 +1270,7 @@ <version>${jetty-version}</version> </dependency> - <!-- Websocket support --> + <!-- Websocket support --> <dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-server</artifactId>
