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/07/18 11:20:21 UTC
svn commit: r1362826 - in /chemistry/opencmis/trunk:
chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/cache/impl/
chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/...
Author: fmui
Date: Wed Jul 18 09:20:20 2012
New Revision: 1362826
URL: http://svn.apache.org/viewvc?rev=1362826&view=rev
Log:
fixed potential charset and locale issues
Added:
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/QueryStringHttpServletRequestWrapper.java (with props)
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/cache/impl/ContentTypeCacheLevelImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/util/FileUtils.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeHelper.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeTypes.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntryParser.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/CmisAtomPubServlet.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ControlParser.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultipartParser.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/POSTHttpServletRequestWrapper.java
chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/BasicAuthCallContextHandler.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/SecurityTest.java
chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/NameCharsetTest.java
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/LoginDialog.java
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java
chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/cache/impl/ContentTypeCacheLevelImpl.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/cache/impl/ContentTypeCacheLevelImpl.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/cache/impl/ContentTypeCacheLevelImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/cache/impl/ContentTypeCacheLevelImpl.java Wed Jul 18 09:20:20 2012
@@ -24,9 +24,6 @@ import java.util.TreeMap;
/**
* Content type cache.
- *
- * @author <a href="mailto:fmueller@opentext.com">Florian Müller</a>
- *
*/
public class ContentTypeCacheLevelImpl extends MapCacheLevelImpl {
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/util/FileUtils.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/util/FileUtils.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/util/FileUtils.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/util/FileUtils.java Wed Jul 18 09:20:20 2012
@@ -28,6 +28,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
+import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
@@ -178,9 +179,18 @@ public class FileUtils {
properties.put(PropertyIds.OBJECT_TYPE_ID, type);
properties.put(PropertyIds.NAME, name);
- ByteArrayInputStream bais = new ByteArrayInputStream(content == null ? new byte[0] : content.getBytes());
- ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(content == null ? 0 : content
- .getBytes().length), "text/plain", bais);
+ byte[] contentBytes = new byte[0];
+ if (content != null) {
+ try {
+ contentBytes = content.getBytes("UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ contentBytes = content.getBytes();
+ }
+ }
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(contentBytes);
+ ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(contentBytes.length),
+ "text/plain", bais);
return parentFolder.createDocument(properties, contentStream, versioningState);
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeHelper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeHelper.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeHelper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeHelper.java Wed Jul 18 09:20:20 2012
@@ -25,6 +25,7 @@ package org.apache.chemistry.opencmis.co
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
/**
@@ -566,7 +567,7 @@ public class MimeHelper {
// get the parameter name as a lower case version for better
// mapping.
- String name = token.getValue().toLowerCase();
+ String name = token.getValue().toLowerCase(Locale.ENGLISH);
token = tokenizer.next();
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeTypes.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeTypes.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeTypes.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/MimeTypes.java Wed Jul 18 09:20:20 2012
@@ -21,13 +21,14 @@ package org.apache.chemistry.opencmis.co
import java.io.File;
import java.net.URLConnection;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
public class MimeTypes {
private static final Map<String, String> EXT2MIME = new HashMap<String, String>();
private static final Map<String, String> MIME2EXT = new HashMap<String, String>();
-
+
private MimeTypes() {
}
@@ -389,7 +390,7 @@ public class MimeTypes {
if (x > -1) {
mimeType = mimeType.substring(0, x);
}
- mimeType = mimeType.trim().toLowerCase();
+ mimeType = mimeType.trim().toLowerCase(Locale.ENGLISH);
String extension = MIME2EXT.get(mimeType);
return ((extension == null || extension.length() == 0) ? "" : "." + extension);
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntryParser.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntryParser.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntryParser.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/AtomEntryParser.java Wed Jul 18 09:20:20 2012
@@ -25,6 +25,7 @@ import java.io.InputStream;
import java.math.BigInteger;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import javax.xml.bind.JAXBElement;
@@ -280,7 +281,7 @@ public class AtomEntryParser {
if (ATTR_TYPE.equals(attrName.getLocalPart())) {
atomContentStream.setMimeType(parser.getAttributeValue(i));
if (parser.getAttributeValue(i) != null) {
- type = parser.getAttributeValue(i).trim().toLowerCase();
+ type = parser.getAttributeValue(i).trim().toLowerCase(Locale.ENGLISH);
}
} else if (ATTR_SRC.equals(attrName.getLocalPart())) {
if (ignoreAtomContentSrc) {
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/CmisAtomPubServlet.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/CmisAtomPubServlet.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/CmisAtomPubServlet.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/CmisAtomPubServlet.java Wed Jul 18 09:20:20 2012
@@ -76,6 +76,7 @@ import org.apache.chemistry.opencmis.ser
import org.apache.chemistry.opencmis.server.shared.Dispatcher;
import org.apache.chemistry.opencmis.server.shared.ExceptionHelper;
import org.apache.chemistry.opencmis.server.shared.HttpUtils;
+import org.apache.chemistry.opencmis.server.shared.QueryStringHttpServletRequestWrapper;
import org.apache.commons.lang.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -168,6 +169,8 @@ public class CmisAtomPubServlet extends
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
+ QueryStringHttpServletRequestWrapper qsRequest = new QueryStringHttpServletRequestWrapper(request);
+
// set default headers
response.addHeader("Cache-Control", "private, max-age=0");
response.addHeader("Server", ServerVersion.OPENCMIS_SERVER);
@@ -175,9 +178,9 @@ public class CmisAtomPubServlet extends
// create a context object, dispatch and handle exceptions
CallContext context = null;
try {
- context = HttpUtils.createContext(request, response, getServletContext(), CallContext.BINDING_ATOMPUB,
+ context = HttpUtils.createContext(qsRequest, response, getServletContext(), CallContext.BINDING_ATOMPUB,
callContextHandler, tempDir, memoryThreshold, maxContentSize);
- dispatch(context, request, response);
+ dispatch(context, qsRequest, response);
} catch (Exception e) {
if (e instanceof CmisPermissionDeniedException) {
if ((context == null) || (context.getUsername() == null)) {
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/CmisBrowserBindingServlet.java Wed Jul 18 09:20:20 2012
@@ -113,6 +113,7 @@ import org.apache.chemistry.opencmis.ser
import org.apache.chemistry.opencmis.server.shared.Dispatcher;
import org.apache.chemistry.opencmis.server.shared.ExceptionHelper;
import org.apache.chemistry.opencmis.server.shared.HttpUtils;
+import org.apache.chemistry.opencmis.server.shared.QueryStringHttpServletRequestWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -309,11 +310,13 @@ public class CmisBrowserBindingServlet e
boolean methodFound = false;
if (METHOD_GET.equals(method)) {
- String selector = getStringParameter(request, Constants.PARAM_SELECTOR);
- String objectId = getStringParameter(request, PARAM_OBJECT_ID);
+ QueryStringHttpServletRequestWrapper getRequest = new QueryStringHttpServletRequestWrapper(request);
+
+ String selector = getStringParameter(getRequest, Constants.PARAM_SELECTOR);
+ String objectId = getStringParameter(getRequest, PARAM_OBJECT_ID);
// add object id and object base type id to context
- prepareContext(context, callUrl, service, repositoryId, objectId, null, request);
+ prepareContext(context, callUrl, service, repositoryId, objectId, null, getRequest);
// dispatch
if (callUrl == CallUrl.REPOSITORY) {
@@ -322,7 +325,7 @@ public class CmisBrowserBindingServlet e
}
methodFound = repositoryDispatcher.dispatch(selector, method, context, service, repositoryId,
- request, response);
+ getRequest, response);
} else if (callUrl == CallUrl.ROOT) {
// set default method if necessary
if (selector == null) {
@@ -344,7 +347,7 @@ public class CmisBrowserBindingServlet e
}
}
- methodFound = rootDispatcher.dispatch(selector, method, context, service, repositoryId, request,
+ methodFound = rootDispatcher.dispatch(selector, method, context, service, repositoryId, getRequest,
response);
}
} else if (METHOD_POST.equals(method)) {
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ControlParser.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ControlParser.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ControlParser.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ControlParser.java Wed Jul 18 09:20:20 2012
@@ -21,6 +21,7 @@ package org.apache.chemistry.opencmis.se
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -48,7 +49,7 @@ public class ControlParser {
// gather all controls
Map<String, String[]> controls = request.getParameterMap();
for (Map.Entry<String, String[]> control : controls.entrySet()) {
- String controlName = control.getKey().trim().toLowerCase();
+ String controlName = control.getKey().trim().toLowerCase(Locale.ENGLISH);
int firstIndex = getFirstIndex(controlName);
@@ -153,7 +154,7 @@ public class ControlParser {
throw new IllegalArgumentException("controlName must not be null!");
}
- return zeroDim.get(controlName.toLowerCase());
+ return zeroDim.get(controlName.toLowerCase(Locale.ENGLISH));
}
public List<String> getValues(String controlName) {
@@ -161,7 +162,7 @@ public class ControlParser {
throw new IllegalArgumentException("controlName must not be null!");
}
- return convertToList(controlName, oneDim.get(controlName.toLowerCase()));
+ return convertToList(controlName, oneDim.get(controlName.toLowerCase(Locale.ENGLISH)));
}
public List<String> getValues(String controlName, int index) {
@@ -169,7 +170,7 @@ public class ControlParser {
throw new IllegalArgumentException("controlName must not be null!");
}
- Map<Integer, Map<Integer, String>> map = twoDim.get(controlName.toLowerCase());
+ Map<Integer, Map<Integer, String>> map = twoDim.get(controlName.toLowerCase(Locale.ENGLISH));
if (map == null) {
return null;
}
@@ -182,7 +183,7 @@ public class ControlParser {
throw new IllegalArgumentException("controlName must not be null!");
}
- return oneDim.get(controlName.toLowerCase());
+ return oneDim.get(controlName.toLowerCase(Locale.ENGLISH));
}
public Map<Integer, Map<Integer, String>> getTwoDimMap(String controlName) {
@@ -190,6 +191,6 @@ public class ControlParser {
throw new IllegalArgumentException("controlName must not be null!");
}
- return twoDim.get(controlName.toLowerCase());
+ return twoDim.get(controlName.toLowerCase(Locale.ENGLISH));
}
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultipartParser.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultipartParser.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultipartParser.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/MultipartParser.java Wed Jul 18 09:20:20 2012
@@ -26,6 +26,7 @@ import java.io.UnsupportedEncodingExcept
import java.math.BigInteger;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -284,7 +285,7 @@ public class MultipartParser {
while ((line = readLine()).length() > 0) {
int x = line.indexOf(':');
if (x > 0) {
- headers.put(line.substring(0, x).toLowerCase().trim(), line.substring(x + 1).trim());
+ headers.put(line.substring(0, x).toLowerCase(Locale.ENGLISH).trim(), line.substring(x + 1).trim());
}
}
}
@@ -502,7 +503,7 @@ public class MultipartParser {
public static final boolean isMultipartContent(HttpServletRequest request) {
String contentType = request.getContentType();
- if (contentType != null && contentType.toLowerCase().startsWith(MULTIPART)) {
+ if (contentType != null && contentType.toLowerCase(Locale.ENGLISH).startsWith(MULTIPART)) {
return true;
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/POSTHttpServletRequestWrapper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/POSTHttpServletRequestWrapper.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/POSTHttpServletRequestWrapper.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/POSTHttpServletRequestWrapper.java Wed Jul 18 09:20:20 2012
@@ -22,21 +22,15 @@ import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigInteger;
-import java.net.URLDecoder;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
import org.apache.chemistry.opencmis.commons.impl.Constants;
import org.apache.chemistry.opencmis.server.shared.HttpUtils;
+import org.apache.chemistry.opencmis.server.shared.QueryStringHttpServletRequestWrapper;
-public class POSTHttpServletRequestWrapper extends HttpServletRequestWrapper {
+public class POSTHttpServletRequestWrapper extends QueryStringHttpServletRequestWrapper {
private final boolean isMultipart;
- private Map<String, String[]> parameters;
private String filename;
private String contentType;
private BigInteger size;
@@ -46,11 +40,6 @@ public class POSTHttpServletRequestWrapp
long maxContentSize) throws Exception {
super(request);
- parameters = new HashMap<String, String[]>();
-
- // parse query string
- parseFormData(request.getQueryString());
-
// check multipart
isMultipart = MultipartParser.isMultipartContent(request);
@@ -92,61 +81,6 @@ public class POSTHttpServletRequestWrapp
}
}
- private void parseFormData(String data) throws Exception {
- if (data == null || data.length() < 3) {
- return;
- }
-
- String[] nameValuePairs = data.split("&");
- for (String nameValuePair : nameValuePairs) {
- int x = nameValuePair.indexOf('=');
- if (x > 0) {
- String name = URLDecoder.decode(nameValuePair.substring(0, x), "UTF-8");
- String value = (x == nameValuePair.length() - 1 ? "" : URLDecoder.decode(
- nameValuePair.substring(x + 1), "UTF-8"));
- addParameter(name, value);
- }
- }
- }
-
- private void addParameter(String name, String value) {
- String[] values = parameters.get(name);
-
- if (values == null) {
- parameters.put(name, new String[] { value });
- } else {
- String[] newValues = new String[values.length + 1];
- System.arraycopy(values, 0, newValues, 0, values.length);
- newValues[newValues.length - 1] = value;
- parameters.put(name, newValues);
- }
- }
-
- @Override
- public String getParameter(String name) {
- String[] values = parameters.get(name);
- if ((values == null) || (values.length == 0)) {
- return null;
- }
-
- return values[0];
- }
-
- @Override
- public Map<String, String[]> getParameterMap() {
- return parameters;
- }
-
- @Override
- public Enumeration<String> getParameterNames() {
- return Collections.enumeration(parameters.keySet());
- }
-
- @Override
- public String[] getParameterValues(String name) {
- return parameters.get(name);
- }
-
public String getFilename() {
return filename;
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/BasicAuthCallContextHandler.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/BasicAuthCallContextHandler.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/BasicAuthCallContextHandler.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/BasicAuthCallContextHandler.java Wed Jul 18 09:20:20 2012
@@ -20,6 +20,7 @@ package org.apache.chemistry.opencmis.se
import java.io.Serializable;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -44,7 +45,7 @@ public class BasicAuthCallContextHandler
Map<String, String> result = null;
String authHeader = request.getHeader("Authorization");
- if ((authHeader != null) && (authHeader.trim().toLowerCase().startsWith("basic "))) {
+ if ((authHeader != null) && (authHeader.trim().toLowerCase(Locale.ENGLISH).startsWith("basic "))) {
int x = authHeader.lastIndexOf(' ');
if (x == -1) {
return result;
Added: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/QueryStringHttpServletRequestWrapper.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/QueryStringHttpServletRequestWrapper.java?rev=1362826&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/QueryStringHttpServletRequestWrapper.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/QueryStringHttpServletRequestWrapper.java Wed Jul 18 09:20:20 2012
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.server.shared;
+
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+/**
+ * HttpServletRequest wrapper that reads the query string in container
+ * independent way and decodes the parameter values with UTF-8.
+ */
+public class QueryStringHttpServletRequestWrapper extends HttpServletRequestWrapper {
+
+ private Map<String, String[]> parameters;
+
+ public QueryStringHttpServletRequestWrapper(HttpServletRequest request) throws IOException {
+ super(request);
+
+ parameters = new HashMap<String, String[]>();
+
+ // parse query string
+ parseFormData(request.getQueryString());
+ }
+
+ /**
+ * Parses the query string.
+ */
+ protected void parseFormData(String queryString) throws IOException {
+ if (queryString == null || queryString.length() < 3) {
+ return;
+ }
+
+ String[] nameValuePairs = queryString.split("&");
+ for (String nameValuePair : nameValuePairs) {
+ int x = nameValuePair.indexOf('=');
+ if (x > 0) {
+ String name = URLDecoder.decode(nameValuePair.substring(0, x), "UTF-8");
+ String value = (x == nameValuePair.length() - 1 ? "" : URLDecoder.decode(
+ nameValuePair.substring(x + 1), "UTF-8"));
+ addParameter(name, value);
+ } else {
+ String name = URLDecoder.decode(nameValuePair, "UTF-8");
+ addParameter(name, null);
+ }
+ }
+ }
+
+ /**
+ * Adds a value to a parameter.
+ */
+ protected void addParameter(String name, String value) {
+ String[] values = parameters.get(name);
+
+ if (values == null) {
+ parameters.put(name, new String[] { value });
+ } else {
+ String[] newValues = new String[values.length + 1];
+ System.arraycopy(values, 0, newValues, 0, values.length);
+ newValues[newValues.length - 1] = value;
+ parameters.put(name, newValues);
+ }
+ }
+
+ @Override
+ public String getParameter(String name) {
+ String[] values = parameters.get(name);
+ if ((values == null) || (values.length == 0)) {
+ return null;
+ }
+
+ return values[0];
+ }
+
+ @Override
+ public Map<String, String[]> getParameterMap() {
+ return parameters;
+ }
+
+ @Override
+ public Enumeration<String> getParameterNames() {
+ return Collections.enumeration(parameters.keySet());
+ }
+
+ @Override
+ public String[] getParameterValues(String name) {
+ return parameters.get(name);
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/shared/QueryStringHttpServletRequestWrapper.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/runner/CmisTckAntTask.java Wed Jul 18 09:20:20 2012
@@ -19,6 +19,7 @@
package org.apache.chemistry.opencmis.tck.runner;
import java.io.File;
+import java.util.Locale;
import org.apache.chemistry.opencmis.tck.CmisTest;
import org.apache.chemistry.opencmis.tck.CmisTestGroup;
@@ -96,7 +97,7 @@ public class CmisTckAntTask extends Task
output = new File(DEFAULT_REPORT_NAME + ".txt");
}
} else {
- format = format.trim().toLowerCase();
+ format = format.trim().toLowerCase(Locale.ENGLISH);
if (REPORT_TEXT.equals(format)) {
report = new TextReport();
if (output == null) {
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/SecurityTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/SecurityTest.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/SecurityTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/basics/SecurityTest.java Wed Jul 18 09:20:20 2012
@@ -20,6 +20,7 @@ package org.apache.chemistry.opencmis.tc
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
+import java.util.Locale;
import java.util.Map;
import org.apache.chemistry.opencmis.client.api.Session;
@@ -68,6 +69,6 @@ public class SecurityTest extends Abstra
return false;
}
- return url.trim().toLowerCase().startsWith("https://");
+ return url.trim().toLowerCase(Locale.ENGLISH).startsWith("https://");
}
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/NameCharsetTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/NameCharsetTest.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/NameCharsetTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-test/chemistry-opencmis-test-tck/src/main/java/org/apache/chemistry/opencmis/tck/tests/crud/NameCharsetTest.java Wed Jul 18 09:20:20 2012
@@ -18,6 +18,7 @@
*/
package org.apache.chemistry.opencmis.tck.tests.crud;
+import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.WARNING;
import java.util.Map;
@@ -25,6 +26,7 @@ import java.util.Map;
import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.Session;
+import org.apache.chemistry.opencmis.tck.CmisTestResult;
import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
/**
@@ -32,7 +34,8 @@ import org.apache.chemistry.opencmis.tck
*/
public class NameCharsetTest extends AbstractSessionTest {
- private static final String[] NAMES = new String[] { "\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074", //
+ private static final String[] NAMES = new String[] { //
+ "\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074", //
"\u0053\u0063\u0068\u0072\u0069\u0066\u0074\u0073\u0074\u00fc\u0063\u006b", //
"\u0648\u062b\u064a\u0642\u0629", //
"\u0073\u0259\u006e\u0259\u0064", //
@@ -51,7 +54,8 @@ public class NameCharsetTest extends Abs
"\u0c2a\u0c24\u0c4d\u0c30\u0c02", //
"\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23", //
"\u062f\u0633\u062a\u0627\u0648\u06cc\u0632", //
- "\u0074\u00e0\u0069\u0020\u006c\u0069\u1ec7\u0075" };
+ "\u0074\u00e0\u0069\u0020\u006c\u0069\u1ec7\u0075", //
+ "a&b" };
@Override
public void init(Map<String, String> parameters) {
@@ -62,15 +66,26 @@ public class NameCharsetTest extends Abs
@Override
public void run(Session session) {
+ CmisTestResult f;
+
// create a test folder
Folder testFolder = createTestFolder(session);
try {
for (int i = 0; i < NAMES.length; i++) {
Document doc = null;
+ Document doc2 = null;
try {
doc = null;
doc = createDocument(session, testFolder, NAMES[i], NAMES[i]);
+
+ // get the newly created object by path
+ String path = doc.getPaths().get(0);
+ doc2 = (Document) session.getObjectByPath(path, SELECT_ALL_NO_CACHE_OC);
+ addResult(checkObject(session, doc2, getAllProperties(doc2), "New document object spec compliance"));
+
+ f = createResult(FAILURE, "Names of the created and the fetched document don't match!");
+ assertEquals(NAMES[i], doc2.getName(), null, f);
} catch (Exception e) {
addResult(createResult(WARNING, "The name '" + NAMES[i] + "' raised this exception: " + e, e, false));
} finally {
@@ -85,7 +100,7 @@ public class NameCharsetTest extends Abs
}
}
- addResult(createInfoResult("Tested " + NAMES.length + " differnt names."));
+ addResult(createInfoResult("Tested " + NAMES.length + "different names."));
} finally {
// delete the test folder
deleteTestFolder();
Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/LoginDialog.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/LoginDialog.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/LoginDialog.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/LoginDialog.java Wed Jul 18 09:20:20 2012
@@ -33,6 +33,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import javax.swing.BorderFactory;
@@ -331,7 +332,7 @@ public class LoginDialog extends JDialog
protected void createBindingButtons(Container pane) {
JPanel bindingContainer = new JPanel();
bindingContainer.setLayout(new BoxLayout(bindingContainer, BoxLayout.LINE_AXIS));
- char bc = System.getProperty(SYSPROP_BINDING, "atom").toLowerCase().charAt(0);
+ char bc = System.getProperty(SYSPROP_BINDING, "atom").toLowerCase(Locale.ENGLISH).charAt(0);
boolean atom = (bc == 'a');
boolean ws = (bc == 'w');
boolean browser = (bc == 'b');
@@ -356,8 +357,9 @@ public class LoginDialog extends JDialog
protected void createAuthenticationButtons(Container pane) {
JPanel authenticationContainer = new JPanel();
authenticationContainer.setLayout(new BoxLayout(authenticationContainer, BoxLayout.LINE_AXIS));
- boolean standard = (System.getProperty(SYSPROP_AUTHENTICATION, "standard").toLowerCase().equals("standard"));
- boolean ntlm = (System.getProperty(SYSPROP_AUTHENTICATION, "").toLowerCase().equals("ntlm"));
+ boolean standard = (System.getProperty(SYSPROP_AUTHENTICATION, "standard").toLowerCase(Locale.ENGLISH)
+ .equals("standard"));
+ boolean ntlm = (System.getProperty(SYSPROP_AUTHENTICATION, "").toLowerCase(Locale.ENGLISH).equals("ntlm"));
boolean none = !standard && !ntlm;
authenticationNoneButton = new JRadioButton("None", none);
authenticationStandardButton = new JRadioButton("Standard", standard);
@@ -537,7 +539,7 @@ public class LoginDialog extends JDialog
protected void setClientSession(ClientSession clientSession) {
this.clientSession = clientSession;
}
-
+
public void createClientSession() {
if (expertLogin) {
setClientSession(new ClientSession(createExpertSessionParameters()));
Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/details/ObjectPanel.java Wed Jul 18 09:20:20 2012
@@ -33,6 +33,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -188,7 +189,7 @@ public class ObjectPanel extends InfoPan
checkButton.setEnabled(true);
if (object instanceof Document) {
- String name = object.getName().toLowerCase();
+ String name = object.getName().toLowerCase(Locale.ENGLISH);
int x = name.lastIndexOf('.');
if ((x > -1) && (scriptExtensions.contains(name.substring(x + 1)))) {
scriptPanel.setVisible(true);
@@ -292,7 +293,7 @@ public class ObjectPanel extends InfoPan
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
Document doc = (Document) getClientModel().getCurrentObject();
- String name = doc.getName().toLowerCase();
+ String name = doc.getName().toLowerCase(Locale.ENGLISH);
if (name.endsWith(".groovy")) {
File file = ClientHelper.createTempFileFromDocument(doc, null);
Console console = ClientHelper.openConsole(ObjectPanel.this, getClientModel(), null);
@@ -316,7 +317,7 @@ public class ObjectPanel extends InfoPan
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
Document doc = (Document) getClientModel().getCurrentObject();
File file = ClientHelper.createTempFileFromDocument(doc, null);
- String name = doc.getName().toLowerCase();
+ String name = doc.getName().toLowerCase(Locale.ENGLISH);
String ext = name.substring(name.lastIndexOf('.') + 1);
scriptOutput.setText("");
Modified: chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java?rev=1362826&r1=1362825&r2=1362826&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-workbench/chemistry-opencmis-workbench/src/main/java/org/apache/chemistry/opencmis/workbench/swing/InfoPanel.java Wed Jul 18 09:20:20 2012
@@ -39,6 +39,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.net.URI;
import java.util.Collection;
+import java.util.Locale;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
@@ -356,7 +357,7 @@ public abstract class InfoPanel extends
return false;
}
- String lower = link.toLowerCase();
+ String lower = link.toLowerCase(Locale.ENGLISH);
return lower.startsWith("http://") || lower.startsWith("https://");
}