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

From Eclipsepedia

< Mylyn‎ | SOC
Jump to: navigation, search
(added architecture notes)
 
(29 intermediate revisions by 6 users not shown)
Line 1: Line 1:
The goal of this [http://code.google.com/soc/ 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 project will be accomplished in two iterations:
+
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.
  
'''[https://bugs.eclipse.org/bugs/show_bug.cgi?id=146334 1. Iteration]:''' ''Web linking only repository integration''
+
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.
  
* Access through Trac's query script or through the Trac XML-RPC plug-in
+
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.
* Support for repository queries in task list view
+
  
This will work with existing Trac deployments through the [https://oss.steffenpingel.de/mylar-trac-connector/query custom query script]. The output is available in multiple formats including tab-delimited text ([http://projects.edgewall.com/trac/query?status=new&status=assigned&status=reopened&format=tab&milestone=0.9.6&order=priority sample output]). It contains id, summary, status, owner, type, priority and component of tickets.
+
The Trac connector is now maintained in the Mylyn CVS and is shipped with the regular releases.
This information will be used for read-only display in Mylar. A web-browser will be used for editing of tickets.  
+
  
'''2. Iteration:''' ''Full integration based on the Trac XML-RPC plug-in''
+
== ChangeLog ==
  
* Authoring of reports within native Eclipse editor
+
=== '''M1 (completed):''' ''Web linking only repository integration ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=146334 #148378])'' ===
* Offline editing
+
  
In the second iteration support for Trac's XML-RPC interface will be
+
* Create and edit Trac repositories ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=147817 #147817], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=148378 #148378])
implemented. The XML-RPC interface is distributed as a separate Trac plug-in and requires a Trac build from the subversion repository. The XML-RPC interface allows full featured access to all ticket
+
** Templates for common repository locations ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=150677 #150677])
information and allows manipulation of tickets. The editing of tickets will be done through Eclipse forms.
+
* Data model for repository access ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=147816 #147816])
 +
** Access through Trac's query script ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=148090 #148090])
 +
** Access through the Trac XML-RPC plug-in ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=148089 #148089])
 +
* Create new tasks through web-browser ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=150699 #150699])
 +
* Add exiting tasks to task list ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=149385 #149385])
 +
* Query repository in task list view through Bugzilla like query dialog ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=149386 #149386])
  
=== Project ===
+
This milestone is available as part of the Mylar 0.6.1 release.
  
The project is hosted [https://oss.steffenpingel.de/mylar-trac-connector/ here].
+
=== '''M2 (completed):''' ''Full integration based on the Trac XML-RPC plug-in'' ===
  
== Proposed Architecture ==
+
* Digest authentication ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=151077 #151077])
 +
* Handle trailing slashes in repository urls ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=150890 #150890])''
 +
* Update repository attributes from task repository context menu ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=152325 #152325])
 +
* Unescape HTML entities when updating repository attributes ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=153496 #153496], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154098 #154098])
 +
* Query repositories from Eclipse search ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=153539 #153539], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=154772 #154772])
 +
* Remember repository attributes ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=150670 #150670])
 +
* Update repository attributes when query dialog is opened ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=154347 #154347])
 +
* 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])
 +
* 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])
  
* Core: Provides Java abstraction for repository access
+
This milestone is available as part of the Mylar 0.6.2 release.
 +
 
 +
=== '''Future planning''' ===
 +
 
 +
Please refer to the [https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Technology&product=Mylar&component=Trac&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= Eclipse Bugzilla] for bug reports and feature requests.
 +
 
 +
== Download ==
 +
 
 +
Please refer to the [http://www.eclipse.org/mylyn/downloads/ 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 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.mylyn/?root=Tools_Project]
 +
 
 +
Plug-ins:
 +
 
 +
* [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/index.cgi/org.eclipse.mylyn/org.eclipse.mylyn.trac-feature/?root=Tools_Project org.eclipse.mylyn.trac-feature]
 +
* [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/index.cgi/org.eclipse.mylyn/org.eclipse.mylyn.trac.ui/?root=Tools_Project org.eclipse.mylyn.trac.ui]
 +
 
 +
Project Team Set:
 +
 
 +
* [http://www.eclipse.org/mylyn/doc/dev/projects-trac.psf http://www.eclipse.org/mylyn/doc/dev/projects-trac.psf]
 +
 
 +
== Architecture ==
 +
 
 +
* Core and Model: Provides Java abstraction for repository access
 
** Abstraction for query script and XML-RPC access
 
** Abstraction for query script and XML-RPC access
 
** (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 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 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.