1 /*
   2  * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package javax.xml.soap;
  27 
  28 
  29 /**
  30  * A point-to-point connection that a client can use for sending messages
  31  * directly to a remote party (represented by a URL, for instance).
  32  * <p>
  33  * The SOAPConnection class is optional. Some implementations may
  34  * not implement this interface in which case the call to
  35  * <code>SOAPConnectionFactory.newInstance()</code> (see below) will
  36  * throw an <code>UnsupportedOperationException</code>.
  37  * <p>
  38  * A client can obtain a <code>SOAPConnection</code> object using a
  39  * {@link SOAPConnectionFactory} object as in the following example:
  40  * <PRE>
  41  *      SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
  42  *      SOAPConnection con = factory.createConnection();
  43  * </PRE>
  44  * A <code>SOAPConnection</code> object can be used to send messages
  45  * directly to a URL following the request/response paradigm.  That is,
  46  * messages are sent using the method <code>call</code>, which sends the
  47  * message and then waits until it gets a reply.
  48  *
  49  * @since 1.6
  50  */
  51 public abstract class SOAPConnection {
  52 
  53     /**
  54      * Sends the given message to the specified endpoint and blocks until
  55      * it has returned the response.
  56      *
  57      * @param request the <code>SOAPMessage</code> object to be sent
  58      * @param to an <code>Object</code> that identifies
  59      *         where the message should be sent. It is required to
  60      *         support Objects of type
  61      *         <code>java.lang.String</code>,
  62      *         <code>java.net.URL</code>, and when JAXM is present
  63      *         <code>javax.xml.messaging.URLEndpoint</code>
  64      *
  65      * @return the <code>SOAPMessage</code> object that is the response to the
  66      *         message that was sent
  67      * @throws SOAPException if there is a SOAP error
  68      */
  69     public abstract SOAPMessage call(SOAPMessage request,
  70                                      Object to) throws SOAPException;
  71 
  72     /**
  73      * Gets a message from a specific endpoint and blocks until it receives,
  74      *
  75      * @param to an <code>Object</code> that identifies where
  76      *                  the request should be sent. Objects of type
  77      *                 <code>java.lang.String</code> and
  78      *                 <code>java.net.URL</code> must be supported.
  79      *
  80      * @return the <code>SOAPMessage</code> object that is the response to the
  81      *                  get message request
  82      * @throws SOAPException if there is a SOAP error
  83      * @since 1.6, SAAJ 1.3
  84      */
  85     public SOAPMessage get(Object to)
  86                                 throws SOAPException {
  87         throw new UnsupportedOperationException("All subclasses of SOAPConnection must override get()");
  88     }
  89 
  90     /**
  91      * Closes this <code>SOAPConnection</code> object.
  92      *
  93      * @throws SOAPException if there is a SOAP error
  94      */
  95     public abstract void close()
  96         throws SOAPException;
  97 }
--- EOF ---