a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: Utils.java,v 1.9 2008/11/10 22:56:59 veiming Exp $
272ac8a1a482b3baeff7293aac5de828cfd1ee69Mark de Reeper * Portions Copyright 2013-2014 ForgeRock AS
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.soapbinding;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.helpers.DefaultValidationEventHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.PeriodicCleanUpMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.util.ProviderManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.util.ProviderUtil;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.configuration.SystemPropertiesManager;
272ac8a1a482b3baeff7293aac5de828cfd1ee69Mark de Reeperimport org.apache.xml.utils.PrefixResolverDefault;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This class contains utility methods.
91cb2bef1c88e70b5d433c2a34bca110a35786ceMark Craig * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String NAMESPACE_PREFIX_MAPPING_LIST_PROP =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.jaxb.namespacePrefixMappingList";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.jaxb.packageList";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.soap:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.assertion:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.protocol:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.ac:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.disco.jaxb:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.disco.jaxb11:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.disco.plugins.jaxb:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.interaction.jaxb:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.meta.jaxb:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.paos.jaxb:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.ps:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.security:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.soapbinding.jaxb:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.soapbinding.jaxb11:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.idpp.jaxb:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.idpp.plugin.jaxb:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.secext:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.utility:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.xmlenc:" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.common.jaxb.xmlsig";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static com.sun.identity.liberty.ws.common.jaxb.soap.ObjectFactory soapOF =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new com.sun.identity.liberty.ws.common.jaxb.soap.ObjectFactory();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static com.sun.identity.liberty.ws.soapbinding.jaxb.ObjectFactory soapBOF =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new com.sun.identity.liberty.ws.soapbinding.jaxb.ObjectFactory();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static com.sun.identity.liberty.ws.common.jaxb.secext.ObjectFactory secOF =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new com.sun.identity.liberty.ws.common.jaxb.secext.ObjectFactory();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new QName(SOAPBindingConstants.NS_SOAP, "Server");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.soap.staleTimeLimit";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static int stale_time_limit = 300000; // millisec
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.soap.supportedActors";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.wsf.version";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String MESSAGE_ID_CACHE_CLEANUP_INTERVAL_PROP =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.soap.messageIDCacheCleanupInterval";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static int message_ID_cleanup_interval = 60000; // millisec
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bundle = Locale.getInstallResourceBundle("libSOAPBinding");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError = bundle.getString("ServerError");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.static: Unable to create SOAP Message Factory",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SystemPropertiesManager.get(NAMESPACE_PREFIX_MAPPING_LIST_PROP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (tmpNSPre != null && tmpNSPre.length() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringTokenizer stz = new StringTokenizer(tmpNSPre, "|");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (index != -1 && index != 0 && index != token.length() - 1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("Utils.static: Invalid syntax " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "for Namespace Prefix Mapping List: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String tmpJaxbPkgs = SystemPropertiesManager.get(JAXB_PACKAGE_LIST_PROP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (tmpJaxbPkgs != null && tmpJaxbPkgs.length() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster jaxbPackages = DEFAULT_JAXB_PACKAGES + ":" + tmpJaxbPkgs;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("Utils.static: jaxbPackages = " + jaxbPackages);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String tmpstr = SystemPropertiesManager.get(STALE_TIME_LIMIT_PROP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("Utils.static: Unable to get stale time " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "limit. Default value will be used");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tmpstr = SystemPropertiesManager.get(SUPPORTED_ACTORS_PROP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringTokenizer stz = new StringTokenizer(tmpstr, "|");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SystemPropertiesManager.get(MESSAGE_ID_CACHE_CLEANUP_INTERVAL_PROP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster message_ID_cleanup_interval = Integer.parseInt(tmpstr);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("Utils.CleanUpThread.static: Unable to" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " get stale time limit. Default value " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "will be used");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster message_ID_cleanup_interval, stale_time_limit);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SystemTimerPool.getTimerPool().schedule((TaskRunnable) messageIDMap,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new Date(((System.currentTimeMillis() + message_ID_cleanup_interval)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns JAXB namespace prefix mapping. Key is the namespace and value
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is the prefix.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a Map of JAXB namespace prefix mapping
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static public Map getNamespacePrefixMapping() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a String of JAXB packages seperated by ":".
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a String of JAXB packages seperated by ":".
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts Document to SOAPMessage
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param doc the source Document
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return SOAPMessage
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if an error occurs while converting
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the document
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static SOAPMessage DocumentToSOAPMessage(Document doc)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mimeHeaders.addHeader("Content-Type", "text/xml");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("Utils.DocumentToSOAPMessage: xmlstr = " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlstr.getBytes(SOAPBindingConstants.DEFAULT_ENCODING)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(e.getMessage());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a list of JAXB objects to a list of
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param jaxbObjs a list of JAXB objects
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws JAXBException if an error occurs while converting JAXB objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static List convertJAXBToElement(List jaxbObjs)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a JAXB object to a <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param jaxbObj a JAXB object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws JAXBException if an error occurs while converting JAXB object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Element convertJAXBToElement(Object jaxbObj)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster m.setProperty("com.sun.xml.bind.namespacePrefixMapper",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.convertJAXBToElement:", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a JAXB object to a <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param jaxbObj a JAXB object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws JAXBException if an error occurs while converting JAXB object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Element convertJAXBToElement(Object jaxbObj,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster m.setProperty("com.sun.xml.bind.namespacePrefixMapper",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean handleEvent(ValidationEvent event) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.convertJAXBToElement:", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a list of <code>org.w3c.dom.Element</code> to a list of
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * JAXB objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param elements a list of <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a list of JAXB objects
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws JAXBException if an error occurs while converting
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static List convertElementToJAXB(List elements)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.add(convertElementToJAXB((Element)iter.next()));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a <code>org.w3c.dom.Element</code> to a JAXB object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param element a <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a JAXB object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws JAXBException if an error occurs while converting
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Object convertElementToJAXB(Element element)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a value of XML boolean type to Boolean object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param str a value of XML boolean type
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a Boolean object
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws Exception if there is a syntax error
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Boolean StringToBoolean(String str) throws Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a Boolean object to a String representing XML boolean.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param bool a Boolean object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a String representing the boolean value.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String BooleanToString(Boolean bool) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a string value to a QName. The prefix of the string value
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is resolved to a namespace relative to the element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param str the String to be converted.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param element the Element object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the QName Object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static QName convertStringToQName(String str,Element element) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new PrefixResolverDefault(element.getOwnerDocument());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ns = prd.getNamespaceForPrefix(prefix, element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message processiong rules defined in the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param message a message
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestMessageID the request messageID if we are checking a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * response message or null if we are checking a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * request message
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isServer true if this is a server
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if the message violates rules on client.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the message violates rules on server.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static void enforceProcessingRules(Message message, String requestMessageID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CorrelationHeader corrH = message.getCorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkCorrelationHeader(corrH, requestMessageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkProviderHeader(message.getProviderHeader(), messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkProcessingContextHeader(message.getProcessingContextHeader(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkConsentHeader(message.getConsentHeader(), messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List usagHs = message.getUsageDirectiveHeaders();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster UsageDirectiveHeader usagH = (UsageDirectiveHeader)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkUsageDirectiveHeader(usagH, messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message Correlation header processiong rules defined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param corrH a Correlation header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requestMessageID the request messageID if we are checking a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * response message or null if we are checking a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * request message
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isServer true if this is a server
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if the Correlation header violates rules
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * on client side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the Correlation header violates rules
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * on server side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkCorrelationHeader(CorrelationHeader corrH,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail.ID_STAR_MSG_NOT_UNSTD,null,null));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((now.getTime() - timestamp.getTime()) > stale_time_limit) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(bundle.getString("staleMsg"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Long prevMsgIDTime = (Long)messageIDMap.get(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster currentTime - prevMsgIDTime.longValue() < stale_time_limit) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.DUPLICATE_MSG,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(bundle.getString("dupMsg"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (messageIDMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("Utils.checkCorrelationHeader: adding " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageIDMap.put(messageID, new Long(currentTime));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String refToMessageID = corrH.getRefToMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (refToMessageID != null && requestMessageID != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail.INVALID_REF_TO_MSG_ID,messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(bundle.getString("invalidRef"));
272ac8a1a482b3baeff7293aac5de828cfd1ee69Mark de Reeper * Enforces message Provider header processing rules defined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the spec.
272ac8a1a482b3baeff7293aac5de828cfd1ee69Mark de Reeper * @param provH a Correlation header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param messageID the messageID in Correlation header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isServer true if this is a server
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if the Provider header violates rules
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * on client side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the Provider header violates rules
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * on server side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkProviderHeader(ProviderHeader provH,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer && SOAPBindingService.enforceOnlyKnownProviders()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProviderManager providerManager = ProviderUtil.getProviderManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!providerManager.containsProvider(providerID)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail.PROVIDER_ID_NOT_VALID, messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (!providerManager.isAffiliationMember(providerID, affID))) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail.AFFILIATION_ID_NOT_VALID, messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message Processing Context header processiong rules defined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param procH a Processing Context header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param messageID the messageID in Correlation header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isServer true if this is a server
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if the Processing Context header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * violates rules on client side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the Processing Context header violates
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * rules on server side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkProcessingContextHeader(ProcessingContextHeader procH,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.PROC_CTX_URI_NOT_UNSTD,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bundle.getString("ProcessingContextUnsupported"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message Consent header processiong rules defined in the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param consH a Consent header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param messageID the messageID in Correlation header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isServer true if this is a server
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if the Consent header violates rules on
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * client side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the Consent header violates rules
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * on server side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkConsentHeader(ConsentHeader consH,String messageID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isServer) throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message Usage Directive header processiong rules defined in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param usagH a Usage Directive header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param messageID the messageID in Correlation header
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isServer true if this is a server
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if the Usage Directive header violates
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * rules on client side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the Usage Directive header violates
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * rules on server side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkUsageDirectiveHeader(UsageDirectiveHeader usagH,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Checks 'actor' and 'mustUnderstand' attribute of a header.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param actor the value of 'actor' attribute of a header.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param mustUnderstand the value of 'mustUnderstand' attribute of a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param messageID the messageID in Correlation header.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param isServer true if this is a server.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPBindingException if the actor and mustUnderstand violates
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * rules on client side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws SOAPFaultException if the actor and mustUnderstand violates
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * rules on server side
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkActorAndMustUnderstand(String actor,Boolean mustUnderstand,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (actor != null && !supportedActors.contains(actor)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.BOGUS_ACTOR,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (mustUnderstand != null && !mustUnderstand.booleanValue()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.BOGUS_MUST_UNSTND,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets localized string from resource bundle.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param key a key to a resource bundle
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param params parameters to MessageFormat
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a localized string.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String getString(String key, Object[] params) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return MessageFormat.format(bundle.getString(key), params);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the default web services version.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the default web services version.