diff options
4 files changed, 117 insertions, 1 deletions
diff --git a/server/src/com/vaadin/server/communication/PublishedFileHandler.java b/server/src/com/vaadin/server/communication/PublishedFileHandler.java index 8fe0f7085f..d33481435e 100644 --- a/server/src/com/vaadin/server/communication/PublishedFileHandler.java +++ b/server/src/com/vaadin/server/communication/PublishedFileHandler.java @@ -110,7 +110,14 @@ public class PublishedFileHandler implements RequestHandler { return true; } - // TODO Check and set cache headers + // Set caching for the published file + String cacheControl = "public, max-age=0, must-revalidate"; + int resourceCacheTime = request.getService() + .getDeploymentConfiguration().getResourceCacheTime(); + if (resourceCacheTime > 0) { + cacheControl = "max-age=" + String.valueOf(resourceCacheTime); + } + response.setHeader("Cache-Control", cacheControl); OutputStream out = null; try { diff --git a/uitest/src/com/vaadin/tests/resources/CachingJavaScriptComponent.java b/uitest/src/com/vaadin/tests/resources/CachingJavaScriptComponent.java new file mode 100644 index 0000000000..b6e409d4ba --- /dev/null +++ b/uitest/src/com/vaadin/tests/resources/CachingJavaScriptComponent.java @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2013 Vaadin Ltd. + * + * Licensed 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 com.vaadin.tests.resources; + +import com.vaadin.annotations.JavaScript; +import com.vaadin.ui.AbstractJavaScriptComponent; + +@JavaScript({ "cachingtest.js" }) +public class CachingJavaScriptComponent extends AbstractJavaScriptComponent { + public CachingJavaScriptComponent() { + + } +} diff --git a/uitest/src/com/vaadin/tests/resources/PublishedFileHandlerCaching.java b/uitest/src/com/vaadin/tests/resources/PublishedFileHandlerCaching.java new file mode 100644 index 0000000000..a2828032c7 --- /dev/null +++ b/uitest/src/com/vaadin/tests/resources/PublishedFileHandlerCaching.java @@ -0,0 +1,77 @@ +/* + * Copyright 2000-2013 Vaadin Ltd. + * + * Licensed 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 com.vaadin.tests.resources; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; + +/** + * This class tests the caching behavior of PublishedFileHandler. + * + * Previously PublishedFileHandler did not include cache headers in it's + * responses. Unfortunately there isn't a good way to automate this test, so + * manual testing is required at this time. To test the caching behavior run + * this file as a java application on the development server debug + * configuration, and access it through the url + * http://localhost:8888/run/com.vaadin + * .tests.resources.PublishedFileHandlerCaching?restartApplication + * + * On loading the page you'll need to examine the network traffic (e.g. with + * FireBug), keeping an eye on the GET requests for cachingtest.js and it's + * cache headers. + * + * @since + * @author Vaadin Ltd + */ +public class PublishedFileHandlerCaching extends AbstractTestUI { + + /** + * generated serialVersionUID + */ + private static final long serialVersionUID = 2275457343547688505L; + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server. + * VaadinRequest) + */ + @Override + protected void setup(VaadinRequest request) { + addComponent(new CachingJavaScriptComponent()); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription() + */ + @Override + protected String getTestDescription() { + return "Test that PublishedFileHandler includes appropriate cache headers."; + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber() + */ + @Override + protected Integer getTicketNumber() { + return new Integer(13574); + } + +} diff --git a/uitest/src/com/vaadin/tests/resources/cachingtest.js b/uitest/src/com/vaadin/tests/resources/cachingtest.js new file mode 100644 index 0000000000..f948e680ad --- /dev/null +++ b/uitest/src/com/vaadin/tests/resources/cachingtest.js @@ -0,0 +1,6 @@ +/** + * Used for testing cache header behavior. + */ + +function com_vaadin_tests_resources_CachingJavaScriptComponent() { +}
\ No newline at end of file |