package at.gv.egovernment.moa.id.protocols.pvp2x; import org.opensaml.common.SAMLObject; import org.opensaml.common.binding.artifact.SAMLArtifactMap; import org.opensaml.xml.io.MarshallingException; import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException; import at.gv.egovernment.moa.id.protocols.pvp2x.utils.StoredAssertion; import at.gv.egovernment.moa.id.storage.AssertionStorage; public class PVPAssertionStorage implements SAMLArtifactMap { private static PVPAssertionStorage instance = null; public static PVPAssertionStorage getInstance() { if(instance == null) { instance = new PVPAssertionStorage(); } return instance; } //private Map assertions = new HashMap(); private AssertionStorage assertions = AssertionStorage.getInstance(); public boolean contains(String artifact) { return assertions.containsKey(artifact); } public void put(String artifact, String relyingPartyId, String issuerId, SAMLObject samlMessage) throws MarshallingException { SAMLArtifactMapEntry assertion = new StoredAssertion(artifact, relyingPartyId, issuerId, samlMessage); try { assertions.put(artifact, assertion); } catch (MOADatabaseException e) { // TODO Insert Error Handling, if Assertion could not be stored throw new MarshallingException("Assertion are not stored in Database.",e); } } public SAMLArtifactMapEntry get(String artifact) { try { return assertions.get(artifact, SAMLArtifactMapEntry.class); } catch (MOADatabaseException e) { // TODO Insert Error Handling, if Assertion could not be read e.printStackTrace(); return null; } } public void remove(String artifact) { assertions.remove(artifact); } }