org.eclipse.mylar.internal.tasks.web
Class WebRepositoryConnector

java.lang.Object
  extended by org.eclipse.mylar.tasks.core.AbstractRepositoryConnector
      extended by org.eclipse.mylar.internal.tasks.web.WebRepositoryConnector

public class WebRepositoryConnector
extends AbstractRepositoryConnector

Generic connector for web based issue tracking systems

Author:
Eugene Kuleshov

Field Summary
static java.lang.String PARAM_LOGIN_TOKEN
           
static java.lang.String PARAM_PASSWORD
           
static java.lang.String PARAM_PREFIX
           
static java.lang.String PARAM_SERVER_URL
           
static java.lang.String PARAM_USER_ID
           
static java.lang.String PROPERTY_LOGIN_FORM_URL
           
static java.lang.String PROPERTY_LOGIN_REQUEST_METHOD
           
static java.lang.String PROPERTY_LOGIN_REQUEST_URL
           
static java.lang.String PROPERTY_LOGIN_TOKEN_REGEXP
           
static java.lang.String PROPERTY_QUERY_METHOD
           
static java.lang.String PROPERTY_QUERY_REGEXP
           
static java.lang.String PROPERTY_QUERY_URL
           
static java.lang.String PROPERTY_TASK_CREATION_URL
           
static java.lang.String PROPERTY_TASK_URL
           
static java.lang.String REQUEST_GET
           
static java.lang.String REQUEST_POST
           
 
Fields inherited from class org.eclipse.mylar.tasks.core.AbstractRepositoryConnector
MESSAGE_ATTACHMENTS_NOT_SUPPORTED, MYLAR_CONTEXT_DESCRIPTION, supportedVersions, taskList, templates
 
Constructor Summary
WebRepositoryConnector()
           
 
Method Summary
 boolean canCreateNewTask(TaskRepository repository)
           
 boolean canCreateTaskFromKey(TaskRepository repository)
           
private static java.lang.String cleanup(java.lang.String text, TaskRepository repository)
           
 ITask createTaskFromExistingKey(TaskRepository repository, java.lang.String id, java.net.Proxy proxySettings)
           
static java.lang.String evaluateParams(java.lang.String value, java.util.Map<java.lang.String,java.lang.String> params)
           
static java.lang.String evaluateParams(java.lang.String value, java.util.Map<java.lang.String,java.lang.String> params, TaskRepository repository)
           
static java.lang.String evaluateParams(java.lang.String value, TaskRepository repository)
           
static java.lang.String fetchResource(java.lang.String url, java.util.Map<java.lang.String,java.lang.String> params, TaskRepository repository)
           
 IAttachmentHandler getAttachmentHandler()
           
 java.util.Set<AbstractRepositoryTask> getChangedSinceLastSync(TaskRepository repository, java.util.Set<AbstractRepositoryTask> tasks)
           
 java.lang.String getLabel()
           
 IOfflineTaskHandler getOfflineTaskHandler()
           
private static java.lang.String getRefreshUrl(java.lang.String url, org.apache.commons.httpclient.HttpMethod method)
           
 java.lang.String getRepositoryType()
           
 java.lang.String getRepositoryUrlFromTaskUrl(java.lang.String url)
           
 java.util.List<java.lang.String> getSupportedVersions()
           
static java.util.List<java.lang.String> getTemplateVariables(java.lang.String value)
           
private static void loginRequestIfNeeded(org.apache.commons.httpclient.HttpClient client, java.util.Map<java.lang.String,java.lang.String> params, TaskRepository repository)
           
 org.eclipse.core.runtime.IStatus performQuery(AbstractRepositoryQuery query, TaskRepository repository, org.eclipse.core.runtime.IProgressMonitor monitor, QueryHitCollector resultCollector)
          Implementors must execute query synchronously.
static org.eclipse.core.runtime.IStatus performQuery(java.lang.String resource, java.lang.String regexp, java.lang.String taskPrefix, org.eclipse.core.runtime.IProgressMonitor monitor, QueryHitCollector collector, TaskRepository repository)
           
 java.lang.String[] repositoryPropertyNames()
           
private static java.lang.String requestResource(java.lang.String url, org.apache.commons.httpclient.HttpClient client, org.apache.commons.httpclient.HttpMethod method)
           
 void updateAttributes(TaskRepository repository, org.eclipse.core.runtime.IProgressMonitor monitor)
          Reset and update the repository attributes from the server (e.g.
 void updateTask(TaskRepository repository, AbstractRepositoryTask repositoryTask)
          Updates the properties of repositoryTask.
 
Methods inherited from class org.eclipse.mylar.tasks.core.AbstractRepositoryConnector
addTemplate, attachContext, getContextAttachments, getTaskIdPrefix, getTemplate, getTemplates, hasRepositoryContext, init, retrieveContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROPERTY_TASK_CREATION_URL

public static final java.lang.String PROPERTY_TASK_CREATION_URL
See Also:
Constant Field Values

PROPERTY_TASK_URL

public static final java.lang.String PROPERTY_TASK_URL
See Also:
Constant Field Values

PROPERTY_QUERY_URL

public static final java.lang.String PROPERTY_QUERY_URL
See Also:
Constant Field Values

PROPERTY_QUERY_METHOD

public static final java.lang.String PROPERTY_QUERY_METHOD
See Also:
Constant Field Values

PROPERTY_QUERY_REGEXP

public static final java.lang.String PROPERTY_QUERY_REGEXP
See Also:
Constant Field Values

PROPERTY_LOGIN_FORM_URL

public static final java.lang.String PROPERTY_LOGIN_FORM_URL
See Also:
Constant Field Values

PROPERTY_LOGIN_TOKEN_REGEXP

public static final java.lang.String PROPERTY_LOGIN_TOKEN_REGEXP
See Also:
Constant Field Values

PROPERTY_LOGIN_REQUEST_METHOD

public static final java.lang.String PROPERTY_LOGIN_REQUEST_METHOD
See Also:
Constant Field Values

PROPERTY_LOGIN_REQUEST_URL

public static final java.lang.String PROPERTY_LOGIN_REQUEST_URL
See Also:
Constant Field Values

PARAM_PREFIX

public static final java.lang.String PARAM_PREFIX
See Also:
Constant Field Values

PARAM_SERVER_URL

public static final java.lang.String PARAM_SERVER_URL
See Also:
Constant Field Values

PARAM_USER_ID

public static final java.lang.String PARAM_USER_ID
See Also:
Constant Field Values

PARAM_PASSWORD

public static final java.lang.String PARAM_PASSWORD
See Also:
Constant Field Values

PARAM_LOGIN_TOKEN

public static final java.lang.String PARAM_LOGIN_TOKEN
See Also:
Constant Field Values

REQUEST_POST

public static final java.lang.String REQUEST_POST
See Also:
Constant Field Values

REQUEST_GET

public static final java.lang.String REQUEST_GET
See Also:
Constant Field Values
Constructor Detail

WebRepositoryConnector

public WebRepositoryConnector()
Method Detail

getRepositoryType

public java.lang.String getRepositoryType()
Specified by:
getRepositoryType in class AbstractRepositoryConnector
Returns:
the unique type of the repository, e.g. "bugzilla"

getLabel

public java.lang.String getLabel()
Specified by:
getLabel in class AbstractRepositoryConnector

repositoryPropertyNames

public java.lang.String[] repositoryPropertyNames()
Overrides:
repositoryPropertyNames in class AbstractRepositoryConnector

getSupportedVersions

public java.util.List<java.lang.String> getSupportedVersions()
Specified by:
getSupportedVersions in class AbstractRepositoryConnector

canCreateNewTask

public boolean canCreateNewTask(TaskRepository repository)
Specified by:
canCreateNewTask in class AbstractRepositoryConnector

canCreateTaskFromKey

public boolean canCreateTaskFromKey(TaskRepository repository)
Specified by:
canCreateTaskFromKey in class AbstractRepositoryConnector

createTaskFromExistingKey

public ITask createTaskFromExistingKey(TaskRepository repository,
                                       java.lang.String id,
                                       java.net.Proxy proxySettings)
                                throws org.eclipse.core.runtime.CoreException
Specified by:
createTaskFromExistingKey in class AbstractRepositoryConnector
id - identifier, e.g. "123" bug Bugzilla bug 123
proxySettings - TODO
Returns:
null if task could not be created
Throws:
org.eclipse.core.runtime.CoreException - TODO

getRepositoryUrlFromTaskUrl

public java.lang.String getRepositoryUrlFromTaskUrl(java.lang.String url)
Specified by:
getRepositoryUrlFromTaskUrl in class AbstractRepositoryConnector

performQuery

public org.eclipse.core.runtime.IStatus performQuery(AbstractRepositoryQuery query,
                                                     TaskRepository repository,
                                                     org.eclipse.core.runtime.IProgressMonitor monitor,
                                                     QueryHitCollector resultCollector)
Description copied from class: AbstractRepositoryConnector
Implementors must execute query synchronously.

Specified by:
performQuery in class AbstractRepositoryConnector
repository - TODO
resultCollector - IQueryHitCollector that collects the hits found

getAttachmentHandler

public IAttachmentHandler getAttachmentHandler()
Specified by:
getAttachmentHandler in class AbstractRepositoryConnector
Returns:
null if not supported

getChangedSinceLastSync

public java.util.Set<AbstractRepositoryTask> getChangedSinceLastSync(TaskRepository repository,
                                                                     java.util.Set<AbstractRepositoryTask> tasks)
                                                              throws java.lang.Exception
Throws:
java.lang.Exception

getOfflineTaskHandler

public IOfflineTaskHandler getOfflineTaskHandler()
Specified by:
getOfflineTaskHandler in class AbstractRepositoryConnector
Returns:
null if not supported

updateAttributes

public void updateAttributes(TaskRepository repository,
                             org.eclipse.core.runtime.IProgressMonitor monitor)
                      throws org.eclipse.core.runtime.CoreException
Description copied from class: AbstractRepositoryConnector
Reset and update the repository attributes from the server (e.g. products, components) TODO: remove?

Specified by:
updateAttributes in class AbstractRepositoryConnector
Throws:
org.eclipse.core.runtime.CoreException

updateTask

public void updateTask(TaskRepository repository,
                       AbstractRepositoryTask repositoryTask)
                throws org.eclipse.core.runtime.CoreException
Description copied from class: AbstractRepositoryConnector
Updates the properties of repositoryTask. Invoked when on task synchronization if AbstractRepositoryConnector.getOfflineTaskHandler() returns null or IOfflineTaskHandler.downloadTaskData(TaskRepository, String) returns null.

Connectors that provide RepositoryTaskData objects for all tasks do not need to implement this method.

Specified by:
updateTask in class AbstractRepositoryConnector
Parameters:
repository - the repository
repositoryTask - the task that is synchronized
Throws:
org.eclipse.core.runtime.CoreException - thrown in case of error while synchronizing
See Also:
#getOfflineTaskHandler()}

performQuery

public static org.eclipse.core.runtime.IStatus performQuery(java.lang.String resource,
                                                            java.lang.String regexp,
                                                            java.lang.String taskPrefix,
                                                            org.eclipse.core.runtime.IProgressMonitor monitor,
                                                            QueryHitCollector collector,
                                                            TaskRepository repository)

cleanup

private static java.lang.String cleanup(java.lang.String text,
                                        TaskRepository repository)

fetchResource

public static java.lang.String fetchResource(java.lang.String url,
                                             java.util.Map<java.lang.String,java.lang.String> params,
                                             TaskRepository repository)
                                      throws java.io.IOException
Throws:
java.io.IOException

loginRequestIfNeeded

private static void loginRequestIfNeeded(org.apache.commons.httpclient.HttpClient client,
                                         java.util.Map<java.lang.String,java.lang.String> params,
                                         TaskRepository repository)
                                  throws org.apache.commons.httpclient.HttpException,
                                         java.io.IOException
Throws:
org.apache.commons.httpclient.HttpException
java.io.IOException

requestResource

private static java.lang.String requestResource(java.lang.String url,
                                                org.apache.commons.httpclient.HttpClient client,
                                                org.apache.commons.httpclient.HttpMethod method)
                                         throws java.io.IOException,
                                                org.apache.commons.httpclient.HttpException
Throws:
java.io.IOException
org.apache.commons.httpclient.HttpException

getRefreshUrl

private static java.lang.String getRefreshUrl(java.lang.String url,
                                              org.apache.commons.httpclient.HttpMethod method)

evaluateParams

public static java.lang.String evaluateParams(java.lang.String value,
                                              java.util.Map<java.lang.String,java.lang.String> params,
                                              TaskRepository repository)

evaluateParams

public static java.lang.String evaluateParams(java.lang.String value,
                                              TaskRepository repository)

evaluateParams

public static java.lang.String evaluateParams(java.lang.String value,
                                              java.util.Map<java.lang.String,java.lang.String> params)

getTemplateVariables

public static java.util.List<java.lang.String> getTemplateVariables(java.lang.String value)