Class AbstractGatewayConnection
java.lang.Object
com.inductiveautomation.ignition.client.gateway_interface.AbstractGatewayConnection
- All Implemented Interfaces:
GatewayConnection,GatewayInterface.GatewayExceptionMonitor,PushNotificationListener,GatewayConstants,EventListener
- Direct Known Subclasses:
ClientGatewayConnection,DesignerGatewayConnection
public abstract class AbstractGatewayConnection
extends Object
implements GatewayConstants, GatewayConnection, PushNotificationListener, GatewayInterface.GatewayExceptionMonitor
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected PropertyChangeSupportstatic final Stringstatic final Stringstatic final Stringstatic final Stringprotected intprotected HttpURLThe current address that we are communicating withA list of all gateway addresses that were passed in.protected Stringprotected TimeZonestatic final Stringprotected ScopeVersionHashprotected intstatic final Stringprotected LaunchContextprotected EventListenerListprotected static final org.apache.log4j.LoggerUsed for internal logging ONLY.static final Stringstatic final Stringstatic final Stringprotected intstatic final Stringstatic final Stringstatic final Stringprotected intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intFields inherited from interface com.inductiveautomation.ignition.common.gateway.GatewayConstants
_DATE_FORMATTER, ARG_MESSAGETYPE, ARG_MODULEID, ATR_INDEX, ATR_LENGTH, ATR_NAME, ATR_TYPE, booleanNull, byteNull, charNull, CONNECT_TIMEOUT, DATE_FORMAT_STRING, doubleNull, ELM_ARG, ELM_COLLIST, ELM_COLUMN, ELM_COMPRESSEDROWS, ELM_DATA, ELM_ERRORCODE, ELM_ERRORMESSAGE, ELM_EXCLS, ELM_EXMSG, ELM_EXOVERRIDES_TOSTRING, ELM_EXSTRING, ELM_MBODY, ELM_MESSAGE, ELM_MTYPE, ELM_NOTIFICATION, ELM_NOTIFICATIONS, ELM_RESPONSE, ELM_ROW, ELM_ROWS, ELM_SERIALIZED_RESPONSE, ELM_SETCOOKIE, ELM_STACKTRACE, ELM_STELM, ELM_STELM_DECL, ELM_STELM_FILE, ELM_STELM_LINE, ELM_STELM_METH, ERRNO_ASYNC_CALL, ERRNO_ASYNC_CALL_CANCELED, ERRNO_ASYNC_CALL_FAILED, ERRNO_BROWSE_ERROR, ERRNO_COMM_ERROR, ERRNO_CONNECTION_MODE, ERRNO_DBCONNECTION_NAMING, ERRNO_DBCONNECTION_SQL, ERRNO_HISTORY_QUERY_ERROR, ERRNO_INSECURE_REDIRECT, ERRNO_INTERNAL, ERRNO_INVALIDARGS, ERRNO_INVOCATION_EXCEPTION, ERRNO_LICENE_RESTRICTED, ERRNO_LOGIN_CANCELLED, ERRNO_LOGIN_FAILED, ERRNO_LOGIN_FAILED_LICENSING, ERRNO_NAMING, ERRNO_NO_SESSION, ERRNO_NON_ACTIVE_NODE, ERRNO_NON_MASTER_NODE, ERRNO_NOT_AUTHORIZED, ERRNO_NOTIMP, ERRNO_OK, ERRNO_PARSE, ERRNO_PASSWORD_EXPIRED, ERRNO_PONG, ERRNO_POST_ERROR, ERRNO_PROJECT_PULL, ERRNO_PROJECT_PUSH, ERRNO_RUNTIME_EXPIRED, ERRNO_SQL, ERRNO_SQLTAGS_PROVIDER_DISABLED, ERRNO_SQLTAGS_PROVIDER_FAULTED, ERRNO_SQLTAGS_PROVIDER_LOADING, ERRNO_SQLTAGS_PROVIDER_MISSING, ERRNO_SQLTAGS_SEND_TAGS, ERRNO_SSL_REQUIRED, ERRNO_TIMEOUT, ERRNO_TRIAL_EXPIRED, ERRNO_VERSION_INCOMPATABILITY, ERROR_MESSAGE_TYPE, floatNull, intNull, longNull, MODE_DISCONNECTED, MODE_FULL, MODE_READ_ONLY, MTYPE_COPY_IMAGE, MTYPE_CREATE_IMAGE_FOLDER, MTYPE_DBTEST, MTYPE_GET_NEW_RESOURCEID, MTYPE_INVALID, MTYPE_INVOKE_FUNCTION, MTYPE_LIST_AUTHS, MTYPE_LIST_COLS, MTYPE_LIST_DBS, MTYPE_LIST_IDPS, MTYPE_LIST_IMAGES, MTYPE_LIST_MODULES, MTYPE_LIST_ROLES, MTYPE_LIST_SECURITY_LEVELS, MTYPE_LIST_SQLTAG_PROVIDERS, MTYPE_LIST_TABLES, MTYPE_LIST_ZONES, MTYPE_PING, MTYPE_PLATFORM_EDITION, MTYPE_PUBLIC_PING, MTYPE_REMOVE_IMAGE, MTYPE_RENAME_IMAGE_FOLDER, MTYPE_REPORT_ERROR, MTYPE_SEND_EMAIL, MTYPE_SQLTAGS_ADD_SCANCLASS, MTYPE_SQLTAGS_ADD_TAGS, MTYPE_SQLTAGS_EDIT_SCANCLASS, MTYPE_SQLTAGS_EDIT_TAGS, MTYPE_SQLTAGS_ERROR_LIST, MTYPE_SQLTAGS_FSQL_BROWSE, MTYPE_SQLTAGS_FSQL_LIST, MTYPE_SQLTAGS_GET_SCANCLASS, MTYPE_SQLTAGS_LIST, MTYPE_SQLTAGS_META_LIST, MTYPE_SQLTAGS_POLL, MTYPE_SQLTAGS_REMOVE_SCANCLASS, MTYPE_SQLTAGS_REMOVE_TAGS, MTYPE_SQLTAGS_WRITE, MTYPE_STATUS_POLL, MTYPE_UPLOAD_IMAGE, MTYPE_VERSION_CHECK, OPC_BROWSE_TIMEOUT, PROTECT_DIALOG_TYPE, shortNull, SOCKET_TIMEOUT, WARNING_MESSAGE_TYPE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddConnectionListener(ConnectionListener listener) voidDifferent from the ConnectionListener in the sense that this listener is intended for use in redundant setups, where the status of the inactive connection must be updated along with the status of the active connection.voidvoidaddPropertyChangeListener(String propName, PropertyChangeListener l) voidvoidConnect to the gateway(s) specifiedvoidprotected abstract org.apache.commons.lang3.tuple.Pair<AuthenticatedUser,String> doIdpLoginFinish(String projectName) protected abstract AuthenticatedUserdoLogin(GatewayInterface gatewayInterface, String projectName, AuthChallenge challenge) protected abstract org.apache.commons.lang3.tuple.Pair<AuthenticatedUser,String> doTokenLogin(GatewayInterface gatewayInterface, String projectName, String encodedAuthToken) protected voidfireConnectionEvent(String message) protected voidfireConnectionEvent(String messageLookup, HttpURL gatewayAddr, boolean appendGatewayAddr) Overloaded method to allow a gateway's connection status to be updated.protected voidfireConnectionEvent(String messageLookup, HttpURL gatewayAddr, Exception ex, boolean appendGatewayAddr) Overloaded method to allow a gateway's connection status to be updated.protected voidprotected voidfishForAliveServer(boolean reLogin) Synchronized method- Tests communication with known servers, and sets the gateway interface to the first gateway that in can connect to.Returns a list of all possible Gateway addresses that are known to the client.The encrypted auth challenge that was used to log inintReturns the current connection mode: MODE_FULL MODE_READ_ONLY MODE_DISCONNECTEDintprotected StringReturns the address of the gateway that is currently being communicated with.Returns the string version of the currently connected gateway's "Node Role", which will be one of: Independent Master BackupReturns the url to the web portion of the gateway, like "http[s]://<address>:<port>[/context]"intThe number of concurrent HTTP connections allowed.intPlatform edition.The name of the project that we are currently logged into, if any.getRoles()The set of roles that the actively logged in user has, if any.Returns "http" or "https" depending on our transport schemeprotected abstract intgetScope()Returns the scope for this connection.The set of security zones that the actively logged in user has, if any.intThe username of the actively logged in user, if any.idpLoginFinish(String projectName) booleanWhether or not we are currently supposed to be in a connected state.static booleanbooleanbooleanbooleanbooleanlogin(String projectName, AuthChallenge challenge) voidlogout()protected GatewayInterfacenewGatewayInterface(HttpURL addr) Creates a new GatewayInterface for the given URL, settings its connect and socket timeouts appropriatelyvoidprotected abstract voidprotected abstract voidCalled when the version is detected to have changed on the gateway.voidreceiveNotification(PushNotification notification) voidremoveConnectionListener(ConnectionListener listener) voidvoidvoidremovePropertyChangeListener(String propName, PropertyChangeListener l) voidvoidRemoves all PushNotificationListeners that are of same class as the passed class.protected voidsetConnected(boolean connected) voidsetConnectionMode(int connectionMode) protected voidsetConnectionUp(boolean connectionUp) Synchronized methodvoidsetConnectTimeout(int connectTimeout) protected voidSets the new gateway interface, and adds this as a gateway exception listener and a push notification listener.voidsetHttpConcurrency(int concurrency) protected voidsetIndependentAddressList(List<HttpURL> addresses, boolean reLogin) voidsetOpcBrowseTimeout(int opcBrowseTimeout) protected voidsetProjectName(String projectName) voidsetSocketTimeout(int socketTimeout) tokenLogin(String projectName, String encodedAuthToken) protected StringReturns the HttpURL with the correct security scheme, like: "https://myserver:443/ContextPath"voidManually update the status of all connection listeners.protected booleanvoidupdateBackupAddresses(List<HttpURL> list) Synchronized methodvoidUpdates the gateway timezone and role infovoidupdateMasterAddresses(List<HttpURL> list) Synchronized methodMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.inductiveautomation.ignition.client.gateway_interface.GatewayConnection
idpLoginStart
-
Field Details
-
REDUNDANT_MASTER
-
REDUNDANT_BACKUP
-
INDEPENDENT
- See Also:
-
CONNECT_UNKNOWN
- See Also:
-
CONNECTING
- See Also:
-
CONNECT_SUCCESS
- See Also:
-
CONNECT_FAIL
- See Also:
-
RELOGIN
- See Also:
-
NON_ACTIVE
- See Also:
-
NEW_ADDRESSES
- See Also:
-
NO_NEW_ADDRESSES
- See Also:
-
GET_ADDRESSES_ERROR
- See Also:
-
STATUS_CONNECT_UNKNOWN
public static final int STATUS_CONNECT_UNKNOWN- See Also:
-
STATUS_CONNECTING
public static final int STATUS_CONNECTING- See Also:
-
STATUS_CONNECTED
public static final int STATUS_CONNECTED- See Also:
-
STATUS_CONNECT_FAIL
public static final int STATUS_CONNECT_FAIL- See Also:
-
STATUS_CONNECT_INACTIVE
public static final int STATUS_CONNECT_INACTIVE- See Also:
-
STATUS_CONNECTED_INCOMPATIBLE
public static final int STATUS_CONNECTED_INCOMPATIBLE- See Also:
-
STATUS_CONNECT_WARNING
public static final int STATUS_CONNECT_WARNING- See Also:
-
log
protected static final org.apache.log4j.Logger log -
LOGGER_STATUS_LOOKUP
Used for internal logging ONLY. Do not use to display messages to the user, as these strings are not internationalized. -
connectTimeout
protected int connectTimeout -
socketTimeout
protected int socketTimeout -
opcBrowseTimeout
protected int opcBrowseTimeout -
httpConcurrency
protected int httpConcurrency -
changeSupport
-
listenerList
-
currentAddress
The current address that we are communicating with -
gatewayAddresses
A list of all gateway addresses that were passed in. The client starts in independent mode and cycles thru these addresses in the fishForAliveServer() method. The addresses are used later if a version mismatch exception is thrown when reconnecting to a gateway. Redundant master and backup addresses are not maintained in this list. They are held in the potentialMasterList and potentialBackup list respectively. -
launchContext
-
gatewayTimeZone
-
gatewayNodeRole
-
hash
-
-
Constructor Details
-
AbstractGatewayConnection
-
-
Method Details
-
getEncodedAuthToken
-
connect
Description copied from interface:GatewayConnectionConnect to the gateway(s) specified- Specified by:
connectin interfaceGatewayConnection
-
disconnect
public void disconnect()- Specified by:
disconnectin interfaceGatewayConnection
-
setIndependentAddressList
protected void setIndependentAddressList(List<HttpURL> addresses, boolean reLogin) throws AbstractGatewayConnection.UnrecoverableIdpAuthSessionException, VersionMismatchException -
newGatewayInterface
Creates a new GatewayInterface for the given URL, settings its connect and socket timeouts appropriately -
getScope
protected abstract int getScope()Returns the scope for this connection. Used to create an accurate version hash. -
updateMasterAddresses
Synchronized method -
updateBackupAddresses
Synchronized method -
fishForAliveServer
protected void fishForAliveServer(boolean reLogin) throws AbstractGatewayConnection.UnrecoverableIdpAuthSessionException, VersionMismatchException Synchronized method- Tests communication with known servers, and sets the gateway interface to the first gateway that in can connect to. For redundant connections, this method also sets the gateway interface to either the last known master or the last known backup in a connection failure scenario. The connection status of the master and the backup is determined in a separate thread in the RedundancyMonitorTask. -
tryToLogin
protected boolean tryToLogin() throws AbstractGatewayConnection.UnrecoverableIdpAuthSessionException -
setGatewayInterface
Sets the new gateway interface, and adds this as a gateway exception listener and a push notification listener. Also updates the gateway timezone. -
updateGatewayMetaInfo
public void updateGatewayMetaInfo()Updates the gateway timezone and role info -
getGatewayNodeRole
Description copied from interface:GatewayConnectionReturns the string version of the currently connected gateway's "Node Role", which will be one of:- Independent
- Master
- Backup
- Specified by:
getGatewayNodeRolein interfaceGatewayConnection
-
doLogin
protected abstract AuthenticatedUser doLogin(GatewayInterface gatewayInterface, String projectName, AuthChallenge challenge) throws GatewayException - Throws:
GatewayException
-
login
- Specified by:
loginin interfaceGatewayConnection- Throws:
GatewayException
-
doTokenLogin
protected abstract org.apache.commons.lang3.tuple.Pair<AuthenticatedUser,String> doTokenLogin(GatewayInterface gatewayInterface, String projectName, String encodedAuthToken) throws GatewayException - Throws:
GatewayException
-
tokenLogin
public AuthenticatedUser tokenLogin(String projectName, String encodedAuthToken) throws GatewayException - Specified by:
tokenLoginin interfaceGatewayConnection- Throws:
GatewayException
-
doIdpLoginFinish
protected abstract org.apache.commons.lang3.tuple.Pair<AuthenticatedUser,String> doIdpLoginFinish(String projectName) throws GatewayException - Throws:
GatewayException
-
idpLoginFinish
- Specified by:
idpLoginFinishin interfaceGatewayConnection- Throws:
GatewayException
-
logout
public void logout()- Specified by:
logoutin interfaceGatewayConnection
-
setConnectionUp
protected void setConnectionUp(boolean connectionUp) Synchronized method -
onVersionMismatch
protected abstract void onVersionMismatch()Called when the version is detected to have changed on the gateway. Connection will be closed at this point. -
onUnrecoverableIdpAuthSession
protected abstract void onUnrecoverableIdpAuthSession() -
notifyGatewayException
- Specified by:
notifyGatewayExceptionin interfaceGatewayInterface.GatewayExceptionMonitor
-
receiveNotification
- Specified by:
receiveNotificationin interfacePushNotificationListener
-
isConnectionRelated
-
getConnectionMode
public int getConnectionMode()Description copied from interface:GatewayConnectionReturns the current connection mode:- MODE_FULL
- MODE_READ_ONLY
- MODE_DISCONNECTED
- Specified by:
getConnectionModein interfaceGatewayConnection
-
setConnectionMode
public void setConnectionMode(int connectionMode) - Specified by:
setConnectionModein interfaceGatewayConnection
-
getAllAddresses
Description copied from interface:GatewayConnectionReturns a list of all possible Gateway addresses that are known to the client. This list includes redundant master and backup addresses. The list is used for client restarts.- Specified by:
getAllAddressesin interfaceGatewayConnection
-
getGatewayAddress
Description copied from interface:GatewayConnectionReturns the address of the gateway that is currently being communicated with.- Specified by:
getGatewayAddressin interfaceGatewayConnection
-
getGatewayInterface
- Specified by:
getGatewayInterfacein interfaceGatewayConnection
-
getGatewayWebURL
Description copied from interface:GatewayConnectionReturns the url to the web portion of the gateway, like "http[s]://<address>:<port>[/context]"- Specified by:
getGatewayWebURLin interfaceGatewayConnection
-
getScheme
Description copied from interface:GatewayConnectionReturns "http" or "https" depending on our transport scheme- Specified by:
getSchemein interfaceGatewayConnection
-
getGatewayTimeZone
- Specified by:
getGatewayTimeZonein interfaceGatewayConnection
-
isConnectionUp
public boolean isConnectionUp()- Specified by:
isConnectionUpin interfaceGatewayConnection
-
isSessionValid
public boolean isSessionValid()- Specified by:
isSessionValidin interfaceGatewayConnection
-
isConnected
public boolean isConnected()Whether or not we are currently supposed to be in a connected state. If this is true and connectionUp is false, then we are reconnecting- Specified by:
isConnectedin interfaceGatewayConnection
-
setConnected
protected void setConnected(boolean connected) -
toString
Returns the HttpURL with the correct security scheme, like: "https://myserver:443/ContextPath" -
addPushNotificationListener
- Specified by:
addPushNotificationListenerin interfaceGatewayConnection
-
removePushNotificationListener
- Specified by:
removePushNotificationListenerin interfaceGatewayConnection
-
removePushNotificationListeners
Removes all PushNotificationListeners that are of same class as the passed class.- Specified by:
removePushNotificationListenersin interfaceGatewayConnection- Parameters:
c- The type of listener to remove
-
firePushNotification
-
addPropertyChangeListener
- Specified by:
addPropertyChangeListenerin interfaceGatewayConnection
-
removePropertyChangeListener
- Specified by:
removePropertyChangeListenerin interfaceGatewayConnection
-
addPropertyChangeListener
- Specified by:
addPropertyChangeListenerin interfaceGatewayConnection
-
removePropertyChangeListener
- Specified by:
removePropertyChangeListenerin interfaceGatewayConnection
-
addConnectionListener
- Specified by:
addConnectionListenerin interfaceGatewayConnection
-
removeConnectionListener
- Specified by:
removeConnectionListenerin interfaceGatewayConnection
-
fireConnectionEvent
protected void fireConnectionEvent(String messageLookup, HttpURL gatewayAddr, boolean appendGatewayAddr) Overloaded method to allow a gateway's connection status to be updated. A BundleUtil lookup is made to get the actual string from the passed lookup. Be sure that the actual string returned from lookup contains at least one '%s' to display the gateway address. This method will also update the internal masterConnectionStatus and backupConnectionStatus variables for redundant systems, and the connectionStatus variable for independent systems. -
fireConnectionEvent
protected void fireConnectionEvent(String messageLookup, HttpURL gatewayAddr, Exception ex, boolean appendGatewayAddr) Overloaded method to allow a gateway's connection status to be updated. A BundleUtil lookup is made to get the actual string from the passed lookup. Be sure that the actual string returned from lookup contains at least one '%s' to display the gateway address. This method will also update the internal masterConnectionStatus and backupConnectionStatus variables for redundant systems, and the connectionStatus variable for independent systems.- Parameters:
messageLookup- the String to pass to BundleUtil.get(), such as "GatewayConnectionManager.TestingWith"gatewayAddr- the Gateway HttpURL used in the connection eventex- exception that has just occurred. Pass in null if there were no exceptions thrown.
-
fireConnectionEvent
-
isLoggedIn
public boolean isLoggedIn() -
getProjectName
Description copied from interface:GatewayConnectionThe name of the project that we are currently logged into, if any.- Specified by:
getProjectNamein interfaceGatewayConnection
-
getUsername
Description copied from interface:GatewayConnectionThe username of the actively logged in user, if any.- Specified by:
getUsernamein interfaceGatewayConnection
-
getAuthChallenge
Description copied from interface:GatewayConnectionThe encrypted auth challenge that was used to log in- Specified by:
getAuthChallengein interfaceGatewayConnection
-
getRoles
Description copied from interface:GatewayConnectionThe set of roles that the actively logged in user has, if any.- Specified by:
getRolesin interfaceGatewayConnection
-
getSecurityZones
Description copied from interface:GatewayConnectionThe set of security zones that the actively logged in user has, if any.- Specified by:
getSecurityZonesin interfaceGatewayConnection
-
getConnectTimeout
public int getConnectTimeout()- Specified by:
getConnectTimeoutin interfaceGatewayConnection
-
setConnectTimeout
public void setConnectTimeout(int connectTimeout) - Specified by:
setConnectTimeoutin interfaceGatewayConnection
-
getSocketTimeout
public int getSocketTimeout()- Specified by:
getSocketTimeoutin interfaceGatewayConnection
-
setSocketTimeout
public void setSocketTimeout(int socketTimeout) - Specified by:
setSocketTimeoutin interfaceGatewayConnection
-
getOpcBrowseTimeout
public int getOpcBrowseTimeout()- Specified by:
getOpcBrowseTimeoutin interfaceGatewayConnection
-
setOpcBrowseTimeout
public void setOpcBrowseTimeout(int opcBrowseTimeout) - Specified by:
setOpcBrowseTimeoutin interfaceGatewayConnection
-
getHttpConcurrency
public int getHttpConcurrency()Description copied from interface:GatewayConnectionThe number of concurrent HTTP connections allowed. 0 or less means unlimited.- Specified by:
getHttpConcurrencyin interfaceGatewayConnection
-
setHttpConcurrency
public void setHttpConcurrency(int concurrency) - Specified by:
setHttpConcurrencyin interfaceGatewayConnection
-
setProjectName
-
addConnectionStatusListener
Description copied from interface:GatewayConnectionDifferent from the ConnectionListener in the sense that this listener is intended for use in redundant setups, where the status of the inactive connection must be updated along with the status of the active connection. The passed ConnectionStatusListener will be continually updated with master/independent and backup connection status every few seconds.- Specified by:
addConnectionStatusListenerin interfaceGatewayConnection
-
removeConnectionStatusListener
- Specified by:
removeConnectionStatusListenerin interfaceGatewayConnection
-
triggerConnectionStatusListeners
public void triggerConnectionStatusListeners()Description copied from interface:GatewayConnectionManually update the status of all connection listeners. Use this in situations where listeners need an immediate update without waiting for the normal thread task to fire (such as when first displaying a status panel).- Specified by:
triggerConnectionStatusListenersin interfaceGatewayConnection
-
getPlatformEdition
Description copied from interface:GatewayConnectionPlatform edition. Standard edition = "", Edge edition = "edge"- Specified by:
getPlatformEditionin interfaceGatewayConnection
-
getEdgeProjectName
- Specified by:
getEdgeProjectNamein interfaceGatewayConnection- Returns:
- the name of the Edge project as defined by the user on the edge gateway settings
- Throws:
GatewayException
-
isPlatformLicensed
public boolean isPlatformLicensed()- Specified by:
isPlatformLicensedin interfaceGatewayConnection
-