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: Description.java,v 1.2 2008/06/25 05:47:10 qcheng Exp $
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.common.DiscoConstants;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.liberty.ws.disco.common.DiscoUtils;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The class <code>Description</code> represents a
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Description Type of a service instance.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <p>The following schema fragment specifies the expected content within the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <code>Description</code> object.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <complexType name="DescriptionType">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <complexContent>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <sequence>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <element name="SecurityMechID" type="{http://www.w3.org/2001/XMLSchema}anyURI" maxOccurs="unbounded"/>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <element name="CredentialRef" type="{http://www.w3.org/2001/XMLSchema}IDREF" maxOccurs="unbounded" minOccurs="0"/>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <choice>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <group ref="{urn:liberty:disco:2003-08}WsdlRef"/>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <group ref="{urn:liberty:disco:2003-08}BriefSoapHttpDescription"/>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * </choice>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * </sequence>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * <attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * </restriction>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * </complexContent>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * </complexType>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @supported.all.api
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Default constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructor.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param securityMechID List of supported security mechanism ID as String
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param credentialRef List of credential references
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param endPoint SOAP endpoint URI
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Description (java.util.List securityMechID,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Constructs a Description object from DOM element.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param elem DOM Element of Description.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @exception DiscoveryException if error occurs.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public Description(Element elem) throws DiscoveryException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): null input.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (((nodeName = elem.getLocalName()) == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ((nameSpaceURI = elem.getNamespaceURI()) == null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (!nameSpaceURI.equals(DiscoConstants.DISCO_NS)))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): wrong input");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for (int i = 0, length = contentnl.getLength(); i < length; i++) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((nodeName = child.getLocalName()) != null) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster nameSpaceURI = ((Element) child).getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster (!nameSpaceURI.equals(DiscoConstants.DISCO_NS)))
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String mID = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "missing SecurityMechID value.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String ref = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "missing CredentialRef value.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster } else if (nodeName.equals("ServiceNameRef")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((mechID == null) || (mechID.size() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("ServiceInstance(Element): missing "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "SecurityMechID element.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.bundle.getString("missingSecurityMechID"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((soapEndpoint == null) && (wsdlURI == null)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("ServiceInstance(Element): missing "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "WsdlRef or BriefSoapHttpDescription.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.bundle.getString("missingWsdlOrBrief"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseEndpoint(Element child) throws DiscoveryException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((soapEndpoint != null) || (wsdlURI != null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "included more Endpoint.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapEndpoint = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((soapEndpoint == null) || (soapEndpoint.length() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "missing Endpoint value.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseSoapAction(Element child) throws DiscoveryException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((soapAction != null) || (wsdlURI != null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "included more SoapAction.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster soapAction = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((soapAction == null) || (soapAction.length() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "missing SoapAction value.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseWsdlURI(Element child) throws DiscoveryException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((soapEndpoint != null) || (wsdlURI != null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "included more WsdlURI.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster wsdlURI = XMLUtils.getElementValue((Element) child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((wsdlURI == null) || (wsdlURI.length() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "missing WsdlURI value.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void parseServiceNameRef(Element child) throws DiscoveryException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((soapEndpoint != null) || (serviceNameRef != null) ||
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "included more WsdlURI.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String eleValue = XMLUtils.getElementValue(child);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((eleValue == null) || (eleValue.length() == 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "missing ServiceNameRef value.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster StringTokenizer st = new StringTokenizer(localPart, ":");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster DiscoUtils.debug.message("Description(Element): "
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster + "wrong ServiceNameRef value.");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String namespaceURI = child.getAttribute(attrName);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((namespaceURI != null) && (namespaceURI.length() != 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((prefix != null) && (prefix.length() != 0)) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serviceNameRef = new QName(namespaceURI, localPart, prefix);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster serviceNameRef = new QName(namespaceURI, localPart);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets id attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return id attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setId(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets id attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param id id attribute.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getId()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets SOAP action.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return SOAP action.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setSoapAction(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets SOAP action.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param value SOAP action to be set
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getSoapAction()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets supported Security Mechanism IDs.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return List of IDs as String for security mechanism
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets supported Security Mechanism IDs.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param mechIDs List of IDs as String for security mechanism
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets WSDL service name reference.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return WSDL service name reference.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setServiceNameRef(QName)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets WSDL service name reference.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param nameRef service name reference.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getServiceNameRef()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets URI to WSDL resource containing the service description.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return URI to WSDL resource containing the service description.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setWsdlURI(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets URI to WSDL resource containing the service description.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param uri URI to the WSDL resource
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getWsdlURI()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets the value of the <code>CredentialRef</code> property.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return value of the <code>CredentialRef</code> property.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setCredentialRef(List)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets the value of the <code>CredentialRef</code> property.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param refs List of String value of the <code>CredentialRef</code>
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getCredentialRef()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Gets SOAP end point URI.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return SOAP end point URI
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #setEndpoint(String)
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Sets SOAP end point URI.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param uri end point URI to be set
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @see #getEndpoint()
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Returns formatted string of the service description.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @return formatted string of the service description.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append("<Description xmlns=\"").append(DiscoConstants.DISCO_NS).
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append("<SecurityMechID>").append((String) iter.next()).
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append("<CredentialRef>").append((String) iter2.next()).
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append("<Endpoint>").append(soapEndpoint).append("</Endpoint>");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster sb.append("<WsdlURI>").append(wsdlURI).append("</WsdlURI>");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String namespace = serviceNameRef.getNamespaceURI();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((namespace != null) && namespace.length() != 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if ((prefix == null) || prefix.length() == 0) {