a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
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: DSTClient.java,v 1.5 2008/12/16 01:48:32 exu Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.dst;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.security.SecurityAssertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.common.wsse.BinarySecurityToken;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.EncryptedResourceID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.ResourceOffering;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.ServiceInstance;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.Description;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.ResourceID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.Message;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.Client;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.ProviderHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.SOAPFaultException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.SOAPBindingException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.List;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.ArrayList;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Iterator;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Element;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.security.SecurityTokenManagerClient;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interaction.InteractionRedirectException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interaction.InteractionException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.interaction.InteractionManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.ServiceInstanceUpdateHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.SOAPBindingConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.soapbinding.Utils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.configuration.SystemPropertiesManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServletRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.servlet.http.HttpServletResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The class <code>DSTClient</code> provides methods for Liberty
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Data Service Template.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.all.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class DSTClient {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String resourceID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private EncryptedResourceID encryptedResourceID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String soapURI = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String certAlias = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private SecurityAssertion assertion = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private BinarySecurityToken token = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean isEncryptedResourceID = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // default to anonymous
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private int securityProfile = Message.ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String soapAction = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String serviceType = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private HttpServletRequest httpRequest = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private HttpServletResponse httpResponse = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private boolean clientAuthEnabled = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String providerID = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private ServiceInstanceUpdateHeader serviceInstanceUpdateHeader = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private String wsfVersion = Utils.getDefaultWSFVersion();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The constructor connects to Data Service without <code>WSS</code> token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapURI URI of the SOAP end point for this Data service
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID ID of service provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTClient(String soapURI, String providerID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapURI = soapURI;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.securityProfile = Message.ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The constructor connects to Data Service using <code>WSS</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * SAML Token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param assertion <code>WSS</code> SAML Token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapURI URI of the SOAP end point for this data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * service instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID ID of service provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTClient (SecurityAssertion assertion,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String soapURI,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.assertion = assertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapURI = soapURI;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(assertion != null && assertion.isBearer()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.securityProfile = Message.BEARER_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.securityProfile = Message.SAML_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The constructor connects to the data Service using <code>WSS X509</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Token.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param token <code>WSS X.509</code> Certificate Token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapURI URI of the SOAP end point for this Data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * service instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID ID of service provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTClient(BinarySecurityToken token,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String soapURI,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.token = token;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapURI = soapURI;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.securityProfile = Message.X509_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The constructor connects to Data Service without <code>WSS</code> token,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the <code>HttpServletRequest</code> and <code>HttpServletResponse</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * object of the current request agent will be used for resource owner
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * interactions if needed.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapURI URI of the SOAP end point for this Data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * service instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID ID of service provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpRequest <code>HttpServletRequest</code> object of current
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * user agent request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpResponse <code>HttpServletResponse</code> object of current
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * user agent request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTClient(String soapURI,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest httpRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse httpResponse) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapURI = soapURI;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.securityProfile = Message.ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.httpRequest = httpRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.httpResponse = httpResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The constructor connects to Data Service with <code>WSS</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * SAML token, the <code>HttpServletRequest</code> and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>HttpServletResponse</code> object of the current request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * agent will be used for resource owner interactions if needed.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param assertion <code>WSS</code> SAML Token.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapURI URI of the SOAP end point for this Data service instance.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID ID of service provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpRequest <code>HttpServletRequest</code> object of current
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * user agent request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpResponse <code>HttpServletResponse</code> object of current
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * user agent request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTClient(SecurityAssertion assertion,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String soapURI,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest httpRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse httpResponse) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.httpRequest = httpRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.httpResponse = httpResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.assertion = assertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapURI = soapURI;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.securityProfile = Message.SAML_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The constructor connects to Data Service with <code>WSS</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * SAML token, the <code>HttpServletRequest</code> and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>HttpServletResponse</code> object of the current request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * agent will be used for resource owner interactions if needed.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param token <code>WSS X.509</code> Certificate Token
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param soapURI URI of the SOAP end point for this Data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * service instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID ID of service provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpRequest <code>HttpServletRequest</code> object of current
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * user agent request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpResponse <code>HttpServletResponse</code> object of current
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * user agent.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTClient(BinarySecurityToken token,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String soapURI,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest httpRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse httpResponse) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.token = token;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapURI = soapURI;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.securityProfile = Message.X509_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.httpRequest = httpRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.httpResponse = httpResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Contructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Creates a data service template client instance.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Connects to data Service specified by the resource offering.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>resourceID</code>, security mechanism and SOAP endpoint defined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the <code>ResourceOffering</code> will be used.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param resourceOffering resource offering for this
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * discovery service instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID ID of this service provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param credential Credential of <code>WSC</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpRequest <code>HttpServletRequest</code> object of current
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * user agent request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param httpResponse <code>HttpServletResponse</code> object of current
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * user agent.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException if the <code>resourceOffering</code> is not valid
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTClient(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ResourceOffering resourceOffering,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Object credential,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletRequest httpRequest,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster HttpServletResponse httpResponse
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ) throws DSTException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(resourceOffering == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient: resource offering is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster parseResourceOffering(resourceOffering);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(securityProfile == Message.X509_TOKEN) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster generateBinarySecurityToken(credential);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.httpRequest = httpRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.httpResponse = httpResponse;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Creates a data service template client instance.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Connects to data Service specified by the resource offering.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>resourceID</code>, security mechanism and SOAP endpoint defined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the <code>ResourceOffering</code> will be used.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param resourceOffering resource offering for this
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * discovery service instance
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID ID of this service provider.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param credential Credential of <code>WSC</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException if the <code>resourceOffering</code> is not valid
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTClient(ResourceOffering resourceOffering,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Object credential)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(resourceOffering == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient: resource offering is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster parseResourceOffering(resourceOffering);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(securityProfile == Message.X509_TOKEN) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster generateBinarySecurityToken(credential);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Parses the given discovery resource offering for the Data service.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param offering ResourceOffering
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseResourceOffering(ResourceOffering offering)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //Try for the encrypted resource offering first;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster encryptedResourceID = offering.getEncryptedResourceID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(encryptedResourceID != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster isEncryptedResourceID = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ResourceID resID = offering.getResourceID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(resID == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:parseResourceOffering: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "No ResourceID");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("noResourceID"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster resourceID = resID.getResourceID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ServiceInstance serviceInstance = offering.getServiceInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // providerID = serviceInstance.getProviderID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(serviceInstance == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:parseResourceOffering: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "No service instance.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.bundle.getString("noServiceInstance"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serviceType = serviceInstance.getServiceType();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(serviceType == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:parseResourceOffering: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "service type is null.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("noServiceType"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List descriptions = serviceInstance.getDescription();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(descriptions == null || descriptions.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:parseResourceOffering: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "descriptions are null.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("noDescriptions"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // A service instance can have mutiple descriptions. In this case,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // we will try to use a valid description.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = descriptions.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Description description = (Description)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapAction = description.getSoapAction();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapURI = description.getEndpoint();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(soapURI == null || soapURI.length() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster continue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List secMechIDs = description.getSecurityMechID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(secMechIDs == null || secMechIDs.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster continue;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean foundProfile = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int size = secMechIDs.size();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for(int i=0; i < size; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String secProfile = (String)secMechIDs.get(i);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile = secProfile.trim();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(secProfile.equals(Message.NULL_NULL) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_NULL) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_NULL)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(secProfile.equals(Message.CLIENT_TLS_NULL)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster clientAuthEnabled = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster foundProfile = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster break;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(secProfile.equals(Message.NULL_X509) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_X509) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_X509) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.NULL_X509_WSF11) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_X509_WSF11) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_X509_WSF11)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.X509_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (secProfile.equals(Message.NULL_X509) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_X509) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_X509)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = SOAPBindingConstants.WSF_10_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = SOAPBindingConstants.WSF_11_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.X509_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (secProfile.equals(Message.CLIENT_TLS_X509) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_X509_WSF11)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster clientAuthEnabled = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster foundProfile = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster break;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(secProfile.equals(Message.NULL_SAML) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_SAML) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_SAML) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.NULL_SAML_WSF11) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_SAML_WSF11) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_SAML_WSF11)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.SAML_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (secProfile.equals(Message.NULL_SAML) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_SAML) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_SAML)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = SOAPBindingConstants.WSF_10_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = SOAPBindingConstants.WSF_11_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (secProfile.equals(Message.CLIENT_TLS_SAML) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_SAML_WSF11)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster clientAuthEnabled = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster foundProfile = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster break;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(secProfile.equals(Message.NULL_BEARER) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_BEARER) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_BEARER) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.NULL_BEARER_WSF11) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_BEARER_WSF11) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_BEARER_WSF11)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.BEARER_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (secProfile.equals(Message.NULL_BEARER) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.TLS_BEARER) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_BEARER)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = SOAPBindingConstants.WSF_10_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsfVersion = SOAPBindingConstants.WSF_11_VERSION;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (secProfile.equals(Message.CLIENT_TLS_BEARER) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster secProfile.equals(Message.CLIENT_TLS_BEARER_WSF11)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster clientAuthEnabled = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster foundProfile = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster break;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(foundProfile) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster break;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(soapURI == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:parseResourceOffering: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "SOAP Endpoint or security profile is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.bundle.getString("invalidResourceOffering"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(DSTUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient.parseResourceOffering:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "soapURI = " + soapURI + "soapAction = " + soapAction +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "securityProfile = " + securityProfile);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Generates X509 security token for the WSC.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param credential Credential of WSC
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void generateBinarySecurityToken(Object credential)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SecurityTokenManagerClient manager =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SecurityTokenManagerClient(credential);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (certAlias == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster certAlias = SystemPropertiesManager.get(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.wsc.certalias");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster manager.setCertAlias(certAlias);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster token = manager.getX509CertificateToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster token.setWSFVersion(wsfVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:generateBinarySecurityToken:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Error in generating binary security token.", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the resource ID to be accessed
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param resourceID resource ID String
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setResourceID(String resourceID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.resourceID = resourceID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster isEncryptedResourceID = false;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the encrypted resource ID to be accessed
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param encResourceID encrypted resource ID
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setResourceID(EncryptedResourceID encResourceID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.encryptedResourceID = encResourceID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster isEncryptedResourceID = true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the provider ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param providerID Provider ID.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setProviderID(String providerID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.providerID = providerID;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the alias for the client certificate if the connection is TLS/SSL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with client authentication.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param certAlias certificate alias name
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setClientCert(String certAlias) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.certAlias = certAlias;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets SOAP Action such as query or modify
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param action action for this soap request
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSOAPAction(String action) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapAction = action;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the client authentication.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param value true value to enable client authentication.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setClientAuth(boolean value) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.clientAuthEnabled = value;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the SOAP Endpoint.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param endpoint SOAP Endpoint.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSOAPEndPoint(String endpoint) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.soapURI = endpoint;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the Security Assertion.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param secAssertion Security Assertion.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSecurityAssertion(SecurityAssertion secAssertion) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.assertion = secAssertion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the binary security token.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param binaryToken Binary Security Token.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setBinarySecurityToken(BinarySecurityToken binaryToken) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.token = binaryToken;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the security mechanism.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param secMech security mechanism.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setSecurityMech(String secMech) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(secMech == null || secMech.endsWith("null")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.ANONYMOUS;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(secMech.endsWith("X509")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.X509_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(secMech.endsWith("SAML")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.SAML_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(secMech.endsWith("Bearer")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster securityProfile = Message.BEARER_TOKEN;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets data for the specified query items.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param items list of <code>DSTQueryItem</code> object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return List of <code>DSTData</code> objects which have one-to-one
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * correspondence to the list of query items. If no response for
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * one of the query item, the corresponding return
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>DSTData</code> object will be null.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException if error occurs when trying to get data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception InteractionRedirectException if user agent is redirected to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Web Service Provider (<code>WSP</code>) for resource owner
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public java.util.List getData(java.util.List items)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException, InteractionRedirectException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:getData:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(items == null || items.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTUtils.getData:Query items are null.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTQuery dstQuery = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(isEncryptedResourceID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dstQuery = new DSTQuery(encryptedResourceID, items, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dstQuery = new DSTQuery(resourceID, items, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List query = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster query.add(DSTUtils.parseXML(dstQuery.toString(true, true)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List response = sendMessage(query);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(response == null || response.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:getData: response is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTQueryResponse queryResponse =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new DSTQueryResponse((Element)response.get(0));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return queryResponse.getData();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets <code>QueryResponse</code> for the specified query.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param query <code>DSTQuery</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>DSTDQueryResponse</code> Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException if error occurs when trying to get data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception InteractionRedirectException if user agent is redirected to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Web Service Provider (<code>WSP</code>) for resource owner
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTQueryResponse query(DSTQuery query)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException, InteractionRedirectException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:query:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(query == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:query:null value");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List request = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.add(DSTUtils.parseXML(query.toString(true, true)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List response = sendMessage(request);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Element queryResponse = (Element)response.get(0);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new DSTQueryResponse(queryResponse);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets response for a list of <code>DST</code> Modifications.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param items List of <code>DSTModification</code> objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>DSTModifyResponse</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException if error occurs when trying to modify data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception InteractionRedirectException if user agent is redirected to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Web Service Provider (<code>WSP</code>) for resource owner
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * interactions.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTModifyResponse modify(java.util.List items)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException, InteractionRedirectException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:modify:init:");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(items == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:modify:null values");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTModify modify = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(isEncryptedResourceID) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster modify = new DSTModify(encryptedResourceID, items, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster modify = new DSTModify(resourceID, items, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List request = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.add(DSTUtils.parseXML(modify.toString(true, true)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List response = sendMessage(request);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(response == null || response.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:modify: response is null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new DSTModifyResponse((Element)response.get(0));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets modify response for the specified modify.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param modify <code>DSTModify</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>DSTModifyResponse</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException if error occurs when trying to modify data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception InteractionRedirectException if user agent is redirected to
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Web Service Provider (<code>WSP</code>) for resource owner
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * interactions
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public DSTModifyResponse modify(DSTModify modify)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException, InteractionRedirectException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:modify:init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(modify == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:modify:null values");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List request = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster request.add(DSTUtils.parseXML(modify.toString(true, true)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List response = sendMessage(request);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new DSTModifyResponse((Element)response.get(0));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets query responses for a list of <code>DST</code> queries
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param queries list of <code>DSTQuery</code> objects
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return List of <code>DSTQueryResponse</code> objects, corresponding
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * to each <code>DSTQuery</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException if error occurs when trying to get data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception InteractionRedirectException if interaction is required.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public java.util.List getQueryResponse(java.util.List queries)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException, InteractionRedirectException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient.getQueryResponse:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(queries == null || queries.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient.getQueryResponse:null values");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = queries.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List requests = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTQuery query = (DSTQuery)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requests.add(DSTUtils.parseXML(query.toString(true, true)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List responses = sendMessage(requests);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(responses == null || responses.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient.getQueryResponse:null responses");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullResponse"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List queryResponses = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter1 = responses.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter1.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster queryResponses.add(new DSTQueryResponse((Element)iter1.next()));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return queryResponses;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Performs a list of modifications specified by a list of
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>DSTModify</code> objects (possible on different resource ID).
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param modifies list of <code>DSTModify</code> objects specifying
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * resource and modifications to be made.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return List of <code>DSTModifyResponse</code> object corresponding
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * to each <code>DSTModify</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException if error occurs when trying to modify data
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception InteractionRedirectException if interaction is required.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public java.util.List getModifyResponse(java.util.List modifies)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException , InteractionRedirectException
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient.getModifyResponse:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(modifies == null || modifies.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient.getModifyResponse:null values");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = modifies.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List requests = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTModify modify = (DSTModify)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster requests.add(DSTUtils.parseXML(modify.toString(true, true)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List responses = sendMessage(requests);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(responses == null || responses.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient.getModifyResponse:null responses");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullResponse"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List modifyResponses = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter1 = responses.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter1.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster modifyResponses.add(new DSTModifyResponse((Element)iter1.next()));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return modifyResponses;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sends the SOAP Message to the data service.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param List of Request Objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return List of Response Objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DSTException for failure.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private List sendMessage(List requestObjects)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException, InteractionRedirectException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:sendMessage:Init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(requestObjects == null || requestObjects.size() == 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:sendMessage: requestobj are null");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message msg = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProviderHeader provH = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(providerID != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster provH = new ProviderHeader(providerID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(securityProfile == Message.X509_TOKEN) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(token == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.bundle.getString("nullToken"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:sendMessage:using x509");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg = new Message(provH, token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(securityProfile == Message.SAML_TOKEN) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:sendMessage:using SAML");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg = new Message(provH, assertion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(securityProfile == Message.BEARER_TOKEN) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:sendMessage:using Bearer");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg = new Message(provH, assertion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if(securityProfile == Message.ANONYMOUS) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:sendMessage:using Anonymous");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg = new Message(provH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.bundle.getString("invalidSecurityProfile"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg.setSOAPBodies(requestObjects);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg.setWSFVersion(wsfVersion);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(clientAuthEnabled) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg.setClientAuthentication(clientAuthEnabled);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(DSTUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:sendMessage: request:"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + msg.toString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message response = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(httpRequest != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response = handleInteraction(msg);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response = Client.sendRequest(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg, soapURI, certAlias, soapAction);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(DSTUtils.debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:sendMessage:response = " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response.toString());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serviceInstanceUpdateHeader =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response.getServiceInstanceUpdateHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return response.getBodies();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(SOAPBindingException sbe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:sendMessage:soapbindexception",sbe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(sbe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(SOAPFaultException sfe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:sendMessage:soapfault", sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serviceInstanceUpdateHeader =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getServiceInstanceUpdateHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(sfe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Handles interaction request processing.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When the interaction is required, it throws and InteractRedirect
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Exception, and redirect to the caller application(servlet).
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private Message handleInteraction(Message requestMsg)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws DSTException, SOAPFaultException,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingException, InteractionRedirectException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(requestMsg == null || httpRequest == null ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster httpResponse == null || soapURI == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:handeInteraction:null values");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.bundle.getString("nullInputParams"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:handleInteraction:init");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String resend = httpRequest.getParameter(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionManager.RESEND_MESSAGE);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String returnURL = httpRequest.getRequestURL().toString();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Message response;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster InteractionManager manager = InteractionManager.getInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if(resend == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster //If the interaction is not required, this will send a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // original response.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response = manager.sendRequest(requestMsg, soapURI, certAlias,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapAction, returnURL, httpRequest, httpResponse);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster response = manager.resendRequest(returnURL,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster httpRequest, httpResponse);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return response;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (InteractionRedirectException ire) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.message("DSTClient:handleInteraction: Interaction" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "Redirection happened.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw ire;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (InteractionException ie) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DSTUtils.debug.error("DSTClient:handleInteraction: Interaction" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " Error occured.", ie);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new DSTException(ie);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the <code>serviceInstanceUpdate</code> header from the SOAP
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * response message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Applications can make use of this method to check if there is an
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * alternate endpoint or credential available for the service requests.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return <code>ServiceInstanceUpdateHeader</code> from the response
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * message.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public ServiceInstanceUpdateHeader getServiceInstanceUpdateHeader() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return serviceInstanceUpdateHeader;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the web services version.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param wsfVersion the web services version that needs to be set.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setWSFVersion(String wsfVersion) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster this.wsfVersion = wsfVersion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}