/******************************************************************************* *******************************************************************************/ package at.gv.egiz.eaaf.core.impl.idp.auth.data; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import at.gv.egiz.eaaf.core.api.data.EAAFConstants; import at.gv.egiz.eaaf.core.api.idp.EAAFAuthProcessDataConstants; import at.gv.egiz.eaaf.core.api.idp.auth.data.IAuthProcessDataContainer; import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException; public class AuthProcessDataWrapper implements IAuthProcessDataContainer, EAAFAuthProcessDataConstants { private static final Logger log = LoggerFactory.getLogger(AuthProcessDataWrapper.class); protected Map authProcessData; public AuthProcessDataWrapper(Map authProcessData) { this.authProcessData = authProcessData; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getIssueInstant() */ @Override public String getIssueInstant() { return wrapStringObject(VALUE_ISSUEINSTANT, null, String.class); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setIssueInstant(java.lang.String) */ @Override public void setIssueInstant(String issueInstant) { authProcessData.put(VALUE_ISSUEINSTANT, issueInstant); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#isAuthenticated() */ @Override public boolean isAuthenticated() { return wrapStringObject(FLAG_IS_AUTHENTICATED, false, Boolean.class); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setAuthenticated(boolean) */ @Override public void setAuthenticated(boolean authenticated) { authProcessData.put(FLAG_IS_AUTHENTICATED, authenticated); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getIdentityLink() */ @Override public IIdentityLink getIdentityLink() { return wrapStringObject(VALUE_IDENTITYLINK, null, IIdentityLink.class); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setIdentityLink(at.gv.egovernment.moa.id.auth.data.IdentityLink) */ @Override public void setIdentityLink(IIdentityLink identityLink) { authProcessData.put(VALUE_IDENTITYLINK, identityLink); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#isMandateUsed() */ @Override public boolean isMandateUsed() { return wrapStringObject(FLAG_USE_MANDATE, false, Boolean.class); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setUseMandates(boolean) */ @Override public void setUseMandates(boolean useMandates) { authProcessData.put(FLAG_USE_MANDATE, useMandates); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getQAALevel() */ @Override public String getQAALevel() { return wrapStringObject(VALUE_QAALEVEL, null, String.class); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setQAALevel(java.lang.String) */ @Override public void setQAALevel(String qAALevel) { authProcessData.put(VALUE_QAALEVEL, qAALevel); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#isForeigner() */ @Override public boolean isForeigner() { return wrapStringObject(FLAG_IS_FOREIGNER, false, Boolean.class); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setForeigner(boolean) */ @Override public void setForeigner(boolean isForeigner) { authProcessData.put(FLAG_IS_FOREIGNER, isForeigner); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#isOW() */ @Override public boolean isOW() { return wrapStringObject(FLAG_IS_ORGANWALTER, false, Boolean.class); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setOW(boolean) */ @Override public void setOW(boolean isOW) { authProcessData.put(FLAG_IS_ORGANWALTER, isOW); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getSessionCreated() */ @Override public Date getSessionCreated() { return wrapStringObject(EAAFConstants.AUTH_DATA_CREATED, null, Date.class); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getGenericSessionDataStorage() */ @Override public Map getGenericSessionDataStorage() { Map result = new HashMap(); for (String el : authProcessData.keySet()) { if (el.startsWith(GENERIC_PREFIX)) result.put(el.substring(GENERIC_PREFIX.length()), authProcessData.get(el)); } return result; } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getGenericDataFromSession(java.lang.String) */ @Override public Object getGenericDataFromSession(String key) { return authProcessData.get(GENERIC_PREFIX + key); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getGenericDataFromSession(java.lang.String, java.lang.Class) */ @Override public T getGenericDataFromSession(String key, Class clazz) { return wrapStringObject(GENERIC_PREFIX + key, null, clazz); } /* (non-Javadoc) * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setGenericDataToSession(java.lang.String, java.lang.Object) */ @Override public void setGenericDataToSession(String key, Object object) throws EAAFStorageException { authProcessData.put(GENERIC_PREFIX + key, object); } protected T wrapStringObject(String key, Object defaultValue, Class clazz) { if (StringUtils.isNotEmpty(key)) { Object obj = authProcessData.get(key); if (obj != null && clazz.isInstance(obj)) return (T) obj; } if (defaultValue == null) return null; else if (clazz.isInstance(defaultValue)) return (T)defaultValue; else { log.error("DefaultValue: " + defaultValue.getClass().getName() + " is not of Type:" + clazz.getName()); throw new IllegalStateException("DefaultValue: " + defaultValue.getClass().getName() + " is not of Type:" + clazz.getName()); } } }