Author: nbelaevski
Date: 2008-11-13 14:47:56 -0500 (Thu, 13 Nov 2008)
New Revision: 11152
Modified:
trunk/framework/test/src/main/java/org/ajax4jsf/tests/AbstractAjax4JsfTestCase.java
Log:
AbstractAjax4JsfTestCase: implemented possibility to return web resources from context CL
Modified:
trunk/framework/test/src/main/java/org/ajax4jsf/tests/AbstractAjax4JsfTestCase.java
===================================================================
---
trunk/framework/test/src/main/java/org/ajax4jsf/tests/AbstractAjax4JsfTestCase.java 2008-11-13
16:39:24 UTC (rev 11151)
+++
trunk/framework/test/src/main/java/org/ajax4jsf/tests/AbstractAjax4JsfTestCase.java 2008-11-13
19:47:56 UTC (rev 11152)
@@ -24,6 +24,7 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
@@ -387,8 +388,9 @@
webConnection = new MockWebConnection(webClient) {
public WebResponse getResponse(WebRequestSettings settings)
throws IOException {
- String resourceKey =
WebXml.getInstance(facesContext).getFacesResourceKey(settings.getURL().getFile().substring(
- request.getContextPath().length()));
+ String resourcePath = settings.getURL().getFile().substring(
+ request.getContextPath().length());
+ String resourceKey =
WebXml.getInstance(facesContext).getFacesResourceKey(resourcePath);
if (resourceKey != null) {
InternetResourceBuilder resourceBuilder = InternetResourceBuilder.getInstance();
@@ -420,7 +422,54 @@
};
} else {
- return super.getResponse(settings);
+ WebResponse webResponse = super.getResponse(settings);
+ if (webResponse == null || webResponse.getStatusCode() ==
HttpServletResponse.SC_NOT_FOUND) {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ if (resourcePath.length() != 0) {
+ URL url = classLoader.getResource(resourcePath);
+ if (url == null) {
+ char charAt = resourcePath.charAt(0);
+ String alternatePath = charAt == '/' ? resourcePath.substring(1) :
"/" + resourcePath;
+
+ url = classLoader.getResource(alternatePath);
+ }
+
+ if (url != null) {
+ final String extension;
+ int extensionIndex = resourcePath.lastIndexOf('.');
+
+ if (extensionIndex != -1) {
+ extension = resourcePath.substring(extensionIndex + 1);
+ } else {
+ extension = null;
+ }
+
+ return new WebResponseImpl(
+ new WebResponseData(
+ url.openStream(),
+ HttpServletResponse.SC_OK,
+ "OK",
+ Collections.EMPTY_LIST),
+ settings.getURL(),
+ settings.getSubmitMethod(),
+ 0) {
+
+ public String getContentType() {
+ if ("js".equals(extension)) {
+ return "text/javascript";
+ } else if ("css".equals(extension)) {
+ return "text/css";
+ } else {
+ //TODO return text/plain for unknown types?
+ return "text/html";
+ }
+ }
+ };
+ }
+ }
+ }
+
+ return webResponse;
}
}
};
Show replies by date