You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2013/09/16 14:17:47 UTC

svn commit: r1523606 - /chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/ApacheClientHttpInvoker.java

Author: fmui
Date: Mon Sep 16 12:17:47 2013
New Revision: 1523606

URL: http://svn.apache.org/r1523606
Log:
Android + Apache HTTP client: allow OpenCMIS cookie handling

Modified:
    chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/ApacheClientHttpInvoker.java

Modified: chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/ApacheClientHttpInvoker.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/ApacheClientHttpInvoker.java?rev=1523606&r1=1523605&r2=1523606&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/ApacheClientHttpInvoker.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-android/chemistry-opencmis-android-client/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/http/ApacheClientHttpInvoker.java Mon Sep 16 12:17:47 2013
@@ -23,6 +23,8 @@ import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.Socket;
 import java.net.SocketTimeoutException;
+import java.util.Collections;
+import java.util.List;
 
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLSocket;
@@ -32,6 +34,8 @@ import org.apache.chemistry.opencmis.cli
 import org.apache.chemistry.opencmis.client.bindings.spi.BindingSession;
 import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
 import org.apache.chemistry.opencmis.commons.spi.AuthenticationProvider;
+import org.apache.http.Header;
+import org.apache.http.client.params.ClientPNames;
 import org.apache.http.conn.ConnectTimeoutException;
 import org.apache.http.conn.params.ConnManagerPNames;
 import org.apache.http.conn.params.ConnPerRouteBean;
@@ -40,9 +44,15 @@ import org.apache.http.conn.scheme.Plain
 import org.apache.http.conn.scheme.Scheme;
 import org.apache.http.conn.scheme.SchemeRegistry;
 import org.apache.http.conn.ssl.BrowserCompatHostnameVerifier;
+import org.apache.http.cookie.Cookie;
+import org.apache.http.cookie.CookieOrigin;
+import org.apache.http.cookie.CookieSpec;
+import org.apache.http.cookie.CookieSpecFactory;
+import org.apache.http.cookie.MalformedCookieException;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.impl.conn.ProxySelectorRoutePlanner;
 import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
+import org.apache.http.impl.cookie.CookieSpecBase;
 import org.apache.http.params.HttpConnectionParams;
 import org.apache.http.params.HttpParams;
 
@@ -51,9 +61,12 @@ import org.apache.http.params.HttpParams
  */
 public class ApacheClientHttpInvoker extends AbstractApacheClientHttpInvoker {
 
+    private static final String IGNORE_COOKIES = "ignoreCookies";
+
     protected DefaultHttpClient createHttpClient(UrlBuilder url, BindingSession session) {
         // set params
         HttpParams params = createDefaultHttpParams(session);
+        params.setParameter(ClientPNames.COOKIE_POLICY, IGNORE_COOKIES);
 
         // set max connection
         String maxConnStr = System.getProperty("http.maxConnections", "5");
@@ -80,6 +93,7 @@ public class ApacheClientHttpInvoker ext
         // set up client
         DefaultHttpClient httpclient = new DefaultHttpClient(connManager, params);
         httpclient.setRoutePlanner(routePlanner);
+        httpclient.getCookieSpecs().register(IGNORE_COOKIES, new IgnoreSpecFactory());
 
         return httpclient;
     }
@@ -152,4 +166,29 @@ public class ApacheClientHttpInvoker ext
             }
         };
     }
+
+    /**
+     * A cookies spec factory that ignores cookies.
+     */
+    private static class IgnoreSpecFactory implements CookieSpecFactory {
+        public CookieSpec newInstance(final HttpParams params) {
+            return new CookieSpecBase() {
+                public int getVersion() {
+                    return 0;
+                }
+
+                public List<Cookie> parse(Header header, CookieOrigin origin) throws MalformedCookieException {
+                    return Collections.emptyList();
+                }
+
+                public List<Header> formatCookies(List<Cookie> cookies) {
+                    return Collections.emptyList();
+                }
+
+                public Header getVersionHeader() {
+                    return null;
+                }
+            };
+        }
+    }
 }