blob: 9989637863998d96f4fd8fa1f9bd85e2f6205a4f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.axiom.soap;
import org.apache.axiom.om.OMDataSource;
import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMXMLParserWrapper;
public interface SOAPFactory extends OMFactory {
String getSoapVersionURI();
SOAPVersion getSOAPVersion();
SOAPMessage createSOAPMessage();
/**
* @deprecated This method only exists for compatibility with Spring-WS and should not be used
* by application code.
*/
SOAPMessage createSOAPMessage(OMXMLParserWrapper builder);
/**
* Create a SOAP envelope. The returned element will have the namespace URI specified by the
* SOAP version that this factory represents. It will have the prefix given by
* {@link SOAPConstants#SOAP_DEFAULT_NAMESPACE_PREFIX}. It will also have a corresponding
* namespace declaration.
*
* @return the SOAP envelope
*/
// TODO: when does this thing throw a SOAPProcessingException??
SOAPEnvelope createSOAPEnvelope() throws SOAPProcessingException;
/**
* Create a SOAP envelope with the given namespace. This method can be used to create a SOAP
* envelope with a custom namespace prefix.
*
* @param ns
* the namespace information for the SOAP envelope
* @return the SOAP envelope
*/
// TODO: specify what happens if there is a mismatch between the provided namespace URI and the SOAP version of the factory
// TODO: specify what happens if the prefix is null
SOAPEnvelope createSOAPEnvelope(OMNamespace ns);
/**
* Create a {@link SOAPHeader} as a child of the given {@link SOAPEnvelope}.
* <p>
* Note that for most use cases, it is preferable to use
* {@link SOAPEnvelope#getOrCreateHeader()} instead of this method.
*
* @param envelope
* the parent of the {@link SOAPHeader}
* @return the newly created {@link SOAPHeader}
*/
SOAPHeader createSOAPHeader(SOAPEnvelope envelope) throws SOAPProcessingException;
SOAPHeader createSOAPHeader() throws SOAPProcessingException;
/**
* @param localName
* @param ns
* @return Returns SOAPHeaderBlock.
*/
SOAPHeaderBlock createSOAPHeaderBlock(String localName,
OMNamespace ns,
SOAPHeader parent) throws SOAPProcessingException;
SOAPHeaderBlock createSOAPHeaderBlock(String localName,
OMNamespace ns) throws SOAPProcessingException;
/**
* Create a {@link SOAPHeaderBlock} from an {@link OMDataSource}. The semantics of the method
* parameters are the same as for {@link OMFactory#createOMElement(OMDataSource)}.
*
* @param source
* the data source; must not be <code>null</code>
* @return the newly created header block
*/
SOAPHeaderBlock createSOAPHeaderBlock(OMDataSource source);
/**
* Create a {@link SOAPHeaderBlock} from an {@link OMDataSource} with a known local name and
* namespace URI. The semantics of the method parameters are the same as for
* {@link OMFactory#createOMElement(OMDataSource, String, OMNamespace)}.
*
* @param localName
* the local part of the name of the element produced by the data source; must not be
* <code>null</code>
* @param ns
* the namespace of the element produced by the data source, or <code>null</code> if
* the element has no namespace
* @param source
* the data source; must not be <code>null</code>
* @return the newly created header block
* @throws SOAPProcessingException
*/
SOAPHeaderBlock createSOAPHeaderBlock(String localName,
OMNamespace ns,
OMDataSource source) throws SOAPProcessingException;
/**
* @param parent
* @param e
* @return Returns SOAPFault.
*/
SOAPFault createSOAPFault(SOAPBody parent, Exception e) throws SOAPProcessingException;
SOAPFault createSOAPFault(SOAPBody parent) throws SOAPProcessingException;
SOAPFault createSOAPFault() throws SOAPProcessingException;
/**
* @param envelope
* @return Returns SOAPBody.
*/
SOAPBody createSOAPBody(SOAPEnvelope envelope) throws SOAPProcessingException;
SOAPBody createSOAPBody() throws SOAPProcessingException;
/* ========================
= SOAPFaultCode =
======================== */
/**
* Code eii under SOAPFault (parent)
*
* @param parent
* @return Returns SOAPFaultCode.
*/
SOAPFaultCode createSOAPFaultCode(SOAPFault parent) throws SOAPProcessingException;
SOAPFaultCode createSOAPFaultCode() throws SOAPProcessingException;
/*========================
= SOAPFaultCodeValue =
======================== */
/**
* Value eii under Code (parent)
*
* @param parent
* @return Returns SOAPFaultValue.
*/
SOAPFaultValue createSOAPFaultValue(SOAPFaultCode parent) throws SOAPProcessingException;
SOAPFaultValue createSOAPFaultValue() throws SOAPProcessingException;
/*========================
= SOAPFaultSubCode =
======================== */
/**
* SubCode eii under Value (parent)
*
* @param parent
* @return Returns SOAPFaultValue.
*/
//added
SOAPFaultValue createSOAPFaultValue(SOAPFaultSubCode parent)
throws SOAPProcessingException;
//changed
SOAPFaultSubCode createSOAPFaultSubCode(SOAPFaultCode parent)
throws SOAPProcessingException;
SOAPFaultSubCode createSOAPFaultSubCode() throws SOAPProcessingException;
/**
* SubCode eii under SubCode (parent)
*
* @param parent
* @return Returns SOAPFaultSubCode.
*/
SOAPFaultSubCode createSOAPFaultSubCode(SOAPFaultSubCode parent)
throws SOAPProcessingException;
/*========================
= SOAPFaultReason =
======================== */
/**
* Reason eii under SOAPFault (parent)
*
* @param parent
* @return Returns SOAPFaultReason.
*/
SOAPFaultReason createSOAPFaultReason(SOAPFault parent) throws SOAPProcessingException;
SOAPFaultReason createSOAPFaultReason() throws SOAPProcessingException;
/*========================
= SOAPFaultReasonText =
======================== */
/**
* SubCode eii under SubCode (parent)
*
* @param parent
* @return Returns SOAPFaultText.
*/
SOAPFaultText createSOAPFaultText(SOAPFaultReason parent) throws SOAPProcessingException;
SOAPFaultText createSOAPFaultText() throws SOAPProcessingException;
/*========================
= SOAPFaultNode =
======================== */
/**
* Node eii under SOAPFault (parent)
*
* @param parent
* @return Returns SOAPFaultNode.
*/
SOAPFaultNode createSOAPFaultNode(SOAPFault parent) throws SOAPProcessingException;
SOAPFaultNode createSOAPFaultNode() throws SOAPProcessingException;
/*========================
= SOAPFaultRole =
======================== */
/**
* Role eii under SOAPFault (parent)
*
* @param parent
* @return Returns SOAPFaultRole.
*/
SOAPFaultRole createSOAPFaultRole(SOAPFault parent) throws SOAPProcessingException;
SOAPFaultRole createSOAPFaultRole() throws SOAPProcessingException;
/*========================
= SOAPFaultDetail =
======================== */
/**
* Detail eii under SOAPFault (parent)
*
* @param parent
* @return Returns SOAPFaultDetail.
*/
SOAPFaultDetail createSOAPFaultDetail(SOAPFault parent) throws SOAPProcessingException;
SOAPFaultDetail createSOAPFaultDetail() throws SOAPProcessingException;
/**
* Create a default SOAP envelope with an empty header and an empty body. Note that the method
* will not create an associated {@link SOAPMessage} or {@link OMDocument} instance and the
* parent of the returned {@link SOAPEnvelope} is <code>null</code>.
*
* @return the default SOAP envelope
*/
SOAPEnvelope getDefaultEnvelope() throws SOAPProcessingException;
SOAPEnvelope getDefaultFaultEnvelope() throws SOAPProcessingException;
/**
* Get the envelope namespace for the SOAP version used by this factory. The returned
* {@link OMNamespace} instance has the following properties:
* <ul>
* <li>The prefix is set to {@link SOAPConstants#SOAP_DEFAULT_NAMESPACE_PREFIX} (which is the
* same as the prefix used by methods such as {@link #createSOAPEnvelope()}).
* <li>The namespace URI is the same as returned by {@link #getSoapVersionURI()}.
* </ul>
*
* @return the envelope namespace for the SOAP version used by this factory
*/
OMNamespace getNamespace();
}