Jump to: navigation, search

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

< Mylyn‎ | SOC
(completed M2)
 
(14 intermediate revisions by 6 users not shown)
Line 1: Line 1:
The goal of this [http://code.google.com/soc/ Google Summer of Code] project is to provide a [https://bugs.eclipse.org/bugs/show_bug.cgi?id=140512 Trac connector plug-in for Mylar]. [http://projects.edgewall.com/trac/ Trac] is a web-based issue tracking system with an integrated wiki.
+
[[Category:Mylyn]]  
  
The Mylar API already supports multiple issue tracking systems, therefore the existing abstraction can be used to implement a Trac connector. Trac issues can be accessed remotely through an query script that outputs tab-delimited text as well as through an [http://trac-hacks.org/wiki/XmlRpcPlugin 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 goal of this [http://code.google.com/soc/ Google Summer of Code] project is to provide a [https://bugs.eclipse.org/bugs/show_bug.cgi?id=140512 Trac connector plug-in for Mylyn]. [http://trac.edgewall.com/ 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 [http://trac-hacks.org/wiki/XmlRpcPlugin 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 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.
Line 7: Line 9:
 
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 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 Mylar CVS and is shipped with the regular releases.
+
The Trac connector is now maintained in the Mylyn CVS and is shipped with the regular releases.
  
 
== ChangeLog ==
 
== ChangeLog ==
Line 35: Line 37:
 
* Attachment support and context uploading and retrieving ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=151900 #151900], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154441 #154441], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154372 #154372])
 
* Attachment support and context uploading and retrieving ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=151900 #151900], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154441 #154441], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154372 #154372])
 
* Change query urls accordingly when repository url is changed ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=154798 #154798])
 
* Change query urls accordingly when repository url is changed ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=154798 #154798])
* Authoring of reports within native Eclipse editor ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=151899 #151899], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=146334 #146334], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154377 #154377] )
+
* Authoring of reports within native Eclipse editor ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=151899 #151899], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=146334 #146334], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154377 #154377], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154962 #154962])
 +
* Fixed notifications for Trac task ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=154379 #154379]
 +
* Check revision of XML-RPC Plugin ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=154931 #154931])
 +
* Properly check for Trac repository during validation ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=154464 #154464])
  
 
This milestone is available as part of the Mylar 0.6.2 release.
 
This milestone is available as part of the Mylar 0.6.2 release.
Line 45: Line 50:
 
== Download ==
 
== Download ==
  
Releases are available at the [http://www.eclipse.org/mylar/dl.php Mylar dev update site] (Eclipse 3.2 only):
+
Please refer to the [http://www.eclipse.org/mylyn/downloads/ Mylyn download page].
+
download.eclipse.org/technology/mylar/update-site/dev
+
  
 
== Source ==
 
== Source ==
  
Please refer to the [wiki:Mylar_Contributor_Reference] for information about how to obtain and build Mylar and its connectors.
+
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 Mylar CVS:
+
The source is available in the Mylyn CVS:
  
[http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.mylar/ http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.mylar/]
+
[http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.mylyn/?root=Tools_Project http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.mylyn/?root=Tools_Project]
  
 
Plug-ins:
 
Plug-ins:
  
* [http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.mylar/org.eclipse.mylar.trac.ui/ org.eclipse.mylar.trac.core]
+
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.mylyn/org.eclipse.mylyn.trac.core/?root=Tools_Project org.eclipse.mylyn.trac.core]
* [http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.mylar/org.eclipse.mylar.trac-feature/ org.eclipse.mylar.trac-feature]
+
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.mylyn/org.eclipse.mylyn.trac-feature/?root=Tools_Project org.eclipse.mylyn.trac-feature]
* [http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.mylar/org.eclipse.mylar.trac.tests/ org.eclipse.mylar.trac.tests]
+
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.mylyn/org.eclipse.mylyn.trac.tests/?root=Tools_Project org.eclipse.mylyn.trac.tests]
* [http://dev.eclipse.org/viewcvs/indextech.cgi/org.eclipse.mylar/org.eclipse.mylar.trac.ui/ org.eclipse.mylar.trac.ui]
+
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.mylyn/org.eclipse.mylyn.trac.ui/?root=Tools_Project org.eclipse.mylyn.trac.ui]
  
 
Project Team Set:
 
Project Team Set:
  
* [http://www.eclipse.org/mylar/doc/dev/projects-trac.psf http://www.eclipse.org/mylar/doc/dev/projects-trac.psf]
+
* [http://www.eclipse.org/mylyn/doc/dev/projects-trac.psf http://www.eclipse.org/mylyn/doc/dev/projects-trac.psf]
  
 
== Architecture ==
 
== Architecture ==
Line 74: Line 77:
 
** (Eclipse independent) model classes that represent Trac data
 
** (Eclipse independent) model classes that represent Trac data
 
* UI: Tasklist classes
 
* UI: Tasklist classes
* Tests: Test for Core and UI
+
* Tests: Tests for Core and UI
 +
 
 +
For the XML-RPC calls [http://ws.apache.org/xmlrpc/ Apache XML-RPC] is used.
 +
 
 +
=== 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.
  
Since Core and Model is only used by UI both are combined in a single plug-in.
+
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.
  
For the XML-RPC calls [http://ws.apache.org/xmlrpc/xmlrpc2/ Apache XML-RPC] is used.
+
[[Category:SOC]]

Latest revision as of 14: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.

ChangeLog

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.

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.

Future planning

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

Download

Please refer to the Mylyn download page.

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:

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.

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.