diff --git a/src/main/java/com/kms/handler/AuthHandler.java b/src/main/java/com/kms/handler/AuthHandler.java index 7f57cabab3e835ad972de1f82744f89d80d9fab2..dab838d1e53b4f97d86c5cf585eb8a52499754bd 100644 --- a/src/main/java/com/kms/handler/AuthHandler.java +++ b/src/main/java/com/kms/handler/AuthHandler.java @@ -10,9 +10,9 @@ import javax.xml.ws.handler.soap.SOAPMessageContext; import java.util.Iterator; import java.util.Set; -public class AuthHandler implements SOAPHandler<SOAPMessageContext> { +public class AuthHandler implements SOAPHandler<SOAPMessageContext> { - private static final String REST_API_KEY = System.getenv("REST_API_KEY"); + private static final String REST_API_KEY = "REST_API_KEY"; private static final String MONOLITH_API_KEY = System.getenv("MONOLITH_API_KEY"); private static final String NAMESPACE = "http://service.kms.com/"; @@ -27,21 +27,20 @@ public class AuthHandler implements SOAPHandler<SOAPMessageContext> { final SOAPHeader header = soapMessageContext.getMessage().getSOAPHeader(); final QName apiKeyQName = new QName(NAMESPACE, "apiKey"); String apiKey = ""; - final Iterator x = header.getChildElements(apiKeyQName); - if (x.hasNext()) { - SOAPElement apiKeyElement = (SOAPElement) x.next(); + final Iterator it = header.getChildElements(apiKeyQName); + if (it.hasNext()) { + SOAPElement apiKeyElement = (SOAPElement) it.next(); apiKey = apiKeyElement.getValue(); } String callerId = "null"; - if (apiKey.equals(REST_API_KEY)) { + if (apiKey.equals(REST_API_KEY)) callerId = "REST"; - }else if (apiKey.equals(MONOLITH_API_KEY)) { + else if (apiKey.equals(MONOLITH_API_KEY)) callerId = "MONOLITH"; - } soapMessageContext.put("callerId", callerId); - } catch (SOAPException e) { + } catch (SOAPException ignored) { } return true; diff --git a/src/main/java/com/kms/handler/LogHandler.java b/src/main/java/com/kms/handler/LogHandler.java index 8975be10d24311c9b24dc62070e1211fab1466c2..d612126a87800978c2ae71e07a4f3bd9c2293432 100644 --- a/src/main/java/com/kms/handler/LogHandler.java +++ b/src/main/java/com/kms/handler/LogHandler.java @@ -1,35 +1,24 @@ package com.kms.handler; import com.kms.crosscut.LoggingHelper; +import com.kms.handler.helper.SoapFaultHelper; import com.sun.net.httpserver.HttpExchange; - +import org.w3c.dom.Node; import javax.xml.namespace.QName; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFactory; -import javax.xml.soap.SOAPFault; import javax.xml.ws.handler.MessageContext; import javax.xml.ws.handler.soap.SOAPHandler; import javax.xml.ws.handler.soap.SOAPMessageContext; -import javax.xml.ws.soap.SOAPFaultException; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; +import java.util.Optional; import java.util.Set; public class LogHandler implements SOAPHandler<SOAPMessageContext> { - private static final SOAPFactory soapFactory; - - static { - try { - soapFactory = SOAPFactory.newInstance(); - } catch (SOAPException e) { - throw new RuntimeException(e); - } - } - @Override public Set<QName> getHeaders() { return null; @@ -40,9 +29,8 @@ public class LogHandler implements SOAPHandler<SOAPMessageContext> { final boolean messageHandled = (boolean) soapMessageContext.getOrDefault("messageHandled", false); - if (messageHandled) { + if (messageHandled) return true; - } soapMessageContext.put("messageHandled", true); @@ -55,19 +43,21 @@ public class LogHandler implements SOAPHandler<SOAPMessageContext> { soapMessageContext.getMessage().writeTo(outputStream); final String callerId = (String) soapMessageContext.getOrDefault("callerId", "null"); - final LoggingHelper loggingHelper = LoggingHelper.getInstance(); + LoggingHelper loggingHelper = LoggingHelper.getInstance(); if (callerId.equals("null")) { - SOAPFault customFault = soapFactory.createFault(); - customFault.setFaultCode("InvalidRequest"); - customFault.setFaultString("API key is invalid."); - loggingHelper.log(outputStream.toString(), address, - soapBody.getChildNodes().item(1).getNodeName(), callerId, "invalid api key"); + String requestedServiceName = Optional.of(soapBody.getChildNodes().item(1)) + .map(Node::getNodeName) + .orElse(""); - throw new SOAPFaultException(customFault); + loggingHelper.log(outputStream.toString(), address, requestedServiceName, + callerId, "invalid api key"); + + SoapFaultHelper.throwFault("InvalidRequest","API key is invalid."); } loggingHelper.log(outputStream.toString(), address, soapBody.getChildNodes().item(1).getNodeName(), callerId, ""); + } catch (SOAPException | IOException ignored) { } diff --git a/src/main/java/com/kms/handler/helper/SoapFaultHelper.java b/src/main/java/com/kms/handler/helper/SoapFaultHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..41e459c93707ff8de25420ee1777dbf893720ce9 --- /dev/null +++ b/src/main/java/com/kms/handler/helper/SoapFaultHelper.java @@ -0,0 +1,32 @@ +package com.kms.handler.helper; + +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPFactory; +import javax.xml.soap.SOAPFault; +import javax.xml.ws.soap.SOAPFaultException; + +public class SoapFaultHelper { + + private static final SOAPFactory soapFactory; + + static { + try { + soapFactory = SOAPFactory.newInstance(); + } catch (SOAPException e) { + throw new RuntimeException(e); + } + } + + public static void throwFault(String faultCode, String faultString) { + try { + SOAPFault customFault = soapFactory.createFault(); + customFault.setFaultCode(faultCode); + customFault.setFaultString(faultString); + + throw new SOAPFaultException(customFault); + } catch (SOAPException ignored) { + } + + } + +}