Class AbstractCodec

java.lang.Object
com.softwareag.connectivity.ConnectivityPlugin
com.softwareag.connectivity.AbstractCodec
All Implemented Interfaces:
HostSide, TransportSide
Direct Known Subclasses:
AbstractSimpleCodec

public abstract class AbstractCodec extends ConnectivityPlugin implements HostSide, TransportSide
Base class for codec plug-ins.

Implementors may extend this class, providing an implementation of its abstract methods to provide any required transformation of Message objects as they are sent towards the transport or host side. For many codecs inheriting from AbstractSimpleCodec may be more convenient than using this class directly, as it deals with batching of events and ignoring messages with null payloads.

Subclasses should provide a constructor with the same signature as AbstractCodec(org.slf4j.Logger, PluginConstructorParameters.CodecConstructorParameters). Codecs should typically process a batch of Message objects and pass the batch on to the next plug-in in the chain. Unless they are looking for certain control messages, codecs should ignore messages with null payload, passing them on to the next plug-in in the chain untouched.

Logging should be performed using the ConnectivityPlugin.logger field. MapExtractor can be used to extract the content of payload.

See Also:
  • Field Details

  • Constructor Details

    • AbstractCodec

      public AbstractCodec(org.slf4j.Logger logger, PluginConstructorParameters.CodecConstructorParameters params) throws IllegalArgumentException, Exception
      Constructor. A subclass should provide its own constructor with the same signature as this one. This base class makes the parameters passed into its constructor available as member fields or methods for use by the subclass.
      Parameters:
      logger - a slf4j Logger object which can be used to log to the host log file.
      params - an extensible interface providing access to the configuration for this plug-in and other capabilities.
      Throws:
      IllegalArgumentException - should be thrown from a plug-in's constructor if the configuration is invalid.
      Exception - can be thrown to indicate an internal error.
      Since:
      9.12.0.1
  • Method Details

    • setNextTowardsHost

      public final void setNextTowardsHost(HostSide hostSide)
      Remember the host side of this codec. The hostSide argument is stored in the hostSide member of this class for use by subclasses when delivering messages towards the transport.
    • setNextTowardsTransport

      public final void setNextTowardsTransport(TransportSide transportSide)
      Remember the transport side of this codec. The transportSide argument is stored in the transportSide member of this class for use by subclasses when delivering messages towards the host.
    • shutdown

      public void shutdown() throws Exception
      No-op implementation of ConnectivityPlugin.shutdown(). For convenience. If the codec creates any resources that need closing, it must override this method.

      This method may be called while messages are still being delivered towards the host or towards the transport.

      If the plug-in has any messages queued to send towards the host it should flush them before shutting down. This is not true if the host itself is shutting down (rather than just the chain). This can be determined via the PluginHost.isShuttingDown() method.

      Specified by:
      shutdown in class ConnectivityPlugin
      Throws:
      Exception
    • start

      public void start() throws Exception
      No-op implementation of ConnectivityPlugin.start(). For convenience. If the codec creates any resources, it will need to override this method to do so and will typically need to implement shutdown() as well.
      Specified by:
      start in class ConnectivityPlugin
      Throws:
      Exception - only if a fatal error occurred during startup.
    • hostReady

      public void hostReady() throws Exception
      No-op implementation of ConnectivityPlugin.hostReady(). For convenience. Plug-ins are not required to do anything at this point, and most codecs will not need to implement this method.
      Specified by:
      hostReady in class ConnectivityPlugin
      Throws:
      Exception
    • toString

      public String toString()
      Overrides:
      toString in class Object