You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sk...@apache.org on 2008/01/03 22:57:10 UTC
svn commit: r608647 - in
/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces:
application/jsp/JspViewHandlerImpl.java
application/pss/PssJspViewHandlerImpl.java lifecycle/RestoreViewExecutor.java
Author: skitching
Date: Thu Jan 3 13:57:10 2008
New Revision: 608647
URL: http://svn.apache.org/viewvc?rev=608647&view=rev
Log:
Ensure suffix-replacement on URLs works right when the url contains dots, but not in the last part of the url (eg /foo.bar/baz).
See MYFACES-1798
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/pss/PssJspViewHandlerImpl.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java?rev=608647&r1=608646&r2=608647&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java Thu Jan 3 13:57:10 2008
@@ -227,15 +227,16 @@
DebugUtils.assertError(suffix.charAt(0) == '.',
log, "Default suffix must start with a dot!");
if (!viewId.endsWith(suffix)) {
- int dot = viewId.lastIndexOf('.');
- if (dot == -1) {
+ int slashPos = viewId.lastIndexOf('/');
+ int extensionPos = viewId.lastIndexOf('.');
+ if (extensionPos == -1 || extensionPos <= slashPos) {
if (log.isTraceEnabled())
log.trace("Current viewId has no extension, appending default suffix " + suffix);
viewId = viewId + suffix;
}
else {
if (log.isTraceEnabled()) log.trace("Replacing extension of current viewId by suffix " + suffix);
- viewId = viewId.substring(0, dot) + suffix;
+ viewId = viewId.substring(0, extensionPos) + suffix;
}
facesContext.getViewRoot().setViewId(viewId);
}
@@ -346,12 +347,14 @@
return viewId;
}
else {
- int idx = viewId.lastIndexOf(".");
- if (idx >= 0) {
- return viewId.substring(0, idx) + urlpattern;
+ int slashPos = viewId.lastIndexOf('/');
+ int extensionPos = viewId.lastIndexOf('.');
+
+ if (extensionPos == -1 || extensionPos <= slashPos) {
+ return viewId + urlpattern;
}
else {
- return viewId + urlpattern;
+ return viewId.substring(0, extensionPos) + urlpattern;
}
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/pss/PssJspViewHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/pss/PssJspViewHandlerImpl.java?rev=608647&r1=608646&r2=608647&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/pss/PssJspViewHandlerImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/application/pss/PssJspViewHandlerImpl.java Thu Jan 3 13:57:10 2008
@@ -180,8 +180,9 @@
log, "Default suffix must start with a dot!");
if (!viewId.endsWith(suffix))
{
- int dot = viewId.lastIndexOf('.');
- if (dot == -1)
+ int slashPos = viewId.lastIndexOf('/');
+ int extensionPos = viewId.lastIndexOf('.');
+ if (extensionPos == -1 || extensionPos <= slashPos)
{
if (log.isTraceEnabled()) log.trace("Current viewId has no extension, appending default suffix " + suffix);
viewId = viewId + suffix;
@@ -189,7 +190,7 @@
else
{
if (log.isTraceEnabled()) log.trace("Replacing extension of current viewId by suffix " + suffix);
- viewId = viewId.substring(0, dot) + suffix;
+ viewId = viewId.substring(0, extensionPos) + suffix;
}
facesContext.getViewRoot().setViewId(viewId);
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java?rev=608647&r1=608646&r2=608647&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RestoreViewExecutor.java Thu Jan 3 13:57:10 2008
@@ -125,7 +125,7 @@
String viewId = externalContext.getRequestPathInfo(); // getPathInfo
if (viewId == null) {
- // No extra path info found, so it is propably extension mapping
+ // No extra path info found, so it is probably extension mapping
viewId = externalContext.getRequestServletPath(); // getServletPath
DebugUtils.assertError(viewId != null, log,
"RequestServletPath is null, cannot determine viewId of current page.");
@@ -138,12 +138,13 @@
String suffix = defaultSuffix != null ? defaultSuffix : ViewHandler.DEFAULT_SUFFIX;
DebugUtils.assertError(suffix.charAt(0) == '.', log, "Default suffix must start with a dot!");
- int dot = viewId.lastIndexOf('.');
- if (dot == -1) {
+ int slashPos = viewId.lastIndexOf('/');
+ int extensionPos = viewId.lastIndexOf('.');
+ if (extensionPos == -1 || extensionPos <= slashPos) {
log.error("Assumed extension mapping, but there is no extension in " + viewId);
viewId = null;
} else {
- viewId = viewId.substring(0, dot) + suffix;
+ viewId = viewId.substring(0, extensionPos) + suffix;
}
}