Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud)

104025: Merged 5.0.N (5.0.2) to HEAD-BUG-FIX (5.1/Cloud)
      103975: MNT-13938: Public API does not set any HTTP caching headers


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@104120 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tatyana Valkevych
2015-05-13 16:25:31 +00:00
parent 5408f04032
commit c70953278a
5 changed files with 92 additions and 4 deletions

View File

@@ -80,6 +80,10 @@ public abstract class AbstractResourceWebScript extends ApiWebScript implements
Object toSerialize = respons.get("toSerialize");
ContentInfo contentInfo = (ContentInfo) respons.get("contentInfo");
// set caching (MNT-13938)
res.setCache(ApiWebScript.CACHE_NEVER);
// set content info
setContentInfoOnResponse(res, contentInfo);
if (toSerialize != null)

View File

@@ -28,7 +28,8 @@ import org.junit.runners.Suite;
TestSiteMembershipRequests.class,
TestFavourites.class,
TestRemovePermissions.class,
TestPublicApi128.class
TestPublicApi128.class,
TestPublicApiCaching.class
})
public class ApiTest
{

View File

@@ -0,0 +1,60 @@
package org.alfresco.rest.api.tests;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertNotNull;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.alfresco.rest.api.tests.RepoService.TestNetwork;
import org.alfresco.rest.api.tests.client.HttpResponse;
import org.alfresco.rest.api.tests.client.RequestContext;
import org.junit.Test;
/**
* HTTP cache header public api tests.
*
* @author Gavin Cornwell
*
*/
public class TestPublicApiCaching extends EnterpriseTestApi
{
@Test
public void testMNT13938() throws Exception
{
Iterator<TestNetwork> accountsIt = getTestFixture().getNetworksIt();
final TestNetwork account1 = accountsIt.next();
Iterator<String> personIt1 = account1.getPersonIds().iterator();
final String person1 = personIt1.next();
// make a request to any API (we'll get our own profile)
{
publicApiClient.setRequestContext(new RequestContext(account1.getId(), person1));
HttpResponse response = publicApiClient.get("public", "people", person1, null, null, null);
int responseCode = response.getStatusCode();
// make sure request was successful
assertTrue("Response code should be 200", responseCode == HttpServletResponse.SC_OK);
Map<String, String> headers = response.getHeaders();
// assert headers are present
assertNotNull("HTTP headers should be present on response", headers);
// assert the cache headers are present
String cacheControlHeader = headers.get("Cache-Control");
assertNotNull("Cache-Control header should be present", cacheControlHeader);
assertTrue("Cache-Control header should be set to no-cache but it was: " + cacheControlHeader,
cacheControlHeader.equals("no-cache"));
String pragmaHeader = headers.get("Pragma");
assertNotNull("Pragma header should be present", pragmaHeader);
assertTrue("Pragma header should be set to no-cache but it was: " + pragmaHeader,
pragmaHeader.equals("no-cache"));
String expiresHeader = headers.get("Expires");
assertNotNull("Expires header should be present", expiresHeader);
}
}
}

View File

@@ -1,5 +1,7 @@
package org.alfresco.rest.api.tests.client;
import java.util.Map;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.DeleteMethod;
@@ -16,14 +18,16 @@ public class HttpResponse
private HttpMethod method;
private String user;
private String response;
private Map<String,String> headers;
private long time;
public HttpResponse(HttpMethod method, String user, String response, long time)
public HttpResponse(HttpMethod method, String user, String response, Map<String,String> headers, long time)
{
super();
this.method = method;
this.user = user;
this.time = time;
this.headers = headers;
this.response = response;
}
@@ -37,6 +41,11 @@ public class HttpResponse
return response;
}
public Map<String,String> getHeaders()
{
return headers;
}
public String toString()
{
StringBuilder sb = new StringBuilder();

View File

@@ -22,6 +22,7 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import org.alfresco.error.AlfrescoRuntimeException;
@@ -37,6 +38,7 @@ import org.alfresco.rest.framework.resource.EntityResource;
import org.alfresco.rest.framework.resource.RelationshipResource;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.util.Pair;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.DeleteMethod;
@@ -227,7 +229,19 @@ public class PublicApiHttpClient
public HttpResponse onCallSuccess(HttpMethod method) throws Exception
{
long end = System.currentTimeMillis();
return new HttpResponse(method, rq.getRunAsUser(), method.getResponseBodyAsString(), (end - start));
Map<String, String> headersMap = null;
Header[] headers = method.getResponseHeaders();
if (headers != null)
{
headersMap = new HashMap<String, String>(headers.length);
for (Header header : headers)
{
headersMap.put(header.getName(), header.getValue());
}
}
return new HttpResponse(method, rq.getRunAsUser(), method.getResponseBodyAsString(), headersMap, (end - start));
}
@Override