{"record":{"id":"708ec643c0c724f9","repo":"alibaba/spring-ai-alibaba","slug":"not-support-dslvalue-dslvalue-for-type-v","errorCode":null,"errorMessage":"Not support dslValue: [${dslValue}] for type: [${variableType.value()}]","messagePattern":"Not support dslValue: \\[(.+?)\\] for type: \\[(.+?)\\]","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/ComparisonOperatorType.java","lineNumber":204,"sourceCode":"\tprivate final BiFunction<String, String, String> toJavaExpression;\n\n\tComparisonOperatorType(String value, Function<DSLDialectType, String> dslValueFunc,\n\t\t\tList<VariableType> supportedTypes, BiFunction<String, String, String> toJavaExpression) {\n\t\tthis.value = value;\n\t\tthis.dslValueFunc = dslValueFunc;\n\t\tthis.supportedTypes = supportedTypes;\n\t\tthis.toJavaExpression = toJavaExpression;\n\t}\n\n\tpublic static ComparisonOperatorType fromDslValue(DSLDialectType dialectType, String dslValue,\n\t\t\tVariableType variableType) {\n\t\tfor (ComparisonOperatorType comparisonOperatorType : ComparisonOperatorType.values()) {\n\t\t\tif (comparisonOperatorType.dslValueFunc.apply(dialectType).equals(dslValue)\n\t\t\t\t\t&& comparisonOperatorType.supportedTypes.contains(variableType)) {\n\t\t\t\treturn comparisonOperatorType;\n\t\t\t}\n\t\t}\n\t\tthrow new IllegalArgumentException(\n\t\t\t\t\"Not support dslValue: [\" + dslValue + \"] for type: [\" + variableType.value() + \"]\");\n\t}\n\n\tpublic String convert(String objName, String constValue) {\n\t\treturn this.toJavaExpression.apply(objName, constValue);\n\t}\n\n\tpublic String getValue() {\n\t\treturn value;\n\t}\n\n\tpublic String getDslValue(DSLDialectType dialectType) {\n\t\treturn dslValueFunc.apply(dialectType);\n\t}\n\n}\n","sourceCodeStart":186,"sourceCodeEnd":221,"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/ComparisonOperatorType.java#L186-L221","documentation":"Thrown by ComparisonOperatorType.fromDslValue when no comparison operator matches both the given DSL string value (per dialect) and the variable type. It is a lookup failure against the enum's supported operator table.","triggerScenarios":"Parsing an imported workflow DSL (Dify or Studio dialect) whose comparison operator string is misspelled, from an unsupported dialect variant, or whose operator is not valid for the declared variable type (e.g. '>' on a string-typed variable).","commonSituations":"Hand-edited DSL files, DSLs exported from a newer/older Dify version with new operator names, operator/type mismatch in if-else node conditions.","solutions":["Check the dslValue string against the DSLDialectType's canonical operator spelling","Confirm the variableType is one supported by that operator (supportedTypes contains it)","Re-export the DSL from a compatible source version","Add or map the missing operator in ComparisonOperatorType if it is a legitimately new operator"],"exampleFix":"// before\nComparisonOperatorType.fromDslValue(dialect, \"contains_any\", VariableType.STRING);\n// after — use an operator valid for the type\nComparisonOperatorType.fromDslValue(dialect, \"contains\", VariableType.STRING);\n","handlingStrategy":"validation","validationCode":"boolean valid = Arrays.stream(ComparisonOperatorType.values()).anyMatch(op -> op.supportedTypes.contains(variableType)); // plus dialect-specific value check","typeGuard":"ComparisonOperatorType safeFromDslValue(DSLDialectType d, String v, VariableType t) { try { return ComparisonOperatorType.fromDslValue(d, v, t); } catch (IllegalArgumentException e) { return null; } }","tryCatchPattern":null,"preventionTips":["Use enum constants instead of raw strings when composing DSL","Validate DSL against the schema of the dialect version you target","Never hand-edit operator strings; re-export from the source platform"],"tags":["invalid-enum-value","dsl","operators"],"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"}