Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Watson2016-10-27 14:39:35 +0000
committerThomas Watson2016-10-27 14:39:35 +0000
commit44a9d39c593466f3b82c2e5bc53770e060776944 (patch)
tree5e5b611cc054caec10c65ae3fa12d3c48081c6aa
parent95b588def754f3a7f0298eb87ef07c18ae62f8df (diff)
downloadrt.equinox.framework-R4_5_maintenance.tar.gz
rt.equinox.framework-R4_5_maintenance.tar.xz
rt.equinox.framework-R4_5_maintenance.zip
Bug 506460 - openConnection(URL u, Proxy p) is unsupported when multipleR4_5_maintenance
frameworks are running Change-Id: I44b31638002212d08a0a47bd4d9511d88420cc3b Signed-off-by: Thomas Watson <tjwatson@us.ibm.com>
-rw-r--r--bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF2
-rw-r--r--bundles/org.eclipse.osgi.tests/bundles_src/geturl/geturl/Activator.java13
-rw-r--r--bundles/org.eclipse.osgi.tests/pom.xml2
-rw-r--r--bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java5
-rw-r--r--bundles/org.eclipse.osgi/META-INF/MANIFEST.MF2
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/MultiplexingURLStreamHandler.java25
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/URLStreamHandlerProxy.java1
-rw-r--r--bundles/org.eclipse.osgi/pom.xml2
8 files changed, 43 insertions, 9 deletions
diff --git a/bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF
index afd4648d8..6d631ddf6 100644
--- a/bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Core OSGi Tests
Bundle-SymbolicName: org.eclipse.osgi.tests;singleton:=true
-Bundle-Version: 3.11.1.qualifier
+Bundle-Version: 3.11.2.qualifier
Bundle-ClassPath: osgitests.jar
Bundle-Vendor: Eclipse.org
Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/geturl/geturl/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/geturl/geturl/Activator.java
index 665c8e65e..1a17503c7 100644
--- a/bundles/org.eclipse.osgi.tests/bundles_src/geturl/geturl/Activator.java
+++ b/bundles/org.eclipse.osgi.tests/bundles_src/geturl/geturl/Activator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010, 2012 IBM Corporation and others.
+ * Copyright (c) 2010, 2016 IBM Corporation 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
@@ -10,8 +10,8 @@
*******************************************************************************/
package geturl;
-import java.net.MalformedURLException;
-import java.net.URL;
+import java.io.IOException;
+import java.net.*;
import java.security.PrivilegedAction;
import java.util.Dictionary;
import java.util.Hashtable;
@@ -40,8 +40,13 @@ public class Activator implements BundleActivator {
throw new RuntimeException("Could not create URL from parts: " + url);
}
url.toExternalForm();
- return Boolean.TRUE;
+ try {
+ url.openConnection(Proxy.NO_PROXY);
+ } catch (IOException e) {
+ // expected since our impl throws this
+ }
+ return Boolean.TRUE;
}
}, props);
}
diff --git a/bundles/org.eclipse.osgi.tests/pom.xml b/bundles/org.eclipse.osgi.tests/pom.xml
index 832fa0be0..7b01169a3 100644
--- a/bundles/org.eclipse.osgi.tests/pom.xml
+++ b/bundles/org.eclipse.osgi.tests/pom.xml
@@ -19,7 +19,7 @@
</parent>
<groupId>org.eclipse.osgi</groupId>
<artifactId>org.eclipse.osgi.tests</artifactId>
- <version>3.11.1-SNAPSHOT</version>
+ <version>3.11.2-SNAPSHOT</version>
<packaging>eclipse-test-plugin</packaging>
<properties>
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java
index eca187eb8..db9f60ee9 100644
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java
+++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java
@@ -1241,6 +1241,11 @@ public class SystemBundleTests extends AbstractBundleTests {
throw new IOException();
}
+ @Override
+ public URLConnection openConnection(URL u, Proxy p) throws IOException {
+ throw new IOException();
+ }
+
}
public void testURLMultiplexing01() throws BundleException {
diff --git a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
index e587efa28..e24123ac6 100644
--- a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
@@ -95,7 +95,7 @@ Bundle-Activator: org.eclipse.osgi.internal.framework.SystemBundleActivator
Bundle-Description: %systemBundle
Bundle-Copyright: %copyright
Bundle-Vendor: %eclipse.org
-Bundle-Version: 3.10.102.qualifier
+Bundle-Version: 3.10.103.qualifier
Bundle-Localization: systembundle
Bundle-DocUrl: http://www.eclipse.org
Eclipse-ExtensibleAPI: true
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/MultiplexingURLStreamHandler.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/MultiplexingURLStreamHandler.java
index e6eff45f3..428f3bac6 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/MultiplexingURLStreamHandler.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/MultiplexingURLStreamHandler.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2012 Cognos Incorporated, IBM Corporation and others.
+ * Copyright (c) 2006, 2016 Cognos Incorporated, IBM Corporation 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
@@ -11,10 +11,12 @@ package org.eclipse.osgi.internal.url;
import java.io.IOException;
import java.lang.reflect.*;
import java.net.*;
+import java.net.Proxy;
import org.eclipse.osgi.framework.log.FrameworkLogEntry;
public class MultiplexingURLStreamHandler extends URLStreamHandler {
private static Method openConnectionMethod;
+ private static Method openConnectionProxyMethod;
private static Method equalsMethod;
private static Method getDefaultPortMethod;
private static Method getHostAddressMethod;
@@ -38,6 +40,9 @@ public class MultiplexingURLStreamHandler extends URLStreamHandler {
openConnectionMethod = URLStreamHandler.class.getDeclaredMethod("openConnection", new Class[] {URL.class}); //$NON-NLS-1$
openConnectionMethod.setAccessible(true);
+ openConnectionProxyMethod = URLStreamHandler.class.getDeclaredMethod("openConnection", new Class[] {URL.class, Proxy.class}); //$NON-NLS-1$
+ openConnectionProxyMethod.setAccessible(true);
+
equalsMethod = URLStreamHandler.class.getDeclaredMethod("equals", new Class[] {URL.class, URL.class}); //$NON-NLS-1$
equalsMethod.setAccessible(true);
@@ -104,6 +109,24 @@ public class MultiplexingURLStreamHandler extends URLStreamHandler {
throw new MalformedURLException();
}
+ @Override
+ protected URLConnection openConnection(URL url, Proxy proxy) throws IOException {
+ URLStreamHandler handler = findAuthorizedURLStreamHandler(protocol);
+ if (handler != null) {
+ try {
+ return (URLConnection) openConnectionProxyMethod.invoke(handler, new Object[] {url, proxy});
+ } catch (InvocationTargetException e) {
+ if (e.getTargetException() instanceof IOException)
+ throw (IOException) e.getTargetException();
+ throw (RuntimeException) e.getTargetException();
+ } catch (Exception e) {
+ factory.container.getLogServices().log(MultiplexingURLStreamHandler.class.getName(), FrameworkLogEntry.ERROR, "openConnection", e); //$NON-NLS-1$
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+ throw new MalformedURLException();
+ }
+
protected boolean equals(URL url1, URL url2) {
URLStreamHandler handler = findAuthorizedURLStreamHandler(protocol);
if (handler != null) {
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/URLStreamHandlerProxy.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/URLStreamHandlerProxy.java
index d6351e1a3..1451ac157 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/URLStreamHandlerProxy.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/url/URLStreamHandlerProxy.java
@@ -224,6 +224,7 @@ public class URLStreamHandlerProxy extends URLStreamHandler implements ServiceTr
protected URLConnection openConnection(URL u, Proxy p) throws IOException {
try {
Method openConn = realHandlerService.getClass().getMethod("openConnection", new Class[] {URL.class, Proxy.class}); //$NON-NLS-1$
+ openConn.setAccessible(true);
return (URLConnection) openConn.invoke(realHandlerService, new Object[] {u, p});
} catch (InvocationTargetException e) {
if (e.getTargetException() instanceof IOException)
diff --git a/bundles/org.eclipse.osgi/pom.xml b/bundles/org.eclipse.osgi/pom.xml
index b70a6ec1d..f1084ae2b 100644
--- a/bundles/org.eclipse.osgi/pom.xml
+++ b/bundles/org.eclipse.osgi/pom.xml
@@ -19,7 +19,7 @@
</parent>
<groupId>org.eclipse.osgi</groupId>
<artifactId>org.eclipse.osgi</artifactId>
- <version>3.10.102-SNAPSHOT</version>
+ <version>3.10.103-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<build>

Back to the top