001: /*--
002:
003: Copyright (C) 2002 Anthony Eden.
004: All rights reserved.
005:
006: Redistribution and use in source and binary forms, with or without
007: modification, are permitted provided that the following conditions
008: are met:
009:
010: 1. Redistributions of source code must retain the above copyright
011: notice, this list of conditions, and the following disclaimer.
012:
013: 2. Redistributions in binary form must reproduce the above copyright
014: notice, this list of conditions, and the disclaimer that follows
015: these conditions in the documentation and/or other materials
016: provided with the distribution.
017:
018: 3. The names "OBE" and "Open Business Engine" must not be used to
019: endorse or promote products derived from this software without prior
020: written permission. For written permission, please contact
021: me@anthonyeden.com.
022:
023: 4. Products derived from this software may not be called "OBE" or
024: "Open Business Engine", nor may "OBE" or "Open Business Engine"
025: appear in their name, without prior written permission from
026: Anthony Eden (me@anthonyeden.com).
027:
028: In addition, I request (but do not require) that you include in the
029: end-user documentation provided with the redistribution and/or in the
030: software itself an acknowledgement equivalent to the following:
031: "This product includes software developed by
032: Anthony Eden (http://www.anthonyeden.com/)."
033:
034: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
035: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
036: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
037: DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
038: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
039: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
040: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
041: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
042: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
043: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
044: POSSIBILITY OF SUCH DAMAGE.
045:
046: For more information on OBE, please see <http://obe.sourceforge.net/>.
047:
048: */
049:
050: package org.obe.client;
051:
052: import org.apache.xmlrpc.XmlRpcClient;
053:
054: /** This class manages connections to XML-RPC servers. It currently only
055: manages a single connection to a single client.
056:
057: @author Anthony Eden
058: */
059:
060: public class XmlRpcConnectionManager implements XmlRpcClientProvider {
061:
062: /** Construct an XmlRpcConnectionManager.
063:
064: @param defaultPort The default port
065: */
066:
067: public XmlRpcConnectionManager(int defaultPort) {
068: this .defaultPort = defaultPort;
069: }
070:
071: /** Return true if the port should be editable by the user when
072: prompted to connect to the server.
073:
074: @return True if the port is editable
075: */
076:
077: public boolean isPortEditable() {
078: return portEditable;
079: }
080:
081: /** Set to true if the port should be editable by the user when
082: prompted to connect to the server.
083:
084: @param portEditable True if the port should be editable
085: */
086:
087: public void setPortEditable(boolean portEditable) {
088: this .portEditable = portEditable;
089: }
090:
091: /** Return true if there is currently a connected client.
092:
093: @return True if connected
094: */
095:
096: public boolean isConnected() {
097: return client != null;
098: }
099:
100: /** Get the XmlRpcClient. If a connection has not been established or has
101: been closed then this method will cause a connection dialog to be shown.
102: If the user closes or cancels the connection dialog then this method
103: will return null.
104:
105: @return The XmlRpcClient or null
106: */
107:
108: public XmlRpcClient getClient() {
109: if (client == null) {
110: XmlRpcConnectDialog d = new XmlRpcConnectDialog("",
111: defaultPort);
112: d.setPortEditable(portEditable);
113: if (d.showDialog() == XmlRpcConnectDialog.APPROVE_OPTION) {
114: try {
115: client = new XmlRpcClient(d.getHost(), d.getPort());
116: } catch (Exception e) {
117: e.printStackTrace();
118: }
119: }
120: }
121: return client;
122: }
123:
124: /** Close the current connection. */
125:
126: public void disconnect() {
127: client = null;
128: }
129:
130: private int defaultPort;
131: private boolean portEditable;
132: private XmlRpcClient client;
133:
134: }
|