Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Becker2012-12-17 14:03:54 -0500
committerSteffen Pingel2012-12-18 06:06:37 -0500
commit5640e544069b886bf3e00acddd1735d89bcd715b (patch)
treecb455133d94fe9749f5b3156381dba58b1d0a300
parentdf6ccf162eb231c7dddd6d9545e4cbee6f0b4187 (diff)
downloadorg.eclipse.mylyn.tasks-5640e544069b886bf3e00acddd1735d89bcd715b.tar.gz
org.eclipse.mylyn.tasks-5640e544069b886bf3e00acddd1735d89bcd715b.tar.xz
org.eclipse.mylyn.tasks-5640e544069b886bf3e00acddd1735d89bcd715b.zip
395095: failed to download Bugzilla attachment
Change-Id: I94895c780e8829b2dfe80b1c3df2aa11841c8aad Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=395095
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaAttachmentHandlerTest.java1
-rw-r--r--org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ui/AttachmentUtilTest.java131
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/AttachmentUtil.java42
3 files changed, 157 insertions, 17 deletions
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaAttachmentHandlerTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaAttachmentHandlerTest.java
index 3a1042396..c66e548f9 100644
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaAttachmentHandlerTest.java
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/BugzillaAttachmentHandlerTest.java
@@ -506,4 +506,5 @@ public class BugzillaAttachmentHandlerTest extends AbstractBugzillaTest {
}
fail("Should have failed due to invalid userid and password.");
}
+
}
diff --git a/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ui/AttachmentUtilTest.java b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ui/AttachmentUtilTest.java
new file mode 100644
index 000000000..b46d9a698
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/ui/AttachmentUtilTest.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.tasks.tests.ui;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.AssertionFailedException;
+import org.eclipse.mylyn.internal.tasks.core.TaskAttachment;
+import org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil;
+import org.eclipse.mylyn.tasks.tests.TaskTestUtil;
+
+/**
+ * @author Steffen Pingel
+ * @author Frank Becker
+ */
+public class AttachmentUtilTest extends TestCase {
+
+ TaskAttachment attachment = TaskTestUtil.createMockTaskAttachment("id");
+
+ public void testGetAttachmentFilenameNull() {
+ try {
+ AttachmentUtil.getAttachmentFilename(null);
+ fail("Expected AssertionFailedException");
+ } catch (AssertionFailedException expected) {
+
+ }
+ }
+
+ public void testGetAttachmentFilename() {
+ attachment.setFileName("file.bmp");
+ assertEquals("file.bmp", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameNoExtension() {
+ attachment.setFileName("file");
+ assertEquals("file", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmpty() {
+ attachment.setFileName("");
+ assertEquals("attachment", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeHtml() {
+ attachment.setFileName("");
+ attachment.setContentType("html");
+ assertEquals("attachment.html", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeText() {
+ attachment.setFileName("");
+ attachment.setContentType("text");
+ assertEquals("attachment.txt", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeZip() {
+ attachment.setFileName("");
+ attachment.setContentType("zip");
+ assertEquals("attachment.zip", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeOctetStream() {
+ attachment.setFileName("");
+ attachment.setContentType("octet-stream");
+ assertEquals("attachment", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeApplicationOctetStream() {
+ attachment.setFileName("");
+ attachment.setContentType("application/octet-stream");
+ assertEquals("attachment.octet-stream", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeImagePng() {
+ attachment.setFileName("");
+ attachment.setContentType("image/png");
+ assertEquals("attachment.png", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeImageJpeg() {
+ attachment.setFileName("");
+ attachment.setContentType("image/jpeg");
+ assertEquals("attachment.jpeg", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeImageGif() {
+ attachment.setFileName("");
+ attachment.setContentType("image/gif");
+ assertEquals("attachment.gif", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeTextPlain() {
+ attachment.setFileName("");
+ attachment.setContentType("text/plain");
+ assertEquals("attachment.txt", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeTextHtml() {
+ attachment.setFileName("");
+ attachment.setContentType("text/html");
+ assertEquals("attachment.html", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameEmptyContentTypeApplicationXml() {
+ attachment.setFileName("");
+ attachment.setContentType("application/xml");
+ assertEquals("attachment.xml", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentFilenameTestHtmlContentTypeOctetStream() {
+ attachment.setFileName("Test.html");
+ attachment.setContentType("octet-stream");
+ assertEquals("Test.html", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+ public void testGetAttachmentIlegalFilename() {
+ attachment.setFileName("Ilegal:File:Name");
+ attachment.setContentType("octet-stream");
+ assertEquals("Ilegal%3AFile%3AName", AttachmentUtil.getAttachmentFilename(attachment));
+ }
+
+}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/AttachmentUtil.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/AttachmentUtil.java
index 3871082ad..e90fb4fbd 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/AttachmentUtil.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/AttachmentUtil.java
@@ -34,6 +34,7 @@ import org.eclipse.jface.operation.IRunnableContext;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.mylyn.commons.core.CoreUtil;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.commons.net.Policy;
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants;
@@ -76,8 +77,6 @@ public class AttachmentUtil {
private static final String CTYPE_ZIP = "zip"; //$NON-NLS-1$
- private static final String CTYPE_OCTET_STREAM = "octet-stream"; //$NON-NLS-1$
-
private static final String CTYPE_TEXT = "text"; //$NON-NLS-1$
private static final String CTYPE_HTML = "html"; //$NON-NLS-1$
@@ -366,24 +365,33 @@ public class AttachmentUtil {
}
public static String getAttachmentFilename(ITaskAttachment attachment) {
+ Assert.isNotNull(attachment);
String name = attachment.getFileName();
- // if no filename is set, make one up with the proper extension so
- // we can support opening in that filetype's default editor
- if (name == null || "".equals(name)) { //$NON-NLS-1$
+ if (name != null && name.length() > 0) {
+ return CoreUtil.asFileName(name);
+ } else {
+ String extension = ""; //$NON-NLS-1$
+
+ // if no filename is set, make one up with the proper extension so
+ // we can support opening in that filetype's default editor
String ctype = attachment.getContentType();
- if (ctype.endsWith(CTYPE_HTML)) {
- name = ATTACHMENT_DEFAULT_NAME + ".html"; //$NON-NLS-1$
- } else if (ctype.startsWith(CTYPE_TEXT)) {
- name = ATTACHMENT_DEFAULT_NAME + ".txt"; //$NON-NLS-1$
- } else if (ctype.endsWith(CTYPE_OCTET_STREAM)) {
- name = ATTACHMENT_DEFAULT_NAME;
- } else if (ctype.endsWith(CTYPE_ZIP)) {
- name = ATTACHMENT_DEFAULT_NAME + "." + CTYPE_ZIP; //$NON-NLS-1$
- } else {
- name = ATTACHMENT_DEFAULT_NAME + "." + ctype.substring(ctype.indexOf("/") + 1); //$NON-NLS-1$ //$NON-NLS-2$
+ if (ctype != null) {
+ if (ctype.endsWith(CTYPE_HTML)) {
+ extension = ".html"; //$NON-NLS-1$
+ } else if (ctype.startsWith(CTYPE_TEXT)) {
+ extension = ".txt"; //$NON-NLS-1$
+ } else if (ctype.endsWith(CTYPE_ZIP)) {
+ extension = ".zip"; //$NON-NLS-1$
+ } else {
+ int i = ctype.lastIndexOf("/"); //$NON-NLS-1$
+ if (i != -1) {
+ extension = "." + ctype.substring(i + 1); //$NON-NLS-1$
+ }
+ }
}
- }
- return name;
+ return ATTACHMENT_DEFAULT_NAME + extension;
+ }
}
+
}

Back to the top