docs: @Override
      public void connectionErrorOccurred(ConnectionEvent event) {
  
          int eventID = event.getId();
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              StringBuilder entry = new StringBuilder(event.getClass().getSimpleName()).append('{');
              entry.append("id=").append(event.getId()).append(", ");
              entry.append("source=").append(event.getSource());
              entry.append('}');
  
              if (event.getException() == null)
                  Tr.entry(this, tc, "connectionErrorOccurred", entry.toString());
              else
                  Tr.entry(this, tc, "connectionErrorOccurred", entry.toString(), event.getException());
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              // (ASSERT: event is not null)
              StringBuffer tsb = new StringBuffer();
              Object connHandle = event.getConnectionHandle();
              tsb.append("***Connection Error Request*** Handle Name: " + connHandle);
              if (mcWrapper != null) {
                  Object poolMgr = mcWrapper.getPoolManager();
                  tsb.append(", Connection Pool: " + poolMgr + ", Details: " + mcWrapper);
              } else {
                  tsb.append(", Details: null");
              }
              Tr.debug(this, tc, tsb.toString());
          }
  
          switch (eventID) {
  
              case ConnectionEvent.CONNECTION_ERROR_OCCURRED: {
  
                  Exception tempEx = event.getException();
  
                  // Initialize tempString so the msg makes sense for the case where the event has NO associated Exception
                  String tempString = "";
                  if (tempEx != null) {
  
                      // If there is an associated Exception, generate tempString from that
                      tempString = J2CUtilityClass.generateExceptionString(tempEx);
                      Tr.audit(tc, "RA_CONNECTION_ERROR_J2CA0056", tempString, mcWrapper.gConfigProps.cfName);
  
                  }
  
                  else {
                      Tr.audit(tc, "NO_RA_EXCEPTION_J2CA0216", mcWrapper.gConfigProps.cfName);
                  }
  
                  // NOTE: Moving all functional code for this to the MCWrapper as it is
                  //  closer to all the data/objects needed to perform this cleanup.
                  mcWrapper.connectionErrorOccurred(event);
  
                  break;
              }
  
              case com.ibm.websphere.j2c.ConnectionEvent.SINGLE_CONNECTION_ERROR_OCCURRED: {
  
                  /*
                   * 51 is the id selected for this event.
                   *
                   * If a resource adapter uses this Id, the connection may be
                   * unconditionally cleaned up and destroyed. We are assuming the resource
                   * adapter knows this connection can not be recovered.
                   *
                   * Existing transactions may delay destroying the connection.
                   *
                   * The connectionErrorOccurred method will process this request,
                   *
                   * Only this connection will be destroyed.
                   */
  
                  Exception tempEx = event.getException();
  
                  // Initialize tempString so the msg makes sense for the case where the event has NO associated Exception
                  String tempString = "";
                  if (tempEx != null) {
  
                      // If there is an associated Exception, generate tempString from that
                      tempString = J2CUtilityClass.generateExceptionString(tempEx);
                      Tr.audit(tc, "RA_CONNECTION_ERROR_J2CA0056", tempString, mcWrapper.gConfigProps.cfName);
                  }
  
                  else {
                      Tr.audit(tc, "NO_RA_EXCEPTION_J2CA0216", mcWrapper.gConfigProps.cfName);
                  }
  
                  // NOTE: Moving all functional code for this to the MCWrapper as it is
                  // closer to all the data/objects needed to perform this cleanup.
                  mcWrapper.connectionErrorOccurred(event);
  
                  break;
              }
  
              case com.ibm.websphere.j2c.ConnectionEvent.CONNECTION_ERROR_OCCURRED_NO_EVENT: {
  
                  // NOTE: Moving all functional code for this to the MCWrapper as it is
                  //  closer to all the data/objects needed to perform this cleanup.
                  mcWrapper.connectionErrorOccurred(event);
  
                  break;
              }
  
              default: {
  
                  // Connection Event passed in doesn't match the method called.
                  // This should never happen unless there is an error in the ResourceAdapter.
                  processBadEvent("connectionErrorOccurred", ConnectionEvent.CONNECTION_ERROR_OCCURRED, event);
  
              }
  
          } // end switch
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(this, tc, "connectionErrorOccurred");
          }
  
          return;
  
      }