{"record":{"id":"ce44f683f804f892","repo":"flowable/flowable-engine","slug":"error-while-generating-case-image","errorCode":null,"errorMessage":"Error while generating case image","messagePattern":"Error while generating case image","errorType":"exception","errorClass":"FlowableImageException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cmmn-image-generator/src/main/java/org/flowable/cmmn/image/impl/DefaultCaseDiagramCanvas.java","lineNumber":229,"sourceCode":"            LOGGER.warn(\"Could not load image for case diagram creation: {}\", e.getMessage());\n        }\n    }\n\n    /**\n     * Generates an image of what currently is drawn on the canvas.\n     *\n     * Throws an {@link FlowableImageException} when {@link #close()} is already called.\n     */\n    public InputStream generateImage(String imageType) {\n        if (closed) {\n            throw new FlowableImageException(\"CaseDiagramGenerator already closed\");\n        }\n\n        try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {\n            ImageIO.write(caseDiagram, imageType, out);\n            return new ByteArrayInputStream(out.toByteArray());\n        } catch (IOException e) {\n            throw new FlowableImageException(\"Error while generating case image\", e);\n        }\n    }\n\n    /**\n     * Generates an image of what currently is drawn on the canvas.\n     *\n     * Throws an {@link FlowableImageException} when {@link #close()} is already called.\n     */\n    public BufferedImage generateBufferedImage(String imageType) {\n        if (closed) {\n            throw new FlowableImageException(\"CaseDiagramGenerator already closed\");\n        }\n\n        // Try to remove white space\n        minX = (minX <= 5) ? 5 : minX;\n        minY = (minY <= 5) ? 5 : minY;\n        BufferedImage imageToSerialize = caseDiagram;\n        imageToSerialize = caseDiagram.getSubimage(minX - 5, minY - 5, canvasWidth - minX + 5, canvasHeight - minY + 5);","sourceCodeStart":211,"sourceCodeEnd":247,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-image-generator/src/main/java/org/flowable/cmmn/image/impl/DefaultCaseDiagramCanvas.java#L211-L247","documentation":"Thrown by DefaultCaseDiagramCanvas.generateImage when writing the rendered case diagram to the requested image type via ImageIO fails (unsupported/unknown imageType or an encoding error), and re-raised as a FlowableImageException with this wrapper message.","triggerScenarios":"generateImage called with an imageType ImageIO has no writer for (e.g. unsupported/misspelled format string), or an underlying I/O failure while writing the BufferedImage to the ByteArrayOutputStream.","commonSituations":"Passing 'jpg' vs 'jpeg' mismatches or an entirely unknown type from configuration; headless environments missing image codecs; propagating a low-level IOException.","solutions":["Log/check the wrapped cause (e.getCause()) to see the real IOException","Use a standard supported imageType such as \"png\"","Ensure the JVM runs headless-safe (java.awt.headless=true) with an JDK that includes the needed ImageIO writers","Validate any user/config-supplied image type before calling generateImage"],"exampleFix":"// before\ncanvas.generateImage(imageTypeFromConfig);\n// after\nif (!imageTypeFromConfig.matches(\"(png|jpeg|jpg|gif)\")) imageTypeFromConfig = \"png\";\ncanvas.generateImage(imageTypeFromConfig);","handlingStrategy":"try-catch","validationCode":"Set<String> supported = Set.of(\"png\",\"jpeg\",\"jpg\",\"gif\");\nif (!supported.contains(imageType)) throw new IllegalArgumentException(\"unsupported imageType: \" + imageType);","typeGuard":null,"tryCatchPattern":"try {\n    return canvas.generateImage(\"png\");\n} catch (FlowableImageException e) {\n    throw new RuntimeException(\"Diagram rendering failed: \" + e.getCause(), e);\n}","preventionTips":["Always pass a well-known image type like \"png\"","Inspect getCause() when this error appears","Run with an ImageIO setup (JDK image writers) available in your container"],"tags":["cmmn","diagram","imageio","io"],"backgroundTag":"file-write-failed","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}