KNOX-2122 - Misc code cleanup (#198)

Signed-off-by: Kevin Risden <krisden@apache.org>
diff --git a/gateway-provider-rewrite-step-secure-query/src/main/java/org/apache/knox/gateway/securequery/SecureQueryEncryptProcessor.java b/gateway-provider-rewrite-step-secure-query/src/main/java/org/apache/knox/gateway/securequery/SecureQueryEncryptProcessor.java
index 7dd976f..469b468 100644
--- a/gateway-provider-rewrite-step-secure-query/src/main/java/org/apache/knox/gateway/securequery/SecureQueryEncryptProcessor.java
+++ b/gateway-provider-rewrite-step-secure-query/src/main/java/org/apache/knox/gateway/securequery/SecureQueryEncryptProcessor.java
@@ -29,8 +29,6 @@
 import org.apache.knox.gateway.util.urltemplate.Parser;
 import org.apache.knox.gateway.util.urltemplate.Template;
 
-import java.io.UnsupportedEncodingException;
-
 public class SecureQueryEncryptProcessor
     implements UrlRewriteStepProcessor<SecureQueryEncryptDescriptor> {
 
@@ -76,14 +74,13 @@
   public void destroy() {
   }
 
-  private String encode( String string ) throws UnsupportedEncodingException {
-    EncryptionResult result = null;
+  private String encode( String string ) throws Exception {
     try {
-      result = encryptor.encrypt(string);
+      EncryptionResult result = encryptor.encrypt(string);
+      return Base64.encodeBase64URLSafeString(result.toByteAray());
     } catch (Exception e) {
       log.unableToEncryptValue(e);
+      throw e;
     }
-    string = Base64.encodeBase64URLSafeString(result.toByteAray());
-    return string;
   }
 }
diff --git a/gateway-service-nifi/src/main/java/org/apache/knox/gateway/dispatch/NiFiDispatch.java b/gateway-service-nifi/src/main/java/org/apache/knox/gateway/dispatch/NiFiDispatch.java
index 5d53e1e..adc6321 100644
--- a/gateway-service-nifi/src/main/java/org/apache/knox/gateway/dispatch/NiFiDispatch.java
+++ b/gateway-service-nifi/src/main/java/org/apache/knox/gateway/dispatch/NiFiDispatch.java
@@ -21,8 +21,6 @@
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.ContentType;
-import org.apache.knox.gateway.util.MimeTypes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -74,34 +72,4 @@
       }
     }
   }
-
-  /**
-   * Overriden due to DefaultDispatch#getInboundResponseContentType(HttpEntity) having private access, and the method is used by
-   * {@link #writeOutboundResponse(HttpUriRequest, HttpServletRequest, HttpServletResponse, HttpResponse)}}
-   */
-  private String getInboundResponseContentType( final HttpEntity entity ) {
-    String fullContentType = null;
-    if( entity != null ) {
-      ContentType entityContentType = ContentType.get( entity );
-      if( entityContentType != null ) {
-        if( entityContentType.getCharset() == null ) {
-          final String entityMimeType = entityContentType.getMimeType();
-          final String defaultCharset = MimeTypes.getDefaultCharsetForMimeType( entityMimeType );
-          if( defaultCharset != null ) {
-            LOG.usingDefaultCharsetForEntity( entityMimeType, defaultCharset );
-            entityContentType = entityContentType.withCharset( defaultCharset );
-          }
-        } else {
-          LOG.usingExplicitCharsetForEntity( entityContentType.getMimeType(), entityContentType.getCharset() );
-        }
-        fullContentType = entityContentType.toString();
-      }
-    }
-    if( fullContentType == null ) {
-      LOG.unknownResponseEntityContentType();
-    } else {
-      LOG.inboundResponseEntityContentType( fullContentType );
-    }
-    return fullContentType;
-  }
 }
diff --git a/gateway-service-nifi/src/main/java/org/apache/knox/gateway/dispatch/NiFiHaDispatch.java b/gateway-service-nifi/src/main/java/org/apache/knox/gateway/dispatch/NiFiHaDispatch.java
index a423708..6d390a3 100644
--- a/gateway-service-nifi/src/main/java/org/apache/knox/gateway/dispatch/NiFiHaDispatch.java
+++ b/gateway-service-nifi/src/main/java/org/apache/knox/gateway/dispatch/NiFiHaDispatch.java
@@ -21,9 +21,7 @@
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.ContentType;
 import org.apache.knox.gateway.ha.dispatch.DefaultHaDispatch;
-import org.apache.knox.gateway.util.MimeTypes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -85,34 +83,4 @@
       }
     }
   }
-
-  /**
-   * Overriden due to DefaultDispatch#getInboundResponseContentType(HttpEntity) having private access, and the method is used by
-   * {@link #writeOutboundResponse(HttpUriRequest, HttpServletRequest, HttpServletResponse, HttpResponse)}}
-   */
-  private String getInboundResponseContentType( final HttpEntity entity ) {
-    String fullContentType = null;
-    if( entity != null ) {
-      ContentType entityContentType = ContentType.get( entity );
-      if( entityContentType != null ) {
-        if( entityContentType.getCharset() == null ) {
-          final String entityMimeType = entityContentType.getMimeType();
-          final String defaultCharset = MimeTypes.getDefaultCharsetForMimeType( entityMimeType );
-          if( defaultCharset != null ) {
-            DefaultDispatch.LOG.usingDefaultCharsetForEntity( entityMimeType, defaultCharset );
-            entityContentType = entityContentType.withCharset( defaultCharset );
-          }
-        } else {
-          DefaultDispatch.LOG.usingExplicitCharsetForEntity( entityContentType.getMimeType(), entityContentType.getCharset() );
-        }
-        fullContentType = entityContentType.toString();
-      }
-    }
-    if( fullContentType == null ) {
-      DefaultDispatch.LOG.unknownResponseEntityContentType();
-    } else {
-      DefaultDispatch.LOG.inboundResponseEntityContentType( fullContentType );
-    }
-    return fullContentType;
-  }
 }
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 43d2d02..190db99 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
@@ -261,7 +261,7 @@
     public void execute() throws Exception {
       Credentials credentials = new Credentials();
       credentials.add("ClearInput", "Enter username: ", "user")
-                      .add("HiddenInput", "Enter pas" + "sword: ", "pass");
+                      .add("HiddenInput", "Enter password: ", "pass");
       credentials.collect();
 
       String username = credentials.get("user").string();
diff --git a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableHistoryAspect.java b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableHistoryAspect.java
index 73d8623..42c79f1 100644
--- a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableHistoryAspect.java
+++ b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableHistoryAspect.java
@@ -37,7 +37,6 @@
  */
 @Aspect
 public class KnoxShellTableHistoryAspect {
-
   private static final String KNOX_SHELL_TYPE = "org.apache.knox.gateway.shell.table.KnoxShellTable";
 
   @Pointcut("execution(public org.apache.knox.gateway.shell.table.KnoxShellTableFilter org.apache.knox.gateway.shell.table.KnoxShellTable.filter(..))")
@@ -59,7 +58,9 @@
       filter = (KnoxShellTableFilter) joinPoint.proceed();
       return filter;
     } finally {
-      saveKnoxShellTableCall(joinPoint, filter.filteredTable.id);
+      if (filter != null) {
+        saveKnoxShellTableCall(joinPoint, filter.filteredTable.id);
+      }
     }
   }
 
diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
index 3c63f2b..ce2bbb3 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java
@@ -78,7 +78,7 @@
 
   @Override
   public void doGet(URI url, HttpServletRequest request, HttpServletResponse response )
-      throws IOException, URISyntaxException {
+      throws IOException {
     response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
   }
 
@@ -90,25 +90,25 @@
 
   @Override
   public void doPut(URI url, HttpServletRequest request, HttpServletResponse response )
-      throws IOException, URISyntaxException {
+      throws IOException {
     response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
   }
 
   @Override
   public void doPatch(URI url, HttpServletRequest request, HttpServletResponse response )
-      throws IOException, URISyntaxException {
+      throws IOException {
     response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
   }
 
   @Override
   public void doDelete(URI url, HttpServletRequest request, HttpServletResponse response )
-      throws IOException, URISyntaxException {
+      throws IOException {
     response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
   }
 
   @Override
   public void doOptions(URI url, HttpServletRequest request, HttpServletResponse response )
-      throws IOException, URISyntaxException {
+      throws IOException {
     response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
   }
 
@@ -117,7 +117,7 @@
    */
   @Override
   public void doHead(URI url, HttpServletRequest request, HttpServletResponse response )
-      throws IOException, URISyntaxException {
+      throws IOException {
     response.sendError( HttpServletResponse.SC_METHOD_NOT_ALLOWED );
   }
 
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 10bfa2f..a7edec4 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
@@ -60,7 +60,6 @@
 import java.util.stream.Collectors;
 
 public class DefaultDispatch extends AbstractGatewayDispatch {
-
   protected static final String SET_COOKIE = "SET-COOKIE";
   protected static final String WWW_AUTHENTICATE = "WWW-AUTHENTICATE";
 
@@ -70,15 +69,14 @@
       AuditConstants.KNOX_SERVICE_NAME, AuditConstants.KNOX_COMPONENT_NAME);
 
   protected static final String EXCLUDE_ALL = "*";
-  private Set<String> outboundResponseExcludeHeaders = new HashSet<>(Arrays.asList(WWW_AUTHENTICATE));
-  private Set<String> outboundResponseExcludedSetCookieHeaderDirectives = new HashSet<>(Arrays.asList(EXCLUDE_ALL));
+  private Set<String> outboundResponseExcludeHeaders = Collections.singleton(WWW_AUTHENTICATE);
+  private Set<String> outboundResponseExcludedSetCookieHeaderDirectives = Collections.singleton(EXCLUDE_ALL);
 
   //Buffer size in bytes
   private int replayBufferSize = -1;
 
   @Override
   public void destroy() {
-
   }
 
   protected int getReplayBufferSize() {
@@ -104,7 +102,6 @@
     replayBufferSize = size;
   }
 
-
   protected void executeRequest(
          HttpUriRequest outboundRequest,
          HttpServletRequest inboundRequest,
@@ -171,7 +168,7 @@
     }
   }
 
-  private String getInboundResponseContentType( final HttpEntity entity ) {
+  protected String getInboundResponseContentType( final HttpEntity entity ) {
     String fullContentType = null;
     if( entity != null ) {
       ContentType entityContentType = ContentType.get( entity );
@@ -216,9 +213,7 @@
    protected void addCredentialsToRequest(HttpUriRequest outboundRequest) {
    }
 
-   protected HttpEntity createRequestEntity(HttpServletRequest request)
-         throws IOException {
-
+   protected HttpEntity createRequestEntity(HttpServletRequest request) throws IOException {
       String contentType = request.getContentType();
       int contentLength = request.getContentLength();
       InputStream contentStream = request.getInputStream();
@@ -251,7 +246,7 @@
 
    @Override
    public void doGet(URI url, HttpServletRequest request, HttpServletResponse response)
-         throws IOException, URISyntaxException {
+         throws IOException {
       HttpGet method = new HttpGet(url);
       // https://issues.apache.org/jira/browse/KNOX-107 - Service URLs not rewritten for WebHDFS GET redirects
       // This is now taken care of in DefaultHttpClientFactory.createHttpClient
@@ -263,14 +258,14 @@
 
    @Override
    public void doOptions(URI url, HttpServletRequest request, HttpServletResponse response)
-         throws IOException, URISyntaxException {
+         throws IOException {
       HttpOptions method = new HttpOptions(url);
       executeRequest(method, request, response);
    }
 
    @Override
    public void doPut(URI url, HttpServletRequest request, HttpServletResponse response)
-         throws IOException, URISyntaxException {
+         throws IOException {
       HttpPut method = new HttpPut(url);
       HttpEntity entity = createRequestEntity(request);
       method.setEntity(entity);
@@ -280,7 +275,7 @@
 
    @Override
    public void doPatch(URI url, HttpServletRequest request, HttpServletResponse response)
-         throws IOException, URISyntaxException {
+         throws IOException {
       HttpPatch method = new HttpPatch(url);
       HttpEntity entity = createRequestEntity(request);
       method.setEntity(entity);
@@ -300,7 +295,7 @@
 
    @Override
    public void doDelete(URI url, HttpServletRequest request, HttpServletResponse response)
-         throws IOException, URISyntaxException {
+         throws IOException {
       HttpDelete method = new HttpDelete(url);
       copyRequestHeaderFields(method, request);
       executeRequest(method, request, response);
@@ -308,7 +303,7 @@
 
   @Override
   public void doHead(URI url, HttpServletRequest request, HttpServletResponse response)
-      throws IOException, URISyntaxException {
+      throws IOException {
     final HttpHead method = new HttpHead(url);
     copyRequestHeaderFields(method, request);
     executeRequest(method, request, response);
@@ -316,7 +311,8 @@
 
   public void copyResponseHeaderFields(HttpServletResponse outboundResponse, HttpResponse inboundResponse) {
     final TreeMap<String, Set<String>> excludedHeaderDirectives = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
-    getOutboundResponseExcludeHeaders().stream().forEach(excludeHeader -> excludedHeaderDirectives.put(excludeHeader, new HashSet<>(Arrays.asList(EXCLUDE_ALL))));
+    getOutboundResponseExcludeHeaders().stream().forEach(excludeHeader ->
+        excludedHeaderDirectives.put(excludeHeader, Collections.singleton(EXCLUDE_ALL)));
     excludedHeaderDirectives.put(SET_COOKIE, getOutboundResponseExcludedSetCookieHeaderDirectives());
 
     for (Header header : inboundResponse.getAllHeaders()) {
diff --git a/gateway-spi/src/main/java/org/apache/knox/gateway/security/SubjectUtils.java b/gateway-spi/src/main/java/org/apache/knox/gateway/security/SubjectUtils.java
index 8f3e74e..d6ea15b 100644
--- a/gateway-spi/src/main/java/org/apache/knox/gateway/security/SubjectUtils.java
+++ b/gateway-spi/src/main/java/org/apache/knox/gateway/security/SubjectUtils.java
@@ -20,6 +20,7 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.Principal;
+import java.util.Optional;
 import java.util.Set;
 
 /**
@@ -41,10 +42,9 @@
     // LJM TODO: this implementation assumes the first one found.
     // We should configure through context param based on knowledge
     // of the authentication provider in use
-    Set<Principal> principals = subject.getPrincipals();
-    for (Principal p : principals) {
-      name = p.getName();
-      break;
+    Optional<Principal> principal = subject.getPrincipals().stream().findFirst();
+    if (principal.isPresent()) {
+      name = principal.get().getName();
     }
 
     return name;