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 2012/04/26 14:10:24 UTC
svn commit: r1330798 - in /chemistry/opencmis/trunk:
chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/
chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/o...
Author: fmui
Date: Thu Apr 26 12:10:24 2012
New Revision: 1330798
URL: http://svn.apache.org/viewvc?rev=1330798&view=rev
Log:
StandardAuthenticationProvider:
- compile HTTP headers once and reuse them
- added capability to add HTTP headers via session parameters
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java?rev=1330798&r1=1330797&r2=1330798&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/StandardAuthenticationProvider.java Thu Apr 26 12:10:24 2012
@@ -20,6 +20,7 @@ package org.apache.chemistry.opencmis.cl
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -51,6 +52,7 @@ public class StandardAuthenticationProvi
private boolean sendBasicAuth;
private boolean sendUsernameToken;
private CmisCookieManager cookieManager;
+ private Map<String, List<String>> fixedHeaders = new HashMap<String, List<String>>();
@Override
public void setSession(BindingSession session) {
@@ -62,11 +64,6 @@ public class StandardAuthenticationProvi
if (isTrue(SessionParameter.COOKIES)) {
cookieManager = new CmisCookieManager();
}
- }
-
- @Override
- public Map<String, List<String>> getHTTPHeaders(String url) {
- Map<String, List<String>> result = new HashMap<String, List<String>>();
// authentication
if (sendBasicAuth) {
@@ -76,7 +73,7 @@ public class StandardAuthenticationProvi
// if no user is set, don't set basic auth header
if (user != null) {
- result.put("Authorization", createBasicAuthHeaderValue(user, password));
+ fixedHeaders.put("Authorization", createBasicAuthHeaderValue(user, password));
}
// get proxy user and password
@@ -85,10 +82,38 @@ public class StandardAuthenticationProvi
// if no proxy user is set, don't set basic auth header
if (proxyUser != null) {
- result.put("Proxy-Authorization", createBasicAuthHeaderValue(proxyUser, proxyPassword));
+ fixedHeaders.put("Proxy-Authorization", createBasicAuthHeaderValue(proxyUser, proxyPassword));
}
}
+ // other headers
+ int x = 0;
+ Object headerParam;
+ while ((headerParam = getSession().get(SessionParameter.HEADER + "." + x)) != null) {
+ String header = headerParam.toString();
+ int colon = header.indexOf(':');
+ if (colon > -1) {
+ String key = header.substring(0, colon).trim();
+ if (key.length() > 0) {
+ String value = header.substring(colon + 1).trim();
+ List<String> values = fixedHeaders.get(key);
+ if (values == null) {
+ fixedHeaders.put(key, Collections.singletonList(value));
+ } else {
+ List<String> newValues = new ArrayList<String>(values);
+ newValues.add(value);
+ fixedHeaders.put(key, newValues);
+ }
+ }
+ }
+ x++;
+ }
+ }
+
+ @Override
+ public Map<String, List<String>> getHTTPHeaders(String url) {
+ Map<String, List<String>> result = new HashMap<String, List<String>>(fixedHeaders);
+
// cookies
if (cookieManager != null) {
Map<String, List<String>> cookies = cookieManager.get(url, result);
@@ -177,6 +202,14 @@ public class StandardAuthenticationProvi
}
/**
+ * Returns the HTTP headers that are sent with all requests. The returned
+ * map is mutable but not synchronized!
+ */
+ protected Map<String, List<String>> getFixedHeaders() {
+ return fixedHeaders;
+ }
+
+ /**
* Creates a basic authentication header value from a username and a
* password.
*/
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java?rev=1330798&r1=1330797&r2=1330798&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-api/src/main/java/org/apache/chemistry/opencmis/commons/SessionParameter.java Thu Apr 26 12:10:24 2012
@@ -82,6 +82,8 @@ public final class SessionParameter {
public static final String CLIENT_COMPRESSION = "org.apache.chemistry.opencmis.binding.clientcompression";
public static final String COOKIES = "org.apache.chemistry.opencmis.binding.cookies";
+
+ public static final String HEADER = "org.apache.chemistry.opencmis.binding.header";
public static final String CONNECT_TIMEOUT = "org.apache.chemistry.opencmis.binding.connecttimeout";
public static final String READ_TIMEOUT = "org.apache.chemistry.opencmis.binding.readtimeout";