blob: 7cf66d5fcf9ef4228f8a596377362341e20e4c26 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
/*
@VaadinApache2LicenseForJavaFiles@
*/
package com.vaadin.terminal.gwt.server;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletResponse;
import com.vaadin.Application;
import com.vaadin.terminal.ApplicationResource;
import com.vaadin.terminal.DownloadStream;
import com.vaadin.terminal.RequestHandler;
import com.vaadin.terminal.WrappedRequest;
import com.vaadin.terminal.WrappedResponse;
public class ApplicationResourceHandler implements RequestHandler {
private static final Pattern APP_RESOURCE_PATTERN = Pattern
.compile("^/?APP/(\\d+)/.*");
public boolean handleRequest(Application application,
WrappedRequest request, WrappedResponse response)
throws IOException {
// Check for application resources
String requestPath = request.getRequestPathInfo();
if (requestPath == null) {
return false;
}
Matcher resourceMatcher = APP_RESOURCE_PATTERN.matcher(requestPath);
if (resourceMatcher.matches()) {
ApplicationResource resource = application
.getResource(resourceMatcher.group(1));
if (resource != null) {
DownloadStream stream = resource.getStream();
if (stream != null) {
stream.setCacheTime(resource.getCacheTime());
stream.writeTo(response);
return true;
}
}
// We get here if the url looks like an application resource but no
// resource can be served
response.sendError(HttpServletResponse.SC_NOT_FOUND,
request.getRequestPathInfo() + " can not be found");
return true;
}
return false;
}
}
|