* IDEMPIERE-4842 Easier model registration
- Change from https://github.com/atteo/classindex to
https://github.com/classgraph/classgraph, remove annotation processor
config.
- Change service.ranking of DefaultModelFactory to -1 and
service.ranking of AnnotationBasedModelFactory to 0. This give
AnnotationBasedModelFactory higher priority over DefaultModelFactory and
allow plugins to have higher priority over AnnotationBasedModelFactory
with server.ranking of 1 (the common practise before the introduction of
AnnotationBasedModelFactory).
- Added resultset constructor to MTree. This is to allow the use of
MTree with model factory.
- Remove classindex annotation from org.adempiere.base.Model and X_*
model classes.
- Added unit test for table to model class mapping
- AnnotationBasedModelFactory: Change from using annotation processor to
runtime annotation scanning using the classgraph library. The default
setting scans all the X_* model class and travels the inheritance
hierarchy to discover the M* model class. Plugin needs to create a
subclass of AnnotationBasedModelFactory and register it as an OSGi
component to scan the plugin's annotated model classes (the plugin's
custom AnnotationBasedModelFactory component should have service.ranking
> 0).
* IDEMPIERE-4842 Easier model registration
minor refinement
* Minor changes
Co-authored-by: hengsin <hengsin@gmail.com>
* Preliminary support for automatic model class registration
Model classes can be tagged with a new @Model annotation that allows for
easy/fast class scanning/registration, based on the ClassIndex library.
The list of annotated model classes is generated at compile time, thus
reducing reflection reliance to a bare minimum.
NOTE: Eclipse uses its own Java compiler which is not strictly standard
compliant and requires extra configuration. In Java Compiler ->
Annotation Processing -> Factory Path you need to add ClassIndex jar
file
* Annotation based model factory
* Improve classloader determination for annotation scanning
ClassIndex default annotation scanning method determines the classloader
to be used by calling Thread.currentThread().getContextClassLoader(),
which should not be used in an OSGi environment.
* Enable ClassIndex's annotation processor under Eclipse
Make sure annotation processing is enabled at Module Properties -> Java
Compiler -> Annotation Processing
* Refactoring annotation-based model class detection
Eliminated the need of annotating M* classes, by using ClassIndex's
@IndexSubclasses annotation.
* Minor change
* Minor changes
* Creation of AbstractModelFactory
* Documentation
* Make AnnotationBasedModelFactory extend AbstractModelFactory
* IDEMPIERE-4842 Easier model registration
- add annotation processor jdt settings
- fix @Component annotation for AnnotationBasedModelFactory
- fix generated x_* class missing "org.atteo.classindex.IndexSubclasses"
import
* Expose ClassIndex lib to other bundles
* Updated model classes
Co-authored-by: hengsin <hengsin@gmail.com>
* IDEMPIERE-4782 Multi-factor authentication (FHCA-2034)
Implement suggestions from Heng Sin
* IDEMPIERE-4782 Multi-factor authentication (FHCA-2034)
Fix security warning advised by github/CodeQL
* IDEMPIERE-4782 Multi-factor authentication (FHCA-2034)
Implement an incremental delay in zk when the validation code is wrong (to avoid brute-force attacks)
As suggested by Ricardo Santana:
* ensures one-time only use of an OTP
* Log failures in AuthFailure.log
* IDEMPIERE-4782 Multi-factor authentication (FHCA-2034)
* Log failures in AuthFailure.log - add case for login with email
* Implement incremental delay also for login panel
* IDEMPIERE-4690 Add column callout factory base class backed by Map and Lambda functional object
Fix column callout factory cache.
Co-authored-by: Carlos Ruiz <carg67@gmail.com>