{"record":{"id":"79f7c1205043d446","repo":"pentaho/pentaho-kettle","slug":"mappingdialog-exception-novalidmappingdetailsfound","errorCode":"MappingDialog.Exception.NoValidMappingDetailsFound","errorMessage":"MappingDialog.Exception.NoValidMappingDetailsFound","messagePattern":"MappingDialog\\.Exception\\.NoValidMappingDetailsFound","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"ui/src/main/java/org/pentaho/di/ui/trans/steps/mapping/MappingDialog.java","lineNumber":447,"sourceCode":"      case REPOSITORY_BY_NAME:\n        if ( Utils.isEmpty( filename ) ) {\n          return;\n        }\n        if ( filename.endsWith( \".ktr\" ) ) {\n          filename = filename.replace( \".ktr\", \"\" );\n          wPath.setText( filename );\n        }\n        String transPath = transMeta.environmentSubstitute( filename );\n        String realTransname = transPath;\n        String realDirectory = \"\";\n        int index = transPath.lastIndexOf( \"/\" );\n        if ( index != -1 ) {\n          realTransname = transPath.substring( index + 1 );\n          realDirectory = transPath.substring( 0, index );\n        }\n\n        if ( Utils.isEmpty( realDirectory ) || Utils.isEmpty( realTransname ) ) {\n          throw new KettleException(\n            BaseMessages.getString( PKG, \"MappingDialog.Exception.NoValidMappingDetailsFound\" ) );\n        }\n        RepositoryDirectoryInterface repdir = repository.findDirectory( realDirectory );\n        if ( repdir == null ) {\n          throw new KettleException( BaseMessages.getString(\n            PKG, \"MappingDialog.Exception.UnableToFindRepositoryDirectory\" ) );\n        }\n        loadRepositoryTrans( realTransname, repdir );\n        break;\n      default:\n        break;\n    }\n  }\n\n  private void getByReferenceData( ObjectId transObjectId ) {\n    try {\n      if ( repository == null ) {\n        throw new KettleException( BaseMessages.getString(","sourceCodeStart":429,"sourceCodeEnd":465,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/ui/src/main/java/org/pentaho/di/ui/trans/steps/mapping/MappingDialog.java#L429-L465","documentation":"Thrown by MappingDialog.loadTransformation when the configured repository transformation path cannot be parsed into both a non-empty directory and a non-empty transformation name. Like the JobExecutor equivalent, it guards the path-splitting logic before any repository lookup.","triggerScenarios":"The mapping (sub-transformation) path string has no '/' separator, or splitting yields an empty directory (leading '/') or empty name (trailing '/'), triggered from getData or ok.","commonSituations":"User typed only the transformation name without its repository folder, pasted a path with trailing slash, or an inherited/migrated mapping specification stored an incomplete path.","solutions":["Specify the full repository path of the mapping, e.g. /public/common/ChildTransform","Re-select the mapping through the repository browser in the Mapping dialog","Check the Mapping step meta for a partially filled directory/transformation name pair","If specifying by filename/objectId instead, ensure the specification type matches the intended source"],"exampleFix":"// before\nmapping.setTransName(\"ChildTransform\");\n// after\nmapping.setDirectoryPath(\"/public/common\");\nmapping.setTransName(\"ChildTransform\");","handlingStrategy":"validation","validationCode":"if (transPath == null || !transPath.contains(\"/\")) throw new IllegalArgumentException(\"Mapping path must be '<dir>/<transname>': \" + transPath);\nint idx = transPath.lastIndexOf('/');\nif (idx == 0 || idx == transPath.length() - 1) throw new IllegalArgumentException(\"Empty directory or name: \" + transPath);","typeGuard":"boolean isValidTransPath(String p) { return p != null && p.lastIndexOf('/') > 0 && p.lastIndexOf('/') < p.length() - 1; }","tryCatchPattern":"try { dialog.loadTransformation(); } catch (KettleException e) { showError(e.getMessage()); }","preventionTips":["Store full directory+name mapping specifications","Browse to select the sub-transformation instead of typing","Audit mapping metas after migrations"],"tags":["pentaho-kettle","swt-dialog","mapping","repository-path"],"backgroundTag":"empty-required-field","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"}