a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: FSAssertionManager.java,v 1.12 2009/08/03 18:18:36 bigfatrat Exp $
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts * Portions Copyrighted 2016 ForgeRock AS.
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpottsimport static org.forgerock.openam.utils.Time.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.PeriodicGroupRunnable;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.ScheduleableGroupAction;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.SystemConfigurationUtil;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.FSException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.FSUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.IFSConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.common.LogUtil;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.jaxb.entityconfig.BaseConfigType;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSAssertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSAssertionArtifact;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSAuthenticationStatement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.FSSubject;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.common.AuthnContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.message.common.IDPProvidedNameIdentifier;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.meta.IDFFMetaException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.meta.IDFFMetaManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.meta.IDFFMetaUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.util.FSAttributeStatementHelper;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.federation.services.util.FSServiceUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.monitoring.FedMonAgent;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.monitoring.FedMonIDFFSvc;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.monitoring.MonitorManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.session.SessionException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.session.SessionManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.plugin.session.SessionProvider;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.Assertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.AssertionIDReference;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.AttributeStatement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.AudienceRestrictionCondition;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.Conditions;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.NameIdentifier;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.SubjectConfirmation;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.assertion.SubjectLocality;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLServiceManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.protocol.AssertionArtifact;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * IDP side class which handles assertion and artifact operations.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Statistics instance for artifacts.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Stats artStats = Stats.getInstance("libIDFFArtifactMap");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Statistics instance for assertions.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Stats assrtStats = Stats.getInstance("libIDFFAssertionMap");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final Integer DEFAULT_CLEANUP_INTERVAL =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IFSConstants.CLEANUP_INTERVAL_DEFAULT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final Integer DEFAULT_ASSERTION_TIMEOUT =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Integer(IFSConstants.ASSERTION_TIMEOUT_DEFAULT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static Map instanceMap = new HashMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private PeriodicGroupRunnable assertionTimeoutRunnable;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private PeriodicGroupRunnable artifactTimeoutRunnable;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static String SERVICE_NAMING = "fsassertionmanager";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static FedMonAgent agent = MonitorManager.getAgent();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static FedMonIDFFSvc idffSvc = MonitorManager.getIDFFSvc();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster realm = IDFFMetaUtils.getRealmByMetaAlias(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster hostEntityId = metaManager.getEntityIDByMetaAlias(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cleanupInterval = IFSConstants.CLEANUP_INTERVAL_DEFAULT * 1000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionTimeout = IFSConstants.ASSERTION_TIMEOUT_DEFAULT * 1000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster artifactTimeout = IFSConstants.ARTIFACT_TIMEOUT_DEFAULT * 1000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BaseConfigType idpConfig = FSUtils.getIDFFMetaManager().
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster attributes = IDFFMetaUtils.getAttributes(idpConfig);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaUtils.getFirstAttributeValue(attributes,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Exception while parsing interval", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaUtils.getFirstAttributeValue(attributes,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Exception while parsing timeout", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.ASSERTION_TIMEOUT_ALLOWED_DIFFERENCE) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.ASSERTION_TIMEOUT_ALLOWED_DIFFERENCE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaUtils.getFirstAttributeValue(attributes,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "ArtifactTimeOut configuration not found in FSConfig."
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " Using Default");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Exception while parsing cleanup assertion :", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idffSvc.setAssertions((long)idEntryMap.size());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionTimeoutRunnable = new PeriodicGroupRunnable(timeoutAction,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster artifactTimeoutRunnable = new PeriodicGroupRunnable(timeoutAction,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster TimerPool pool = SystemTimerPool.getTimerPool();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pool.schedule(assertionTimeoutRunnable, new Date(((
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts currentTimeMillis() + cleanupInterval) / 1000) * 1000));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pool.schedule(artifactTimeoutRunnable, new Date(((
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts currentTimeMillis() + cleanupInterval) / 1000) * 1000));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assrtIdStats = new FSAssertionStats(idEntryMap, realm,hostEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster artIdStats = new FSArtifactStats(artIdMap, realm, hostEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns hosted provider meta alias.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return hosted provider meta alias.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setMetaAlias(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets hosted provider meta alias.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param metaAlias hosted provider meta alias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getMetaAlias()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the realm which hosted provider resides.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the realm which hosted provider resides.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setRealm(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the realm which hosted provider resides.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param realm The realm which hosted provider resides
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getRealm()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns hosted provider Entity ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return hosted provider Entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setEntityId(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets hosted provider Entity ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param entityId hosted provider Entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getEntityId()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns artifact to assertion ID map.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return artifact to assertion ID map
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns assertion ID to <code>Entry</code> object map.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return assertion ID to <code>Entry</code> object map
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a <code>FSAssertionManager</code> instance.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param metaAlias hosted entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>FSAssertionManager</code> instance.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception FSException if error occurrs.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static synchronized FSAssertionManager getInstance(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.getInstance: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (FSAssertionManager) instanceMap.get(metaAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.getInstance: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Constructing a new instance of FSAssertionManager");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (instanceMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Creates an assertion artifact.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param id session ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param realm the realm in which the provider resides
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param spEntityID service provider's entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param spHandle service provider issued <code>NameIdentifier</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param idpHandle identity provider issued <code>NameIdentifier</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param inResponseTo value to InResponseTo attribute. It's the request ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param minorVersion request minor version, used to determine assertion's
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * minor version
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception FSException,SAMLException if error occurrs
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public AssertionArtifact createFSAssertionArtifact(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // check input
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager: null input for"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " method createFSAssertionArtifact.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // create assertion id and artifact
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String handle = SAMLUtils.generateAssertionHandle();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createFSAssertionArt"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "ifact: couldn't generate assertion handle.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("errorCreateArtifact", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // TODO: should obtain it through meta
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String sourceSuccinctID = FSUtils.generateSourceID(hostEntityId);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster byte bytesSourceId[] = SAMLUtils.stringToByteArray(sourceSuccinctID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bytesHandle = handle.getBytes(IFSConstants.SOURCEID_ENCODING);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertionArt: ", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster AssertionArtifact art = new FSAssertionArtifact(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int assertionMinorVersion = IFSConstants.FF_11_ASSERTION_MINOR_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.FF_12_ART_ASSERTION_MINOR_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Creates an assertion artifact.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param id session ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param artifact assertion artifact
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param realm the realm under which the entity resides.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param spEntityID service provider's entity ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param spHandle service provider issued <code>NameIdentifier</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param idpHandle identity provider issued <code>NameIdentifier</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param inResponseTo value to InResponseTo attribute. It's the request ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param assertionMinorVersion minor version the assertion should use
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception FSException,SAMLException if error occurrs
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertion(id): Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // check input
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager: null input for"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " method createFSAssertion.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IDFFMetaManager metaManager = FSUtils.getIDFFMetaManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpConfig = metaManager.getIDPDescriptorConfig(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertion: exception while"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " obtaining idp extended meta:", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster attributes = IDFFMetaUtils.getAttributes(idpConfig);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SessionProvider sessionProvider = SessionManager.getProvider();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertion(id):", ue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertion(id):", se);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((strAuthInst != null) && (strAuthInst.length >= 1)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authInstant = DateUtils.stringToDate(strAuthInst[0]);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "createFSAssertion(id): AuthInstant not found" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "in the Token");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertion(id):AuthInstant = "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] strAuthMethod = sessionProvider.getProperty(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((strAuthMethod != null) && (strAuthMethod.length >= 1)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertion(id):", ue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertion(id):", se);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String assertionIssuer = IDFFMetaUtils.getFirstAttributeValue(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionIssuer = SystemConfigurationUtil.getProperty(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.iplanet.am.server.host");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InetAddress.getByName(assertionIssuer).getHostAddress();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authLocality = new SubjectLocality(ipAddress, assertionIssuer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAssertionManager.constructor: couldn't"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSSession session = sessionManager.getSession(token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContextClassRef = session.getAuthnContext();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContextStatementRef = authnContextClassRef;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createFSAssertion"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "(id): AuthnContextStatement for the token is null"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " Assertion will not contain any "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " AuthenticationStatement");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createFSAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "AuthnContextStatement used for authenticating the user: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster univId = sessionProvider.getPrincipalName(token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAssertionManager.createAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " exception retrieving info from the session: ", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "alliance_manager_no_local_descriptor", null, e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " Creating Authentication Assertion for user with"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "opaqueHandle= "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " And SecurityDomain= "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SAMLConstants.DEPRECATED_CONFIRMATION_METHOD_ARTIFACT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster subConfirmation.setSubjectConfirmationData(artString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // set to bearer for POST profile
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.FF_12_POST_ASSERTION_MINOR_VERSION ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster IFSConstants.FF_12_ART_ASSERTION_MINOR_VERSION)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpNi.setMinorVersion(IFSConstants.FF_12_PROTOCOL_MINOR_VERSION);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idpNi = new IDPProvidedNameIdentifier(idpHandle.getNameQualifier(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSSubject sub = new FSSubject(spHandle, subConfirmation, idpNi);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContextClassRef, authnContextStatementRef);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authnContext.setMinorVersion(assertionMinorVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAuthenticationStatement statement = new FSAuthenticationStatement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster authMethod, authInstant, sub, authLocality, null, authnContext);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSSession session = sessionManager.getSession(univId, id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createAssertion(id): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "AssertionManager could not find a valid Session for"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "userId: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String sessionIndex = session.getSessionIndex();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.createAssertion(id): SessionIndex: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //setReauthenticateOnOrAfter date
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // get this period from the config
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster notAfter = new Date(issueInstant.getTime() + artifactTimeout);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster notAfter = new Date(issueInstant.getTime() + assertionTimeout);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster statement.setReauthenticateOnOrAfter(notAfter);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " Authentication Statement: " + statement.toXMLString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Conditions cond = new Conditions(null, notAfter);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((destID != null) &&(destID.length() != 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " Authentication Statement: " + statement.toXMLString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This is added to create an attribute statement for the bootstrap
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * information.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String generateBootstrapping = IDFFMetaUtils.getFirstAttributeValue(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster attributes, IFSConstants.GENERATE_BOOTSTRAPPING);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (assertionMinorVersion != IFSConstants.FF_11_ASSERTION_MINOR_VERSION
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSDiscoveryBootStrap bootStrap = new FSDiscoveryBootStrap(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster token, authContext, sub, univId, destID, realm);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster attribStatement = bootStrap.getBootStrapStatement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAssertionManager.createAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "exception when generating bootstrapping resource "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "offering:", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster AssertionIDReference aID = new AssertionIDReference();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String attributePluginImpl = IDFFMetaUtils.getFirstAttributeValue(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Thread.currentThread().getContextClassLoader().loadClass(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (pluginClass instanceof FSRealmAttributePlugin) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (pluginClass instanceof FSAttributePlugin) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster statements.add((AttributeStatement)iter.next());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertion.createAssertion(id):getAttributePlugin:", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (IDFFMetaUtils.isAutoFedEnabled(attributes)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAttributeStatementHelper.getAutoFedAttributeStatement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAssertion assertion = new FSAssertion(aID.getAssertionIDReference(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertion.setMinorVersion(assertionMinorVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertion.setID(aID.getAssertionIDReference());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " Assertion created successfully: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Entry entry = new Entry(assertion, destID, artString, token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int temp = Integer.parseInt(IDFFMetaUtils.getFirstAttributeValue(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " Assertion MAX number configuration not found in "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "FSConfig. Using Default");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster maxNumber = new Integer(IFSConstants.ASSERTION_MAX_NUMBER_DEFAULT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((maxValue != 0) &&(idEntryMap.size() > maxValue)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.error("FSAssertionManager.createAssertion: "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "reached maxNumber of assertions.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("errorCreateAssertion", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized(idEntryMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idffSvc.setAssertions((long)idEntryMap.size());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager: couldn't add "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "to idEntryMap.", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("errorCreateAssertion",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.access(Level.FINER,LogUtil.CREATE_ASSERTION,data, token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] data = { assertion.getAssertionID() } ;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.access(Level.INFO,LogUtil.CREATE_ASSERTION,data, token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized(artIdMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)){
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager: couldn't add "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "artifact to the artIdMap.", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("errorCreateArtifact",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster artifactTimeoutRunnable.removeElement(aIDString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionTimeoutRunnable.removeElement(aIDString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionTimeoutRunnable.addElement(aIDString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.createAssertion(id):"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " Returning Assertion: " + assertion.toXMLString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Retrieves the assertion associated with an artifact.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param artifact assertion artifact
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param destID destination ID of the site who sent the request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return assertion associated with the artifact
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception FSException if the assertion could not be retrieved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager: input is null.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String artString = artifact.getAssertionArtifact();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // get server id.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // call AssertionManagerClient.getAssertion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("AssertionManager.getAssertion(art, " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "destid: calling another server in lb site:" + remoteUrl);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAssertionManagerClient amc = new FSAssertionManagerClient(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.getAssertion(art, de"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "stid): no AssertionID found corresponding to artifact.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("noMatchingAssertion",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.getAssertion(art, de"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "stid): no Entry found corresponding to artifact.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("noMatchingAssertion", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // check the destination id
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.getAssertion(art, de"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "stid): no destID found corresponding to artifact.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("noDestIDMatchingArtifact",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.getAssertion(art, de"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "stid): destinationID doesn't match.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized(artIdMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster artifactTimeoutRunnable.removeElement(aIDString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized(idEntryMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idffSvc.setAssertions((long)idEntryMap.size());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionTimeoutRunnable.removeElement(aIDString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager.getAssertion(art, de"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "stid): no Assertion found corresponding to aID.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("noMatchingAssertion",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("FSAssertionManager: assertion "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("assertionTimeNotValid",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Finds the destination id for whom the artifact is issued for.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param artifact assertion artifact
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return destination id
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception FSException if error occurrs
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.getDestIdForArtifact: Called");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String artString = artifact.getAssertionArtifact();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // get server id.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // call FSAssertionManagerClient.getAssertion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "AssertionManager.getDestIdForArtifact(art, " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "destid: calling another server in lb site:" + remoteUrl);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAssertionManagerClient amc = new FSAssertionManagerClient(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.getDestIdForArtifact :" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "no AssertionID found corresponding to artifact.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("noMatchingAssertion",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.getDestIdForArtifact: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "no Entry found corresponding to artifact.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("noMatchingAssertion",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.getDestIdForArtifact: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "no destID found corresponding to artifact.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new FSException("noDestIDMatchingArtifact",null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FSAssertionManager.getDestIdForArtifact: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Destination ProviderID found for Artifact: " + dest);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String getFullServiceURL(String shortUrl) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster URL weburl = SystemConfigurationUtil.getServiceURL(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SERVICE_NAMING, u.getProtocol(), u.getHost(), u.getPort(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "AssertionManager.getFullServiceURL:full remote URL is: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "AssertionManager.getFullServiceURL:Exception:", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Specific assertion class containing date and status.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This is used to store information about a fault artifact.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public ErrorAssertion( java.util.Date issue, Status status ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Store the status of a given artifact (original error)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param aa reference artifact
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param s stored status
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setErrStatus( AssertionArtifact aa, Status s ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("setErrStatus( " + aa + ", " + s + " )" );
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts Assertion assertion = new ErrorAssertion(newDate(), s);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Entry e = new Entry( assertion, null, artString, null );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (idEntryMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionTimeoutRunnable.removeElement(artString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((agent != null) && agent.isRunning() && (idffSvc != null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster idffSvc.setAssertions((long)idEntryMap.size());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertionTimeoutRunnable.addElement(artString);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Retrieve the original status of a reference artifact.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param aa reference artifact
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return The status as originally recorded.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Status getErrorStatus( AssertionArtifact aa ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("getErrorStatus( " + aa + " )" );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // call AssertionManagerClient.getAssertion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSUtils.debug.message("AssertionManager.getAssertion(art, "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "destid: calling another server in lb site:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FSAssertionManagerClient amc = new FSAssertionManagerClient(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster e = (Entry) idEntryMap.get( aa.getAssertionArtifact() );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( null != e ) {