{"record":{"id":"54da701ceb4c9707","repo":"flowable/flowable-engine","slug":"expected-eventregistryengine-configuration-to-be-o","errorCode":null,"errorMessage":"Expected eventRegistryEngine configuration to be of type class org.flowable.eventregistry.spring.SpringEventRegistryEngineConfiguration but was ...","messagePattern":"Expected eventRegistryEngine configuration to be of type class org\\.flowable\\.eventregistry\\.spring\\.SpringEventRegistryEngineConfiguration but was \\.\\.\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-event-registry-spring-configurator/src/main/java/org/flowable/eventregistry/spring/configurator/SpringEventRegistryConfigurator.java","lineNumber":32,"sourceCode":"\nimport org.flowable.common.engine.impl.AbstractEngineConfiguration;\nimport org.flowable.common.spring.SpringEngineConfiguration;\nimport org.flowable.eventregistry.impl.configurator.EventRegistryEngineConfigurator;\nimport org.flowable.eventregistry.spring.SpringEventRegistryEngineConfiguration;\n\n/**\n * @author Tijs Rademakers\n * @author Joram Barrez\n */\npublic class SpringEventRegistryConfigurator extends EventRegistryEngineConfigurator {\n\n    @Override\n    public void configure(AbstractEngineConfiguration engineConfiguration) {\n        if (eventEngineConfiguration == null) {\n            eventEngineConfiguration = new SpringEventRegistryEngineConfiguration();\n\n        } else if (!(eventEngineConfiguration instanceof SpringEventRegistryEngineConfiguration)) {\n            throw new IllegalArgumentException(\"Expected eventRegistryEngine configuration to be of type \"\n                + SpringEventRegistryEngineConfiguration.class + \" but was \" + eventEngineConfiguration.getClass());\n\n        }\n\n        initialiseCommonProperties(engineConfiguration, eventEngineConfiguration);\n        SpringEngineConfiguration springEngineConfiguration = (SpringEngineConfiguration) engineConfiguration;\n        ((SpringEventRegistryEngineConfiguration) eventEngineConfiguration).setTransactionManager(springEngineConfiguration.getTransactionManager());\n\n        if (eventEngineConfiguration.getBeans() == null) {\n            eventEngineConfiguration.setBeans(engineConfiguration.getBeans());\n        }\n\n        initEngine();\n        initServiceConfigurations(engineConfiguration, eventEngineConfiguration);\n    }\n\n}\n","sourceCodeStart":14,"sourceCodeEnd":50,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-event-registry-spring-configurator/src/main/java/org/flowable/eventregistry/spring/configurator/SpringEventRegistryConfigurator.java#L14-L50","documentation":"SpringEventRegistryConfigurator.configure requires the injected eventEngineConfiguration to be a SpringEventRegistryEngineConfiguration. If a different EventRegistryEngineConfiguration subclass (or incompatible configuration) was set, it throws IllegalArgumentException showing the expected and actual types.","triggerScenarios":"Programmatically or via Spring XML/properties setting eventRegistryEngineConfiguration to a non-Spring EventRegistryEngineConfiguration before the configurator runs.","commonSituations":"Mixing plain (non-Spring) event registry configuration with the Spring configurator; copy-pasted engine configuration from a non-Spring boot setup; bean of wrong type auto-wired into the configurator.","solutions":["Set the configuration to a SpringEventRegistryEngineConfiguration instance (or leave it null to let the configurator create one).","Remove any conflicting eventRegistryEngineConfiguration bean/property of the wrong type.","Align your engine setup with the Spring configurator's expectations (SpringEngineConfiguration parent).","Check classpath for duplicate flowable-event-registry versions pulling in the wrong configuration class."],"exampleFix":"// before\nconfigurator.setEventEngineConfiguration(new EventRegistryEngineConfiguration());\n// after\nconfigurator.setEventEngineConfiguration(new SpringEventRegistryEngineConfiguration());","handlingStrategy":"validation","validationCode":"if (eventEngineConfiguration != null\n        && !(eventEngineConfiguration instanceof SpringEventRegistryEngineConfiguration)) {\n    throw new IllegalArgumentException(\"Use SpringEventRegistryEngineConfiguration with the Spring configurator\");\n}","typeGuard":"null","tryCatchPattern":"try {\n    configurator.configure(engineConfiguration);\n} catch (IllegalArgumentException e) {\n    logger.error(\"Wrong event registry config type: {}\", e.getMessage());\n}","preventionTips":["Only inject SpringEventRegistryEngineConfiguration into the Spring configurator","Leave the config null to let the configurator create a default","Check for duplicate/conflicting flowable-event-registry versions on the classpath"],"tags":["spring","configuration","type-mismatch"],"backgroundTag":"config-type-mismatch","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}