Skip to content
This repository was archived by the owner on Mar 16, 2025. It is now read-only.

allOf does not work correctly #43

Closed
schlagi123 opened this issue Nov 26, 2020 · 3 comments · Fixed by #47
Closed

allOf does not work correctly #43

schlagi123 opened this issue Nov 26, 2020 · 3 comments · Fixed by #47
Labels
bug Something isn't working enhancement New feature or request
Milestone

Comments

@schlagi123
Copy link

Hi,

here my minimal schema:

# openapi yaml
openapi: 3.0.2
info:
  title: simple query parameters
  version: 1.0.0

paths:
  /query:
    get:
      tags:
        - endpoint
      responses:
        '200':
          description: plain text response
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    properties:
                      prop1:
                        type: string
                  - type: object
                    properties:
                      prop2:
                        type: string

If I run the processor I get the following error message:

processing failed!
com.google.googlejavaformat.java.FormatterException: 13:19: error: '{' expected
	at com.google.googlejavaformat.java.FormatterException.fromJavacDiagnostics(FormatterException.java:50)
	at com.google.googlejavaformat.java.Formatter.format(Formatter.java:152)
	at com.google.googlejavaformat.java.Formatter.getFormatReplacements(Formatter.java:291)
	at com.google.googlejavaformat.java.Formatter.formatSource(Formatter.java:267)
	at com.google.googlejavaformat.java.Formatter.formatSource(Formatter.java:233)
	at io.openapiprocessor.core.writer.java.ApiWriter.format(ApiWriter.kt:116)
	at io.openapiprocessor.core.writer.java.ApiWriter.writeDataType(ApiWriter.kt:102)
	at io.openapiprocessor.core.writer.java.ApiWriter.access$writeDataType(ApiWriter.kt:41)
	at io.openapiprocessor.core.writer.java.ApiWriter$writeObjectDataTypes$1.accept(ApiWriter.kt:79)
	at io.openapiprocessor.core.writer.java.ApiWriter$writeObjectDataTypes$1.accept(ApiWriter.kt:41)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
	at io.openapiprocessor.core.model.Api.forEachObjectDataType(Api.kt:60)
	at io.openapiprocessor.core.writer.java.ApiWriter.writeObjectDataTypes(ApiWriter.kt:76)
	at io.openapiprocessor.core.writer.java.ApiWriter.write(ApiWriter.kt:62)
	at io.openapiprocessor.spring.processor.SpringProcessor.run(SpringProcessor.kt:95)
	at io.openapiprocessor.api.OpenApiProcessor$run$0.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
	at com.github.hauner.openapi.gradle.OpenApiProcessorWorker.run(OpenApiProcessorWorker.groovy:44)
	at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:57)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
	at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:49)
	at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:43)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
	at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:43)
	at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:49)
	at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:30)
	at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.lambda$execute$0(IsolatedClassloaderWorkerFactory.java:58)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:50)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:200)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.base/java.lang.Thread.run(Thread.java:834)
@schlagi123 schlagi123 changed the title allOf not work corretly allOf not work correctly Nov 26, 2020
@hauner
Copy link
Member

hauner commented Nov 26, 2020

The processor does not yet handle allOf.

In this case it is generating the following strangely named class:

public class QueryResponse200-of-0 {

    @JsonProperty("prop1")
    private String prop1;

    public String getProp1() {
        return prop1;
    }

    public void setProp1(String prop1) {
        this.prop1 = prop1;
    }

}

The invalid class name is what the code formatter is complaining about.

@hauner
Copy link
Member

hauner commented Nov 26, 2020

Looks like there should be no big issue handling this case.

Converting to the internal data structures looks already good. The -of-0-name is the name of the first allOf item and the second one is called -of-1. It is all there.

It is just the DataTypeWriter that is confused by the composed schema.

@hauner hauner transferred this issue from openapi-processor/openapi-processor-spring Nov 29, 2020
@hauner hauner added this to the 2020.4 milestone Nov 29, 2020
@hauner hauner changed the title allOf not work correctly allOf does not work correctly Dec 1, 2020
@hauner hauner added bug Something isn't working enhancement New feature or request labels Dec 1, 2020
hauner added a commit that referenced this issue Dec 3, 2020
Conflicts:
	src/main/kotlin/io/openapiprocessor/core/writer/java/DataTypeWriter.kt
	src/testInt/groovy/com/github/hauner/openapi/processor/core/ProcessorPendingTest.groovy
hauner added a commit that referenced this issue Dec 3, 2020
@hauner hauner linked a pull request Dec 3, 2020 that will close this issue
Merged
@hauner
Copy link
Member

hauner commented Dec 4, 2020

closed by #47

@hauner hauner closed this as completed Dec 4, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants