1.0.3
The Maven dependencies for Across have changed, group across contains across-core, across-test and across-web. Group across-standard-modules now contains modules across-hibernate, ehcache-module and debug-web.
New library: Across test
/wiki/spaces/AX/pages/12648455 contains some helper classes and configurations to quickly setup an AcrossContext with or without AcrossWebModule. Also has a setup to facilitate multi-database testing, see Integration tests.
New modules
- OAuth2Module providing OAuth2 security services and a domain model for managing clients and permissions (built on top of SpringSecurityModule and UserModule)
- PropertiesModule providing a generic infrastructure to create database backed property maps for business entities
Across core
- enhancement: Controllers are no longer exposed by default - only Service beans and beans with Exposed annotation
- BREAKING CHANGE enhancement: upgraded MBassador to version 1.1.10 (#15)
- classes have been moved from package, MessageHandlerMetadata appears to have been dropped - custom filters might need fixing
- BREAKING CHANGE enhancement: bootstrap hooks have been extended (#19)
- introduced AcrossBootstrapConfig class
- changed method signature: AcrossModule.prepareForBootstrap( ModuleBootstrapConfig currentModule, AcrossBootstrapConfig contextConfig)
- BREAKING CHANGE enhancement: installer configuration on context and modules has been refactored
- added InstallerSettings property on both AcrossContext and AcrossModule (setAllowInstallers() has been replaced by setInstallerAction())
- added InstallerAction enumeration with an option to force run installers even if installed version is equal or higher (#14)
- installers can be defined either as instance or Class
- @AcrossDepends can now be used on installers as well (#13)
- @AcrossDepends no longer supports expression attribute, a new @AcrossCondition annotation has been introduced for this
- enhancement: provided AcrossContextBeanRegistry for retrieving beans from context and modules (#39)
- the registry can be used to fetch both exposed beans and module internal beans
- the bean registry is also available in the parent application context if exposing to parent is enabled
- enhancement: extended availability of AcrossContextInfo and AcrossModuleInfo
- AcrossContextInfo is exposed to parent application context
- Introduced @Module annotation
- wire either AcrossModule or AcrossModuleInfo for a module with the specified name
- wire the current AcrossModule or AcrossModuleInfo using AcrossModule.CURRENT_MODULE
- wire an exposed bean from a specific module
- AcrossModuleInfo exposes the bootstrap index of the module, AcrossContextInfo has helper methods to find the index of a module
- enhancement: scanning for beans in all modules (AcrossContextUtils.getBeansOfType) and the RefreshableRegistry now return instances sorted according to order hierarchy (#20)
- Order annotation and Ordered interface
- bootstrap index of the module
- OrderInModule annotation and OrderedInModule interface
- ehancement: exposing beans now support lazy and scoped beans, and bean management will always and only happen within the module defining the original bean (#28)
- BREAKING CHANGE a parent ApplicationContext should either be an instance of AcrossApplicationContext or AcrossWebApplicationContext to fully support exposed beans
- in a web context this usually means configuring the created contextClass to be AcrossWebApplicationContext instead of AnnotationConfigWebApplicationContext
- in case this isn't so, an additional context will be introduced in the hierarchy, allowing for autowiring of exposed beans but limited integration with third party libraries (especially in web context)
- BREAKING CHANGE exposed beans now use a specific ExposedBeanDefinition and the optional transformer has been modified into ExposedBeanDefinitionTransformer with a different signature
- BREAKING CHANGE a parent ApplicationContext should either be an instance of AcrossApplicationContext or AcrossWebApplicationContext to fully support exposed beans
- enhancement: Across bootstrap now locks on the database if installers need executing (#23)
- this should avoid race conditions when bootstrapping multiple applications simultaneously on the same database, downside is the possible slower startup time in simultaneous deploys
- core also provides a DistributedLockRepository that modules can use to lock entities on a database level and across application instances
- enhancement: new DatabaseInfo class allowing easy detection of the database product type based on a DataSource
- BREAKING CHANGE Foreach commons upgraded to 0.9
- Packages have been restructured, common-concurrent library has been added
AcrossWebModule
- bugfix: Scan inherited @Controller annotations, picks up @RestController instances (#16)
- bugfix: Default message converters are now registered if none specified (#17)
- bugfix: Redirects are now handled correctly if only Thymeleaf support is enabled (#22)
- enhancement: Across web module now configures a WebTemplateRegistry
- default template support can be disabled using property
- option to automatically scan modules for NamedWebTemplateProcessor instances
DebugWebModule
- BREAKING CHANGE enhancement: DebugWebModule and AdminWebModule now use the same templating and handler mapping approach (#3)
- feature: Provided DebugWeb bean (debugWeb) in analogy with AdminWeb for redirects and paths within debug context
- feature: dropped old debug pages and added more detailed Across/Context browsing page - switched to Twitter bootstrap (#18)
SpringSecurityModule
- added SpringSecurityInfrastructureModule providing infrastructure for common SecurityPrincipal implementation
- note that this module is automatically inserted with the SpringSecurityModule, and should rarely be configured manually
- added SpringSecurityAclModule enabling ACL security services
UserModule
- added SecurityPrincipal implementation for User, Group and MachinePrincipal