pentaho/pentaho-kettle · warning · UnsupportedOperationException

This connection file object does not support this operation

Error message

This connection file object does not support this operation: '%s'

What it means

ConnectionFileObject.getAELSafeURIString is expected to return a URI string that is safe for use with the Adaptive Execution Layer (AEL/Spark), where certain URI forms are not supported. Connection file objects do not implement an AEL-safe representation, so the method deliberately throws UnsupportedOperationException embedding the file's original URI. This is an explicit not-supported marker, not a bug.

Solutions

  1. Use getOriginalURIString() (or getName().toString()) when you need the connection URI as-is.
  2. Guard calls with a check that the FileObject is not a ConnectionFileObject before invoking getAELSafeURIString.
  3. Resolve the underlying non-pvfs file (via the connection provider) and call getAELSafeURIString on that object instead.
  4. Catch UnsupportedOperationException and fall back to the original URI string if AEL-safe conversion is best-effort.

Example fix

// before
String uri = fileObject.getAELSafeURIString();
// after
String uri = ( fileObject instanceof ConnectionFileObject )
  ? fileObject.getOriginalURIString()
  : fileObject.getAELSafeURIString();
Defensive patterns

Strategy: try-catch

Validate before calling

if ( fileObject instanceof ConnectionFileObject ) {
  uri = fileObject.getOriginalURIString();
}

Type guard

boolean supportsAelSafeUri( FileObject fo ) {
  return !( fo instanceof ConnectionFileObject );
}

Try / catch

String uri;
try {
  uri = fileObject.getAELSafeURIString();
} catch ( UnsupportedOperationException e ) {
  uri = fileObject.getName().toString(); // fall back to original URI
}

Prevention

When it happens

Trigger: Calling getAELSafeURIString() on any ConnectionFileObject obtained from a PVFS connection file system — typically code paths that generically call getAELSafeURIString on arbitrary FileObject instances during AEL transformation of file references.

Common situations: Running a transformation on the adaptive execution layer where metadata resolves to a connection (pvfs) file; framework code converting all FileObjects to AEL-safe URIs without checking the file system type.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/e2da9c789eeec0b4. Report an issue: GitHub.

Appendix: source

Thrown at core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileObject.java:241

  /**
   * Gets the resolved file object, throwing if it is not available.
   * <p>
   * Implementers of this method should throw an exception that makes it clear the reason for a resolved file object
   * not being available, such as being the PVFS root or an undefined connection.
   *
   * @return The resolved file object.
   */
  @NonNull
  protected abstract AbstractFileObject<?> requireResolvedFileObject() throws FileSystemException;

  @Override
  public String getOriginalURIString() {
    return this.getName().toString();
  }

  @Override
  public String getAELSafeURIString() {
    throw new UnsupportedOperationException( String.format(
      "This connection file object does not support this operation: '%s'",
      this.getOriginalURIString() ) );
  }
}

View on GitHub (pinned to f3058517a1)