Confluence Docs 3.0 : Release Notes 1.4-DR1 This page last changed on Jun 29, 2006 by david.soul@atlassian.com. Confluence 1.4-DR1 is the first development release in the cycle leading up to Confluence 1.4. On the surface, we have implemented one of Confluence's most requested features. Under the hood, there's a whole new event system to play with. #### Who should upgrade? Development releases are snapshots of the ongoing Confluence development process. We make them available for customers who are willing to risk an unpolished release in order to have early access to new features. If you want to be running the most stable and most reliable version of Confluence, you should stick with the official, numbered releases. #### Upgrade Procedure Upgrading Confluence should be pretty easy. If you are upgrading from Confluence 1.3 or higher, you can find instructions here. We strongly recommend that you backup your `confluence.home` directory and database before upgrading! If you are upgrading from Confluence 1.2.3 or earlier, be sure to read the upgrade instructions in the Confluence 1.3 release notes. #### Downloads All development releases are available from Development Releases on the Atlassian website. #### New Features in Confluence 1.4-DR1 Consult JIRA for the full list of issues resolved for 1.4-DR1 (Note, this list doesn't include all the 1.3.1 fixes that were also merged into the development release) Move Page Hierarchy When you move a page between spaces, you now have the option to include all children of that page in the move. With 13 votes, this was one of Confluence's most requested features. (Note, as of DR1, you can not both move a hierarchy of pages and rename the root page at the same time. This bug is filed as CONF-2452) Attach Multiple Files Another commonly requested feature, you can now attach multiple files to a page at once. By default, you can attach a maximum of five at a time, but this maximum is configurable. GZip Content Encoding Pages are served with GZip content encoding, which means less bandwidth consumption and faster page downloads. Events and Listeners We have implemented the beginnings of a pervasive system of events within Confluence. By the final release of 1.4, all major actions within Confluence will trigger an event. These events can be listened for, and reacted to by a new plugin module type: "listener". This will allow Confluence to be further customised, as extensions can react to anything that happens within the system. Creating an event listener plugin is insanely easy. Step one, implement this interface:
    package com.atlassian.confluence.event;

    import com.atlassian.confluence.event.events.ConfluenceEvent;

    /**
     * Defines a listener for Confluence events.
     */
    public interface EventListener
    {
        /**
         * Perform some action as a response to a Confluence event. The EventManager will
         * ensure that this is only called if the class of the event matches one of the
         * classes returned by getHandledEventClasses
         *
         * @param event some event triggered within Confluence
         */
        void handleEvent(ConfluenceEvent event);

        /**
         * Determine which event classes this listener is interested in.
         *
         * The EventManager performs rudimentary filtering of events by their class. If
         * you want to receive only a subset of events passing through the system, return
         * an array of the Classes you wish to listen for from this method.
         *
         * For the sake of efficiency, only exact class matches are performed. Sub/superclassing
         * is not taken into account.
         *
         * Returning an empty array will allow you to receive every event.
         *
         * @return An array of the event classes that this event listener is interested in,
         *         or an empty array if the listener should receive all events. Must not
         *         return null.
         */
        Class[] getHandledEventClasses();
    }
Step two: Package it as a plugin module with a descriptor like this:
        <listener name="My Listener" key="mylistener"
             class="com.example.listeners.MyListener">
            <description>Listens for stuff.</description>
        </listener>
And that's about it. We'll be adding information about the events that are being produced in Confluence over the next couple of days (We would have had them documented today, but Nick, who wrote most of them, was sick). #### Bugs Fixed All bugs that were fixed in Confluence 1.3.1 are also fixed in Confluence 1.4-DR1.

Document generated by Confluence on Nov 05, 2009 23:27