{"record":{"id":"a50a0bb2e8ae73cc","repo":"quarkusio/quarkus","slug":"unknown-resource-type-resource-gettype","errorCode":null,"errorMessage":"Unknown resource type ${resource.getType()}","messagePattern":"Unknown resource type (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"independent-projects/arc/tcks/arquillian/src/main/java/io/quarkus/arc/arquillian/Deployer.java","lineNumber":161,"sourceCode":"                                // make the test class a bean\n                                ctx.transform().add(ExtraBean.class).done();\n                            }\n                            if (additionalClasses.contains(ctx.getTarget().asClass().name().toString())) {\n                                // make all the `@Discovery`-registered classes beans\n                                ctx.transform().add(ExtraBean.class).done();\n                            }\n                        }\n                    })\n                    .setOutput(resource -> {\n                        switch (resource.getType()) {\n                            case JAVA_CLASS:\n                                resource.writeTo(deploymentDir.generatedClasses.toFile());\n                                break;\n                            case SERVICE_PROVIDER:\n                                resource.writeTo(deploymentDir.generatedServices.toFile());\n                                break;\n                            default:\n                                throw new IllegalArgumentException(\"Unknown resource type \" + resource.getType());\n                        }\n                    })\n                    .build();\n            beanProcessor.process();\n        }\n    }\n\n    private Index buildApplicationIndex() throws IOException {\n        Indexer indexer = new Indexer();\n        try (Stream<Path> appClasses = Files.walk(deploymentDir.appClasses)) {\n            List<Path> classFiles = appClasses.filter(it -> it.toString().endsWith(\".class\")).collect(Collectors.toList());\n            for (Path classFile : classFiles) {\n                try (InputStream in = Files.newInputStream(classFile)) {\n                    indexer.index(in);\n                }\n            }\n        }\n        try (Stream<Path> appLibraries = Files.walk(deploymentDir.appLibraries)) {","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/arc/tcks/arquillian/src/main/java/io/quarkus/arc/arquillian/Deployer.java#L143-L179","documentation":"During code generation, the Deployer iterates generated resources and writes each based on its ResourceType (class vs service provider). An unknown enum value hits the default branch and throws IllegalArgumentException. This should be impossible with standard enum values and indicates an unexpected/evolved ResourceType.","triggerScenarios":"generate() (invoked from deploy) switches over resource.getType() and encounters a ResourceType value other than CLASS or SERVICE_PROVIDER.","commonSituations":"A newly added enum constant in a newer version of the ArC processor not matched by the TCK deployer's switch, or a custom/foreign resource type injected into the generation pipeline.","solutions":["Use matching versions of the ArC processor and the arquillian TCK support so enum constants line up.","Add a case for the new ResourceType (e.g. generated sources) in Deployer.generate().","Check for a dependency mismatch (older/newer quarkus-arc jar on the classpath)."],"exampleFix":"// before\ncase SERVICE_PROVIDER: resource.writeTo(deploymentDir.generatedServices.toFile()); break;\ndefault: throw new IllegalArgumentException(...);\n// after\ncase SERVICE_PROVIDER: resource.writeTo(deploymentDir.generatedServices.toFile()); break;\ncase SOURCE: resource.writeTo(deploymentDir.generatedSources.toFile()); break; // new type handled\ndefault: throw new IllegalArgumentException(...);","handlingStrategy":"type-guard","validationCode":"ResourceType type = resource.getType();\nif (type != ResourceType.CLASS && type != ResourceType.SERVICE_PROVIDER) {\n    throw new IllegalStateException(\"Unexpected resource type: \" + type);\n}","typeGuard":"static boolean isKnownResourceType(GeneratedResource r) {\n    return r.getType() == ResourceType.CLASS || r.getType() == ResourceType.SERVICE_PROVIDER;\n}","tryCatchPattern":"try {\n    generate();\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().startsWith(\"Unknown resource type\")) {\n        throw new IllegalStateException(\"ArC version mismatch: unknown ResourceType\", e);\n    }\n    throw e;\n}","preventionTips":["Keep quarkus-arc processor and arquillian support versions aligned.","Handle new ResourceType constants when upgrading ArC."],"tags":["cdi-tck","codegen","enum"],"backgroundTag":"unknown-resource-type","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}