You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2013/07/23 13:51:36 UTC
svn commit: r1505994 - in /jackrabbit/branches/2.4: ./
jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java
Author: reschke
Date: Tue Jul 23 11:51:36 2013
New Revision: 1505994
URL: http://svn.apache.org/r1505994
Log:
JCR-3228: WebDav/DavEx remoting throws workspace mismatch exceptions when running on port 80 (ported to 2.4)
Modified:
jackrabbit/branches/2.4/ (props changed)
jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java
Propchange: jackrabbit/branches/2.4/
------------------------------------------------------------------------------
Merged /jackrabbit/trunk:r1505942
Modified: jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java?rev=1505994&r1=1505993&r2=1505994&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Tue Jul 23 11:51:36 2013
@@ -324,7 +324,7 @@ public class RepositoryServiceImpl imple
this.itemInfoCacheSize = itemInfoCacheSize;
try {
- URI repositoryUri = new URI((uri.endsWith("/")) ? uri : uri+"/", true);
+ URI repositoryUri = computeRepositoryUri(uri);
hostConfig = new HostConfiguration();
hostConfig.setHost(repositoryUri);
@@ -2658,6 +2658,26 @@ public class RepositoryServiceImpl imple
}
/**
+ * Compute the repository URI (while dealing with trailing / and port number
+ * defaulting)
+ */
+ public static URI computeRepositoryUri(String uri) throws URIException {
+ URI repositoryUri = new URI((uri.endsWith("/")) ? uri : uri + "/", true);
+ // workaround for JCR-3228: normalize default port numbers because of
+ // the weak URI matching code elsewhere (the remote server is unlikely
+ // to include the port number in URIs when it's the default for the
+ // protocol)
+ boolean useDefaultPort = ("http".equalsIgnoreCase(repositoryUri.getScheme()) && repositoryUri.getPort() == 80)
+ || (("https".equalsIgnoreCase(repositoryUri.getScheme()) && repositoryUri.getPort() == 443));
+ if (useDefaultPort) {
+ repositoryUri = new URI(repositoryUri.getScheme(), repositoryUri.getUserinfo(), repositoryUri.getHost(), -1,
+ repositoryUri.getPath(), repositoryUri.getQuery(), repositoryUri.getFragment());
+ }
+
+ return repositoryUri;
+ }
+
+ /**
*
* @param sessionInfo
* @param reportDoc
Modified: jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java?rev=1505994&r1=1505993&r2=1505994&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/RepositoryServiceImpl.java Tue Jul 23 11:51:36 2013
@@ -31,6 +31,8 @@ import javax.jcr.RepositoryException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.URI;
+import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
@@ -190,7 +192,13 @@ public class RepositoryServiceImpl exten
super(jcrServerURI, IdFactoryImpl.getInstance(), NameFactoryImpl.getInstance(),
PathFactoryImpl.getInstance(), new QValueFactoryImpl(), itemInfoCacheSize, maximumHttpConnections);
- this.jcrServerURI = jcrServerURI.endsWith("/") ? jcrServerURI : jcrServerURI + "/";
+ try {
+ URI repositoryUri = computeRepositoryUri(jcrServerURI);
+ this.jcrServerURI = repositoryUri.toString();
+ } catch (URIException e) {
+ throw new RepositoryException(e);
+ }
+
this.defaultWorkspaceName = defaultWorkspaceName;
if (batchReadConfig == null) {
this.batchReadConfig = new BatchReadConfig() {