You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2012/03/21 21:22:02 UTC

svn commit: r1303556 - in /myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src: main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/

Author: gpetracek
Date: Wed Mar 21 20:22:02 2012
New Revision: 1303556

URL: http://svn.apache.org/viewvc?rev=1303556&view=rev
Log:
EXTCDI-277 custom path with nested view-config

Modified:
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/DefaultViewConfigExtractor.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ExtractedViewConfigDefinitionEntry.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/SimpleNestedViewConfig.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/ViewConfigTest.java

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/DefaultViewConfigExtractor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/DefaultViewConfigExtractor.java?rev=1303556&r1=1303555&r2=1303556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/DefaultViewConfigExtractor.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/DefaultViewConfigExtractor.java Wed Mar 21 20:22:02 2012
@@ -194,8 +194,7 @@ class DefaultViewConfigExtractor impleme
                         scannedViewConfig
                                 .setSimpleClassNameToPathMapping(currentClass.getSimpleName(), currentBasePath);
                     }
-
-                    if (rootPath.equals(scannedViewConfig.getBasePath()))
+                    else if (rootPath.equals(scannedViewConfig.getBasePath()))
                     {
                         scannedViewConfig.setBasePath(currentBasePath);
                     }

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ExtractedViewConfigDefinitionEntry.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ExtractedViewConfigDefinitionEntry.java?rev=1303556&r1=1303555&r2=1303556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ExtractedViewConfigDefinitionEntry.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ExtractedViewConfigDefinitionEntry.java Wed Mar 21 20:22:02 2012
@@ -238,38 +238,35 @@ class ExtractedViewConfigDefinitionEntry
         StringBuilder viewId = new StringBuilder(this.basePath);
         if(this.pageName.equals(""))
         {
+            String className = getNestedConfigAsPath();
+            className = createPageName(className);
+            viewId.append(className);
+        }
+        //nested classes with manually defined page name and shared basePath
+        else if(!this.simpleClassNameToPathMapping.isEmpty())
+        {
             String className = this.viewDefinitionClass.getName();
 
-            //MyClass$MyInnerClass will be converted to /MyClass/MyInnerClass
-            if(className.contains("$") && ".".equals(this.basePath))
-            {
-                this.basePath = "";
-                className = className.substring(className.lastIndexOf('.') + 1);
-                className = convertToPathSyntax(className, this.simpleClassNameToPathMapping);
-            }
-            else if(className.contains("$"))
+            //custom base-name for a config (overrides inherited base-path)
+            if ("/".endsWith(this.basePath) && this.simpleClassNameToPathMapping.size() == 1)
             {
-                className = className.substring(className.lastIndexOf('$') + 1);
+                className = "/" + this.simpleClassNameToPathMapping.get(this.viewDefinitionClass.getSimpleName()) + "/";
             }
             else
             {
                 className = className.substring(className.lastIndexOf('.') + 1);
+                className = convertToPathSyntax(className, this.simpleClassNameToPathMapping);
+                className = createPageName(className);
+                className = className.substring(0, className.lastIndexOf('/') + 1);
             }
-            className = createPageName(className);
+            className += this.pageName;
             viewId.append(className);
         }
-        //nested classes with manually defined page name and shared basePath
-        else if(!this.simpleClassNameToPathMapping.isEmpty())
+        //only a custom name for a nested config
+        else if(!this.pageName.equals("") && this.viewDefinitionClass.getName().contains("$"))
         {
-            String className = this.viewDefinitionClass.getName();
-
-            this.basePath = "";
-            className = className.substring(className.lastIndexOf('.') + 1);
-            className = convertToPathSyntax(className, this.simpleClassNameToPathMapping);
-            className = createPageName(className);
-            className = className.substring(0, className.lastIndexOf('/') + 1);
-            className += this.pageName;
-            viewId.append(className);
+            String className = getNestedConfigAsPath();
+            viewId.append(className.substring(0, className.lastIndexOf("/") + 1)).append(this.pageName);
         }
         else
         {
@@ -295,6 +292,27 @@ class ExtractedViewConfigDefinitionEntry
         return result;
     }
 
+    private String getNestedConfigAsPath()
+    {
+        String className = this.viewDefinitionClass.getName();
+
+        //MyClass$MyInnerClass will be converted to /MyClass/MyInnerClass
+        if(className.contains("$") && ".".equals(this.basePath))
+        {
+            className = className.substring(className.lastIndexOf('.') + 1);
+            className = convertToPathSyntax(className, this.simpleClassNameToPathMapping);
+        }
+        else if(className.contains("$"))
+        {
+            className = className.substring(className.lastIndexOf('$') + 1);
+        }
+        else
+        {
+            className = className.substring(className.lastIndexOf('.') + 1);
+        }
+        return className;
+    }
+
     protected String createPageName(String className)
     {
         className = className.substring(0, 1).toLowerCase() + className.substring(1);

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/SimpleNestedViewConfig.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/SimpleNestedViewConfig.java?rev=1303556&r1=1303555&r2=1303556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/SimpleNestedViewConfig.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/SimpleNestedViewConfig.java Wed Mar 21 20:22:02 2012
@@ -35,4 +35,31 @@ abstract class SimpleNestedViewConfig im
     public class Page2 extends SimpleNestedViewConfig
     {
     }
+
+    public class SubFolder extends SimpleNestedViewConfig
+    {
+        @Page(name = "customPage3")
+        public class Page3 extends SimpleNestedViewConfig
+        {
+        }
+
+        @Page(basePath = "my", name = "customPage4")
+        public class Page4 extends SimpleNestedViewConfig
+        {
+        }
+    }
+
+    @Page(basePath = "subFolder") //overridden
+    public class SubFolder2 extends SimpleNestedViewConfig
+    {
+        @Page(basePath = "/", name = "customPage5")
+        public class Page5 extends SimpleNestedViewConfig
+        {
+        }
+
+        @Page(basePath = "my", name = "customPage6")
+        public class Page6 extends SimpleNestedViewConfig
+        {
+        }
+    }
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/ViewConfigTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/ViewConfigTest.java?rev=1303556&r1=1303555&r2=1303556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/ViewConfigTest.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/jsf/test/impl/config/view/ViewConfigTest.java Wed Mar 21 20:22:02 2012
@@ -77,10 +77,26 @@ public class ViewConfigTest
         viewConfigExtension.addPageDefinition(SimpleNestedViewConfig.Page1.class);
         viewConfigExtension.addPageDefinition(SimpleNestedViewConfig.Page2.class);
 
+        viewConfigExtension.addPageDefinition(SimpleNestedViewConfig.SubFolder.Page3.class);
+        viewConfigExtension.addPageDefinition(SimpleNestedViewConfig.SubFolder.Page4.class);
+
+        viewConfigExtension.addPageDefinition(SimpleNestedViewConfig.SubFolder2.Page5.class);
+        viewConfigExtension.addPageDefinition(SimpleNestedViewConfig.SubFolder2.Page6.class);
+
         assertEquals(ViewConfigCache.getViewConfigDescriptor(SimpleNestedViewConfig.Page1.class).getViewId(),
                                                        "/simpleNestedViewConfig/page1.xhtml");
         assertEquals(ViewConfigCache.getViewConfigDescriptor(SimpleNestedViewConfig.Page2.class).getViewId(),
                                                        "/simpleNestedViewConfig/page2.xhtml");
+
+        assertEquals(ViewConfigCache.getViewConfigDescriptor(SimpleNestedViewConfig.SubFolder.Page3.class).getViewId(),
+                                                       "/simpleNestedViewConfig/subFolder/customPage3.xhtml");
+        assertEquals(ViewConfigCache.getViewConfigDescriptor(SimpleNestedViewConfig.SubFolder.Page4.class).getViewId(),
+                "/my/customPage4.xhtml");
+
+        assertEquals(ViewConfigCache.getViewConfigDescriptor(SimpleNestedViewConfig.SubFolder2.Page5.class).getViewId(),
+                                                       "/customPage5.xhtml");
+        assertEquals(ViewConfigCache.getViewConfigDescriptor(SimpleNestedViewConfig.SubFolder2.Page6.class).getViewId(),
+                "/my/customPage6.xhtml");
     }
 
     @Test