Add save and restore to RequestContext
diff --git a/audit-service-war/src/main/java/org/apache/logging/log4j/audit/service/RequestContext.java b/audit-service-war/src/main/java/org/apache/logging/log4j/audit/service/RequestContext.java
index b883483..2e46b63 100644
--- a/audit-service-war/src/main/java/org/apache/logging/log4j/audit/service/RequestContext.java
+++ b/audit-service-war/src/main/java/org/apache/logging/log4j/audit/service/RequestContext.java
@@ -35,20 +35,28 @@
 public final class RequestContext {
     @ClientServer
     public static final String REQUEST_ID = "requestId";
+    private String requestId;
     @ClientServer
     public static final String SESSION_ID = "sessionId";
+    private String sessionId;
     @ClientServer
     public static final String ACCOUNT_NUMBER = "accountNumber";
+    private Long accountNumber;
     @ClientServer
     public static final String IP_ADDRESS = "ipAddress";
+    private String ipAddress;
     @ClientServer
     public static final String USER_ID = "userId";
+    private String userId;
     @ClientServer
     public static final String LOGIN_ID = "loginId";
+    private String loginId;
     @Local
     public static final String CALLING_HOST = "callingHost";
+    private String callingHost;
 
     public static final String HOST_NAME = "hostName";
+    private String hostName;
 
     private static final String LOCAL_HOST_NAME = NetUtils.getLocalHostname();
     /**
@@ -147,4 +155,35 @@
     public static void setCallingHost(String hostName) {
         ThreadContext.put(CALLING_HOST, hostName);
     }
+
+    /**
+     * Save the RequestContext data.
+     * @return A copy of the RequestContext data.
+     */
+    public static RequestContext save() {
+        RequestContext context = new RequestContext();
+        context.accountNumber = getAccountNumber();
+        context.callingHost = getCallingHost();
+        context.hostName = getHostName();
+        context.ipAddress = getIpAddress();
+        context.loginId = getLoginId();
+        context.requestId = getRequestId();
+        context.sessionId = getSessionId();
+        context.userId = getUserId();
+        return context;
+    }
+
+    /**
+     * Populate the ThreadContext from a RequestContext object.
+     */
+    public void restore() {
+        setAccountNumber(this.accountNumber);
+        setCallingHost(this.callingHost);
+        setHostName(this.hostName);
+        setIpAddress(this.ipAddress);
+        setLoginId(this.loginId);
+        ThreadContext.put(REQUEST_ID, this.requestId);
+        setSessionId(this.sessionId);
+        setUserId(this.userId);
+    }
 }