/* * Copyright 2007 the original author or authors. * * Licensed 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.springframework.ws.transport; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.springframework.ws.WebServiceMessage; import org.springframework.ws.WebServiceMessageFactory; /** * Represents a point-to-point connection that a client can use for sending {@link WebServiceMessage} objects directly * to a remote party. * * <p>A {@code WebServiceConnection} can be obtained using a {@link WebServiceMessageSender}. * * @author Arjen Poutsma * @see WebServiceMessageSender#createConnection(URI) * @since 1.0.0 */ public interface WebServiceConnection { /** * Sends the given message using this connection. * * @param message the message to be sent * @throws IOException in case of I/O errors */ void send(WebServiceMessage message) throws IOException; /** * Receives a message using the given {@link WebServiceMessageFactory}. This method blocks until it receives, or * returns {@code null} when no message is received. * * @param messageFactory the message factory used for reading messages * @return the read message, or {@code null} if no message received * @throws IOException in case of I/O errors */ WebServiceMessage receive(WebServiceMessageFactory messageFactory) throws IOException; /** Returns the URI for this connection. */ URI getUri() throws URISyntaxException; /** * Indicates whether this connection has an error. Typically, error detection is done by inspecting connection error * codes, etc. * * @return {@code true} if this connection has an error; {@code false} otherwise. */ boolean hasError() throws IOException; /** * Returns the error message. * * @return the connection error message, if any; returns {@code null} when no error is present * @see #hasError() */ String getErrorMessage() throws IOException; /** * Closes this connection. * * <p>Once a connection has been closed, it is not available for further use. A new connection needs to be created. * * @throws IOException if an I/O error occurs when closing this connection */ void close() throws IOException; }