Wednesday, October 9, 2013

Blossom 3.0 released

I'm happy to announce that Blossom 3.0 final has been released!

This release is a major update for Magnolia 5, compatible with Magnolia 5.1 and later. In version 5 Magnolia has a brand new user interface and with it comes a new API for dialogs. This version of Blossom is an update for this API and also contains a few other improvements and new features.

Blossom 3 uses a new builder style API for dialogs with a fluent programming style. A new set of classes replaces the previous API. These classes include a new TabBuilder and DialogBuilder and provides builders for each of the built-in fields, making it easier to configure properties on fields.

A new feature in this release is meta-annotations for component availability. It allows for creating custom annotations that can then be used on components to categorise them. They can then be used for specifying which components can go into an area with the @AvailableComponentClasses annotation. All components having a specified annotation will be available.

@ComponentCategory
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Banner {}

@Area("banners")
@AvailableComponentClasses({Banner.class})
@Controller
public class BannersArea {}

@Banner
@Template(id = "myModule:components/largePromoBanner", title="Large promo")
@Controller("banner")
public class LargePromoBannerComponent {}

Starting with this release the groupId changes to info.magnolia.blossom, use this snippet for your maven poms.

<dependency>
  <groupId>info.magnolia.blossom</groupId>
  <artifactId>magnolia-module-blossom</artifactId>
  <version>3.0</version>
</dependency>

Using Springs freemarker macros for forms is now straight forward. When rendering freemarker views Blossom will expose a RequestContext object which these macros require, it will also expose everything in the model as request attributes. This feature is enabled by default but can be switched off on the FreemarkerTemplateViewRenderer..

The multipart support that bridges Springs multipart handling to the multipart support in Magnolia has been updated for API changes in Spring 3.1.

New is also AbstractAutowiredRenderingModel which allows for autowiring of RenderingModel classes used outside of Blossom. Very handy.

The sample has also been updated and as always, this is the best place to start.

Get the source and start it up with these commands:

git clone http://git.magnolia-cms.com/git/modules/blossom/samples.git
cd samples
git checkout magnolia-blossom-samples-3.0
mvn install
cd magnolia-blossom-sample-webapp
mvn jetty:run-war

The complete change log can be found in the updated Blossom documentation.

9 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. Hi Tobias, link to doc is broken :-)

    ReplyDelete
    Replies
    1. Fixed now, thanks for letting me now! :)

      Delete
  3. Sorry the sample is not compiling; I thins there's some repository missing.

    ~/m/blossom-samples> git checkout magnolia-blossom-samples-3.0 1 f991ba4
    HEAD is now at f991ba4... [maven-release-plugin] prepare release magnolia-blossom-samples-3.0
    ~/m/blossom-samples> mvn install f991ba4
    [INFO] Scanning for projects...
    [WARNING]
    [WARNING] Some problems were encountered while building the effective model for info.magnolia.blossom:magnolia-blossom-sample-webapp:war:3.0
    [WARNING] 'build.plugins.plugin.version' for org.mortbay.jetty:jetty-maven-plugin is missing. @ line 42, column 15
    [WARNING]
    [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
    [WARNING]
    [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
    [WARNING]
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO]
    [INFO] magnolia-blossom-samples (parent pom)
    [INFO] magnolia-blossom-sample-module
    [INFO] magnolia-blossom-sample: webapp
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building magnolia-blossom-samples (parent pom) 3.0
    [INFO] ------------------------------------------------------------------------
    [WARNING] The POM for info.magnolia:maven-setproperty-plugin:jar:1.1.1 is missing, no dependency information available
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO]
    [INFO] magnolia-blossom-samples (parent pom) ............. FAILURE [0.135s]
    [INFO] magnolia-blossom-sample-module .................... SKIPPED
    [INFO] magnolia-blossom-sample: webapp ................... SKIPPED
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.842s
    [INFO] Finished at: Tue Nov 05 10:02:06 CET 2013
    [INFO] Final Memory: 10M/108M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Plugin info.magnolia:maven-setproperty-plugin:1.1.1 or one of its dependencies could not be resolved: Failure to find info.magnolia:maven-setproperty-plugin:jar:1.1.1 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

    ReplyDelete
    Replies
    1. The missing repository is for a maven plugin. If you follow the instructions on http://documentation.magnolia-cms.com/display/DOCS/Maven+init it will be added automatically to your settings.xml file. I'll still go ahead and add it to the project.

      Delete
  4. Hi Tobias. Do you plan to update the Blossom Data extension to magnolia 5? Thanks

    ReplyDelete
    Replies
    1. Hi Dunand, there's no such plans, going forward we see the data module being replaced by dedicated content apps.

      Delete
  5. Works very nice also with Magnolia 5.2!
    Thanks a lot Tobias!

    ReplyDelete