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

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
  • 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