Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/model/RemoteBundleDiscoveryStrategy.java6
-rw-r--r--org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/util/WebUtil.java10
-rw-r--r--org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/AllDiscoveryTests.java2
-rw-r--r--org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/core/util/WebUtilTest.java44
4 files changed, 57 insertions, 5 deletions
diff --git a/org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/model/RemoteBundleDiscoveryStrategy.java b/org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/model/RemoteBundleDiscoveryStrategy.java
index 261ea29c..505b3f4e 100644
--- a/org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/model/RemoteBundleDiscoveryStrategy.java
+++ b/org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/model/RemoteBundleDiscoveryStrategy.java
@@ -231,11 +231,7 @@ public class RemoteBundleDiscoveryStrategy extends BundleDiscoveryStrategy {
Messages.RemoteBundleDiscoveryStrategy_unrecognized_discovery_url, bundleUrl)));
continue;
}
- String lastPathElement = bundleUrl.lastIndexOf('/') == -1
- ? bundleUrl
- : bundleUrl.substring(bundleUrl.lastIndexOf('/'));
- File target = File.createTempFile(
- lastPathElement.replaceAll("^[a-zA-Z0-9_.]", "_") + "_", ".jar", temporaryStorage); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
+ File target = File.createTempFile(WebUtil.getFileNameFor(bundleUrl) + "_", ".jar", temporaryStorage); //$NON-NLS-1$ //$NON-NLS-2$
if (monitor.isCanceled()) {
break;
diff --git a/org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/util/WebUtil.java b/org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/util/WebUtil.java
index 030509a5..e80ab001 100644
--- a/org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/util/WebUtil.java
+++ b/org.eclipse.mylyn.discovery.core/src/org/eclipse/mylyn/internal/discovery/core/util/WebUtil.java
@@ -165,4 +165,14 @@ public class WebUtil {
return getTransport().getLastModified(location, monitor);
}
+ public static String getFileNameFor(String bundleUrl) throws IOException {
+ if (bundleUrl.charAt(bundleUrl.length() - 1) == '/') {
+ bundleUrl = bundleUrl.substring(0, bundleUrl.length() - 1);
+ }
+ if (bundleUrl.lastIndexOf('/') != -1) {
+ bundleUrl = bundleUrl.substring(bundleUrl.lastIndexOf('/') + 1);
+ }
+ return bundleUrl.replaceAll("[^a-zA-Z0-9_\\.]", "_"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
}
diff --git a/org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/AllDiscoveryTests.java b/org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/AllDiscoveryTests.java
index 265bfeec..a7161913 100644
--- a/org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/AllDiscoveryTests.java
+++ b/org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/AllDiscoveryTests.java
@@ -20,6 +20,7 @@ import org.eclipse.mylyn.discovery.tests.core.ConnectorDiscoveryRemoteTest;
import org.eclipse.mylyn.discovery.tests.core.ConnectorDiscoveryTest;
import org.eclipse.mylyn.discovery.tests.core.DirectoryParserTest;
import org.eclipse.mylyn.discovery.tests.core.RemoteBundleDiscoveryStrategyTest;
+import org.eclipse.mylyn.discovery.tests.core.util.WebUtilTest;
/**
* @author Steffen Pingel
@@ -35,6 +36,7 @@ public class AllDiscoveryTests {
suite.addTestSuite(ConnectorDiscoveryTest.class);
suite.addTestSuite(DirectoryParserTest.class);
suite.addTestSuite(BundleDiscoveryStrategyTest.class);
+ suite.addTestSuite(WebUtilTest.class);
if (!configuration.isLocalOnly()) {
suite.addTestSuite(RemoteBundleDiscoveryStrategyTest.class);
suite.addTestSuite(ConnectorDiscoveryRemoteTest.class);
diff --git a/org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/core/util/WebUtilTest.java b/org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/core/util/WebUtilTest.java
new file mode 100644
index 00000000..d8d68c17
--- /dev/null
+++ b/org.eclipse.mylyn.discovery.tests/src/org/eclipse/mylyn/discovery/tests/core/util/WebUtilTest.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * 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.discovery.tests.core.util;
+
+import junit.framework.TestCase;
+
+import org.eclipse.mylyn.internal.discovery.core.util.WebUtil;
+
+public class WebUtilTest extends TestCase {
+
+ public void testGetFileNameForJar() throws Exception {
+ assertEquals("org.eclipse.mylyn.discovery_3.10.jar",
+ WebUtil.getFileNameFor("org.eclipse.mylyn.discovery-3.10.jar"));
+ }
+
+ public void testGetFileNameForUrl() throws Exception {
+ assertEquals(
+ "org.eclipse.mylyn.discovery_3.10.jar",
+ WebUtil.getFileNameFor("http://www.eclipse.org/downloads/download.php?file=/mylyn/discovery/org.eclipse.mylyn.discovery-3.10.jar"));
+ }
+
+ public void testGetFileNameForUrlWithQuery() throws Exception {
+ assertEquals(
+ "org.eclipse.mylyn.discovery_3.10.jar_r_1_protocol_http",
+ WebUtil.getFileNameFor("http://www.eclipse.org/downloads/download.php?file=/mylyn/discovery/org.eclipse.mylyn.discovery-3.10.jar&r=1&protocol=http"));
+ }
+
+ public void testGetFileNameForUrlEndingWithSlash() throws Exception {
+ assertEquals("a.jar", WebUtil.getFileNameFor("a.jar/"));
+ }
+
+ public void testGetFileNameForUrlWithFilesystemReservedCharacters() throws Exception {
+ assertEquals("1_2_3_4_5_6_7_8_9_", WebUtil.getFileNameFor("1<2>3:4\"5\\6|7?8*9+"));
+ }
+}

Back to the top