Springfuse change log

3.0.30 (2010-09-03)

We are happy to release this new version which remotely uses the latest version of Celerio. The remote generation process has been greatly simplified:

  • You no longer have to subscribe online
  • You no longer have to upload manually the metadata file: Our Springfuse maven plugin does it for you transparently.

And of course this new version comes with new major features:

  • You can now configure the generation process: JPA inheritance, types, names, etc...
  • The front-end is now based on Spring @MVC 3 and JQuery. As a result the Java code is drastically simplified.
  • Upgrade to Spring 3.0.3.RELEASE
  • Upgrade to Spring Security 3.0.3.RELEASE
  • Upgrade to Hibernate 3.5.0-Final
  • Upgrade to Hibernate Validator 4.1.0-Final

Attention: the Spring Web Flow front-end is no longer generated. It is only provided with Celerio (part of JSF + WebFlow pack)

We would like to thank all the developers that have been using Celerio over the last months. Some of their precious feedbacks have helped us to improve the free edition of SpringFuse. A special thank to Bernard Pons (Architect at Banque de France) for his numerous and constructive feedbacks on all the parts of the generated application. Another special thanks to Hervé Le Morvan for sharing his experience on legacy, but pretty impressive, ORM technologies and generators. Finally, thanks to the developers using Celerio who took the time to report issues and ways to improve both the generated code and the product: Hervé, Tony B., Sébastien P., Lottfi B., Pierre T, Gary ?, Vincent L.

2.8.22 (2010-01-04)

  • Spring Web Flow: fix url when using non-root contexts. Thanks to Pierre Boned.

2.8.21 (2009-11-25)

  • Spring Web Flow: Use the create subflow, in addition to the select subflow, to wire a many to one relation
  • Spring Web Flow: display many-to-many relation in the review state
  • no longer generate targetEntity attribute in ManyToMany association since we use generics
  • fix XxxFormServiceImpl..java when a many to one points to itself.

2.8.19 (2009-11-11)

  • Support case where @OneToMany's mappedBy attribute refers to an @EmbeddedId (occurs when the id is a composite primary key). Thanks to Olivier Huber from Zenika for reporting it.
  • Fix a regression bug showing up in composite primary key class when one of the property is a Date. Thanks to Ahmad Sousak from Steria for reporting it.
  • Remove(Roll back) the default-lazy-init="true" that was recently added in applicationContext-scheduling.xml as it prevents the jobs from starting!. Thanks to Gildas Cuisinier for taking the time to analyze it and report it.

2.8.18 (2009-09-24)

  • New feature: generate flow menu. Please read our blog entry to know more.
  • Support for hibernate filters in flows thanks to a special flow execution listener
  • Refactor: 'boolean hasXxx()' on domain's model changed to '@Transient boolean isXxxSet()' for better clarity and compatibility with EL (expression language) in JSP/Flows etc.
  • Refactor equals and hashCode

2.8.17 (2009-09-21)

  • Upgrade from Spring 2.5.6 to Spring 2.5.6.SEC01 and no longer use spring.jar. We use instead spring-orm.jar etc... as for Spring 3.0 which is coming soon :-)
  • Upgrade from SpringSecurity 2.0.4 to 2.0.5.RELEASE
  • Upgrade from Hibernate 3.2.6.ga to hibernate-core 3.3.2.GA / EntityManager 3.4.0.GA
  • Upgrade Hibernate Validator from 3.0.0.ga to 3.1.0.GA
  • Upgrade from SpringWebFlow 2.0.7 to 2.0.8.RELEASE
  • JPA annotations are now set on getters instead of fields.

2.8.16 (2009-08-22)

  • New feature: Generate annotation for validation (use Hibernate Validators 3.0.0.ga)
  • New feature: Handle composite foreign keys
  • JPA mapping fixes:
    • Check that the column type is compatible with @Version
    • Fix mapping bug when when both side of a many-to-many are the same model
  • Fix Cobertura errors by ignoring beans without interface
  • Fix naming clash in managerXxxImpl when unique column name and table name are the same
  • Change: Make all associations unidirectional by default. Celerio users can enable bidirectionality thanks to the configuration file.
  • Change: Enable Spring lazy loading by default to speed up startup time of very large schemas
  • Upgrade log4j dependency to 1.2.15 (from 1.2.11)
  • Upgrade Cobertura maven plugin from 2.2 to 2.3
  • Upgrade quartz-all from 1.6.0 to 1.6.3 (quartz pom.xml is now alsmost ok)
  • Use servlet 2.5, jstl 1.2, jsp 2.1
  • Eclipse integration:
    • No longer generate the Eclipses files. Please import the project as a Maven project in Eclipse, it works fine.
    • Set the source/target to 1.5 / 1.5 explicitly with the compiler plugin to keep Eclipse happy

2.8.15 (2009-07-05)

  • Fix a compilation error (regression) in generated unit test when one of the composite primary fields maps to a Java Long (thanks to Stéphane Deraco for reporting it)
  • Fix a compilation error occurring when one of the composite primary key fields maps to a date.
  • Fix an incorrect redirection url after an update of a model having a composite pk (thanks to David Martin).

2.8.14 (2009-06-25)

  • No longer set attribute that match the default value in @Column annotation:
    • length = 255 is useless
    • name = colname is useless when colname is same as property
  • Set @OneToMany to Cascade.ALL in the case of a 'pseudo' one to one mapping
  • Search by example now takes into account pk fields which fix the current navigation consistency (ie search for linked accountRole link on account display page)
  • Search by pattern: also include string pk (several people were surprised this was not the case)
  • Apply javascript numeric validation for composite pk field when appropriate
  • Use Restrictions.disjunction instead of Restrictions.or in HibernateUtil. This lead to better and more readable query in the console
  • Preserve ref integrity when deleting a model having a bidirectional relation even in case where the other side is a 'pseudo' one to one
  • Instrument only bean model that really require lazy loading (@Lob byte[])
  • Remove javascript redundancy for ajax navigation (in table sort column) using dojo selectors
  • Fix a runtime exception when no account table is found (no longer set the hibernate filter on mock!)
  • Fix a compilation error when no account table is found (due to a wrong import)
  • Fix unit test error when no account table is found (Thanks to David Martin)

2.8.9 (2009-06-18)

The major feature of this release is the JPA support. It was a long awaited feature demand from our users. Other important changes are listed below.

  • Bidirectional association generation (one to one / one to many) is now optional. This feature is not yet available for the online version. (Thanks to Pierre Gaudin)
  • Use generics for DAO and managers when appropriate (Thanks to Bernard Pons)
  • SpringSecurity related:
    • Refactor SpringSecurityContext: no longer create a User if it is anonymous (Thanks to Marcel Heemskerk)
    • Refactor AccountContextSupport: remove the "ROLE_USER" dependency
    • Refactor AccountContext: do not use the account.getRoleNames as fallback
  • Ease of use related:
    • Some move and renaming to keep things more clear when there are a lot of tables (thanks to Ahmad Sousak)
    • move domain related generated properties to localization/domain-generated
    • move /WEB-INF/domain/* to /WEB-INF/domain-generated/*
  • Refactor XxxFormService: no more interface
  • Refactor XxxForm: no more dependency on XxxManager or XxxWebSupport.
  • Refactor the main pom : filter only .properties (we used to filter also the .xml files)

2.7.4 (2009-05-10)

  • New! Spring Web Flow support:
    • For each entity, a create flow and a select flow are now generated. The select flow is used as a subflow in create flow whose entity has a many to one relation.
    • Make the MultipartFile property transient to support file upload in Spring Web Flow.
    • Add flow path in applicationContext-security-http.xml. By default only ROLE_ADMIN can access them.
    • Declare flows in spring/springmvc-webapp.xml
  • Remove useless interface on SearchTemplate.... keep only impl version which now takes the name of the interface
  • Fix a compilation error when a table reference itself (Thanks to Pierre Gaudin. for reporting it)
  • Remove CollectionUtils.java as it was no longer used by the generated code.
  • When a table has no pk, use the first non null unique index instead (Thanks to Bernard Pons)

2.7.3 (2009-04-09)

  • Fix a case that was breaking compilation of the generated code: a composite foreign key having one of its field also used as a foreign key (non-composite). (Thanks to Marcel Heemskerk).
  • Isolate the use of URLEncoder.encode(string, "UTF-8") in a dedicated URLEncoderUtil class.
  • Cosmetic in XxxFormServiceImpl.java (use @Autowired on properties instead of constructor) and remove some unused dependencies.
  • Small changes in spring/springmvc-webapp.xml to make future Spring Web Flow integration smoother.
  • Improve doc in generated controllers
  • Changes in XxxValidator:
    • change the validator name from XxxValidator to XxxFormValidator to later use Spring Web Flow convention over configuration (invoke validator automatically)
    • annotate each validator with @Component
    • rename Validation method names to validate<FieldName>Field
    • overload validate() so it can also take a XxxForm as argument (Spring Web Flow support)
    • Inject the XxxValidator in XxxFormController using @Autowire

2.7.2 (2009-04-03)

  • Use URLEncoder.encode(string, "UTF-8") to encode parameters that appears in search results' sort urls in XxxSearchForm.java files.

2.7.1 (2009-03-30)

  • pom.xml: remove the error prone activeByDefault from H2 profile. No impact as H2 properties are anyway set by default when no database profile is used. Cosmetic changes in versions organization.
  • Fix and prevent potential bean name collisions, encountered on tables whose name was either 'Admin', 'Login' or 'Password' by forcing the name of all generated controllers to a name that is less collision-prone. There is no impact because these names are not used anywhere. Indeed the controllers sit on top of the rest (Thanks to Laurent P. and Vishal P. for reporting this issue).
  • Spring Web Flow compatibility: now the generated XxxForm.java, XxxSearchForm.java, SearchParameters.java and PagerDisplayImpl.java can be used from Spring Web Flow.
  • Rename the applicationContext-web.xml to applicationContext-security-http.xml and reflect this renaming in web.xml for better clarity.
  • Annotate AccountDetailsServiceImpl.loadByUsername with @Transactional so it works even without Open Session In View (thanks to Pierre Abel for reporting this issue).
  • Fix bug when the accountId is Long: distinguish the type in filter (Integer vs Long) both in the Java code and in the hibernate filter definition.
  • Use Html entities instead of images to display sort arrows (↑ or ↓) in search results. Impact in XxxSearchForm.java and searchResult.jsp pages.
  • Allow search using both a searchPattern and a model example. Change within Xxx.DAOHibernate.addCriterionOnCriteria method.

2.7.0

  • Add Springfuse version support in the project generation form (Thanks to Ian H. for requesting it). It allows you regenerate a project using an older version of Springfuse. Of course, we encourage you to switch to the latest release as soon as you can.
  • Package reorganization: (Thanks to Steve T., it really makes more sense). Group domain classes (model, manager, dao, hibernate) that were in a dedicated sub package in the parent package. For example, the AccountModel package is now 'domain' instead of 'domain.account', etc.
  • Package reorganization: to clearly separate domain related classes from the rest, move the classes that were in the 'hibernate' package to 'hibernate.support' or 'hibernate.listener' packages
  • Package reorganization: to clearly separate domain related classes from the rest, move the classes that were in the 'dao' package to 'dao.support' package.

2.6.0

  • Fix a compilation error when using a composite key having a date type (Thanks to Steve T. for reporting it)
  • Make getQueryStringForSortableHeader method public on all search forms so it can be conveniently used from Freemarker views (needed by a user using Freemarker instead of JSP) and provide more getXxxSortStatusKey methods (i.e on primary keys).
  • Fix AssertUtil.isFalse(Boolean). Note that it is not used in the generated code.
  • Fix location of hibernate hbm files in JavaDoc of all XxxModel.java files.
  • Cosmetic comments in Spring's configuration files

Since 2009-03-13

  • Fix a zip issue that was preventing windows to unzip properly the files at the root of the generated project (Thanks to Neil G. for reporting it)
  • Add some instructions for tomcat 5.5 and tomcat 6.0 in the generated pom.xml.
  • Change in the generated pom.xml concerning mysql users: use the org.hibernate.dialect.MySQLInnoDBDialect instead of the org.hibernate.dialect.MySQL5Dialect
  • Minor changes in Spring application context files related to bean description (no impact, just documentation and cosmetic)

Since 2009-03-06

  • Fix hard coded reference to login/password/email setters that were preventing certain generated projects to compile.
  • Fix a generation issue when the email column was not present in the auto detected Account table.
  • Introduce isAccount method in the AccountContext for fined grained security.

Since 2009-03-03

  • Account table detection: accept the 'user_name' column as a candidate for the username.
  • Use directly LocaleContextHolder instead of AccountContext in EmailServiceImpl to prevent NPE when using the EmailService from a cron job.
  • Fix potential NPE in Context Interceptor: the ModelAndView that the handler returned (can also be null)
  • Checkbox in all createForm.jsp/updateForm.jsp: fix path of default checked value. The bug was visible only in certain cases.
  • Cosmetic in xml configuration: move bean descriptions from comments to description tag

Since 2009-02-28

  • Set currentAccountId to a dummy value in HibernateFilterContext

Since 2009-02-27

  • Fix the currentAccountId type in HibernateFilterContext: it was hard coded to String, it has now the same type as the primary key of the 'account' table.
  • Circumvent a SpringJavascript bug similar to http://jira.springframework.org/browse/SJS-21 (thanks to Ian Hendry for reporting it).
  • SearchTemplateImpl setters now return SearchTemplateImpl instead of SearchTemplate so builder pattern can be used.

Since 2009-02-24

  • Remove trailing div tag in show.jsp responsible for poor layout under IE (thanks to Ian Hendry)
  • Fix duplication of the searchParameters.searchMode in the show.jsp page for each domain table (thanks to Ian Hendry)
  • Fix a typo in the string ROLE_USER in the generated PasswordService interface that was preventing the user from changing his password (thanks to Steve T.)
  • Provide two sets of velocity templates under src/main/resources/velocity/emails for email sent upon reset/change password.

Since 2009-02-12

  • Collect JDBC driver name/version when reversing the database schema. This information is displayed in the generated project page.
  • Improve support for camel case syntax: if your column or table name are camel cased and your jdbc driver preserves your syntax, Springfuse takes it into account to generate clean variable, method and class names following your camel case convention.
  • Account table auto detection: Springfuse now tries to identify your 'account' table. It looks for at least 2 columns login and password. The login column can be named either: 'login', 'username', the password column can be named either: 'password', 'pwd', 'passwd', 'mot_de_passe'
  • Email column is no longer mandatory in the account table
  • Hibernate Filters on the account PK and foreign key referencing the account PK are no longer hard-coded.
  • Role table auto detection: Springfuse now tries to identify your 'role' table. For the moment the role table must be linked through a many-to-many relationship to the account table and contains a column whose name is either: 'authority', 'name_locale', 'role_name' 'role'
  • When generated, the mock account table is now named sf_mock_account (thanks to Loic Fournial)
  • Databse schema from Julien Dubois's tudulist project can be reversed
  • Include the primary key field in search by example when the primary key looks like a natural key: a string type with a size different from 32.
  • Fix lazy loading support in the generated pom.xml.
  • Fix a bug in the hibernate mapping file that was preventing from inserting columns value having a default value on the database side.
  • Better support for name conflict resolutions when column names looks alike, for example roleId and role_id.
  • Basic numeric validation on the client side in create and update form
  • disable JSP compilation by default in the generated pom.xml
  • No longer validate email on the server side if the email field is not required
  • Improve generated css so we do not have to use <br/> tags in the generated pages.
  • New homepage for the generated project (thanks to Nicolas Martignole for his suggestions)
  • In search results, sort arrows are now displayed next to the column label.
  • fix search by example parameters propagation when sorting/iterating in search results page.
  • Upgrade to velocity 1.6.1
  • Upgrade to Spring Javascript 2.0.5

Since 2009-02-03

  • Remove common table prefix before generating variable/method/class name
  • Clean primary key variable names
  • Clean foreign key variable names
  • Ignore foreign key that do not refer to a primary key instead of stopping the generation!
  • Fix JSP domain page: There were few tags missmatch such as use a th instead of td in the pages show.jsp, createForm.jsp, updateForm.jsp
  • Prevent action caching in urlrewrite.xml
  • Ignore specific hibernate hilosequence table