-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Describe the bug
Using OpenAPI extension, project fails to build if a resource is defined with an Optional QueryParam. Ex.
@GET @Produces(MediaType.TEXT_PLAIN) public String helloName(@QueryParam("name") Optional<String> name) { return "hello " + name.orElse("Quarkus!"); }
The exception is:
Failed to execute goal io.quarkus:quarkus-maven-plugin:1.0.0.CR1:build (default) on project code-with-quarkus: Failed to build a runnable JAR: Failed to augment application classes: Build failure: Build failed due to errors
[error]: Build step io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor#build threw an exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.lang.String.charAt(String.java:658)
at io.smallrye.openapi.runtime.scanner.dataobject.TypeResolver.updateTypeResolvers(TypeResolver.java:456)
at io.smallrye.openapi.runtime.scanner.dataobject.TypeResolver.scanMethod(TypeResolver.java:426)
at io.smallrye.openapi.runtime.scanner.dataobject.TypeResolver.lambda$getAllFields$4(TypeResolver.java:355)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at io.smallrye.openapi.runtime.scanner.dataobject.TypeResolver.getAllFields(TypeResolver.java:355)
at io.smallrye.openapi.runtime.scanner.OpenApiDataObjectScanner.depthFirstGraphSearch(OpenApiDataObjectScanner.java:247)
at io.smallrye.openapi.runtime.scanner.OpenApiDataObjectScanner.process(OpenApiDataObjectScanner.java:221)
at io.smallrye.openapi.runtime.scanner.OpenApiDataObjectScanner.process(OpenApiDataObjectScanner.java:168)
at io.smallrye.openapi.runtime.util.SchemaFactory.typeToSchema(SchemaFactory.java:240)
at io.smallrye.openapi.runtime.scanner.ParameterProcessor.getParameters(ParameterProcessor.java:522)
at io.smallrye.openapi.runtime.scanner.ParameterProcessor.process(ParameterProcessor.java:382)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.processJaxRsMethod(OpenApiAnnotationScanner.java:584)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.processJaxRsResourceClass(OpenApiAnnotationScanner.java:437)
at io.smallrye.openapi.runtime.scanner.OpenApiAnnotationScanner.scan(OpenApiAnnotationScanner.java:214)
at io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor.generateAnnotationModel(SmallRyeOpenApiProcessor.java:298)
at io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor.build(SmallRyeOpenApiProcessor.java:246)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:941)
at io.quarkus.builder.BuildContext.run(BuildContext.java:415)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1535)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Expected behavior
Should compile (and work) as RestEasy does
Actual behavior
Compile error
To Reproduce
Steps to reproduce the behavior:
- Create a project wirh RestEasy and OpenAPI
- Create an endpoint resource with a @QueryParam Optional (Ex. @QueryParam("name") Optional name)
- Compile the project and see the exception
Configuration
# N/A
Screenshots
N/A
Environment (please complete the following information):
- Output of
uname -a
orver
: Windows 10 PRO - Output of
java -version
: OpenJDK 8 - GraalVM version (if different from Java): N/A
- Quarkus version or git rev: 1.0.0.CR1
Additional context
N/A