REPO-4388 cors transaction (#228)

* REPO-4388 implement regex pattern for skipping deletion of certain headers during resets like the CORS headers

* REPO-4388 bump webscript
This commit is contained in:
Martin Muller
2019-05-10 10:28:02 +01:00
committed by Alex Mukha
parent a8d404c3ba
commit b593fe0459
5 changed files with 30 additions and 3 deletions

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2019 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -181,6 +181,22 @@ public class BufferedResponse implements WrappingWebScriptResponse
res.reset();
}
/* (non-Javadoc)
* @see org./alfresco.web.scripts.WebScriptResponse#resetjava.lang.String)
*/
public void reset(String preserveHeadersPattern)
{
if (outputStream != null)
{
outputStream = null;
}
else if (outputWriter != null)
{
outputWriter = null;
}
res.reset(preserveHeadersPattern);
}
/*
* (non-Javadoc)
* @see org.alfresco.web.scripts.WebScriptResponse#setCache(org.alfresco.web.scripts.Cache)

View File

@@ -2,7 +2,7 @@
* #%L
* Alfresco Remote API
* %%
* Copyright (C) 2005 - 2016 Alfresco Software Limited
* Copyright (C) 2005 - 2019 Alfresco Software Limited
* %%
* This file is part of the Alfresco software.
* If the software was purchased under a paid Alfresco license, the terms of
@@ -97,6 +97,7 @@ public class RepositoryContainer extends AbstractRuntimeContainer
private int memoryThreshold = 4 * 1024 * 1024; // 4mb
private long maxContentSize = (long) 4 * 1024 * 1024 * 1024; // 4gb
private TempStoreOutputStreamFactory streamFactory = null;
private String preserveHeadersPattern = null;
private Class<?>[] notPublicExceptions = new Class<?>[] {};
private Class<?>[] publicExceptions = new Class<?>[] {};
@@ -139,6 +140,11 @@ public class RepositoryContainer extends AbstractRuntimeContainer
}
}
public void setPreserveHeadersPattern(String preserveHeadersPattern)
{
this.preserveHeadersPattern = preserveHeadersPattern;
}
/**
* @param repository Repository
*/
@@ -515,7 +521,8 @@ public class RepositoryContainer extends AbstractRuntimeContainer
{
// Reset the request and response in case of a transaction retry
bufferedReq.reset();
bufferedRes.reset();
// REPO-4388 don't reset specified headers
bufferedRes.reset(preserveHeadersPattern);
script.execute(bufferedReq, bufferedRes);
}
}

View File

@@ -22,3 +22,5 @@
#
# See issue REPO-2575 for details.
alfresco.restApi.basicAuthScheme=false
# REPO-4388 allow CORS headers in transaction response
webscripts.transaction.preserveHeadersPattern=Access-Control-.*

View File

@@ -66,6 +66,7 @@
<property name="tempDirectoryName" value="${webscripts.tempDirectoryName}"/>
<property name="memoryThreshold" value="${webscripts.memoryThreshold}"/>
<property name="maxContentSize" value="${webscripts.setMaxContentSize}"/>
<property name="preserveHeadersPattern" value="${webscripts.transaction.preserveHeadersPattern}"/>
</bean>
<!-- Public Api Authenticator -->

View File

@@ -175,6 +175,7 @@
<property name="tempDirectoryName" value="${webscripts.tempDirectoryName}"/>
<property name="memoryThreshold" value="${webscripts.memoryThreshold}"/>
<property name="maxContentSize" value="${webscripts.setMaxContentSize}"/>
<property name="preserveHeadersPattern" value="${webscripts.transaction.preserveHeadersPattern}"/>
</bean>
<bean id="webscripts.index.prototype" class="org.springframework.extensions.webscripts.JaxRSUriIndex" scope="prototype"/>