You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2004/09/20 22:13:54 UTC
svn commit: rev 46947 - in cocoon/branches/BRANCH_2_1_X: lib src/blocks/faces/conf src/blocks/faces/java/org/apache/cocoon/faces/context src/blocks/faces/lib src/blocks/faces/samples
Author: vgritsenko
Date: Mon Sep 20 13:13:51 2004
New Revision: 46947
Added:
cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-20040920m.jar
- copied, changed from rev 46945, cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-20040916m.jar
cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-jsf-api-20040920m.jar
- copied, changed from rev 46945, cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-jsf-api-20040916.jar
Removed:
cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-20040916m.jar
cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-jsf-api-20040916.jar
Modified:
cocoon/branches/BRANCH_2_1_X/lib/jars.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/faces/conf/faces-listener.xweb
cocoon/branches/BRANCH_2_1_X/src/blocks/faces/java/org/apache/cocoon/faces/context/ExternalContextImpl.java
cocoon/branches/BRANCH_2_1_X/src/blocks/faces/samples/samples.xml
Log:
Emulate prefix servlet mapping for faces context.
Works out of the box with Sun's JSF 1.1_01 RI, requires less patching
for myfaces, works with buggy websphere.
Modified: cocoon/branches/BRANCH_2_1_X/lib/jars.xml
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/lib/jars.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/lib/jars.xml Mon Sep 20 13:13:51 2004
@@ -1140,7 +1140,7 @@
specification.
</description>
<used-by>Faces block</used-by>
- <lib>faces/lib/myfaces-20040916m.jar</lib>
+ <lib>faces/lib/myfaces-20040920m.jar</lib>
<homepage>http://www.myfaces.org/</homepage>
</file>
@@ -1151,7 +1151,7 @@
specification.
</description>
<used-by>Faces block</used-by>
- <lib>faces/lib/myfaces-jsf-api-20040916.jar</lib>
+ <lib>faces/lib/myfaces-jsf-api-20040920m.jar</lib>
<homepage>http://www.myfaces.org/</homepage>
</file>
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/faces/conf/faces-listener.xweb
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/faces/conf/faces-listener.xweb (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/faces/conf/faces-listener.xweb Mon Sep 20 13:13:51 2004
@@ -19,6 +19,10 @@
<xweb xpath="/web-app" unless="listener" insert-before="node()[1]">
<listener>
+ <!--
+ - JavaServer Faces configuration loader. For Sun's RI implementation use
+ - com.sun.faces.config.ConfigureListener class.
+ -->
<listener-class>net.sourceforge.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/faces/java/org/apache/cocoon/faces/context/ExternalContextImpl.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/faces/java/org/apache/cocoon/faces/context/ExternalContextImpl.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/faces/java/org/apache/cocoon/faces/context/ExternalContextImpl.java Mon Sep 20 13:13:51 2004
@@ -66,7 +66,7 @@
public String encodeActionURL(String url) {
FacesRedirector redirector = (FacesRedirector)request.getAttribute(FacesAction.REQUEST_REDIRECTOR_ATTRIBUTE);
if (redirector == null) {
- throw new RuntimeException("Can not dispatch to <" + url + ">: Redirector missing.");
+ throw new RuntimeException("Can not encode action URL <" + url + ">: Redirector missing.");
}
return redirector.encodeActionURL(url);
@@ -79,7 +79,7 @@
public String encodeResourceURL(String url) {
FacesRedirector redirector = (FacesRedirector)request.getAttribute(FacesAction.REQUEST_REDIRECTOR_ATTRIBUTE);
if (redirector == null) {
- throw new RuntimeException("Can not dispatch to <" + url + ">: Redirector missing.");
+ throw new RuntimeException("Can not encode resource URL <" + url + ">: Redirector missing.");
}
return redirector.encodeResourceURL(url);
@@ -156,11 +156,45 @@
}
public String getRequestPathInfo() {
- return this.request.getPathInfo();
+ // HACK (VG):
+ // Emulate servlet prefix mapping. This allows to bypass suffix mapping calculations,
+ // as well as helps with WebSphere servlet container bugs (it treats default servlet
+ // as prefix mapped servlet).
+
+ // JSF Specification, 2.2.1 Restore View:
+ // o Derive the view identifier that corresponds to this request, as follows:
+ // o If prefix mapping (such as ?/faces/*?) is used for FacesServlet, the viewId
+ // is set from the extra path information of the request URI.
+
+ StringBuffer path = new StringBuffer();
+
+ boolean slash = false;
+ String s = request.getServletPath();
+ if (s != null) {
+ path.append(s);
+ slash = s.endsWith("/");
+ }
+
+ s = request.getPathInfo();
+ if (s != null) {
+ if (s.startsWith("/")) {
+ if (slash){
+ s = s.substring(1);
+ }
+ } else {
+ if (!slash) {
+ path.append('/');
+ }
+ }
+ path.append(s);
+ }
+
+ return path.toString();
}
public String getRequestServletPath() {
- return this.request.getServletPath();
+ // See #getRequestPathInfo
+ return "";
}
public URL getResource(String resource) throws MalformedURLException {
@@ -210,7 +244,7 @@
public void redirect(String url) throws IOException {
FacesRedirector redirector = (FacesRedirector)request.getAttribute(FacesAction.REQUEST_REDIRECTOR_ATTRIBUTE);
if (redirector == null) {
- throw new IOException("Can not dispatch to " + url + ": Redirector missing.");
+ throw new IOException("Can not redirect to <" + url + ">: Redirector missing.");
}
redirector.redirect(url);
Copied: cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-20040920m.jar (from rev 46945, cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-20040916m.jar)
==============================================================================
Binary files. No diff available.
Copied: cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-jsf-api-20040920m.jar (from rev 46945, cocoon/branches/BRANCH_2_1_X/src/blocks/faces/lib/myfaces-jsf-api-20040916.jar)
==============================================================================
Binary files. No diff available.
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/faces/samples/samples.xml
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/faces/samples/samples.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/faces/samples/samples.xml Mon Sep 20 13:13:51 2004
@@ -31,9 +31,8 @@
</note>
<note>
Faces block comes with MyFaces JSF implementation with this small patch
- applied. Cocoon Faces block can also be run with Sun (JSF 1.1) and
- IBM implementations (WSAD 5.1.2) if those implementations are patched
- appropriately.
+ applied. Cocoon Faces block can also be run with Sun (JSF 1.1_01) and
+ IBM implementations (WSAD 5.1.2, requires patching).
</note>
<sample name="Patch" href="myfaces-patch.diff">
Patch against MyFaces CVS repository as of 20040916.