Fork me on GitHub

Release Notes

8.6.0 - Release 2018-06-06

This release fixes some bugs and introduces some new features like JRebirth modules, JRebirth maven plugin, bean generation using annotation and ecore file, basic rest services.

  • Improve ModelConfig enhancement #219
    Add custom object type manage by Model Component

  • Wave are marked handled before all handlers have terminated regression #218
    Fix the way wave handlers works

  • Open MultiCommand API to add hook enhancement #216
    Improve Command API to be able to made fine customizations

  • Add support for headless unit tes enhancement #215
    It’s now possible to launch JRebirth UI test in headless mode

  • processWave can be no more called bug #213
    Fix processWave usage

  • Allow to manage forced WaveType prefix enhancement #212
    Manage DO_ prefix according to JRebirth parameter

  • WaveListeners never notified on cancelled and destroyed bug #207
    Fix WaveListeners calls

  • Website links doesn’t work bug #206
    Fix all website links

  • Calling returnData in the release method might result in a NullPointerException in AbstractComponent enhancement #204
    Fix potential NPE

  • Auto Generate Smart Beans feature #189
    Its now possible to generate JavaFX beans using annotation ot from an ecore file with a maven plugin

  • Manage Stage icons for Application feature #161
    Allow to cutomize stage icons of the application

  • Refactor AbstractJrbRunnable enhancement #120
    Improve code related to Runnable

  • Add jrebirth-maven-plugin feature #31
    Add customMaven plugin used to generate some code

8.5.0 - Release 2016-09-13

This release fixes some bugs and introduces some API changes (method renamed), it was performed on the 8.x branch.

  • ConcurrentModificationException when launching a wave bug #202
    A list was 100% synchronized
  • Add gradle support to ‘processor’ module enhancement #199
    WHen building application using gradle the annoation processor as fully operational
  • Homegenize NullView & NullController usage enhancement #196
    Clean some code to have same pattern for NullView and NullController
  • Merge @LinkComponent & @LinkInnerComponent enhancement #195
    Unify annotation to have a clearer API
  • Simplify API: remove get and set prefix enhancement #194
    Shorten all getters and setters methods to have a fluent like API
  • Manage ShowView and HideView WaveType with annotation enhancement #193
    Purify management if SHowView and HideView wave events to be simple and more efficient
  • Switch to markdown for documentation enhancement #192
    Startong now e can write all website documentation using markdown instead of Xdoc
  • Replace JRAF-INF/module.xml feature #190
    Generate Java code instead of XML file to parse, it’s faster at runtime
  • Allow to retrieve all components implementing same interface feature #188
    Add convenient method to retrieve several components using same alues for their key part
  • Split parameters feature #187
    Allow to categorize each JRebirth parameters, thus they could be grouped into an editable suer interface
  • Improve usability of InnerComponent enhancement #176
    Refactor the InnerComponent API, works for all component and not only Models.
  • Modularize Showcase feature #162
    Create a new Demo application that is loading several JRebirth modules, each one will load a sample showcase

8.0.5 - Release 2016-01-10

This release fixes some bugs, it was performed on the hotfixes branch.

  • Add preStop and postStop methods to perform custom task when exiting app #184
    Extend Application API to better handle application closure.
  • Manage OnAction for MenuItem #183
    Improve management of Annotation Event Handler to support edge cases.

8.0.4 - Release 2015-10-06

This release fixes some bugs, it was performed on the hotfixes branch.

  • WebView can’t be created into JTP #140
    WebView require to be created into JAT, thus a custom fiels has been added for all Model to force them to prepare their view into JAT.
  • Equality between multitonKey and ClassKey (with same classField) bug #165
    Fix polymorphic call, a ClassKey can never be equals to a MultitonKey
  • Improve @OnWave usage #172
    Improve annotation management, now right method is called sooner.
  • Manage .otf font #173
    Vision of the future to also support otf font (currently they don’t work well)
  • Sanitize Model hierarchy (Default, Simple, FXML) #174
    Some differences were existing within all kind of Models, now they have the same lifecycle.
  • Add @AutoRelease annotation #175
    This new annotation allow to disable the auto-releasing of Model when their root node had been removed from its parent.
  • LinkComponent with bad keypart #177
    LinkComponent was adding an empty string key part that should be considered as null.

8.0.3 - Release 2015-08-27

This release fixes some migration bugs and add few new features.

  • Allow to customize FXMLControllerBuilder #164
    A new JRebirth Parameter has been added to allow customization of the FXMLController Factory
  • Displaying multiple FXML models (with same classField) #159
    It’s now possible to load several instances of a FXMLModel by using FXMLParams.
  • The listener attached rootNode parent property is never removed #156
    Fix a memory leak, release listener when rootNode is removed from parent.
  • InitInternalInnerComponents() is called twice for Model #155
    Remove a duplicate call to initInternalInnerComponents method.
  • Key.create() can instantiate a classKey if the first KeyPart is empty #154
    Fix an issue already resolved into 7.x branch and badly merged.

To be able to extend DisplayModelWaveBean. #153
Allow to extend existing command more easily, now a Wave can embed several WaveBeans that can be grabbed by any Command.

8.0.2 - Release 2015-06-23

This release add two minor improvements and fixes sample archetype.

  • Fix archetype generation #152
    Fix version used by sample module, it was using old snapshot version.
  • Active pack200 for showcases #151
    Re-active pack200 for showcases modules, it was broken since Java8 migration.
  • Add lookup method into FXMLComponent #149
    Add convenient methods used to search a given node loaded from a fxml file.

8.0.1 - Release 2015-03-17

This release adds some new features and fixes some small troubles.

  • Add Exception Handler to Wave feature #142
    An exception handler can be attached to WaveType to handle unplanned cases or generic ones.
  • Improve Service Return Wave enhancement #141
    Allow to send an empty wave even when the service task return void.
  • WebView can’t be create into JTP bug #140
    WebView is the only node that require to be created into JAT, add a flag into Models to force view creation into JAT.
  • Modules don’t work with JWS bug #139
    Module.xml files are now correctly loaded when using Java WebStart.
  • SimpleModel should be released too bug #138
    Allow to release SimpleModel when its root node is no more displayed into the current scene (like other Models).
  • Undefined waves are consumed before all handlers (running into JTP and JAT) are processed bug #137
    Add the WaveHandled status to declare that all handlers have been performed, WaveConsumed is set when all handlers have been triggered.
  • Component Interface Management feature #107
    Allow to manage Component declaration using an Interface (use the Module engine and AnnotatedComponentFactory in background).

8.0.0 - “Music Sounds Better With You” Release 2015-01-14

The 8.x series requires Java 8. This version introduces some useful enhancements and new concepts like Behaviors and Modules.

  • Get a new fresh FXML instance per FXMLModel #126
    It’s now possible to get 1000 times the same fxml to 1000 different nodes.
  • Add Multimap #118
    Add a custom MultiMap implementation.
  • Add Reference Command #116
    Allow to manage command with custom beans to chain them in an easy and convenient way (support all thread types).
  • Add Behavior Map into Component #115
    Add Behavior objects to enhance any Component.
  • Replace WaveBuilder by Smart Wave #114
    Improve internal API to be more convenient.
  • Add @RootNodeClass #112
    Allow to use annotation to define CSS class.
  • Fix method reference usage for event handler #111
    This issue will not be fixed because it’s a Java 8 bug, method should be overridden to force the rela object type.
  • EventAdapter with default methods #110
    Use Java 8 default methods to be more convenient.
  • EventTypeEnum should be moved into their own file #109
    Extract all enumeration to facilitate their reusability.
  • OnKey annotation should handle several OnKey.KeyType value #108
    Fix an API issue reltaed to OnKey annotation.
  • Allow Resource declaration into enum #106
    Re-introduce a nice way to declare resources using an Enumeration.
  • Allow repeatable annotations #104
    Allow to repeat several annoation thanks to Java8 feature.
  • Simplify Service Callback WaveType #100
    Service callback method is note more easy to use.
  • Manage WaveData through MultiCommand stack #75
    WaveData are now copied throught the whole MultiCommand stack.
  • Manage Multi Module #34
    Allow to use different jars as module that will define custom components (CSM).
  • Replace InnerModel by InnerComponent #8
    InnerComponent are more generic than InnerModel and their lifecycle have been reveiwed.

7.7.5 - “Dark Horse” Release 2014-10-13

This version is a maintenance release that fixes a regression (not entirely fixed by 7.7.4) that throw an exception when trying to release some memory.

  • ConcurrentModificationException On StackModel #136
    The error was thrown by StackModel component when trying to release some models, it was a fatal bad coding practice…..

7.7.3 - “Radioactive” Release 2014-09-20

This version is a maintenance release that fixes several troubles listed below, obviously all these changes have been ported to 8.x branch.

  • All FXML model shall use naming convention #121
    DefaultFXMLModel now automatically load FXML file that share the same base name.

  • Manage Multiple Image Location #122
    Images, fonts and styles can now be accessed from different default folders.

  • Add Environment Variable Support #123
    Environment variable resolution is now possible for all JRebirth parameters.

  • FXMLModel should be released too #124
    FXMLModel are now also released from memory (like othr Models) when their rootNode it not linked to the current scene.

  • Improve release method #125
    Annotated method with @OnRelease are called when the JRebirth component is released.

  • Add Exception to JRebirth log level #127
    A special log level is now active to throw an exception.

  • Properties files not loaded with Java Webstart #128
    Properties files were not correctly load when launching applications with Java Webstart, JWS classpath is now scanned at boot-up to search and load them.

  • Don’t check the first key part #129
    The first key part was checked and could could lead to misrepresentation of Component Key.

  • Add string values for log message not formatted #130
    When log messages are not resolved, the logged message now include the message key and values (if any).

  • Showcase compilation error #131
    JRebirth compilation with Jdk 7 was using a bootclasspath hack, now it relies on a custom Maven profile.

  • Fix Archetype usage #135
    Fix usage of JRebirth archetype and pdate command line described into the tutorial page.

7.7.2 - “Paradise City” Release 2014-05-31

This version fix a regression introduced with newer resource engine, it was backported from 8.x branch.

  • NPE when using LocalImage without ImageExtension #117
    The newer resource engine has introduced a NPE when LocalImage are used without an ImageExtension defined (it’s retrieved from filename).

  • Fix all Demo application
    Some slides were broken due to negative cycle duration produced by a negative randomized number.
    Fix also all stable version.

7.7.1 - “Palladium” Release 2014-03-31

This version provides some enhancements

  • Manage dynamic resources #48
    Resource Management has been improved by retaining all resources by their toString ResourceParams object.
    Moreover same parameters are now only retained once.
    New Resource Item usage will be available with 8.0.0 version using Java 8 features.

  • Add Annotation for common phase of components #51
    It’s now possible to add method by using one of these annotations: @BefeoreInit, @AfterInit, @OnRelease.
    You can use @MethodPriority to define a custom call order or @SkipAnnotation to avoid usage of them for performance consideration.

  • Component injection #96
    You can use @Component on any Component field to automatically inject another component, this injection is performed during component initialization phase.

  • Simplify FXML usage - #98
    DefaultFXMLModel will now load by default the fxml file that has the same name of the model class name (and at the same location).

  • Improve Simple Model - #103
    Simple now supports auto instantiation of the root node according to generic type used, it also supports @RootNodeId annotation for SimpleModel.

  • @OnXXX are broken into 7.7.0 #99
    A regression had been introduced into 7.7.0 due to package refactoring, Event handler annotations are not operational into 7.7.0 but fixed into 7.7.1

  • Rename execute Command method #105
    This API change is a cosmetic one because “execute” has a sad connotation and is now replaced by “perform”.

API Changes

  • AbstractSimpleModel.prepareNode() => AbstractSimpleModel.initSimpleView()

  • Command.execute(Wave) => Command.perform(Wave)

7.7.0 - “Wanna Rock” Release 2014-02-09

The first version of the 7.x.x branch that only supports Java 7

  • Allow Service to call a command to handle its result - #94
    It’s now possible to define a command that will be called asynchronously when the service task has terminated.
    You can use one of the following method:
    • void registerCallback(final WaveType callType, final WaveType responseType, final Class<? extends Command> returnCommandClass)
    • void registerCallback(final WaveChecker waveChecker, final WaveType callType, final WaveType responseType, final Class<? extends Command> returnCommandClass)
  • Customize Thread used when handling a Wave - #92
    It’s now possible to use @runInto annoation to define the thread to use when handling a wave. ie: @OnWave(“mySuperWave”) @RunInto(RunType.JTP, RunnablePriority.Highest) public void handleIt(Object myFirstParam, Wave wave){
  • Allow the possibility to specify a WaveChecker for the registerCallback method - #91
    Add some method to allow usage of WaveChecker also for registerCallback methods (already done for listen methods)
  • Bad usage of immutable list bug - #90
    Collections.emptyList() was misused into DefaultFXMLModel, thanks to Regis to have found this bug
  • Publish to Maven Central deployment - #89
    JRebirth artifacts is now pushed on Maven Central repository
  • Retrieve model from different KeyParts (but same content) - #88
    Each JRebirth Component can now use object that embed @KeyGenerator annotation to define how unique string key will be generated
  • ServiceTask state set to success even if the task actually fails - #87
    ServiceTask will set the wave status to failed if it fails itself
  • TaskTrackerService is broken - #86
    This is not a bug for Java 7u51
    A custom log was badly formatted, error message is also improved to facilitate trouble diagnosis
  • Check WaveContract when sending a Wave - #84
    When a wave is sent, its wave contract will be checked in developer mode
  • Improve All Object Model - #69
    All object model have been refactored and homogenized
  • Add @OnWave feature - #50
    It’s now possible to define wave handler method by using the @OnWave annotation

0.7.6 - “Testarossa Autodrive” Release - 2013-11-30

This version provides several threading enhancements.

  • Manage Thread Pool Size Parameter #82
    You can now define your ration by setting the threadPoolSizeRatio parameter, the rule is threadPoolSizeRatio x nb of available processor
  • WaveItem is now an abstract class #79
    It forces the addition of brackets to define a nested class, thanks to Christophe from dooApp.
  • Add a second Thread Pool #77
    The second Thread Pool is named HPTP (High Priority Thread Pool). It will run jobs that have an higher priority than those currently running into all JTP slots
  • Manage Runnable Priority #76
    All Command and ServiceTask are now supporting Priority by using @RunInto and @Priority annotations or dedicated constructor.
  • Improve JIT enhancement #45
    JRebirth Internal Thread has been improved to reduced waiting and sleeping time in order to be more reactive and support Task Priority.
  • Add JRebirth Preloader #29
    A module has been added to show a JRebirth preloader splash when launching application with Java WebStart It’s also possible to call the preloader programmatically by calling the preloadAndLaunch method.
  • Provide concise UI view #9
    This issue was fixed in a previous released by adding AbstractSimpleModel class.

0.7.5 - “Aerodynamite” Release - 2013-09-30

This version provides several priceless enhancements, you should consider migration.

  • Force callCommand to use right WaveBean class feature
    Now the callCommand require to use the right WaveBean type according to the command class used
  • Allow to catch orphan waves feature & Improve WaveBean usability duplicate
    Orphan waves will be caught by an handler that could be parameterized, the default one will throw a RuntimeException only if DeveloperMode is activated
  • Manage default services feature
    The service component has now a fully operational service task used to follow progression with binding.
    A bug was also fixed that was leading to a pause into the JIT waiting the result of the service. Now services are fully parallelized (running into JTP) and don’t block the JIT.
    Thanks to Antoine for having disclosed this problem (related to dead code).
  • Add resource parameter support
    All resources can be parameterized into JRebirth properties files.
  • Provide Undo/Redo support
    An Undo/Redo module has been added to demonstrate that Command layer is versatile and can manage complex workflow.
    A Showcase has been also added and deployed on the website: Undo/Redo Showcase.
    Thanks to Bastien for bug fix.
  • Allow Wave filtering according to a filter Data
    When a component listen a generic wave, it will receive all waves even those related to other components.
    Now it’s possible add a filter (defined as a callback) to receive only right waves.
    A sample is available into the StackModel component (of components module).
  • Allow customization of component instantiation
    It’s now possible to define its own factory class in order to build JRebirth top-level components (Command, Service, Model).
    For example you can plug a injector (like Guice) into your factory to build a outstanding pluggable software.
  • Bad Wave Contract Check with several parameters
    When application is start with developerMode parameter to true, all wave handler method are checked at runtime, this feature is now fully operational
  • Boolean Property is not overridable bug fix
    The default value of some parameters couldn’t be updated by properties file, it’s fixed
  • Override programmatically a Parameter
    It’s now possible to override programmatically a parameter by calling the define method, parameters values will be set according to this order : default, properties file, define call.
  • Only service method that return nothing (void) will not send a return wave
    Service method that return null will send a return wave with the null value.
  • Provide i18 Support
    Now it’s possible to manage l10n properties files to translate your application
  • Provide Smart logging capabilities
    Internal log are now localized, and use log markers. Custom hook has been added to support line number for log back
  • Add getFXMLController method
    Add this method into AbstractFXMLModel class to allow getting the FXML controller
  • Introduce JRebirth Runnable Priority
    Priority can be set for Commands and Service Task and any runnable run into JIT and JTP

0.7.4 - Core Release - 2013-07-22

This version must be used instead of 0.7.3 because a lot of API changes and bug fixes is provided.
JRebirth’s Team is growing and we are now proud to have our own Forge plugin to build application faster (Thanks to Raj & Guru)

  • API changes, a lot of method have been rename to have a more concise name
    CustomXXX method have been replaced, and now in example you just need to implement initModel instead of customInitialize method.
  • Manage Image & StyleSheet as Resources feature
    It’s now possible to load these resources with JRebvith resource engine it’s also possible to use them as JRebirth properties.
  • Properties that define default folder for images and style sheets have been added
    By default images and style sheets will be loaded from these folder .
  • Parameterize Default CSS File feature
    Define a default CSS file to load if none have been defined.
  • Parameterize Application Name
    Application name shown into the title bar of the stage can be parameterized as a properties instead of overriding the Application method getApplicationTitle.
  • Provide Event Annotation for view’s root node feature
    We can now attach event handler on the view’s root node by using a View annotation.
  • Define id of the view’s root node with an annotation
    Add @RootNodeId annotation to define id of the view’s root node.
  • Manage default bindable object
    Each Model class manage a default object and provides specific method to bound all properties.
  • Improve internal commands
    Internal command such AttachCommand and DetachCommand have been improved to be more robust.
  • Fix a regression related to fonts preloading
    Font preloading had been broken and so fixed.
  • Fix deadlock generator
    While using runInto method, deadlocks can occured in some specific cases, everything goes right now :)
  • Improve overall concurrency
    Some parts have been refactored to improve race condition with AtomicBoolean.

0.7.3 - ‘Doc&Site’ version - 2013-04-03

  • JRebirth is now available on JCenter repository hosted by bintray.
  • JRebirth has now its own Logo (Special Thanks to XoXi).
  • JRebirth provides a real Zip archive with all important files (also available in tar.gz and tar.bz2)
  • JRebirth Web site is now entirely generated with Maven Doxia engine.
    All documentation is written with Doxia and could be updated on GitHub.
    Every one can send a pull request to add information or to correct mistakes.
    PDF Documentation is delayed or will be manually built.
  • JRebirth Catalog used to declare JRebirth archetype is now available online for each version.
    The latest one is available here : Latest catalog

0.7.2 - Fix version - 2013-02-22

  • JRebirth Maven Repository is up to date Artifactory server was sometimes offline due to a lot of file corruption, Jenkins had broken a lot of build due to severals Java (64bit) VM fatal errors.
  • Update archetype to 0.7.2 version The 0.7.2 archetype has been upgraded to fit with new command and application classes
  • Add OnAction annotation JRebirth provides a new feature that allow handling events with annotation, a sample is available here : Annotation Junit tests.
  • Add Touch and Gesture events All newest touch and gesture event handlers have been added (with annotation and standard way)
  • Manage @RunInto Thread management are now configurable with annotation, you can still use class inheritance
  • Impossible to retrieve a component from ready method Main facades had a bug in their own lifecycle, everything is ok now, (Special Thanks to Heiko who send his remarks on mailing list)
  • Manage Multiple Stage A feature has been added to manage Stage (open, close etc…) with a command and a service
  • Improve Wave Contract WaveType usage has been improved (most convenient ot use)
  • Provide FXMLModel FXML integration has been simplified, you can just use a FXMLModel with a fxml file, check a sample here : FXML Junit test.
  • Merge Event Tracking with new Logging way Internal logger has been discarded, and internal event tracker has been upgraded, it allows JRebirth Analyzer tool to replay all JRebirth events to analyze application behaviour
  • Add JRebirth properties management A new mechanism to load properties has been created, it allows to use custom parameters (JRebirth already use some customizable properties)
  • Refactor Resources Management Usage of resources has been improved (font, colors, parameters), check sample test classes to learn more : JUnit Tests.