Connectivity API changes in 9.12.0.1
Version 9.12.0.1 introduces a new signature for the constructor of a C++ or Java connectivity plug-in, which passes in a TransportConstructorParameters or CodecConstructorParameters object instead of a list of individual parameters.
For Java, there is a new logger field that uses the Simple Logging Facade for Java (SLF4J) instead of the Log4J LOGGER available in earlier versions.
For C++, there is a new logger field to match the Java field, but the behavior is identical to LOGGER although we recommend to use the new name where possible for consistency.
In C++ only, there are the following new macros which must be used for classes with the new 9.12.0.1 constructor:
 SAG_DECLARE_CONNECTIVITY_CODEC_CLASS
SAG_DECLARE_CONNECTIVITY_CODEC_CLASS (instead of 
SAG_DECLARE_CONNECTIVITY_CODEC)
 SAG_DECLARE_CONNECTIVITY_TRANSPORT_CLASS
SAG_DECLARE_CONNECTIVITY_TRANSPORT_CLASS (instead of 
SAG_DECLARE_CONNECTIVITY_TRANSPORT)
The previous legacy constructors, macros and logger are still available but will be deprecated in a future release. Therefore, we recommend migrating to the new ones when possible, especially for any newly created plug-ins.
To migrate from the old C++ transport constructor and macro to the new one, change the following:
class MyPlugin: public AbstractSimpleTransport
{
public:
  MyPlugin(const std::string &name, const std::string &chainId, 
   const map_t &config)
    : AbstractSimpleTransport(name, chainId, config)
  {
    // do stuff with config here
    // use "LOGGER" for logging
  }
...
}
SAG_DECLARE_CONNECTIVITY_TRANSPORT(MyPlugin)
to:
class MyPlugin: public AbstractSimpleTransport
{
public:
  MyPlugin(const TransportConstructorParameters ¶ms)
    : AbstractSimpleTransport(params)
  {
    // do stuff with params.getConfig() (or the config class member) here
    // recommended to use "logger" for logging instead of "LOGGER"
  }
...
}
// use new 9.12.0.1 macro for declaring the class
SAG_DECLARE_CONNECTIVITY_TRANSPORT_CLASS(MyPlugin)
The same applies to the C++ codecs, just replace transport with codec.
To migrate from the old Java transport constructor and logger to the new one, change the following:
public MyTransport(Map<String, Object> config, String chainId, 
  org.apache.log4j.Logger log4jLogger) throws Exception {
    super(config, chainId, log4jLogger);
    // do stuff with params.getConfig() (or the config class member) here
    LOGGER.info("Transport was created correctly with config: "+config);
...
to:
public MyTransport(org.slf4j.Logger logger, 
  TransportConstructorParameters params) throws Exception {
    super(logger, params);
    logger.info("Transport was created correctly with config: "
      +params.getConfig());
...
The same applies to the Java codecs, just replace transport with codec.
Be sure to change all uses of the legacy LOGGER to the new logger in your Java plug-ins. Most of the logger methods are identical (except that the new logger does not permit logging an exception without an accompanying string message).
See 
    
Requirements of a plug-in class for more information about plug-in constructors.