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: Utils.java,v 1.9 2008/11/10 22:56:59 veiming Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
272ac8a1a482b3baeff7293aac5de828cfd1ee69Mark de Reeper * Portions Copyright 2013-2014 ForgeRock AS
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.soapbinding;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.io.ByteArrayInputStream;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.text.MessageFormat;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.ArrayList;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Date;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.HashMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.HashSet;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Iterator;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.List;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Map;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.Set;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.StringTokenizer;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.Marshaller;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.Unmarshaller;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.JAXBContext;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.JAXBException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.NotIdentifiableEvent;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.PropertyException;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.ValidationEvent;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.bind.helpers.DefaultValidationEventHandler;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.namespace.QName;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.soap.MessageFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.soap.SOAPMessage;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport javax.xml.soap.MimeHeaders;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport java.util.ResourceBundle;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.PeriodicCleanUpMap;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.SystemTimerPool;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.TaskRunnable;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.util.ProviderManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.util.ProviderUtil;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.debug.Debug;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.locale.Locale;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.configuration.SystemPropertiesManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.shared.xml.XMLUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Document;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.w3c.dom.Element;
272ac8a1a482b3baeff7293aac5de828cfd1ee69Mark de Reeperimport org.apache.xml.utils.PrefixResolverDefault;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This class contains utility methods.
91cb2bef1c88e70b5d433c2a34bca110a35786ceMark Craig *
91cb2bef1c88e70b5d433c2a34bca110a35786ceMark Craig * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class Utils {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String NAMESPACE_PREFIX_MAPPING_LIST_PROP =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.jaxb.namespacePrefixMappingList";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String JAXB_PACKAGE_LIST_PROP =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.jaxb.packageList";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String DEFAULT_JAXB_PACKAGES =
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
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
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
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
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final QName FAULT_CODE_SERVER =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new QName(SOAPBindingConstants.NS_SOAP, "Server");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static String faultStringServerError = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static Debug debug = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static ResourceBundle bundle = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static MessageFactory messageFactory = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static HashMap nsPrefix = new HashMap();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static String jaxbPackages = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static JAXBContext jc = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String STALE_TIME_LIMIT_PROP =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.soap.staleTimeLimit";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static int stale_time_limit = 300000; // millisec
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String SUPPORTED_ACTORS_PROP =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.ws.soap.supportedActors";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static final String LIBERTY_WSF_VERSION =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "com.sun.identity.liberty.wsf.version";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static Set supportedActors = new HashSet();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
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 private static Map messageIDMap = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bundle = Locale.getInstallResourceBundle("libSOAPBinding");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError = bundle.getString("ServerError");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug = Debug.getInstance("libIDWSF");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageFactory = MessageFactory.newInstance();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.static: Unable to create SOAP Message Factory",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String tmpNSPre =
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 while(stz.hasMoreTokens()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String token = stz.nextToken().trim();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int index = token.indexOf('=');
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (index != -1 && index != 0 && index != token.length() - 1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String prefix = token.substring(0, index);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ns = token.substring(index + 1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("Utils.static: add ns = " + ns +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ", prefix = " + prefix);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nsPrefix.put(ns, prefix);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("Utils.static: Invalid syntax " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "for Namespace Prefix Mapping List: " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
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 } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster jaxbPackages = DEFAULT_JAXB_PACKAGES;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("Utils.static: jaxbPackages = " + jaxbPackages);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster jc = JAXBContext.newInstance(jaxbPackages);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (JAXBException jaxbe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Utils.debug.error("Utils.static:", jaxbe);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String tmpstr = SystemPropertiesManager.get(STALE_TIME_LIMIT_PROP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (tmpstr != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster stale_time_limit = Integer.parseInt(tmpstr);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("Utils.static: Unable to get stale time " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "limit. Default value will be used");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tmpstr = SystemPropertiesManager.get(SUPPORTED_ACTORS_PROP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (tmpstr != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringTokenizer stz = new StringTokenizer(tmpstr, "|");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(stz.hasMoreTokens()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String token = stz.nextToken();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (token.length() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster supportedActors.add(token);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster tmpstr =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SystemPropertiesManager.get(MESSAGE_ID_CACHE_CLEANUP_INTERVAL_PROP);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (tmpstr != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster message_ID_cleanup_interval = Integer.parseInt(tmpstr);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.warningEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.warning("Utils.CleanUpThread.static: Unable to" +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster " get stale time limit. Default value " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "will be used");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageIDMap = new PeriodicCleanUpMap(
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 / 1000) * 1000));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns JAXB namespace prefix mapping. Key is the namespace and value
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * is the prefix.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a Map of JAXB namespace prefix mapping
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static public Map getNamespacePrefixMapping() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return nsPrefix;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a String of JAXB packages seperated by ":".
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a String of JAXB packages seperated by ":".
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String getJAXBPackages() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return jaxbPackages;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts Document to SOAPMessage
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static SOAPMessage DocumentToSOAPMessage(Document doc)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPMessage msg = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster MimeHeaders mimeHeaders = new MimeHeaders();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mimeHeaders.addHeader("Content-Type", "text/xml");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String xmlstr = XMLUtils.print(doc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("Utils.DocumentToSOAPMessage: xmlstr = " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlstr);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster msg = messageFactory.createMessage(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster mimeHeaders,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new ByteArrayInputStream(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlstr.getBytes(SOAPBindingConstants.DEFAULT_ENCODING)));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception e) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.DocumentToSOAPMessage", e);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(e.getMessage());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return msg;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a list of JAXB objects to a list of
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>org.w3c.dom.Element</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static List convertJAXBToElement(List jaxbObjs)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws JAXBException{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List result = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (jaxbObjs != null && !jaxbObjs.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = jaxbObjs.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.add(convertJAXBToElement(iter.next()));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return result;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a JAXB object to a <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Element convertJAXBToElement(Object jaxbObj)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws JAXBException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Marshaller m = jc.createMarshaller();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster m.setProperty("com.sun.xml.bind.namespacePrefixMapper",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new NamespacePrefixMapperImpl());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(PropertyException ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.convertJAXBToElement", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Document doc = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doc = XMLUtils.newDocument();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.convertJAXBToElement:", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster m.marshal(jaxbObj, doc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return doc.getDocumentElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a JAXB object to a <code>org.w3c.dom.Element</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Element convertJAXBToElement(Object jaxbObj,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean checkIdref) throws JAXBException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Marshaller m = jc.createMarshaller();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster m.setProperty("com.sun.xml.bind.namespacePrefixMapper",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new NamespacePrefixMapperImpl());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch(PropertyException ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.convertJAXBToElement", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!checkIdref) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster m.setEventHandler(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new DefaultValidationEventHandler() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public boolean handleEvent(ValidationEvent event) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (event instanceof NotIdentifiableEvent) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return true;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return super.handleEvent(event);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster });
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Document doc = null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster doc = XMLUtils.newDocument();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (Exception ex) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.error("Utils.convertJAXBToElement:", ex);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster m.marshal(jaxbObj, doc);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return doc.getDocumentElement();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a list of <code>org.w3c.dom.Element</code> to a list of
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * JAXB objects.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static List convertElementToJAXB(List elements)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws JAXBException{
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List result = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (elements != null && !elements.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = elements.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster result.add(convertElementToJAXB((Element)iter.next()));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return result;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a <code>org.w3c.dom.Element</code> to a JAXB object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Object convertElementToJAXB(Element element)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws JAXBException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Unmarshaller u = jc.createUnmarshaller();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return u.unmarshal(element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a value of XML boolean type to Boolean object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static Boolean StringToBoolean(String str) throws Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (str == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (str.equals("true") || str.equals("1")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return Boolean.TRUE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (str.equals("false") || str.equals("0")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return Boolean.FALSE;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new Exception();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Converts a Boolean object to a String representing XML boolean.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param bool a Boolean object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return a String representing the boolean value.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String BooleanToString(Boolean bool) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (bool == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return bool.booleanValue() ? "1" : "0";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
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 *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static QName convertStringToQName(String str,Element element) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (str == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return null;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String prefix = "";
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String localPart;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster int index = str.indexOf(":");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (index == -1) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster localPart = str;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster prefix = str.substring(0, index);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster localPart = str.substring(index + 1);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster PrefixResolverDefault prd =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new PrefixResolverDefault(element.getOwnerDocument());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ns = prd.getNamespaceForPrefix(prefix, element);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return new QName(ns, localPart);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message processiong rules defined in the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static void enforceProcessingRules(Message message, String requestMessageID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isServer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster CorrelationHeader corrH = message.getCorrelationHeader();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID = corrH.getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkCorrelationHeader(corrH, requestMessageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkProviderHeader(message.getProviderHeader(), messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkProcessingContextHeader(message.getProcessingContextHeader(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkConsentHeader(message.getConsentHeader(), messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List usagHs = message.getUsageDirectiveHeaders();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (usagHs != null && !usagHs.isEmpty()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Iterator iter = usagHs.iterator();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster while(iter.hasNext()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster UsageDirectiveHeader usagH = (UsageDirectiveHeader)iter.next();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkUsageDirectiveHeader(usagH, messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message Correlation header processiong rules defined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkCorrelationHeader(CorrelationHeader corrH,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String requestMessageID, boolean isServer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (corrH == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail.ID_STAR_MSG_NOT_UNSTD,null,null));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bundle.getString("CorrelationHeaderNull"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID = corrH.getMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkActorAndMustUnderstand(corrH.getActor(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster corrH.getMustUnderstand(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (SOAPFaultException sfe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .setCorrelationHeader(corrH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Date timestamp = corrH.getTimestamp();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Date now = new Date();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((now.getTime() - timestamp.getTime()) > stale_time_limit) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.STALE_MSG,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfd.setCorrelationHeader(corrH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null, sfd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(bundle.getString("staleMsg"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Long prevMsgIDTime = (Long)messageIDMap.get(messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster long currentTime = System.currentTimeMillis();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (prevMsgIDTime != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster currentTime - prevMsgIDTime.longValue() < stale_time_limit) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.DUPLICATE_MSG,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfd.setCorrelationHeader(corrH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null, sfd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(bundle.getString("dupMsg"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster synchronized (messageIDMap) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (debug.messageEnabled()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster debug.message("Utils.checkCorrelationHeader: adding " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "messageID: " + messageID);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageIDMap.put(messageID, new Long(currentTime));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String refToMessageID = corrH.getRefToMessageID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (refToMessageID != null && requestMessageID != null &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster !refToMessageID.equals(requestMessageID)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail.INVALID_REF_TO_MSG_ID,messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfd.setCorrelationHeader(corrH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null, sfd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(bundle.getString("invalidRef"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
272ac8a1a482b3baeff7293aac5de828cfd1ee69Mark de Reeper * Enforces message Provider header processing rules defined
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * in the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkProviderHeader(ProviderHeader provH,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID,boolean isServer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (provH == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkActorAndMustUnderstand(provH.getActor(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster provH.getMustUnderstand(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (SOAPFaultException sfe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .setProviderHeader(provH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer && SOAPBindingService.enforceOnlyKnownProviders()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String providerID = provH.getProviderID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ProviderManager providerManager = ProviderUtil.getProviderManager();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!providerManager.containsProvider(providerID)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd = new SOAPFaultDetail(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail.PROVIDER_ID_NOT_VALID, messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfd.setProviderHeader(provH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null, sfd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String affID = provH.getAffiliationID();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((affID != null) &&
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (!providerManager.isAffiliationMember(providerID, affID))) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd = new SOAPFaultDetail(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail.AFFILIATION_ID_NOT_VALID, messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfd.setProviderHeader(provH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null, sfd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkProcessingContextHeader(ProcessingContextHeader procH,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID, boolean isServer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (procH == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkActorAndMustUnderstand(procH.getActor(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster procH.getMustUnderstand(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (SOAPFaultException sfe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .setProcessingContextHeader(procH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.PROC_CTX_URI_NOT_UNSTD,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfd.setProcessingContextHeader(procH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null, sfd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bundle.getString("ProcessingContextUnsupported"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message Consent header processiong rules defined in the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkConsentHeader(ConsentHeader consH,String messageID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean isServer) throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (consH == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkActorAndMustUnderstand(consH.getActor(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster consH.getMustUnderstand(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (SOAPFaultException sfe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .setConsentHeader(consH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Enforces message Usage Directive header processiong rules defined in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the spec.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkUsageDirectiveHeader(UsageDirectiveHeader usagH,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID,boolean isServer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (usagH == null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster try {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster checkActorAndMustUnderstand(usagH.getActor(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster usagH.getMustUnderstand(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, isServer);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } catch (SOAPFaultException sfe) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster List usagHs = new ArrayList();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster usagHs.add(usagH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sfe.getSOAPFaultMessage().getSOAPFault().getDetail()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster .setUsageDirectiveHeaders(usagHs);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw sfe;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Checks 'actor' and 'mustUnderstand' attribute of a header.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 * 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 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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster static void checkActorAndMustUnderstand(String actor,Boolean mustUnderstand,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String messageID,boolean isServer)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SOAPBindingException, SOAPFaultException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (actor != null && !supportedActors.contains(actor)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.BOGUS_ACTOR,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null, sfd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bundle.getString("bogusActor"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (mustUnderstand != null && !mustUnderstand.booleanValue()) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (isServer) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFaultDetail sfd =
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster new SOAPFaultDetail(SOAPFaultDetail.BOGUS_MUST_UNSTND,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster messageID, null);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPFault sf = new SOAPFault(FAULT_CODE_SERVER,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster faultStringServerError, null, sfd);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPFaultException(new Message(sf));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throw new SOAPBindingException(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bundle.getString("bogusMustUnderstand"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets localized string from resource bundle.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
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 */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String getString(String key, Object[] params) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return MessageFormat.format(bundle.getString(key), params);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns the default web services version.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return the default web services version.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public static String getDefaultWSFVersion() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return SystemPropertiesManager.get(LIBERTY_WSF_VERSION,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster SOAPBindingConstants.WSF_11_VERSION);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}