@Override
 public void getAllSessionAttributes(String appSessionId)
     throws SpartanPersistenceException, Exception {
   HttpServletRequest request =
       ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
   HttpSession session = request.getSession();
   // Iterate JSONObject
   List<SessionDataInterface> sessionData =
       loginSessionDataRepository.findByAppSessionId(appSessionId);
   for (SessionDataInterface sessiondata : sessionData) {
     if (sessiondata.getBooleanValue() != null) {
       session.setAttribute(sessiondata.getSessionKey(), sessiondata.getBooleanValue());
     }
     if (sessiondata.getNumberValue() != null) {
       session.setAttribute(sessiondata.getSessionKey(), sessiondata.getNumberValue());
     }
     if (sessiondata.getDateTimeValue() != null) {
       session.setAttribute(sessiondata.getSessionKey(), sessiondata.getDateTimeValue());
     }
     if (sessiondata.getJsonValue() != null) {
       session.setAttribute(sessiondata.getSessionKey(), sessiondata.getJsonValue());
     }
     if (sessiondata.getStringValue() != null) {
       session.setAttribute(sessiondata.getSessionKey(), sessiondata.getStringValue());
     }
   }
 }
  @Override
  public Object getSessionData(String key) {
    HttpServletRequest request =
        ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    HttpSession session = request.getSession();
    if (session.getAttribute(key) != null) {
      System.out.println("Returning session data from session for key: " + key);
      return session.getAttribute(key);
    } else {
      try {
        // LoginSessionInterface loginSession = null;
        SessionDataInterface sessionData = null;
        sessionData =
            loginSessionDataRepository.findBySessionKey(
                cookieValidation.getCookieValue(request, "XA_ID"), key);
        if (sessionData != null) {
          // loginSession =
          // loginSessionInterfaceRepository.findById(session.getAttribute("usidHash").toString());
          if (sessionData.getDataType() == 1) {
            session.setAttribute(key, sessionData.getNumberValue());
          } else if (sessionData.getDataType() == 2) {
            session.setAttribute(key, sessionData.getDateTimeValue());

          } else if (sessionData.getDataType() == 3) {
            session.setAttribute(key, sessionData.getStringValue());

          } else if (sessionData.getDataType() == 4) {
            session.setAttribute(key, sessionData.getBooleanValue());
          } else if (sessionData.getDataType() == 5) {
            session.setAttribute(key, sessionData.getJsonValue());
          }
          /*if (loginSession != null) {
          String sessionData = loginSession.getSessionData();
          JSONObject sessionDataObject = new JSONObject(sessionData);
          if (sessionDataObject.has(key)) {
          	 Put the value in Http session
          	session.setAttribute(key, sessionDataObject.get(key));
          	System.out.println("Returning session data from db for key: " + key);
          	return sessionDataObject.get(key);
          }*/
          return session.getAttribute(key);
        }

        return null;
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    return null;
  }
  @Override
  public <T> Object getSessionDataForObject(String key, Class clazz) {
    HttpServletRequest request =
        ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    HttpSession session = request.getSession();
    SessionDataInterface sessionData = null;
    try {
      if (session.getAttribute(key) != null) {
        return new JSONObjectMapperHelper().fromJSON(session.getAttribute(key).toString(), clazz);
      }
      sessionData =
          loginSessionDataRepository.findBySessionKey(
              cookieValidation.getCookieValue(request, "XA_ID"), key);
      if (sessionData != null) {
        if (sessionData.getDataType() == 5) {
          session.setAttribute(key, sessionData.getJsonValue());

          return new JSONObjectMapperHelper().fromJSON(sessionData.getJsonValue(), clazz);
        }
      }
    } catch (Exception e) {
    }
    return null;
  }
  @Override
  public Object getSessionData(String key) {
    HttpServletRequest request =
        ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    HttpSession session = request.getSession();
    if (session.getAttribute(key) != null) {
      System.out.println("Returning session data from session for key: " + key);
      return session.getAttribute(key);
    } else {
      try {
        SessionDataInterface sessionData = null;
        sessionData =
            loginSessionDataRepository.findBySessionKey(
                cookieValidation.getCookieValue(request, "XA_ID"), key);
        if (sessionData != null) {
          if (sessionData.getDataType() == 1) {
            session.setAttribute(key, sessionData.getNumberValue());
          } else if (sessionData.getDataType() == 2) {
            session.setAttribute(key, sessionData.getDateTimeValue());

          } else if (sessionData.getDataType() == 3) {
            session.setAttribute(key, sessionData.getStringValue());

          } else if (sessionData.getDataType() == 4) {
            session.setAttribute(key, sessionData.getBooleanValue());
          } else if (sessionData.getDataType() == 5) {
            session.setAttribute(key, sessionData.getJsonValue());
          }
          return session.getAttribute(key);
        }

        return null;
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    return null;
  }