ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts/*
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 *
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 * opensso/legal/CDDLv1.0.txt
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * at opensso/legal/CDDLv1.0.txt.
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 *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: InteractionManager.java,v 1.5 2008/08/06 17:28:10 exu Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts * Portions Copyrighted 2016 ForgeRock AS.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.interaction;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpottsimport static org.forgerock.openam.utils.Time.*;
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.PeriodicCleanUpMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.SystemTimerPool;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.TaskRunnable;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.TimerPool;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.debug.Debug;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.encode.URLEncDec;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.common.LogUtil;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interaction.jaxb.InquiryElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interaction.jaxb.InteractionResponseElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interaction.jaxb.RedirectRequestElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interaction.jaxb.StatusElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interaction.jaxb.UserInteractionElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.Client;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.CorrelationHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.Message;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.SOAPBindingConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.SOAPBindingException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.SOAPFault;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.SOAPFaultDetail;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.SOAPFaultException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.Utils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.saml.common.SAMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.io.IOException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.math.BigInteger;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.net.InetAddress;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.net.MalformedURLException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.net.UnknownHostException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.net.URL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.ArrayList;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Collections;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.ConcurrentModificationException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Date;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Enumeration;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.HashMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Iterator;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.logging.Level;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.List;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServletRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServletResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.JAXBException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.namespace.QName;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Element;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This class provides the interface and implementation for supporting
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * resource owner interaction. <code>WSC</code> and <code>WSP</code> would
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * collaborate with the singleton object instance of this class to provide
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * and use resource owner interaction.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class InteractionManager {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Name of URL query parameter to be used by <code>WSC</code> to include
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>returnToURL</code>, while redirecting user agent to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.all.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String RETURN_TO_URL = "ReturnToURL";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Name of suggested URL query parameter to be used by <code>WSC</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * to include an ID to refer to request message that led to user agent
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * redirect.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String REQUEST_ID = "RequestID";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Name of URL query parameter to be used by <code>WSC</code> to include
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>providerID</code> of <code>IDP</code>, that was used to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * authenticate user.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String IDP = "IDP";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Name of URL query parameter to be used by <code>WSP</code> to include
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * an ID to indicate that user agent is redirected back to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WSC</code> from <code>WSP</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String RESEND_MESSAGE = "ResendMessage";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Name space URI of interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String INTERACTION_NAMESPACE
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = "urn:liberty:is:2003-08";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>s:Server</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>s</code> - soap name space prefix
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_SERVER
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(SOAPBindingConstants.NS_SOAP, "Server");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>is:interactIfNeeded</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>is</code> - name space prefix for interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_INTERACT_IF_NEEDED
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(INTERACTION_NAMESPACE, "interactIfNeeded", "is");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>is:doNotInteract</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>is</code> - name space prefix for interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_DO_NOT_INTERACT
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(INTERACTION_NAMESPACE, "doNotInteract", "is");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>is:doNotInteractForData</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>is</code> - name space prefix for interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_DO_NOT_INTERACT_FOR_DATA
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(INTERACTION_NAMESPACE, "doNotInteractForData", "is");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>is:interactionRequired</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>is</code> - name space prefix for interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_INTERACTION_REQUIRED
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(INTERACTION_NAMESPACE, "interactionRequired");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>is:forData</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>is</code> - name space prefix for interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_INTERACTION_REQUIRED_FOR_DATA
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(INTERACTION_NAMESPACE, "forData");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>is:timeNotSufficient</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>is</code> - name space prefix for interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_INTERACTION_TIME_NOT_SUFFICEINT
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(INTERACTION_NAMESPACE, "timeNotSufficient");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>is:timeOut</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>is</code> - name space prefix for interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_INTERACTION_TIMED_OUT
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(INTERACTION_NAMESPACE, "timeOut");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>QName</code> for <code>is:interactIfNeeded</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>is</code> - name space prefix for interaction service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final QName QNAME_INTERACTION_CAN_NOT_DETERMINE_REQUEST_HOST
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = new QName(INTERACTION_NAMESPACE,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "canNotDetermineRequestHostName");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constant string to indicate generic server error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static final String SERVER_ERROR = "Server Error";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String TRANS_ID = "TransID";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static InteractionManager interactionManager = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static Debug debug = Debug.getInstance("libIDWSF");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String REDIRECT_URL = "redirectURL";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String FAULT_ACTOR
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = "http://schemas.xmlsoap.org/soap/actor/next";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String INTERACTION_RB_NAME = "libInteraction";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private InteractionCache cache = new InteractionCache();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private com.sun.identity.liberty.ws.interaction.jaxb.ObjectFactory
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objectFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private InteractionConfig interactionConfig;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets singleton object instance of <code>InteractionManager</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return singleton object instance of <code>InteractionManager</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized public static InteractionManager getInstance() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (interactionManager == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster interactionManager = new InteractionManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return interactionManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private InteractionManager() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objectFactory = JAXBObjectFactory.getObjectFactory();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster interactionConfig = InteractionConfig.getInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "InteractionManager():constructed singleton instance");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sends SOAP request to <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This would be invoked at <code>WSC</code> side.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestMessage request message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param connectTo SOAP URL to which to send the SOAP request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param certAlias SOAP Client Certificate Alias
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapAction SOAP Action Attribute
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param returnToURL URL to which to redirect user agent after
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WSP</code> - resource owner interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpRequest HTTP request object of current user agent request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpResponse HTTP response object of current user agent request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return response SOAP response message sent by <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionException for generic interaction error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionRedirectException if user agent is redirected to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WSP</code> for resource owner interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException for generic SOAP binding errors
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the response message has SOAP fault
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message sendRequest(Message requestMessage,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String connectTo,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String certAlias,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String soapAction,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String returnToURL,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest httpRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse httpResponse)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws InteractionException, InteractionRedirectException,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.sendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " entering with messageID="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + requestMessage.getCorrelationHeader().getMessageID()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":refToMessageID="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + requestMessage.getCorrelationHeader().getRefToMessageID()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":requestMessage=" + requestMessage);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // construct and set UserInteraction element in requestMessage
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (interactionConfig.wscIncludesUserInteractionHeader()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Enumeration locales = httpRequest.getLocales();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List acceptLanguages = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (locales.hasMoreElements()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster acceptLanguages.add(locales.nextElement().toString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.sendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Accept-Language specified by httpRequest="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + acceptLanguages);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster UserInteractionElement ue = createUserInteractionElement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster acceptLanguages);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String id = SAMLUtils.generateID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ue.setId(id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (ue != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element element = Utils.convertJAXBToElement(ue);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestMessage.setOtherSOAPHeader(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster element,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster id);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.sendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "not setting userInteractionHeader:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "can not convert JAXBObject to Element", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message responseMessage = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.sendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "invoking soap Client.sendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":requestMessage=" + requestMessage
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":connecTo=" + connectTo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (LogUtil.isLogEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] objs =new String[1];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[0] = requestMessage.getCorrelationHeader()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.access(Level.INFO, LogUtil.IS_SENDING_MESSAGE,objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster responseMessage = Client.sendRequest(requestMessage,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster connectTo, certAlias, soapAction);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (SOAPFaultException sfe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.sendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " catching SOAPFaultException="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String redirectURL = getRedirectURL(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(redirectURL == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String responseID = getResponseID(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster responseMessage = handleRedirectRequest(requestMessage,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster redirectURL, responseID, connectTo, certAlias, soapAction,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnToURL, httpRequest, httpResponse);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.sendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " returning response message=" + responseMessage);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (LogUtil.isLogEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] objs = new String[2];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[0] = responseMessage.getCorrelationHeader().getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[1] = requestMessage.getCorrelationHeader().getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.access(Level.INFO,LogUtil.IS_RETURNING_RESPONSE_MESSAGE,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return responseMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Resends a previously cached SOAP request message to <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This would be invoked at <code>WSC</code> side. Message ID for the cached
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * message should be provided as value of <code>REQUEST_ID</code> query
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * parameter in <code>httpRequest</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param returnToURL URL to which to redirect user agent after
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WSP</code> - resource owner interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpRequest HTTP request object of current user agent request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpResponse HTTP response object of current user agent request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return response SOAP message sent by <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionException for generic interaction error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionRedirectException if user agent is redirected to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WSP</code> for resource owner interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if there are generic SOAP errors
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the response message has SOAP fault
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #REQUEST_ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message resendRequest(String returnToURL,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest httpRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse httpResponse)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws InteractionRedirectException, InteractionException,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return resendRequest(returnToURL, httpRequest, httpResponse, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Resends a SOAP request message to <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This would be invoked at <code>WSC</code> side.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param returnToURL URL to which to redirect user agent after
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WSP</code> - resource owner interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpRequest HTTP request object of current user agent request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpResponse HTTP response object of current user agent request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestMessage SOAP message to be resent.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return response SOAP message sent by <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionException for generic interaction error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionRedirectException if user agent is redirected to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>WSP</code> for resource owner interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException for generic SOAP errors
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the response message has SOAP fault
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message resendRequest(String returnToURL,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest httpRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse httpResponse, Message requestMessage)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws InteractionRedirectException, InteractionException,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.resendRequest():entering ");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //check for RESEND_MESSAGE parameter
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID = httpRequest.getParameter(RESEND_MESSAGE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (messageID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.resend():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " request without " + RESEND_MESSAGE + " in requestURL="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + httpRequest.getRequestURL().toString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String objs[] = {RESEND_MESSAGE};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "missing_query_parameter", objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //check whether WSP advised not to resend
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( (messageID == "0") || (messageID.equals("false")) ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.resend():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " resend not allowed in requestURL="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + httpRequest.getRequestURL().toString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "wsp_advised_not_to_resend", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //check for original REQUEST_ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID = httpRequest.getParameter(REQUEST_ID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (messageID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.resend():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " request without " + REQUEST_ID + " in requestURL="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + httpRequest.getRequestURL().toString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] objs = {REQUEST_ID};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "request_missing_query_parameter", objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String connectTo = getConnectTo(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (connectTo == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.resend():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " old connectTo not found for messageID="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "old_connectTo_not_found", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (requestMessage == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.resendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "invoking with null requestMessage:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "old cached message would be used");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message oldMessage = getRequestMessage(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (oldMessage == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.resend():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " old message not found for messageID="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "old_message_not_found", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestMessage = oldMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.resendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "invoking with non null requestMessage");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CorrelationHeader ch = new CorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ch.setRefToMessageID(InteractionManager.getInstance()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .getRequestMessageID(messageID));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestMessage.setCorrelationHeader(ch);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.resendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "invoking InteractionManager.sendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "with requestMessage=" + requestMessage
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":returnToURL=" + returnToURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (LogUtil.isLogEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] objs =new String[2];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[0] = messageID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[1] = ch.getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.access(Level.INFO,LogUtil.IS_RESENDING_MESSAGE,objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message responseMessage = sendRequest(requestMessage, connectTo,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getClientCert(messageID), getSoapAction(messageID),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnToURL, httpRequest, httpResponse);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.resendRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " returning responseMessage=" + responseMessage);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return responseMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Message handleRedirectRequest(Message requestMessage,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String redirectURL, String messageID, String connectTo,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String certAlias, String soapAction, String returnToURL,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest httpRequest, HttpServletResponse httpResponse)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws InteractionRedirectException, InteractionException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.handleRedirectRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "entering with redirectURL="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + redirectURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //redirectURL should not have ReturnToURL parameter
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!(redirectURL.indexOf(RETURN_TO_URL + "=") == -1)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "InteractionManager.handleRedirectRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Invalid redirectURL - illegal parameter "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + RETURN_TO_URL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " in redirectURL=" + redirectURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String objs[] = {RETURN_TO_URL, REDIRECT_URL};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "illegal_parameter_in_redirectURL", objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //redirectURL should not have IDP parameter
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!(redirectURL.indexOf(IDP + "=") == -1)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "InteractionManager.handleRedirectRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Invalid redirectURL - illegal parameter:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + IDP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " in redirectURL=" + redirectURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String objs[] = {IDP, REDIRECT_URL};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "illegal_parameter_in_redirectURL", objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //redirectURL should be https
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (InteractionConfig.getInstance().wscEnforcesHttpsCheck()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster && (redirectURL.indexOf("https") != 0) ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "InteractionManager.handleRedirectRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Invalid Request "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + InteractionManager.REDIRECT_URL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " not https"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " in redirectURL=" + redirectURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "redirectURL_not_https", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //redirectURL should point to connectTo host
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (InteractionConfig.getInstance()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .wspEnforcesReturnToHostEqualsRequestHost()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster && !checkRedirectHost(redirectURL, connectTo)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "InteractionManager.handleRedirectRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "Invalid Request redirectToHost differs from "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " connectToHost:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " in redirectURL=" + redirectURL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":connectTo=" + connectTo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "redirectURL_differs_from_connectTo", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestID = requestMessage.getCorrelationHeader().getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setRequestMessage(requestID, requestMessage);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setConnectTo(requestID, connectTo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setSoapAction(requestID, soapAction);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setClientCert(requestID, certAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setRequestMessageID(requestID, messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.handleRedirectRequest():cached "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " request message for messageID=" + messageID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":requestID=" + requestID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":requestMessage:" + (requestMessage == null) );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnToURL = returnToURL + "?" + REQUEST_ID + "=" + requestID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster redirectURL = redirectURL +"&"+ RETURN_TO_URL + "="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + URLEncDec.encode(returnToURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.handleRedirectRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "redirecting user agent to redirectURL= "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + redirectURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster httpResponse.sendRedirect(redirectURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (IOException ioe) { //IOException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.handleRedirectRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " catching IOException", ioe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "IOException_in_Interaction_Manager", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.handleRedirectRequest():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "redirected user agent to redirectURL= "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + redirectURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (LogUtil.isLogEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] objs =new String[1];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[0] = requestID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.access(Level.INFO,LogUtil.IS_REDIRECTED_USER_AGENT,objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionRedirectException(requestID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //return returnMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Handles resource owner interactions on behalf of <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This is invoked at <code>WSP</code> side.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestMessage SOAP request that requires resource
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * owner interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param inquiryElement query that <code>WSP</code> wants to pose to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * resource owner.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return SOAP message that contains <code>InteractionResponse</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * gathered by <code>InteractionManager</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionException for generic interaction error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionSOAPFaultException if a SOAP fault
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * has to be returned to <code>WSC</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the response message has SOAP fault
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @deprecated
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message handleInteraction(Message requestMessage,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InquiryElement inquiryElement) throws InteractionException,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionSOAPFaultException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return handleInteraction(requestMessage, inquiryElement, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Handles resource owner interactions on behalf of <code>WSP</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This is invoked at <code>WSP</code> side.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestMessage SOAP request that requires resource
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * owner interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param inquiryElement query that <code>WSP</code> wants to pose to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * resource owner
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param language language in which the query page needs to be rendered
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return SOAP message that contains <code>InteractionResponse</code>,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * gathered by <code>InteractionManager</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionException for generic interaction error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionSOAPFaultException if a SOAP fault
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * has to be returned to <code>WSC</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the response message has SOAP fault
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Message handleInteraction(Message requestMessage,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InquiryElement inquiryElement, String language)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws InteractionException,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionSOAPFaultException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.handleInteraction():entering");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Check redirect is enabled for WSP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!interactionConfig.wspSupportsRedirect()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " WSP requests for interaction:wspWillRedirect="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + interactionConfig.wspSupportsRedirect());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "throwing InteractionException");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionException(INTERACTION_RB_NAME,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "wsp_does_not_support_interaction", null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Check wsc provided UserInteraction header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster UserInteractionElement ue
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = getUserInteractionElement(requestMessage);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (ue == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe = newRedirectFaultError(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_INTERACTION_REQUIRED);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " WSP requests for interaction - WSC did not "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " provide UserInteractionHeader");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "throwing InteractionSOAPFaultException="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionSOAPFaultException(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Check WSC is willing to redirect
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (ue.isRedirect() == false) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe = newRedirectFaultError(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_INTERACTION_REQUIRED);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "WSP rquests for interaction - WSC "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " says redirect=false");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "throwing InteractionSOAPFaultException="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionSOAPFaultException(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Check WSC allowed interaction
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (ue.getInteract().equals(QNAME_DO_NOT_INTERACT)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe = newRedirectFaultError(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_INTERACTION_REQUIRED);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "WSP rquests for interaction - WSC "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " UserInteractionHeader says doNotInteract");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "throwing InteractionSOAPFaultException="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionSOAPFaultException(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Check WSC allowed interaction for data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (interactionConfig.wspRedirectsForData()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster && ue.getInteract().equals(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_DO_NOT_INTERACT_FOR_DATA)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe = newRedirectFaultError(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_INTERACTION_REQUIRED_FOR_DATA);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "WSP rquests interaction for data - WSC "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " UserInteractionHeader says doNotInteractForData");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "throwing InteractionSOAPFaultException="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionSOAPFaultException(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Check WSP will not exceed maxInteractionTime specified by WSC
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster BigInteger uemi = ue.getMaxInteractTime();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( (uemi != null) && (interactionConfig.getWSPRedirectTime()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster > uemi.intValue()) ) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe = newRedirectFaultError(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_INTERACTION_TIME_NOT_SUFFICEINT);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "WSP inteaction time ="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + interactionConfig.getWSPRedirectTime()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " exceeds WSC maxInteractTime= "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ue.getMaxInteractTime());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "throwing InteractionSOAPFaultException="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionSOAPFaultException(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestMessageID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = requestMessage.getCorrelationHeader().getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster newRedirectFault(requestMessageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String redirectResponseID = getResponseID(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestIP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = requestMessage.getIPAddress();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestHost = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (interactionConfig.wspEnforcesReturnToHostEqualsRequestHost()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InetAddress inetAddress = InetAddress.getByName(requestIP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //requestHost = inetAddress.getCanonicalHostName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestHost = inetAddress.getHostName();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " caching requestHost=" + requestHost
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ", for redirectResponseID= "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + redirectResponseID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setRequestHost(redirectResponseID, requestHost);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (UnknownHostException uhe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " can not resolve host name", uhe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " throwing InteractionSOAPFaultException", sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe1 = newRedirectFaultError(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_INTERACTION_CAN_NOT_DETERMINE_REQUEST_HOST);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionSOAPFaultException(sfe1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setInquiryElement(redirectResponseID, inquiryElement);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setRequestMessageID(redirectResponseID, requestMessageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster setLanguage(redirectResponseID, language);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.handleInteraction():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " throwing InteractionSOAPFaultException "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " to redirect user agent="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new InteractionSOAPFaultException(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //return responseMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void setInquiryElement(String messageID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InquiryElement inquiryElement) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setInquiryElement(inquiryElement);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InquiryElement getInquiryElement(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InquiryElement inquiryElement = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster inquiryElement = cacheEntry.getInquiryElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return inquiryElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setInteractionResponseElement(String messageID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionResponseElement interactionResponse) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setInteractionResponseElement(interactionResponse);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets interaction response that was gathered from resource owner
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * by <code>InteractionManager</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestMessage request message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return interaction response that was gathered by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>InteractionManager</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws InteractionException for interaction error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public InteractionResponseElement getInteractionResponseElement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message requestMessage)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws InteractionException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionResponseElement interactionResponseElement = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CorrelationHeader ch = requestMessage.getCorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID = ch.getRefToMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (messageID != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster interactionResponseElement
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = cacheEntry.getInteractionResponseElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.getInteractionResponseElement():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "for messageID=" + messageID + ":"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "responseElement="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + (interactionResponseElement != null));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (LogUtil.isLogEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] objs =new String[3];
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[0] = ch.getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[1] = ch.getRefToMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs[2] = (cacheEntry == null) ? "NULL" : "NOT NULL";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster LogUtil.access(Level.INFO,LogUtil.IS_RETURNING_RESPONSE_ELEMENT,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster objs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return interactionResponseElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void setRequestMessage(String messageID, Message requestMessage) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setRequestMessage(requestMessage);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.setRequestMessage():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " cached request message for messageID="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + messageID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":requestMessage:" + (requestMessage == null) );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Message getRequestMessage(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message requestMessage = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestMessage = cacheEntry.getRequestMessage();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.getRequestMessage():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " looking up request message for messageID="
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + messageID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ":requestMessage=" + (requestMessage == null) );
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return requestMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void setRequestMessageID(String messageID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestMessageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setRequestMessageID(requestMessageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getRequestMessageID(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestMessageID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestMessageID = cacheEntry.getRequestMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return requestMessageID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setReturnToURL(String messageID, String returnToURL) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setReturnToURL(returnToURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getReturnToURL(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String returnToURL = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster returnToURL = cacheEntry.getReturnToURL();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return returnToURL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setRequestHost(String messageID, String requestHost) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setRequestHost(requestHost);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getRequestHost(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestHost = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requestHost = cacheEntry.getRequestHost();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return requestHost;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void setConnectTo(String messageID, String ConnectTo) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setConnectTo(ConnectTo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void setSoapAction(String messageID, String soapAction) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setSoapAction(soapAction);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void setClientCert(String messageID, String certAlias) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setClientCert(certAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String getConnectTo(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String connectTo = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster connectTo = cacheEntry.getConnectTo();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return connectTo;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String getClientCert(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String clientCert = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster clientCert = cacheEntry.getClientCert();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return clientCert;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String getSoapAction(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String soapAction = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapAction = cacheEntry.getSoapAction();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return soapAction;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void setLanguage(String messageID, String language) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry = new CacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.putCacheEntry(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cacheEntry.setLanguage(language);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getLanguage(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String language = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry cacheEntry = cache.getCacheEntry(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( cacheEntry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster language = cacheEntry.getLanguage();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return language;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private UserInteractionElement createUserInteractionElement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List acceptLanguages) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster UserInteractionElement ue = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ue =objectFactory.createUserInteractionElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ue.setInteract(interactionConfig
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .getWSCSpecifiedInteractionChoice());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ue.setRedirect(interactionConfig.wscSupportsRedirect());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ue.setMaxInteractTime(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster java.math.BigInteger.valueOf(interactionConfig
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .getWSCSpecifiedMaxInteractionTime()));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ue.getLanguage().addAll(acceptLanguages);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.createUserInteractionElement():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " can not create UserInteractionElement", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return ue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static UserInteractionElement getUserInteractionElement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message message) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster UserInteractionElement ue = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List list = message.getOtherSOAPHeaders();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster list = Utils.convertElementToJAXB(list);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.getUserInteractionElement():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "not able to get userInteractionElement:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "can not convert Element to JAXBObject", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = list.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while (iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Object obj = (Object)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (obj instanceof UserInteractionElement) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ue = (UserInteractionElement)obj;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster break;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return ue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private SOAPFaultException newRedirectFault(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster RedirectRequestElement re = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster re = objectFactory.createRedirectRequestElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.newRedirectFault():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " can not create RedirectRequestElement", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CorrelationHeader ch = new CorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String responseID = ch.getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ch.setRefToMessageID(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String redirectUrl = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String lbRedirectUrl = interactionConfig.getLbWSPRedirectHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String wspRedirectUrl = interactionConfig.getWSPRedirectHandler();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.newRedirectURLFault():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "wspRedirectURL:" + wspRedirectUrl
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + ", lbRedirectUrl:" + lbRedirectUrl);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (lbRedirectUrl == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster redirectUrl = wspRedirectUrl + "?" + TRANS_ID + "=" + responseID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.newRedirectURLFault():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "lbRedirectURL is null, rediectUrl:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + redirectUrl);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else { //lbRedirectUrl defined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster redirectUrl = lbRedirectUrl + "?" + TRANS_ID + "=" + responseID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "&" + InteractionConfig.HANDLER_HOST_ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "=" + InteractionConfig.getInstance().getLocalServerId();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionManager.newRedirectURLFault():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "lbRedirectURL is not null, rediectUrl:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + redirectUrl);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster re.setRedirectURL(redirectUrl);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List details = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster details.add(Utils.convertJAXBToElement(re));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.newRedirectFault():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " can not create newRedirectFault:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " can not convert JAXBObject to Element", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SERVER_ERROR,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FAULT_ACTOR, new SOAPFaultDetail(details));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message sfmsg = new Message(sf);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfmsg.setCorrelationHeader(ch);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe = new SOAPFaultException(sfmsg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private SOAPFaultException newRedirectFaultError(QName errorCode) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StatusElement se = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster se = objectFactory.createStatusElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.newRedirectFaultError():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " can not create StatusElement", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster se.setCode(errorCode);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List details = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster details.add(Utils.convertJAXBToElement(se));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.newRedirectFaultError():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "can not create new RedirectFaultError:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "can not convert JAXBObject to Element", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster QNAME_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SERVER_ERROR,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster FAULT_ACTOR, new SOAPFaultDetail(details));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultException sfe = new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getRedirectURL(SOAPFaultException sfe) throws SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String redirectURL = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List details = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (sfd != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster details = sfd.getOtherChildren();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster details = Utils.convertElementToJAXB(details);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException je) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.getRedirectURL():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " can not get Redirect URL", je);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ( (details != null) && (details.size() > 0)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster && (details.get(0) instanceof RedirectRequestElement)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster RedirectRequestElement rre
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster = (RedirectRequestElement)details.get(0);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (rre != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster redirectURL = rre.getRedirectURL();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (redirectURL == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return redirectURL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean checkRedirectHost(String redirectURL, String connectTo) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean answer = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster URL redirectToURL = new URL(redirectURL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster URL connectToURL = new URL(connectTo);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String redirectHost = redirectToURL.getHost();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String connectToHost = connectToURL.getHost();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (redirectHost.equals(connectToHost)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster answer = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (MalformedURLException mfe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.checkRedirectHost():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "redirectURL not a valid URL"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " :redirectURL=" + redirectURL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " :connectTo=" + connectTo, mfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return answer;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getResponseID(SOAPFaultException sfe) throws SOAPFaultException{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String responseID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CorrelationHeader ch =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getCorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (ch == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.getResponseID():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "null CorrelationHeader in SOAPFaultException");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster responseID = ch.getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (responseID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("InteractionManager.getResponseID():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "null messageID in SOAPFaultException");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return responseID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static class InteractionCache {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final boolean VERBOSE_MESSAGE = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final int SWEEP_INTERVAL = 60 * 1000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final int CACHE_ENTRY_MAX_IDLE_TIME = 120 * 1000;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster PeriodicCleanUpMap cache = new PeriodicCleanUpMap(SWEEP_INTERVAL,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CACHE_ENTRY_MAX_IDLE_TIME);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionCache() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteactionCache.InteractionCache() "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " - entering constructor");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteactionCache.InteractionCache() "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " - starting sweeper thread");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionCache.InteractionCache() "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " SWEEP_INTERVAL = " + SWEEP_INTERVAL);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionCache.InteractionCache() "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " CACHE_ENTRY_MAX_IDLE_TIME = "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + CACHE_ENTRY_MAX_IDLE_TIME);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SystemTimerPool.getTimerPool().schedule((TaskRunnable) cache,
ccf9d4a5c6453fa9f8b839baeee25147865fbb7dJames Phillpotts new Date(((currentTimeMillis() + SWEEP_INTERVAL) / 1000)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * 1000));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteactionCache.InteractionCache() "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " - returning from constructor");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry getCacheEntry(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (VERBOSE_MESSAGE && debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionCache.getCacheEntry():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "looking up cacheEntry for messageID=" + messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionCache.getCacheEntry():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " cached messageIDs=" + cache.keySet());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry entry = (CacheEntry)cache.get(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (entry != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.removeElement(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.addElement(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return entry;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void putCacheEntry(String messageID, CacheEntry cacheEntry) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster cache.put(messageID, cacheEntry);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (VERBOSE_MESSAGE && debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("InteractionCache.putCacheEntry():"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + " cached cacheEntry for messageID=" + messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static class CacheEntry {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID; //key
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestMessageID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message requestMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InquiryElement inquiryElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionResponseElement interactionResponseElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String connectTo;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String certAlias;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String soapAction;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String returnToURL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestHost;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String language;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry(String messageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.messageID= messageID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CacheEntry(String messageID, Message message) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.messageID= messageID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.requestMessage= message;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setRequestMessage(Message requestMessage) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.requestMessage = requestMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message getRequestMessage() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return requestMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setRequestMessageID(String requestMessageID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.requestMessageID = requestMessageID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getRequestMessageID() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return requestMessageID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setInquiryElement(InquiryElement inquiryElement) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.inquiryElement = inquiryElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InquiryElement getInquiryElement() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return inquiryElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setInteractionResponseElement(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionResponseElement interactionResponseElement) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.interactionResponseElement = interactionResponseElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionResponseElement getInteractionResponseElement() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return interactionResponseElement;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setConnectTo(String connectTo) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.connectTo = connectTo;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getConnectTo() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return connectTo;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setClientCert(String certAlias) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.certAlias = certAlias;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getClientCert() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return certAlias;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setSoapAction(String soapAction) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapAction = soapAction;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getSoapAction() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return soapAction;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setReturnToURL(String returnToURL) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.returnToURL = returnToURL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getReturnToURL() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return returnToURL;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setRequestHost(String requestHost) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.requestHost = requestHost;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getRequestHost() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return requestHost;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster void setLanguage(String language) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.language = language;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String getLanguage() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return language;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster