{"record":{"id":"8e7bf3dbee36ed2d","repo":"alibaba/spring-ai-alibaba","slug":"invalid-write-mode-dslvalue","errorCode":null,"errorMessage":"Invalid write mode: ${dslValue}","messagePattern":"Invalid write mode: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/builder/generator/model/workflow/nodedata/AssignerNodeData.java","lineNumber":86,"sourceCode":"\t\tINPUT_CONSTANT(type -> switch (type) {\n\t\t\tcase DIFY -> \"set\";\n\t\t\tcase STUDIO -> \"input\";\n\t\t\tdefault -> UNSUPPORTED;\n\t\t});\n\n\t\tprivate final Function<DSLDialectType, String> dslValue;\n\n\t\tWriteMode(Function<DSLDialectType, String> dslValue) {\n\t\t\tthis.dslValue = dslValue;\n\t\t}\n\n\t\tpublic static WriteMode fromDslValue(DSLDialectType dialectType, String dslValue) {\n\t\t\tfor (WriteMode mode : WriteMode.values()) {\n\t\t\t\tif (mode.dslValue.apply(dialectType).equals(dslValue)) {\n\t\t\t\t\treturn mode;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new IllegalArgumentException(\"Invalid write mode: \" + dslValue);\n\t\t}\n\n\t\t@Override\n\t\tpublic String toString() {\n\t\t\treturn \"AssignerNode.WriteMode.\" + this.name();\n\t\t}\n\n\t}\n\n}\n","sourceCodeStart":68,"sourceCodeEnd":97,"githubUrl":"https://github.com/alibaba/spring-ai-alibaba/blob/f82da0b50f35744c13968191be2b1cd2452ef550/spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/builder/generator/model/workflow/nodedata/AssignerNodeData.java#L68-L97","documentation":"Thrown by AssignerNodeData.WriteMode.fromDslValue when the DSL's write-mode string does not match any WriteMode enum value for the given dialect. Indicates an unrecognized assignment mode in an assigner node definition.","triggerScenarios":"Importing a workflow DSL whose assigner node has a write-mode value (per Dify/Studio dialect) that is misspelled, empty, or from a newer schema version not modeled by the enum.","commonSituations":"Hand-edited DSL, DSL from a newer Dify release introducing new write modes, dialect mismatch (passing DIFY where STUDIO values are used).","solutions":["Verify the dslValue matches the canonical value for the given DSLDialectType","Fix typos or casing in the DSL","Re-export the DSL from a compatible version","Extend WriteMode with the new mode if the source platform supports it"],"exampleFix":"// before\nWriteMode.fromDslValue(DSLDialectType.DIFY, \"set-var\");\n// after\nWriteMode.fromDslValue(DSLDialectType.DIFY, \"over-write\");\n","handlingStrategy":"validation","validationCode":"boolean known = Arrays.stream(WriteMode.values()).anyMatch(m -> m.dslValue.apply(dialectType).equals(dslValue));","typeGuard":"WriteMode safeWriteMode(DSLDialectType d, String v) { try { return WriteMode.fromDslValue(d, v); } catch (IllegalArgumentException e) { return null; } }","tryCatchPattern":null,"preventionTips":["Match dslValue to the same dialect you pass in","Use enum-produced values when generating DSL","Re-export rather than hand-editing assigner nodes"],"tags":["invalid-enum-value","dsl","assigner"],"backgroundTag":"invalid-enum-value","analyzedSha":"f82da0b50f35744c13968191be2b1cd2452ef550","analyzedAt":"2026-09-09T15:32:42.421Z","contentChangedAt":"2026-09-09T15:32:42.421Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}