This changes the way Quarkus ClassLoading works,
to allow for isolated class loaders.
It also unifies how Quarkus is launched, so every
different mode we support uses the same mechanism
for both curation and launch.
Tests are now run in an isolated ClassLoader, which
means that a proxy is created that runs the tests
from within the isolated ClassLoader. This currently
has a quirk where @BeforeAll methods are run twice,
which will be fixed in the next JUnit release. This
can be worked around by using @QuarkusBeforeAll.
For Panache entity enhancement we add @XmlTransient to the original fields
to force Jackson to use the generated accessor methods. However, this can
cause conflicts if the field was originally annotated with JAX-B annotations
that are mutually exclusive with @XmlTransient.
Signed-off-by: Andrew Guibert <andy.guibert@gmail.com>
Jackson did use the isPersistent() method to generate a 'persistent'
attribute in the JSON-body. This attribute has no meaning for clients
consuming this JSON-object.
With the annotation @JsonIgnore the attribute is not generated anymore.
* Panache: do not create findById bridge for abstract entity repositories
If the entity type is not fixed in the hierarchy yet, don't generate the bridge
Fix#5274
* Test for #5274: duplicate findById for abstract repositories
* Fix#5274 for Mongo too
* Test for #5274 for Mongo
correctly retrieve entity type even if a custom PanacheRepository does not directly implement
PanacheRepository/PanacheRepositoryBase interfaces
Fixes#3644
for isTransient():
- hibernate does not care, since it the class is not annotated
- jaxb ignores it since it has no setter
- for jsonb added @JsonbTransient and optional dep to jsonb
for mapped public fields:
- for jaxb: add the @XmlTransient annotation to the field to make it use the accessors
- for jsonb: nothing needed since it will ignore it and use the accessors