code: private void traceConfig() {
          writer.println(new StringBuilder(180).append(impl.getClass().getName()).append(' ').append(traceID).append(" = new ").
                          append(impl.getClass().getName()).append("();").toString());
  
          try {
              PropertyDescriptor[] props = Introspector.getBeanInfo(impl.getClass()).getPropertyDescriptors();
              Method readMeth, writeMeth;
  
              for (int i = 0; i < props.length; i++) {
                  if ((readMeth = props[i].getReadMethod()) != null && (writeMeth = props[i].getWriteMethod()) != null) {
                      StringBuilder buffer = new StringBuilder(60);
                      buffer.append(traceID).append('.').append(writeMeth.getName()).append('(');
  
                      if (!"password".equals(props[i].getName())) {
                          try {
                              buffer.append(toString(readMeth.invoke(impl, (Object[]) null))); 
                          } catch (Throwable th) {
                          } // No FFDC code needed. Cannot read property.
                      }
  
                      buffer.append(");");
                      writer.println(new String(buffer));
                  }
              }
          } catch (IntrospectionException introspectX) {
              // No FFDC code needed, just include the error in the trace.
              writer.println("Unable to read the configuration for " + traceID);
              introspectX.printStackTrace(writer);
          }
      }
docs: Trace the configuration (found by introspection) of the underlying object.
  This is useful for newly created data sources.