Difference between revisions of "Mylyn/SOC/2006/Trac Connector"

From Eclipsepedia

< Mylyn‎ | SOC
Jump to: navigation, search
(Architecture)
 

Latest revision as of 15:43, 4 December 2007


The goal of this Google Summer of Code project is to provide a Trac connector plug-in for Mylyn. Trac is a web-based issue tracking system with an integrated wiki.

The Mylyn API already supports multiple issue tracking systems, therefore the existing abstraction is used to implement a Trac connector. Trac issues are accessed remotely through a query script that outputs tab-delimited text as well as through a XML-RPC interface. The XML-RPC interface has not yet been integrated into the main distribution of Trac but is available as a separate plug-in.

The project has been accomplished in two iterations. The goal of the first iteration was to make the connector work with existing Trac deployments through Trac's web interface. This retrieved ticket information is used for read-only display in Mylar. Tickets can be edited through a web-browser.

The second iteration focused on enhancing the support for Trac's XML-RPC interface. The XML-RPC interface allows full featured access to all ticket information and allows manipulation of tickets. The editing of tickets is done through Eclipse forms based editor.

The Trac connector is now maintained in the Mylyn CVS and is shipped with the regular releases.

Contents

[edit] ChangeLog

[edit] M1 (completed): Web linking only repository integration (#148378)

  • Create and edit Trac repositories (#147817, #148378)
    • Templates for common repository locations (#150677)
  • Data model for repository access (#147816)
    • Access through Trac's query script (#148090)
    • Access through the Trac XML-RPC plug-in (#148089)
  • Create new tasks through web-browser (#150699)
  • Add exiting tasks to task list (#149385)
  • Query repository in task list view through Bugzilla like query dialog (#149386)

This milestone is available as part of the Mylar 0.6.1 release.

[edit] M2 (completed): Full integration based on the Trac XML-RPC plug-in

  • Digest authentication (#151077)
  • Handle trailing slashes in repository urls (#150890)
  • Update repository attributes from task repository context menu (#152325)
  • Unescape HTML entities when updating repository attributes (#153496, #154098)
  • Query repositories from Eclipse search (#153539, #154772)
  • Remember repository attributes (#150670)
  • Update repository attributes when query dialog is opened (#154347)
  • Attachment support and context uploading and retrieving (#151900, #154441, #154372)
  • Change query urls accordingly when repository url is changed (#154798)
  • Authoring of reports within native Eclipse editor (#151899, #146334, #154377, #154962)
  • Fixed notifications for Trac task (#154379
  • Check revision of XML-RPC Plugin (#154931)
  • Properly check for Trac repository during validation (#154464)

This milestone is available as part of the Mylar 0.6.2 release.

[edit] Future planning

Please refer to the Eclipse Bugzilla for bug reports and feature requests.

[edit] Download

Please refer to the Mylyn download page.

[edit] Source

Please refer to the Mylyn Contributor Reference for information about how to obtain and build Mylyn and its connectors.

The source is available in the Mylyn CVS:

http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.mylyn/?root=Tools_Project

Plug-ins:

Project Team Set:

[edit] Architecture

  • Core and Model: Provides Java abstraction for repository access
    • Abstraction for query script and XML-RPC access
    • (Eclipse independent) model classes that represent Trac data
  • UI: Tasklist classes
  • Tests: Tests for Core and UI

For the XML-RPC calls Apache XML-RPC is used.

[edit] Tickets

The Trac connector has three different ways to represent tasks:

- TracTicket: this is the representations retrieved from the Trac repository. It is either created from the data received through XML-RPC or from the web interface. This is part of a generic API for accessing Trac repositories that does not depend on Mylyn (except for org.eclipse.mylyn.web.core).

- TracTask: represents the task information in the task list. This is kept in memory at all times and contains information needed by Mylyn to represent the task in the UI. TracTasks are updated from TracTickets or from RepositoryTaskData (see TracRepositoryConnector.updateFrom*()).

- RepositoryTaskData: used for offline editing and offline storage. Task data stores all information about a task in RepositoryTaskAttribute objects. These are used by the editor to create widgets for editing, determine incoming changes etc. RepositoryTaskData is created in TracTaskDataHandler from TracTickets.

Attribute factories are used to map Mylyn's data model to a repository connector specific model. For example Mylyn uses the RepositoryTaskAttribute.USER_REPORTER key as the id for the attribute that specifies the reporter of a task which is mapped to the Trac specific key TracTicket.Key.REPORTER by TracAttributeFactory.