{"record":{"id":"e2da9c789eeec0b4","repo":"pentaho/pentaho-kettle","slug":"this-connection-file-object-does-not-support-this-operation","errorCode":null,"errorMessage":"This connection file object does not support this operation: '%s'","messagePattern":"This connection file object does not support this operation: '(.+?)'","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"warning","filePath":"core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileObject.java","lineNumber":241,"sourceCode":"  /**\n   * Gets the resolved file object, throwing if it is not available.\n   * <p>\n   * Implementers of this method should throw an exception that makes it clear the reason for a resolved file object\n   * not being available, such as being the PVFS root or an undefined connection.\n   *\n   * @return The resolved file object.\n   */\n  @NonNull\n  protected abstract AbstractFileObject<?> requireResolvedFileObject() throws FileSystemException;\n\n  @Override\n  public String getOriginalURIString() {\n    return this.getName().toString();\n  }\n\n  @Override\n  public String getAELSafeURIString() {\n    throw new UnsupportedOperationException( String.format(\n      \"This connection file object does not support this operation: '%s'\",\n      this.getOriginalURIString() ) );\n  }\n}\n","sourceCodeStart":223,"sourceCodeEnd":246,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/core/src/main/java/org/pentaho/di/connections/vfs/provider/ConnectionFileObject.java#L223-L246","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Use getOriginalURIString() (or getName().toString()) when you need the connection URI as-is.","Guard calls with a check that the FileObject is not a ConnectionFileObject before invoking getAELSafeURIString.","Resolve the underlying non-pvfs file (via the connection provider) and call getAELSafeURIString on that object instead.","Catch UnsupportedOperationException and fall back to the original URI string if AEL-safe conversion is best-effort."],"exampleFix":"// before\nString uri = fileObject.getAELSafeURIString();\n// after\nString uri = ( fileObject instanceof ConnectionFileObject )\n  ? fileObject.getOriginalURIString()\n  : fileObject.getAELSafeURIString();","handlingStrategy":"try-catch","validationCode":"if ( fileObject instanceof ConnectionFileObject ) {\n  uri = fileObject.getOriginalURIString();\n}","typeGuard":"boolean supportsAelSafeUri( FileObject fo ) {\n  return !( fo instanceof ConnectionFileObject );\n}","tryCatchPattern":"String uri;\ntry {\n  uri = fileObject.getAELSafeURIString();\n} catch ( UnsupportedOperationException e ) {\n  uri = fileObject.getName().toString(); // fall back to original URI\n}","preventionTips":["Use instanceof checks before generic getAELSafeURIString calls","Prefer getOriginalURIString for connection (pvfs) files","In AEL pipelines, resolve pvfs files to their backing file system before URI conversion"],"tags":["vfs","unsupported-operation","ael"],"backgroundTag":"unsupported-operation","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}