1 /* 2 Copyright (C) 2000 - 2007 Grid Systems, S.A. 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License, version 2, as 6 published by the Free Software Foundation. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with this program; if not, write to the Free Software 15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 16 */ 17 package com.gridsystems.innergrid.api; 18 19 import java.net.URL; 20 21 import org.apache.axis.client.Call; 22 23 import com.gridsystems.innergrid.kernel.KernelException; 24 25 /** 26 * Classes implementing this interface hold all the necessary data to establish 27 * an authenticated connection to a Server. 28 * 29 * @author Rodrigo Ruiz 30 * @version 1.0 31 */ 32 public interface Connection { 33 34 /** 35 * DIME attachment format. 36 */ 37 String DIME = Call.ATTACHMENT_ENCAPSULATION_FORMAT_DIME; 38 39 /** 40 * MIME attachment format. 41 */ 42 String MIME = Call.ATTACHMENT_ENCAPSULATION_FORMAT_MIME; 43 44 /** 45 * MTOM attachment format. 46 */ 47 String MTOM = Call.ATTACHMENT_ENCAPSULATION_FORMAT_MTOM; 48 49 /** 50 * Default connection timeout. 51 */ 52 int DEFAULT_TIMEOUT = 300000; 53 54 /** 55 * Gets the Host to connect to. 56 * @return the Host to connect to. 57 */ 58 String getHost(); 59 60 /** 61 * Gets Port to connect. 62 * @return Port to connect. 63 */ 64 int getPort(); 65 66 /** 67 * Use a secured connection. 68 * @return <tt>true</tt> if this connection uses SSL; 69 * <tt>false</tt> otherwise. 70 */ 71 boolean isSecured(); 72 73 /** 74 * Gets the connection context path. 75 * <p> 76 * By default, Kernel services are located in <tt>/kernel/api</tt>. 77 * 78 * @return The connection base context path 79 */ 80 String getContextPath(); 81 82 /** 83 * Gets the value of the chunked transfer control flag. 84 * <p> 85 * This flag is set to <tt>true</tt> by default. 86 * 87 * @return The current transfer control flag value 88 */ 89 boolean isChunkedTransferEnabled(); 90 91 /** 92 * Enables or disables chunked transfer encoding (it is enabled by default). 93 * <p> 94 * This flag must be set to <tt>false</tt> when connecting to servers that 95 * do not support this transfer encoding. In particular, simple servers used 96 * by MUSE for event notification require this flag to be disabled. 97 * <p> 98 * Embedded servers used during unit tests will usually require this 99 * encoding to be disabled too. 100 * 101 * @param enabled The new flag value 102 */ 103 void setChunkedTransferEnabled(boolean enabled); 104 105 /** 106 * Gets the keep-alive control flag value. 107 * 108 * @return The current flag value 109 */ 110 boolean isKeepAliveEnabled(); 111 112 /** 113 * Sets the keep-alive control flag value. 114 * <p> 115 * Keep-alive is disabled by default for scalability reasons. However, if 116 * several calls must be performed in a short time period, enabling it can 117 * drastically improve the performance. 118 * 119 * @param enabled The new flag value 120 */ 121 void setKeepAliveEnabled(boolean enabled); 122 123 /** 124 * Gets the connection timeout. 125 * 126 * @return The connection timeout in milliseconds 127 */ 128 int getTimeout(); 129 130 /** 131 * Sets the connection timeout. By default, it is 30 seconds. 132 * 133 * @param timeout The connection timeout in milliseconds 134 */ 135 void setTimeout(int timeout); 136 137 /** 138 * Gets the attachment format (DIME, MIME or MTOM). 139 * 140 * @return The attachment format to use 141 */ 142 String getAttachmentFormat(); 143 144 /** 145 * Sets the attachment format (DIME, MIME or MTOM). By default, the format 146 * is automatically selected through the Service deployment meta-data. By 147 * setting this value, the user can override these default values. 148 * 149 * @param format The attachment format to use 150 */ 151 void setAttachmentFormat(String format); 152 153 /** 154 * Gets a target URL to the SOAP service for the specified API (Internal use only). 155 * 156 * @param apiName the name of the API 157 * @return the target URL to apiName 158 * @throws KernelException <code>CLT008</code> if the resulting URL is invalid 159 */ 160 URL getUrl(String apiName) throws KernelException; 161 162 /** 163 * Gets the credentials for the connection. 164 * 165 * @return the needed Credentials. They can be null. 166 */ 167 Credentials getCredentials(); 168 169 /** 170 * Manages exceptions (Internal use only). 171 * 172 * @param ke KernelException captured 173 * @param retry number of retries 174 * @throws KernelException the <code>ke</code> exception if it passes along the 175 * exception without managing 176 * 177 */ 178 void manageException(KernelException ke, int retry) throws KernelException; 179 180 /** 181 * Notifies to the Connection instance that the target API has been reached. 182 */ 183 void success(); 184 185 /** 186 * Checks that the connection is directed to an open port with the proper protocol. 187 * 188 * @throws KernelException <code>CLT060</code> if the port cannot be reached. 189 * @throws KernelException <code>CLT061</code> if the port can be reached but the 190 * protocol is not valid. 191 * @throws KernelException <code>CLT062</code> if a valid URL to the port to check 192 * cannot be created. 193 */ 194 void checkConnection() throws KernelException; 195 196 /** 197 * Disposes the object and releases kept resources. 198 */ 199 void close(); 200 }