feat(@QueryProjection): support builder-based Q class generation#1078
feat(@QueryProjection): support builder-based Q class generation#1078velo merged 20 commits intoOpenFeign:masterfrom
Conversation
…lder' into feature/add-Query-Projection-Builder
|
@velo |
Hrmm Codegen classes should be change prone, as they are internal classes used to generate code, no public apis. So I will take care of that. Now, you change the annotation in a way that is backwards compatible. Looks like a big in the plugin |
a22480b to
9d1bea4
Compare
|
@velo |
Signed-off-by: Marvin Froeder <velo.br@gmail.com>
| <parameter> | ||
| <excludes> | ||
| <exclude>com.querydsl.core.annotations.QueryProjection</exclude> | ||
| <exclude>com.querydsl.codegen.utils.AbstractCodeWriter</exclude> |
There was a problem hiding this comment.
I think you can revert most of this now, probably all
There was a problem hiding this comment.
thank you :)
I removed most of them except for @QueryProjection( because it would be exposed at public level interface 😢)
5195c82 to
1438ef6
Compare
* Bump io.projectreactor:reactor-bom from 2024.0.4 to 2024.0.5 Bumps [io.projectreactor:reactor-bom](https://github.com/reactor/reactor) from 2024.0.4 to 2024.0.5. - [Release notes](https://github.com/reactor/reactor/releases) - [Commits](reactor/reactor@2024.0.4...2024.0.5) --- updated-dependencies: - dependency-name: io.projectreactor:reactor-bom dependency-version: 2024.0.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Bump quarkus.version from 3.21.2 to 3.21.3 Bumps `quarkus.version` from 3.21.2 to 3.21.3. Updates `io.quarkus.platform:quarkus-bom` from 3.21.2 to 3.21.3 - [Commits](quarkusio/quarkus-platform@3.21.2...3.21.3) Updates `io.quarkus.platform:quarkus-maven-plugin` from 3.21.2 to 3.21.3 - [Commits](quarkusio/quarkus-platform@3.21.2...3.21.3) --- updated-dependencies: - dependency-name: io.quarkus.platform:quarkus-bom dependency-version: 3.21.3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: io.quarkus.platform:quarkus-maven-plugin dependency-version: 3.21.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Enable easy-jacoco for project (#1091) * Enable easy-jacoco for project Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Upload coverage reports Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Upload codecov on windows * Using newer image with codecov support Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Enable missing db2 testing Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Setup codecov to upload project wide coverage report Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Give db2 more time to start Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Setup codecov to upload project wide coverage report Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Remove codecov orb Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Reports are only generated at verify phase, need change build Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Download latest version of codecov Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Add badges Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Include new package on coverage reports Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Use internal @generated annotations Signed-off-by: Marvin Froeder <velo.br@gmail.com> * Fix kotlin-codegen build Signed-off-by: Marvin Froeder <velo.br@gmail.com> --------- Signed-off-by: Marvin Froeder <velo.br@gmail.com> * feat(@QueryProjection): support builder-based Q class generation (#1078) * feature: add builder properties in QueryProjection annotation * feature: add builder properties in Constructor class * feature: add public static inner class write methods * feature: add QueryProjection Builder feature on annotation processor * feature: add inner builder class and factory method to generated QClass * test: add QueryProjectionBuilderTestEntity for test * feature, test: add QueryProjectionBuilderTestEntity for GenericExporter * question: how can i resolve binary incompatible change without this commit * feature: add duplicate builder name check in TypeElementHandler * docs: update javadoc for QueryProjection * feature: enhance builder name validation in TypeElementHandler * test: add unit tests for QueryProjectionBuilder * Skip API validation on tooling projects Signed-off-by: Marvin Froeder <velo.br@gmail.com> * modify: remove inner class, methods binary compatibility validation bypass option --------- Signed-off-by: Marvin Froeder <velo.br@gmail.com> Co-authored-by: Marvin Froeder <velo.br@gmail.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Marvin Froeder <velo.br@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Marvin <velo@users.noreply.github.com> Co-authored-by: Cole-SJ <91147303+Cole-SJ@users.noreply.github.com> Co-authored-by: Marvin Froeder <velo.br@gmail.com>
Multi-builder Support
@QueryProjection(useBuilder = true, builderName = "...")constructors per DTO.new, IDE friendly}Highlights
Required
builderNamewhenuseBuilder = trueTo support multiple builder configurations,
@QueryProjection(useBuilder = true)now requires a non-emptybuilderName.This helps prevent name collisions when generating builder classes and factory methods.
Example
and generated QClass is below
Question
this commit
I don't want to update pom.xml of root, how can I resolve binary incompatible problem