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