Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [mylyn-integrators] Startup help for writing new connector

Thank you for publishing your notes. However, it is hard to follow them
due to very rough explanations. Until today I wasn't able to retrieve a
task list from the server, even with using code out of the Trac
connector.

For example, following problem crosses my way to a successful
implementation of my connector:

I can create a new query with my connector, but after the creation there
is no action at all. Where can I see my created query and how do I
manage to retrieve the task list?

Kind regards,
Robert

-----Original Message-----
From: Tom Bryan (tombry) [mailto:tombry@xxxxxxxxx] 
Sent: Dienstag, 08. Juli 2008 14:53
To: Schenkenfelder Robert
Subject: RE: [mylyn-integrators] Startup help for writing new connector

Schenkenfelder Robert wrote on Tuesday, July 08, 2008 3:59 AM:

> Thank you very much. That was a very good startup help, I can see my 
> connector now in the Task Repositories list.

Excellent.

> I hope I'm able to extend my beginning to a fully-functional read-only

> connector (the ConSol integration isn't that easy I thought).
> If I have further questions to Mylyn and connectors, I tell you.

I've included below the rest of my step-by-step.  I haven't reread this
one for correctness, and at some point, I stopped taking notes.  I hope
to go back and complete it at some point and get all of this info up on
the Mylyn wiki.


Query repository and populate task list
---------------------------------------

Now things get complicated.  I thought that I could incrementally add
functionality, but it seemed like I needed to get a bunch of
interconnected things working at this stage to get anything else working
in the UI.  See the archives of the Mylyn-Integrators list for
information on getting access to the Origo connector's source code.  I
used it in a couple of places as a simpler model to follow.  The Jira
and Bugzilla connectors were over-complicated for my needs in those
cases.  

* To query the bug system, you need 
** 	a class that can act as a client to some sort of API for the bug
system (e.g., by calling a web service),
** 	a class that can act as a TaskDataHandler to shuffle the data
among its various representations in code, 

Note that there is generally one connector per type of repository, but
there may be multiple repositories for one repository type in the
developer's repository list.  For example, there may be the Eclipse.org
bugzilla and a local bugzilla system.  So, we share the
RepositoryConnector, but the connector needs to keep track of separate
clients for interacting with different repositories (especially if
different repositories may require different client classes, depending
on the repository software version, etc.).

	
* In com.cisco.mytracker.mylyn.core plug-in,
** 	Create
com.cisco.mytracker.mylyn.core.internal.MytrackerTaskDataHandler.
** 	Create com.cisco.mytracker.mylyn.core.internal.IMytrackerClient.
** 	Create
com.cisco.mytracker.mylyn.core.internal.MytrackerServletClient implement
IMytrackerClient.
** 	Add a map to MytrackerServletClient instances to
com.cisco.mytracker.mylyn.core.internal.MytrackerRepositoryConnector.
** 	Add a MytrackerTaskDataHandler field to
com.cisco.mytracker.mylyn.core.intenral.MytrackerRepositoryConnector.
** 	Create a MytrackerRepositoryConnector constructor to initialize
these fields.
** 	Add a connector field and getter/setters to
com.cisco.mytracker.mylyn.core.internal.MytrackerCorePlugin.
** 	Implement MytrackerRepositoryConnector.getClient.
** 	Do not implement createTask, yet, since we're read only, and we
return false from canCreateNewTask().

An instance of AbstractRepositoryQuery represents one of the queries in
the TaskList.  That is, it is used to collect and organize tasks in the
Task List view.  A query corresponds to a search, which encapsulates the
criteria actually used to search the repository and filter out only the
tasks requested for that query.

Plan - implement search, then query, then new/edit query wizards from
connectorUi.  Then hook the TaskDataHandler up with the search. 

* In com.cisco.mytracker.mylyn.core plug-in,
** 	Create com.cisco.mytracker.mylyn.core.internal.MytrackerQuery.
** 	Implement getRepositoryKind().
** 	Create a reasonable constructor.
** 	The url from AbstractTaskContainer is optional: "optional URL
corresponding to the web resource associated with this container."
** 	Since we'll mostly be working with ad hoc queries for this
tracker, let's not try to create a corresponding query URL.  While the
web service call for a query will correspond to a URL, since that will
change as MyTracker modifies its web services, we'll let the
IMytrackerClient code generate the actual service URL corresponding to
the query.
** 	Add a MytrackerSearch field and add a constructor that takes
one.
	
* In com.cisco.mytracker.mylyn.core plug-in,
** 	Create
com.cisco.mytracker.mylyn.core.model.internal.MytrackerSearch.
** 	This implementation really depends on your particular repository
and what data you need to carry for a search.
	
* In com.cisco.mytracker.mylyn.core plug-in, 
** 	Create
com.cisco.mytracker.mylyn.core.internal.MytrackerTaskDataHandler.
** 	The task data handler holds a client factory.  The repository
connector holds the task data handler.
** 	The OrigoTaskDataHandler holds a back reference to the
repository connector, but we don't plan to follow that model.
** 	Need to implement MytrackerTaskDataHandler.getTaskData.
** 	Follow Origo template, and implement an
updateTaskDataFromMytracker method.
	
* In com.cisco.mytracker.mylyn.core plug-in, 
** 	Add a getMytrackerById method(String) to
com.cisco.mytracker.mylyn.core.internal.IMytrackerClient.
	
* In com.cisco.mytracker.mylyn.core plug-in, 
** 	Create
com.cisco.mytracker.mylyn.core.internal.MytrackerAttributeFactory.
** 	Implement....

* In com.cisco.mytracker.mylyn.core plug-in, 
** 	Create
com.cisco.mytracker.mylyn.core.internal.MytrackerException.
		
	
--
Tom Bryan <tombry@xxxxxxxxx>
Software Engineering Solutions (SES)
Cisco Systems
RTP, NC, USA


Back to the top