Dashboard > BobsGear Main Space > Home > Confluence Plugin Development Diary > Confluence Development Environment Setup > Survey of Bundled Plugin Functionality
Survey of Bundled Plugin Functionality
Added by Garnet R. Chaney, last edited by Garnet R. Chaney on May 04, 2007  (view change)
Labels: 


Preliminaries

See Confluence Development Environment Setup for what was done before this.

Amazon Plugin

  • Confluence Example Plugin - Amazon Web Services Plugin

    The Amazon plugin demonstrates:

    • How to get results from a web service
    • How to parse an XML response
    • How to pretty print an XML response into HTML
    • How to create a product object with fields accessible from Velocity
    • How to make that product object available to render the macro results to HTML using a Velocity Macro
  • [Confluence Example Plugin - Attachments]
    • Extends baseMacro
    • Uses attachmentManager, permissionManager
    • Shows getting parameters (sortBy) from [ServletActionContext].getRequst
    • Shows setting a reference to this in the contextMap so that the Velocity template can call back into the macro.
    • Has two velocity macros:
      • attachmentsmacro.vm is fairly complex with javascript and velocity loops.
      • attachmentsmacro-help.vm - probably supplies help system documentation
  • [Confluence Example Plugin - Auditer]
    • Implements an [EventListener]
    • Sets up a logger
    • Accesses properties via getProperties audit.log4j.properties
    • Listens to every event because it returns an empty array for getHandledEventClasses
    • Very little code, does not do anything with the event other than pass the to log.info
  • [Confluence Example Plugin - Calendar]
  • [Confluence Example Plugin - Chart]
  • [Confluence Example Plugin - Dynamictasklist]
    **
  • [Confluence Example Plugin - favourites-pagelist]
    • Uses web-item plugin in atlassian-plugin.xml to add to system.spaces.pages
  • [Confluence Example Plugin - functestrpc]
    • Includes 5 java files:
      • [FuncTestEventQueue]
        • Keeps list of 9 events
      • [FuncTestRpcDelegator]
        • Implements [FuncTestRpcHandler]
        • massCreateAttachments
        • Calls the [FuncTestRpcHandlerImpl] for each entry point
      • [FuncTestRpcHandler]
        • Gives some documentation on the function of each entry point
      • [FuncTestRpcHandlerImpl] - Largest
        • Contains a wide variety of Managers and Accessors for the system:

          private [ConfluenceIndexManager] indexManager;
          private [SpaceManager] spaceManager;
          private [PermissionManager] permissionManager;
          private [UserAccessor] userAccessor;
          private [AttachmentManager] attachmentManager;
          private [PageManager] pageManager;
          private [ThemeManager] themeManager;
          private [CaptchaManager] captchaManager;
          private [FuncTestEventQueue] funcTestEventQueue;
          private Scheduler scheduler;
          private [BandanaManager] bandanaManager;
          private [BucketHibernateConfigProvider] configProvider;
          private [ContentPropertyManager] contentPropertyManager;
          private [ContentEntityManager] contentEntityManager;
          private [PersonalInformationManager] personalInformationManager;
          private [CacheManager] cacheManager;

        • Shows how to remove all spaces, groups, remove personal spaces, remove all users
        • flushing the index queue
        • Add attachments and then save strings to them with [StringInputStream]
        • Reset global theme
        • Note all the set*Manager routines at the end.
      • [QueueEventListener] - Small
        • Implements [EventListener]
        • Sets this.funcTestEventQueue
        • Listens to all events
        • Similar to [Confluence Example Plugin - Auditer]
  • [Confluence Example Plugin - graphviz]
  • [Confluence Example Plugin - helloworldrpc]
    **
  • [Confluence Example Plugin - helloworldservlet]
    **
  • [Confluence Example Plugin - impresence]
    **
  • [Confluence Example Plugin - information]
    **
  • [Confluence Example Plugin - jira3]
    **
  • [Confluence Example Plugin - layout]
    **
  • [Confluence Example Plugin - livesearch]
    **
  • [Confluence Example Plugin - masterdetail]
    **
  • Confluence Example Plugin - randompage
    • This plugin demonstrates:
      • Making an httpservlet
      • How to create a [SessionFactory] and connect with the database
      • run a SQL query to retrieve page IDs
      • Logs information about it's operation
  • [Confluence Example Plugin - script]
    **
  • [Confluence Example Plugin - tasklist]
    **
  • [Confluence Example Plugin - userinfo]
    **
  • [Confluence Example Plugin - userlister]
    • Uses web-item plugin in atlassian-plugin.xml to add to system.profile.edit/yourprofile
      **
  • [Confluence Example Plugin - workflow]
    **

Functionality Survey

Grep can be used to survey the plugins to find sources that implement certain functionality

[EventListeners]

Go to the plugins directory
grep -i -d Listener *.java

C:\projects\confluence-2.4.5.earwar\plugins>grep -d -i Listener *.java
SemWare Grep v2.0 for Win95/98/NT [BETA 1999-5-11 11:58]
Copyright 1996-1999 SemWare Corp. All rights reserved worldwide.

File: C:\projects\confluence-2.4.5.earwar\plugins\amazonmy\src\java\com\atlassian
   \confluence\extra\amazonmy\AmazonListener.java
import com.atlassian.event.EventListener;
public class AmazonListener implements EventListener
    private static Logger log = Logger.getLogger(AmazonListener.class);
    private void initializeAmazonListener()
           initializeAmazonListener();
     * @return an array of Classes of events handled by this listener

File: C:\projects\confluence-2.4.5.earwar\plugins\auditer\src\java\com\atlassian
   \confluence\extra\auditer\AuditListener.java
import com.atlassian.event.EventListener;
public class AuditListener implements EventListener
    private static Logger log = Logger.getLogger(AuditListener.class);
     * @return an array of Classes of events handled by this listener

File: C:\projects\confluence-2.4.5.earwar\plugins\auditer\src\test\com\atlassian
   \confluence\extra\auditer\TestAuditListener.java
public class TestAuditListener extends ConfluenceTestCase
    AuditListener auditListener;
        auditListener = new AuditListener();
        Class[] handledClasses = auditListener.getHandledEventClasses();

File: C:\projects\confluence-2.4.5.earwar\plugins\confluencerpc\src\test\java
   \com\atlassian\confluence\rpc\NoOpEventManager.java
    
public void registerListener(String listenerKey, com.atlassian.event.
                             EventListener listener) { }
    public void unregisterListener(String listenerKey) { }

File: C:\projects\confluence-2.4.5.earwar\plugins\functestrpc\src\java\com
   \atlassian\confluence\test\rpc\QueueEventListener.java
import com.atlassian.event.EventListener;
public class QueueEventListener implements EventListener
    private static Category log = Category.getInstance(QueueEventListener.class);
            log.debug("QueueEventListener.handleEvent: " + event);

File: C:\projects\confluence-2.4.5.earwar\plugins\userlister\src\java\com
   \atlassian\confluence\extra\userlister\UserListener.java
import com.atlassian.event.EventListener;
public class UserListener implements EventListener

File: C:\projects\confluence-2.4.5.earwar\plugins\userlister\src\test\java\com
   \atlassian\confluence\extra\userlister\TestUserListener.java
public class TestUserListener extends ConfluenceTestCase
    UserListener userListener;
        userListener = new UserListener();
        assertEquals("handled classes of UserListener have different length", 
        expectedHandledClasses.length, userListener.getHandledEventClasses().length);
            Class[] actualHandledClasses = userListener.getHandledEventClasses();

File: C:\projects\confluence-2.4.5.earwar\plugins\workflow\src\java\com
   \atlassian\confluence\extra\workflow\PageEditListener.java
import com.atlassian.event.EventListener;
public class PageEditListener implements EventListener

File: C:\projects\confluence-2.4.5.earwar\plugins\workflow\src\java\com
   \atlassian\confluence\extra\workflow\WorkflowListener.java
import com.atlassian.event.EventListener;
public class WorkflowListener implements EventListener

File: C:\projects\confluence-2.4.5.earwar\plugins\workflow\src\java\com
   \atlassian\confluence\extra\workflow\WorkflowMacro.java
            PageEditListener.ignoreEventsForPage(page);
            PageEditListener.acceptEventsForPage(page);
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.4.3 Build:#705 Mar 21, 2007) - Bug/feature request - Contact Administrators
Complete Wiki Notation Guide