We now deferr input properties lookup to avoid eager parameter introspection and therefore potentially logging of missing property names even in case these are not required.
Also, introduce isDtoProjection() and isInterfaceProjection() methods to simplify calling code typically introspecting ReturnedType.getReturnType().isInterface().
Closes#3410
Refine KotlinInstantiationDelegate design, improve encapsulation to avoid handing in and out values from lookups.
Replace stream usage with loops, remove unused code, avoid duplicate parameter lookups.
See #3389
Original pull request: #3390
Attempt two-pass constructor detection in KotlinInstantiationDelegate to detect private constructors that are not synthetic ones.
See #3389
Original pull request: #3390
Add two test cases to demonstrate a bug in Kotlin constructor resolution when dealing with private constructors.
Closes#3389
Original pull request: #3390
Signed-off-by: Edward Poot <edwardmp@gmail.com>
The getNullable() method had a subtle race condition where the value field
could be read as null after being assigned but before the resolved flag was
set to true. This could occur if another thread read the value between lines
136 and 137.
This change maintains the existing behavior documented in the class Javadoc
that the supplier may be called multiple times under concurrent access, while
fixing the potential for incorrect null returns.
Signed-off-by: jbj338033 <jbj338033@gmail.com>
Closes#3368
Customizing EntityInformation has only a single use-case within JPA. All other modules should use customization using the mentioned mechanisms as the underlying MappingContext handles typically IsNew detection but customizing the MappingContext (PersistentEntity) is a deeply involved task.
Closes#3364
We now create a decoupled instance of ClassTypeInformation to avoid initialization visibility cycle issues when TypeInformation.OBJECT (and other fields) are initialized with null because ClassTypeInformation.OBJECT hasn't been initialized yet.
Closes#3340