Introduce SchemaLayout
, OperationsLayout
and ExecutableSchemaLayout
#5588
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Instead of the all-in-one codegen layout, expose specialized interfaces to different codegen packages.
codegen.[java|kotlin].schema
usesSchemaLayout
codegen.[java|kotlin].executableschema
usesExecutableSchemaLayout
codegen.[java|kotlin].operations
usesOperationsLayout
For convenience,
LayoutImpl
is unchanged and implements all 3 interfaces but it's internal only and doesn't leak in public API.ApolloCompiler.buildFoo()
now have 2 kind of options:IrOptions
,CodegenOptions
, etc...) are scalars that can be serialized in JSON option files.Layout
,OperationOutputGenerator
,ApolloCompilerHooks
, etc...) are code that are serialized as classpaths.Note: this temporarily breaks passing a custom
packageNameGenerator
but turns out we have no test for this. I'll re-introduce that in a follow up PR