1.0.4

New modules

  • EntityModule
  • FileManagerModule
  • SpringBatchModule

Across

Across core

  • addition: AcrossModuleSettings abstract base class for settings implementation
    • default values for registered properties are now visible in property sources as the very last fallback
    • settings instance will be created when module bootstraps and is available on AcrossModuleInfo and as bean
    • getter/setter properties on the settings for a module can be used in AcrossCondition annotations: eg AcrossCondition("settings.templatesEnabled")
  • enhancement: standard property sources no longer take precedence on context or module specific property sources
  • enhancement: development mode is now configured on AcrossContext
    • module resource locations can be specified in ${user.home}/dev-configs/across-devel.properties or as individual properties of the form acrossModule.MODULENAME.resources
    • AcrossDevelopmentMode bean can be wired to verify if development mode is active and to access the development mode properties
  • enhancement: bean scanning on refresh has been enhanced
    • use @RefreshableCollection (with parameters) instead of regular @Autowired on collections that should be represented by a RefreshableRegistry
      • annotation parameters can be used to configure the type of registry created
      • wiring will not fail if no beans are found - unlike behavior of default collection autowiring
    • RefreshableRegistry can now also scan for specific generic implementations using a custom ResolvableType
  • addition: AcrossContext now creates a CacheManager that defaults to creating NoOp caches
    • cache infrastructure modules can wire the AcrossCompositeCacheManager and add their CacheManager implementation (eg. EhcacheModule)
    • cache utilizing modules can simply wire a CacheManager and assume it is functional
    • default behaviour can be disabled with the disableNoOpCacheManager property
  • enhancement: improved event handling, see documentation Across core
    • created default @Event annotation to replace @Handler, @Event supports both @EventName annotations and generic events
      • reduces the need for custom filter specification and the visible tie in to MBassador
    • added ParameterizedAcrossEvent allowing events with generic parameters and handler filtering based on the generic parts
  • WARNING upgraded MBassador dependency to 1.2.0 to support meta @Handler annotations
  • BREAKING CHANGE by default an AcrossModule now scans the config subpackage instead of the entire module package
    • focuses on keeping configuration classes centralized per module, @ComponentScan on the configuration classes can be used to broaden the scan sope
    • this should also lead to fewer conflicts in testing scenario's when keeping same package structure
    • older modules without custom ApplicationContextConfigurers must now provide their own ComponentScanConfigurer to keep the previous behavior
  • addition: default MessageSource bean in modules is now supported (see documentation on Across core)
    • all beans named messageSource defined in a module will be added to the context MessageSource in the order of the modules
    • messageSource beans declared outside the AcrossContext are assumed to be application specific
    • example for lookup:
      • first the messageSource from outside context will be queried
      • then the messageSource from the last module will be used for lookup first and will have the messagesource of the previous module as its parent
    • Across will revert to default Spring messageSource behaviour for messageSource beans annotated as @Internal
  • enhancement: Infrastructure and PostProcessor modules now support optional dependencies influencing bootstrap order
    • only optional dependencies of modules with the same role are taken into account
  • enhancement: AcrossRole annotation allows an order to be specified
    • modules with the same role will be sorted according to this order before applying dependencies or registration order

Across test

  • addition: AcrossTestContext and AcrossTestWebContext as alternative to the annotations @AcrossTestConfiguration and @AcrossTestWebConfiguration
    • has exactly the same behavior as using the annotations, context is configured with the determined test datasource
    • allows for quick creation of AcrossContext instances in integration tests, without the need for separate unit test classes
    • implementations provide easy access to bean registry and context info for querying of the context
    • implements Closeable interface for use with try-with-resources

AcrossWebModule

  • addition: an AbstractAcrossServletInitializer class is now provided in AcrossWebModule
    • any ApplicationContext configured this way will allow modules to dynamically extend the ServletContext and register filters and servlets during bootstrap
    • usage: provide a single implementation that specified the Configuration classes for the ApplicationContext
  • BREAKING CHANGE removals
    • setDevelopmentMode() has been moved to AcrossContext
    • addDevelopmentViews() and related methods have been removed entirely
  • enhancement: Template and ClearTemplate annotations are also supported on Controller level
    • default template handling is also ignored for methods or controllers annotated with @ResponseBody or returning HttpEntity/HttpHeaders implementations
  • enhancement: AcrossWebModule now configures Multipart uploads if possible - creating a MultipartResolver bean is no longer necessary
    • if possible, a MultipartFilter will be used instead of the DispatcherServlet converting the requests
    • if Commons FileUpload is on the classpath that implementation will be used
    • without Commons FileUpload in dynamic configuration of Servlet 3.0 the standard Servlet 3.0 multipart handling will be used
    • provide a MultipartConfigElement as property on the AcrossWebModule or as bean in the parent ApplicationContext to configure the upload settings
      • WARNING JBoss 6.1 has a corrupt implementation of MultipartConfigElement, use the custom MultipartConfiguration implementation if you want to create the configuration manually

Issue list

key summary type created updated due assignee reporter priority status resolution
Loading...
Refresh

 

Across standard modules

AcrossHibernateModule

  • bugfix: AcrossSequenceGenerator now uses pooled-lo optimizer (sequence value in db now represents the low end of the pool) and interprets allocation size correctly
  • bugfix: HibernateBitFlag / HibernateIdLookup.readClass now returns the correct class and handles null values better, you might need to refactor getBit() to getId()
  • addition: BasicRepositoryInterceptor allows in-transaction intercepting of create/update/delete methods (hooks into the repository methods)
  • addition: Auditable interface for setting auditing information on an entity (default implementation in SpringSecurityModule)
  • enhancement: AcrossHibernateModule is now an infrastructure module

DebugWebModule

  • RequestLogging has an extra property to "pause" the module when it's loaded. This is useful for production environments where you want to load the module but not "enable" it by default.
  • RequestLogging now also has a "settings" form to change the includePathPatterns, excludePathPatterns at runtime

UserModule

  • bugfix: when using defineRole(), when the Role already exists, the save() will log a warning and not save (and overwrite the permissions)

SpringSecurityModule

  • ehancement: Spring security filter chain is now registered automatically if an AbstractAcrossServletInitializer is used
    • it is no longer necessary to provide an AbstractSecurityWebApplicationInitializer in this case
  • enhancement: bootstrap gives a warning if no MultipartFilter could be detected
  • addition: default AuditableEntityInterceptor that registers the current SecurityPrincipal on Auditable entities when saving or updating

OAuth2Module

Issue list

key summary type created updated due assignee reporter priority status resolution
Loading...
Refresh