You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/08/03 19:29:58 UTC
svn commit: r981982 - in /myfaces/core/trunk/impl/src:
main/java/org/apache/myfaces/lifecycle/
test/java/org/apache/myfaces/lifecycle/
test/resources/org/apache/myfaces/lifecycle/
Author: lu4242
Date: Tue Aug 3 17:29:58 2010
New Revision: 981982
URL: http://svn.apache.org/viewvc?rev=981982&view=rev
Log:
MYFACES-2856 Unnecesary calls to checkResourceExists found on DefaultViewHandlerSupport and DefaultRestoreViewSupport
Added:
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport2Test.java
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view1.jsp
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view2.xhtml
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java?rev=981982&r1=981981&r2=981982&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java Tue Aug 3 17:29:58 2010
@@ -335,29 +335,45 @@ public class DefaultRestoreViewSupport i
// forced facelets mappings did not match or there were no entries in faceletsViewMappings array
if(checkResourceExists(context,candidateViewId))
return candidateViewId;
-
+
}
//jsp suffixes didn't match, try facelets suffix
String faceletsDefaultSuffix = this.getFaceletsContextSuffix(context);
- StringBuilder builder = new StringBuilder(requestViewId);
-
- if (extensionPos > -1 && extensionPos > slashPos)
+ if (faceletsDefaultSuffix != null)
{
- builder.replace(extensionPos, requestViewId.length(), faceletsDefaultSuffix);
+ for (String defaultSuffix : jspDefaultSuffixes)
+ {
+ if (faceletsDefaultSuffix.equals(defaultSuffix))
+ {
+ faceletsDefaultSuffix = null;
+ break;
+ }
+ }
}
- else
+ if (faceletsDefaultSuffix != null)
{
- builder.append(faceletsDefaultSuffix);
+ StringBuilder builder = new StringBuilder(requestViewId);
+
+ if (extensionPos > -1 && extensionPos > slashPos)
+ {
+ builder.replace(extensionPos, requestViewId.length(), faceletsDefaultSuffix);
+ }
+ else
+ {
+ builder.append(faceletsDefaultSuffix);
+ }
+
+ String candidateViewId = builder.toString();
+ if(checkResourceExists(context,candidateViewId))
+ return candidateViewId;
}
-
- String candidateViewId = builder.toString();
- if(checkResourceExists(context,candidateViewId))
- return candidateViewId;
+ // Otherwise, if a physical resource exists with the name requestViewId let that value be viewId.
if(checkResourceExists(context,requestViewId))
return requestViewId;
+ //Otherwise return null.
return null;
}
@@ -368,7 +384,7 @@ public class DefaultRestoreViewSupport i
if (context.getExternalContext().getResource(viewId) != null)
{
return true;
- }
+ }
}
catch(MalformedURLException e)
{
Added: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport2Test.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport2Test.java?rev=981982&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport2Test.java (added)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport2Test.java Tue Aug 3 17:29:58 2010
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.myfaces.lifecycle;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.net.URI;
+import java.net.URL;
+
+import org.apache.myfaces.test.base.junit4.AbstractJsfTestCase;
+import org.junit.Test;
+import org.testng.Assert;
+
+public class DefaultRestoreViewSupport2Test extends AbstractJsfTestCase
+{
+ private final String filePath = this.getDirectory();
+
+ @Override
+ protected void setUpServletObjects() throws Exception
+ {
+ URI context = this.getContext();
+ super.setUpServletObjects();
+ servletContext.setDocumentRoot(new File(context));
+ }
+
+ private String getDirectory()
+ {
+ return this.getClass().getName().substring(0,
+ this.getClass().getName().lastIndexOf('.')).replace('.', '/')
+ + "/";
+ }
+
+ protected URI getContext()
+ {
+ try
+ {
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ URL url = cl.getResource(this.filePath);
+ if (url == null)
+ {
+ throw new FileNotFoundException(cl.getResource("").getFile()
+ + this.filePath + " was not found");
+ }
+ else
+ {
+ return new URI(url.toString());
+ }
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Error Initializing Context", e);
+ }
+ }
+
+ @Test
+ public void testDeriveViewId1() throws Exception
+ {
+ request.setPathElements("/testwebapp", "/view1.jsf", null , null);
+
+ DefaultRestoreViewSupport support = new DefaultRestoreViewSupport();
+
+ String derivedViewId = support.deriveViewId(facesContext, "/view1.jsf");
+
+ Assert.assertNotNull(derivedViewId);
+ }
+
+ @Test
+ public void testDeriveViewId2() throws Exception
+ {
+ DefaultRestoreViewSupport support = new DefaultRestoreViewSupport();
+
+ request.setPathElements("/testwebapp", "/faces", "/view1.jsp" , null);
+
+ String derivedViewId = support.deriveViewId(facesContext, "/view1.jsp");
+
+ Assert.assertNotNull(derivedViewId);
+ }
+
+ @Test
+ public void testDeriveViewId3() throws Exception
+ {
+ DefaultRestoreViewSupport support = new DefaultRestoreViewSupport();
+
+ request.setPathElements("/testwebapp", "/view2.jsf", null , null);
+
+ String derivedViewId = support.deriveViewId(facesContext, "/view2.jsf");
+
+ Assert.assertNotNull(derivedViewId);
+ }
+
+ @Test
+ public void testDeriveViewId4() throws Exception
+ {
+ DefaultRestoreViewSupport support = new DefaultRestoreViewSupport();
+
+ request.setPathElements("/testwebapp", "/faces", "/view2.xhtml" , null);
+
+ String derivedViewId = support.deriveViewId(facesContext, "/view2.xhtml");
+
+ Assert.assertNotNull(derivedViewId);
+ }
+
+
+ @Test
+ public void testDeriveViewId5() throws Exception
+ {
+ request.setPathElements("/testwebapp", "/noview1.jsf", null , null);
+
+ DefaultRestoreViewSupport support = new DefaultRestoreViewSupport();
+
+ String derivedViewId = support.deriveViewId(facesContext, "/noview1.jsf");
+
+ Assert.assertNull(derivedViewId);
+ }
+}
Added: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view1.jsp
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view1.jsp?rev=981982&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view1.jsp (added)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view1.jsp Tue Aug 3 17:29:58 2010
@@ -0,0 +1,12 @@
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Insert title here</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file
Added: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view2.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view2.xhtml?rev=981982&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view2.xhtml (added)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/lifecycle/view2.xhtml Tue Aug 3 17:29:58 2010
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Insert title here</title>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file