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: NamespacePrefixMapperImpl.java,v 1.2 2008/06/25 05:47:22 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpackage com.sun.identity.liberty.ws.soapbinding;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.xml.bind.marshaller.NamespacePrefixMapper;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster/**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This class is the implementation of the <code>NamespacePrefixMapper</code>.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class NamespacePrefixMapperImpl extends NamespacePrefixMapper {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster /**
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns a preferred prefix for the given namespace URI.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This method is intended to be overrided by a derived class.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param namespaceUri
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The namespace URI for which the prefix needs to be found.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Never be null. "" is used to denote the default namespace.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param suggestion
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When the content tree has a suggestion for the prefix
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * to the given namespaceUri, that suggestion is passed as a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * parameter. Typicall this value comes from the QName.getPrefix
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * to show the preference of the content tree. This parameter
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * may be null, and this parameter may represent an already
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * occupied prefix.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param requirePrefix
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If this method is expected to return non-empty prefix.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When this flag is true, it means that the given namespace URI
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * cannot be set as the default namespace.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * null if there's no prefered prefix for the namespace URI.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * In this case, the system will generate a prefix for you.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Otherwise the system will try to use the returned prefix,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * but generally there's no guarantee if the prefix will be
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * actually used or not.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * return "" to map this namespace URI to the default namespace.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Again, there's no guarantee that this preference will be
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * honored.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If this method returns "" when requirePrefix=true, the return
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * value will be ignored and the system will generate one.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster *
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster */
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public String getPreferredPrefix(String namespaceUri,String suggestion,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster boolean requirePrefix) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String prefix = (String)Utils.nsPrefix.get(namespaceUri);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (prefix != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return prefix;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster return suggestion;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster }
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster}