diff options
author | Frank Becker | 2013-06-03 19:18:12 +0000 |
---|---|---|
committer | Frank Becker | 2013-06-03 19:18:12 +0000 |
commit | 4df8e40de32fb67695bd3413913feebc06eec2df (patch) | |
tree | 56b3077c2f425ef9b00b2eec57ec23dd2ccc5805 /org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core | |
parent | 1752f99a0b376d6806de5ec958d25ad96d6f88ef (diff) | |
download | org.eclipse.mylyn.tasks-4df8e40de32fb67695bd3413913feebc06eec2df.tar.gz org.eclipse.mylyn.tasks-4df8e40de32fb67695bd3413913feebc06eec2df.tar.xz org.eclipse.mylyn.tasks-4df8e40de32fb67695bd3413913feebc06eec2df.zip |
403024: Ability to reopen a task when 'REOPENED' state is not available.
Change-Id: I0fb34dc4017a82ec8381d7f7cf78a330f305adb9
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=403024
Diffstat (limited to 'org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core')
7 files changed, 104 insertions, 31 deletions
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java index 06647e699..4f2921f7e 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaClient.java @@ -729,6 +729,8 @@ public class BugzillaClient { throws IOException, CoreException { GzipGetMethod method = null; int attempt = 0; + StatusHandler.log(new Status(IStatus.INFO, BugzillaCorePlugin.ID_PLUGIN, + Messages.BugzillaClient_Start_GetConfiguration + repositoryUrl)); while (attempt < 2) { try { method = getConnectGzip(repositoryUrl + IBugzillaConstants.URL_GET_CONFIG_RDF, monitor, eTagValue); @@ -748,6 +750,7 @@ public class BugzillaClient { stream, getCharacterEncoding()); repositoryConfiguration = configFactory.getConfiguration(); + repositoryConfiguration.setRepositoryUrl(repositoryUrl.toExternalForm()); Header eTag = method.getResponseHeader("ETag"); //$NON-NLS-1$ if (eTag != null) { repositoryConfiguration.setETagValue(eTag.getValue()); @@ -769,7 +772,7 @@ public class BugzillaClient { getXmlRpcClient(); if (xmlRpcClient != null) { xmlRpcClient.updateConfiguration(monitor, repositoryConfiguration, - configParameters.get(IBugzillaConstants.BUGZILLA_DESCRIPTOR_FILE)); + configParameters); } else { repositoryConfiguration.setValidTransitions(monitor, configParameters.get(IBugzillaConstants.BUGZILLA_DESCRIPTOR_FILE), null); @@ -779,6 +782,8 @@ public class BugzillaClient { } if (!repositoryConfiguration.getOptionValues(BugzillaAttribute.PRODUCT).isEmpty()) { + StatusHandler.log(new Status(IStatus.INFO, BugzillaCorePlugin.ID_PLUGIN, + Messages.BugzillaClient_Stop_GetConfiguration + repositoryUrl)); return repositoryConfiguration; } else { if (attempt == 0) { @@ -809,6 +814,8 @@ public class BugzillaClient { } } } + StatusHandler.log(new Status(IStatus.INFO, BugzillaCorePlugin.ID_PLUGIN, + Messages.BugzillaClient_Start_GetConfiguration + repositoryUrl)); return null; } diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java index 7a2513e65..4d8eb8d81 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/IBugzillaConstants.java @@ -252,7 +252,11 @@ public interface IBugzillaConstants { public static final String BUGZILLA_DESCRIPTOR_FILE = "bugzilla.desciptorFile"; //$NON-NLS-1$ - public static final String BUGZILLA_USE_XMLRPC = "bugzilla.xmlrpc.status.transition"; //$NON-NLS-1$ + public static final String BUGZILLA_USE_XMLRPC = "bugzilla.xmlrpc"; //$NON-NLS-1$ + + public static final String BUGZILLA_USE_XMLRPC_WORKFLOW = "bugzilla.xmlrpc.status.transition"; //$NON-NLS-1$ + + public static final String BUGZILLA_USE_XMLRPC_DEFAULT_MILESTONE = "bugzilla.xmlrpc.default.milestone"; //$NON-NLS-1$ public static final String DEFAULT_LANG = "en (default)"; //$NON-NLS-1$ diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/Messages.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/Messages.java index 0d4a71cfe..2900bd402 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/Messages.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/Messages.java @@ -219,6 +219,10 @@ public class Messages extends NLS { public static String BugzillaClient_description_required_when_submitting_attachments; + public static String BugzillaClient_Start_GetConfiguration; + + public static String BugzillaClient_Stop_GetConfiguration; + public static String BugzillaClient_Unable_to_retrieve_new_task; public static String BugzillaClientManager_Refreshing_repository_configuration; diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/messages.properties b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/messages.properties index 31c9fafb7..636eabcbd 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/messages.properties +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/messages.properties @@ -107,6 +107,8 @@ BugzillaAttachmentMapper_URL=URL: BugzillaClient_anonymous_user_not_allowed=Anonymous user not allowed for this operation. BugzillaClient_could_not_post_form_null_returned=Could not post form, client returned null method. BugzillaClient_description_required_when_submitting_attachments=A description is required when submitting attachments. +BugzillaClient_Start_GetConfiguration=Start getRepositoryConfiguration for +BugzillaClient_Stop_GetConfiguration=Stop getRepositoryConfiguration for BugzillaClient_Unable_to_retrieve_new_task=Unable to retrieve new task. BugzillaClientManager_Refreshing_repository_configuration=Refreshing repository configuration diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/BugzillaXmlRpcClient.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/BugzillaXmlRpcClient.java index af2d235a7..51da85d7a 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/BugzillaXmlRpcClient.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/BugzillaXmlRpcClient.java @@ -32,6 +32,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.commons.net.AbstractWebLocation; import org.eclipse.mylyn.commons.net.AuthenticationCredentials; import org.eclipse.mylyn.commons.net.AuthenticationType; @@ -54,6 +55,7 @@ import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper; import org.eclipse.mylyn.tasks.core.data.TaskCommentMapper; import org.eclipse.mylyn.tasks.core.data.TaskData; import org.eclipse.mylyn.tasks.core.data.TaskDataCollector; +import org.eclipse.osgi.util.NLS; @SuppressWarnings("restriction") public class BugzillaXmlRpcClient extends CommonXmlRpcClient { @@ -413,51 +415,71 @@ public class BugzillaXmlRpcClient extends CommonXmlRpcClient { } public void updateConfiguration(IProgressMonitor monitor, RepositoryConfiguration repositoryConfiguration, - String fileName) throws CoreException { - repositoryConfiguration.setValidTransitions(monitor, fileName, this); - if (!repositoryConfiguration.getOptionValues(BugzillaAttribute.PRODUCT).isEmpty()) { + Map<String, String> configParameters) throws CoreException { + if (Boolean.parseBoolean(configParameters.get(IBugzillaConstants.BUGZILLA_USE_XMLRPC_WORKFLOW))) { + repositoryConfiguration.setValidTransitions(monitor, + configParameters.get(IBugzillaConstants.BUGZILLA_DESCRIPTOR_FILE), this); + } + if (!repositoryConfiguration.getOptionValues(BugzillaAttribute.PRODUCT).isEmpty() + && Boolean.parseBoolean(configParameters.get(IBugzillaConstants.BUGZILLA_USE_XMLRPC_DEFAULT_MILESTONE))) { updateProductInfo(monitor, repositoryConfiguration); } } public void updateProductInfo(IProgressMonitor monitor, RepositoryConfiguration repositoryConfiguration) throws CoreException { + ArrayList<Object> productIDNew = new ArrayList<Object>(); + StatusHandler.log(new Status(IStatus.INFO, BugzillaCorePlugin.ID_PLUGIN, Messages.BugzillaXmlRpcClient_Start_UpdateProductInfo + + repositoryConfiguration.getRepositoryUrl())); try { Object[] productIDs = getAccessibleProducts(monitor); - Object[] products = getProducts(monitor, productIDs); - for (Object object : products) { - if (object instanceof HashMap<?, ?>) { - String defaultMilestone = null; - String product = (String) ((HashMap<?, ?>) object).get("name"); //$NON-NLS-1$ - HashMap<?, ?> values = (HashMap<?, ?>) ((HashMap<?, ?>) object).get("internals"); //$NON-NLS-1$ - Object defaultMilestoneObj = null; - if (values != null) { - if (values instanceof HashMap<?, ?>) { - defaultMilestoneObj = ((HashMap<?, ?>) values).get("defaultmilestone"); //$NON-NLS-1$ - } - } else { - defaultMilestoneObj = ((HashMap<?, ?>) object).get("default_milestone"); //$NON-NLS-1$ - } - if (defaultMilestoneObj != null) { - if (defaultMilestoneObj instanceof String) { - defaultMilestone = (String) defaultMilestoneObj; - } else if (defaultMilestoneObj instanceof Double) { - defaultMilestone = ((Double) defaultMilestoneObj).toString(); - } else if (defaultMilestoneObj instanceof Integer) { - defaultMilestone = ((Integer) defaultMilestoneObj).toString(); + for (Object productID : productIDs) { + productIDNew.clear(); + productIDNew.add(productID); + try { + Object[] products = getProducts(monitor, productIDNew.toArray()); + for (Object object : products) { + if (object instanceof HashMap<?, ?>) { + String defaultMilestone = null; + String product = (String) ((HashMap<?, ?>) object).get("name"); //$NON-NLS-1$ + HashMap<?, ?> values = (HashMap<?, ?>) ((HashMap<?, ?>) object).get("internals"); //$NON-NLS-1$ + Object defaultMilestoneObj = null; + if (values != null) { + if (values instanceof HashMap<?, ?>) { + defaultMilestoneObj = ((HashMap<?, ?>) values).get("defaultmilestone"); //$NON-NLS-1$ + } + } else { + defaultMilestoneObj = ((HashMap<?, ?>) object).get("default_milestone"); //$NON-NLS-1$ + } + if (defaultMilestoneObj != null) { + if (defaultMilestoneObj instanceof String) { + defaultMilestone = (String) defaultMilestoneObj; + } else if (defaultMilestoneObj instanceof Double) { + defaultMilestone = ((Double) defaultMilestoneObj).toString(); + } else if (defaultMilestoneObj instanceof Integer) { + defaultMilestone = ((Integer) defaultMilestoneObj).toString(); + } + } + if (product != null && !product.equals("") //$NON-NLS-1$ + && defaultMilestone != null && !defaultMilestone.equals("")) { //$NON-NLS-1$ + repositoryConfiguration.setDefaultMilestone(product, defaultMilestone); + } } } - if (product != null && !product.equals("") //$NON-NLS-1$ - && defaultMilestone != null && !defaultMilestone.equals("")) { //$NON-NLS-1$ - repositoryConfiguration.setDefaultMilestone(product, defaultMilestone); - } + } catch (Exception e) { + Status status = new Status(IStatus.ERROR, BugzillaCorePlugin.ID_PLUGIN, NLS.bind( + Messages.BugzillaXmlRpcClient_CanNotGetTheDefaultMilestoneForProductWithID, + productIDNew.get(0))); + StatusHandler.log(status); } } } catch (XmlRpcException e) { throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.ID_PLUGIN, "Can not get the Default Milestones using XMLRPC")); //$NON-NLS-1$ + } finally { + StatusHandler.log(new Status(IStatus.INFO, BugzillaCorePlugin.ID_PLUGIN, Messages.BugzillaXmlRpcClient_Stop_UpdateProductInfo + + repositoryConfiguration.getRepositoryUrl())); } - } public int getUserID() { diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/Messages.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/Messages.java new file mode 100644 index 000000000..9b672cac0 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/Messages.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2013 Tasktop Technologies and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.internal.bugzilla.core.service; + +import org.eclipse.osgi.util.NLS; + +public class Messages extends NLS { + private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.bugzilla.core.service.messages"; //$NON-NLS-1$ + + public static String BugzillaXmlRpcClient_CanNotGetTheDefaultMilestoneForProductWithID; + + public static String BugzillaXmlRpcClient_Start_UpdateProductInfo; + + public static String BugzillaXmlRpcClient_Stop_UpdateProductInfo; + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } + + private Messages() { + } +} diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/messages.properties b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/messages.properties new file mode 100644 index 000000000..734191b51 --- /dev/null +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/service/messages.properties @@ -0,0 +1,3 @@ +BugzillaXmlRpcClient_CanNotGetTheDefaultMilestoneForProductWithID=Can not get the Default Milestone for Product with ID {0} using XMLRPC +BugzillaXmlRpcClient_Start_UpdateProductInfo=Start updateProductInfo for +BugzillaXmlRpcClient_Stop_UpdateProductInfo=Stop updateProductInfo for |