Repository: cxf
Updated Branches:
  refs/heads/master b0a664f1a -> 789380097


Add reflection for HTTPS unknown verbs (at least for Oracle Java8)


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/78938009
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/78938009
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/78938009

Branch: refs/heads/master
Commit: 789380097587b1edde3671a56348918553b27f86
Parents: b0a664f
Author: Daniel Kulp <[email protected]>
Authored: Tue Jan 24 11:39:10 2017 -0500
Committer: Daniel Kulp <[email protected]>
Committed: Tue Jan 24 11:39:39 2017 -0500

----------------------------------------------------------------------
 .../http/URLConnectionHTTPConduit.java          | 22 ++++++++++++++++++++
 1 file changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/78938009/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
----------------------------------------------------------------------
diff --git 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
index bbafdcf..249c735 100644
--- 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
+++ 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java
@@ -32,6 +32,8 @@ import java.net.URL;
 import java.net.URLConnection;
 import java.util.logging.Level;
 
+import javax.net.ssl.HttpsURLConnection;
+
 import org.apache.cxf.Bus;
 import org.apache.cxf.common.util.ReflectionUtil;
 import org.apache.cxf.common.util.SystemPropertyAction;
@@ -146,7 +148,27 @@ public class URLConnectionHTTPConduit extends HTTPConduit {
             }
             if (b) {
                 try {
+                    boolean set = false;
                     java.lang.reflect.Field f = 
ReflectionUtil.getDeclaredField(HttpURLConnection.class, "method");
+                    if (connection instanceof HttpsURLConnection) {
+                        try {
+                            java.lang.reflect.Field f2 = 
ReflectionUtil.getDeclaredField(connection.getClass(),
+                                                                               
          "delegate");
+                            Object c = 
ReflectionUtil.setAccessible(f2).get(connection);
+                            if (c instanceof HttpURLConnection) {
+                                ReflectionUtil.setAccessible(f).set(c, 
httpRequestMethod);
+                            }
+
+                            f2 = ReflectionUtil.getDeclaredField(c.getClass(), 
"httpsURLConnection");
+                            HttpsURLConnection c2 = 
(HttpsURLConnection)ReflectionUtil.setAccessible(f2)
+                                    .get(c);
+
+                            ReflectionUtil.setAccessible(f).set(c2, 
httpRequestMethod);
+                        } catch (Throwable t) {
+                            //ignore
+                            t.printStackTrace();
+                        }
+                    }
                     ReflectionUtil.setAccessible(f).set(connection, 
httpRequestMethod);
                     message.put(HTTPURL_CONNECTION_METHOD_REFLECTION, true);
                 } catch (Throwable t) {

Reply via email to