You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2013/12/05 17:21:15 UTC
git commit: DELTASPIKE-460 @SkipMetaDataMerge
Updated Branches:
refs/heads/master e1aeb3acb -> 662f458cd
DELTASPIKE-460 @SkipMetaDataMerge
Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/662f458c
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/662f458c
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/662f458c
Branch: refs/heads/master
Commit: 662f458cd725c771362d60a0b913630cf5252cc7
Parents: e1aeb3a
Author: gpetracek <gp...@apache.org>
Authored: Thu Dec 5 17:12:14 2013 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Thu Dec 5 17:12:14 2013 +0100
----------------------------------------------------------------------
.../config/view/metadata/SkipMetaDataMerge.java | 37 +++
.../deltaspike/jsf/api/config/view/Folder.java | 2 +
.../deltaspike/jsf/api/config/view/View.java | 3 +
.../config/view/DefaultConfigNodeConverter.java | 5 +-
.../view/navigation/syntax/uc009/Pages.java | 51 ++++
.../navigation/syntax/uc009/ViewConfigTest.java | 276 +++++++++++++++++++
6 files changed, 372 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/662f458c/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SkipMetaDataMerge.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SkipMetaDataMerge.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SkipMetaDataMerge.java
new file mode 100644
index 0000000..acbf094
--- /dev/null
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SkipMetaDataMerge.java
@@ -0,0 +1,37 @@
+/*
+ * 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.deltaspike.core.api.config.view.metadata;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Target( METHOD )
+@Retention(RUNTIME)
+@Documented
+
+/**
+ * In some cases (e.g. @Folder#name) it doesn't make sense to merge that part with inherited information.
+ */
+public @interface SkipMetaDataMerge
+{
+}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/662f458c/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/Folder.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/Folder.java b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/Folder.java
index 4edfeae..8cac6c5 100644
--- a/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/Folder.java
+++ b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/Folder.java
@@ -19,6 +19,7 @@
package org.apache.deltaspike.jsf.api.config.view;
import org.apache.deltaspike.core.api.config.ConfigResolver;
+import org.apache.deltaspike.core.api.config.view.metadata.SkipMetaDataMerge;
import org.apache.deltaspike.core.api.config.view.metadata.ViewMetaData;
import org.apache.deltaspike.core.spi.config.view.ConfigPreProcessor;
import org.apache.deltaspike.core.spi.config.view.ViewConfigNode;
@@ -53,6 +54,7 @@ public @interface Folder
*
* @return name of the folder
*/
+ @SkipMetaDataMerge
String name() default ".";
/**
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/662f458c/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/View.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/View.java b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/View.java
index 24e3bbe..802ed56 100644
--- a/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/View.java
+++ b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/View.java
@@ -19,6 +19,7 @@
package org.apache.deltaspike.jsf.api.config.view;
import org.apache.deltaspike.core.api.config.ConfigResolver;
+import org.apache.deltaspike.core.api.config.view.metadata.SkipMetaDataMerge;
import org.apache.deltaspike.core.api.config.view.metadata.ViewMetaData;
import org.apache.deltaspike.core.spi.config.view.ConfigPreProcessor;
import org.apache.deltaspike.core.spi.config.view.ViewConfigNode;
@@ -56,6 +57,7 @@ public @interface View
* Allows to specify a custom base-path for the page represented by the view-config
* @return base-path
*/
+ @SkipMetaDataMerge
String basePath() default "";
/**
@@ -63,6 +65,7 @@ public @interface View
*
* @return name of the page
*/
+ @SkipMetaDataMerge
String name() default "";
/**
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/662f458c/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultConfigNodeConverter.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultConfigNodeConverter.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultConfigNodeConverter.java
index d7e6b97..798b5ca 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultConfigNodeConverter.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/config/view/DefaultConfigNodeConverter.java
@@ -21,6 +21,7 @@ package org.apache.deltaspike.jsf.impl.config.view;
import org.apache.deltaspike.core.api.config.ConfigResolver;
import org.apache.deltaspike.core.api.config.view.metadata.Aggregated;
import org.apache.deltaspike.core.api.config.view.ViewConfig;
+import org.apache.deltaspike.core.api.config.view.metadata.SkipMetaDataMerge;
import org.apache.deltaspike.core.api.config.view.metadata.ViewMetaData;
import org.apache.deltaspike.core.api.config.view.metadata.ConfigDescriptor;
import org.apache.deltaspike.core.spi.config.view.ConfigNodeConverter;
@@ -160,7 +161,6 @@ public class DefaultConfigNodeConverter implements ConfigNodeConverter
for (Method annotationMethod : existingMetaData.annotationType().getDeclaredMethods())
{
- //TODO discuss @ExcludeMethod
annotationMethod.setAccessible(true); //TODO
Annotation defaultAnnotation = AnnotationInstanceProvider.of(existingMetaData.annotationType());
@@ -175,7 +175,8 @@ public class DefaultConfigNodeConverter implements ConfigNodeConverter
Object inheritedValue = annotationMethod.invoke(inheritedMetaData);
if (inheritedValue == null /*possible with literal instances*/ ||
- inheritedValue.equals(defaultValue))
+ inheritedValue.equals(defaultValue) ||
+ annotationMethod.isAnnotationPresent(SkipMetaDataMerge.class))
{
values.put(annotationMethod.getName(), defaultValue);
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/662f458c/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/navigation/syntax/uc009/Pages.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/navigation/syntax/uc009/Pages.java b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/navigation/syntax/uc009/Pages.java
new file mode 100644
index 0000000..d8cd006
--- /dev/null
+++ b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/navigation/syntax/uc009/Pages.java
@@ -0,0 +1,51 @@
+/*
+ * 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.deltaspike.test.jsf.impl.config.view.navigation.syntax.uc009;
+
+import org.apache.deltaspike.core.api.config.view.ViewConfig;
+import org.apache.deltaspike.jsf.api.config.view.Folder;
+import org.apache.deltaspike.jsf.api.config.view.View;
+
+@Folder(name = "/") //there are multiple folders which should be grouped by the outermost interface
+interface Pages extends ViewConfig
+{
+ //result: /index.xhtml
+ class Index implements Pages
+ {
+ }
+
+ //result: /admin
+ interface Admin extends Pages
+ {
+ @View
+ class Index implements Admin
+ {
+ }
+ }
+
+ //result: /public
+ @Folder
+ interface Public extends Pages
+ {
+ @View
+ class Index implements Public
+ {
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/662f458c/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/navigation/syntax/uc009/ViewConfigTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/navigation/syntax/uc009/ViewConfigTest.java b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/navigation/syntax/uc009/ViewConfigTest.java
new file mode 100644
index 0000000..17a11cb
--- /dev/null
+++ b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/navigation/syntax/uc009/ViewConfigTest.java
@@ -0,0 +1,276 @@
+/*
+ * 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.deltaspike.test.jsf.impl.config.view.navigation.syntax.uc009;
+
+import org.apache.deltaspike.core.api.config.view.metadata.ConfigDescriptor;
+import org.apache.deltaspike.core.api.config.view.metadata.ViewConfigDescriptor;
+import org.apache.deltaspike.core.api.config.view.metadata.ViewConfigResolver;
+import org.apache.deltaspike.core.spi.config.view.ViewConfigNode;
+import org.apache.deltaspike.jsf.api.config.view.Folder;
+import org.apache.deltaspike.jsf.api.config.view.View;
+import org.apache.deltaspike.jsf.impl.config.view.ViewConfigExtension;
+import org.apache.deltaspike.jsf.impl.config.view.ViewConfigResolverProducer;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ViewConfigTest
+{
+ private ViewConfigExtension viewConfigExtension;
+
+ private ViewConfigResolverProducer viewConfigResolverProducer;
+
+ @Before
+ public void before()
+ {
+ this.viewConfigExtension = new ViewConfigExtension();
+ this.viewConfigResolverProducer = new ViewConfigResolverProducer(this.viewConfigExtension);
+ }
+
+ @After
+ public void after()
+ {
+ this.viewConfigExtension.freeViewConfigCache(null);
+ }
+
+ @Test
+ public void testMetaDataInheritanceInTree()
+ {
+ this.viewConfigExtension.addPageDefinition(Pages.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Index.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Admin.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Admin.Index.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Public.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Public.Index.class);
+
+ ViewConfigNode node = this.viewConfigExtension.findNode(Pages.class);
+
+ Assert.assertNotNull(node);
+ Assert.assertNotNull(node.getParent()); //Root
+ Assert.assertNull(node.getParent().getParent());
+
+ Assert.assertNotNull(node.getChildren());
+ Assert.assertEquals(3, node.getChildren().size());
+
+ Assert.assertNotNull(node.getMetaData());
+ Assert.assertEquals(1, node.getMetaData().size());
+
+ Assert.assertNotNull(node.getInheritedMetaData());
+ Assert.assertEquals(0, node.getInheritedMetaData().size());
+
+
+ node = this.viewConfigExtension.findNode(Pages.Index.class);
+
+ Assert.assertNotNull(node);
+ Assert.assertNotNull(node.getParent()); //Pages
+ Assert.assertNotNull(node.getParent().getParent()); //Root
+ Assert.assertNull(node.getParent().getParent().getParent());
+
+ Assert.assertNotNull(node.getChildren());
+ Assert.assertEquals(0, node.getChildren().size());
+
+ Assert.assertNotNull(node.getMetaData());
+ Assert.assertEquals(0, node.getMetaData().size());
+
+ Assert.assertNotNull(node.getInheritedMetaData());
+ Assert.assertEquals(0, node.getInheritedMetaData().size());
+
+
+ node = this.viewConfigExtension.findNode(Pages.Admin.class);
+
+ Assert.assertNotNull(node);
+ Assert.assertNotNull(node.getParent()); //Admin
+ Assert.assertNotNull(node.getParent().getParent()); //Root
+ Assert.assertNull(node.getParent().getParent().getParent());
+
+ Assert.assertNotNull(node.getChildren());
+ Assert.assertEquals(1, node.getChildren().size());
+
+ Assert.assertNotNull(node.getMetaData());
+ Assert.assertEquals(0, node.getMetaData().size());
+
+ Assert.assertNotNull(node.getInheritedMetaData());
+ Assert.assertEquals(0, node.getInheritedMetaData().size());
+
+
+ node = this.viewConfigExtension.findNode(Pages.Admin.Index.class);
+
+ Assert.assertNotNull(node);
+ Assert.assertNotNull(node.getParent()); //Admin
+ Assert.assertNotNull(node.getParent().getParent()); //Pages
+ Assert.assertNotNull(node.getParent().getParent().getParent()); //Root
+ Assert.assertNull(node.getParent().getParent().getParent().getParent());
+
+ Assert.assertNotNull(node.getChildren());
+ Assert.assertEquals(0, node.getChildren().size());
+
+ Assert.assertNotNull(node.getMetaData());
+ Assert.assertEquals(1, node.getMetaData().size());
+ Assert.assertEquals(View.NavigationMode.DEFAULT, ((View) node.getMetaData().iterator().next()).navigation());
+ Assert.assertEquals(View.ViewParameterMode.DEFAULT, ((View) node.getMetaData().iterator().next()).viewParams());
+ Assert.assertEquals("", ((View) node.getMetaData().iterator().next()).name());
+ Assert.assertEquals(View.Extension.DEFAULT, ((View) node.getMetaData().iterator().next()).extension());
+
+ Assert.assertNotNull(node.getInheritedMetaData());
+ Assert.assertEquals(0, node.getInheritedMetaData().size());
+
+
+ Assert.assertNotNull(node.getInheritedMetaData());
+ Assert.assertEquals(0, node.getInheritedMetaData().size());
+
+
+ node = this.viewConfigExtension.findNode(Pages.Public.class);
+
+ Assert.assertNotNull(node);
+ Assert.assertNotNull(node.getParent()); //Public
+ Assert.assertNotNull(node.getParent().getParent()); //Root
+ Assert.assertNull(node.getParent().getParent().getParent());
+
+ Assert.assertNotNull(node.getChildren());
+ Assert.assertEquals(1, node.getChildren().size());
+
+ Assert.assertNotNull(node.getMetaData());
+ Assert.assertEquals(1, node.getMetaData().size());
+ Assert.assertEquals(Folder.class, node.getMetaData().iterator().next().annotationType());
+
+ Assert.assertNotNull(node.getInheritedMetaData());
+ Assert.assertEquals(0, node.getInheritedMetaData().size());
+
+
+ node = this.viewConfigExtension.findNode(Pages.Public.Index.class);
+
+ Assert.assertNotNull(node);
+ Assert.assertNotNull(node.getParent()); //Public
+ Assert.assertNotNull(node.getParent().getParent()); //Pages
+ Assert.assertNotNull(node.getParent().getParent().getParent()); //Root
+ Assert.assertNull(node.getParent().getParent().getParent().getParent());
+
+ Assert.assertNotNull(node.getChildren());
+ Assert.assertEquals(0, node.getChildren().size());
+
+ Assert.assertNotNull(node.getMetaData());
+ Assert.assertEquals(1, node.getMetaData().size());
+ Assert.assertEquals(View.NavigationMode.DEFAULT, ((View) node.getMetaData().iterator().next()).navigation());
+ Assert.assertEquals(View.ViewParameterMode.DEFAULT, ((View) node.getMetaData().iterator().next()).viewParams());
+ Assert.assertEquals("", ((View) node.getMetaData().iterator().next()).name());
+ Assert.assertEquals(View.Extension.DEFAULT, ((View) node.getMetaData().iterator().next()).extension());
+
+ Assert.assertNotNull(node.getInheritedMetaData());
+ Assert.assertEquals(0, node.getInheritedMetaData().size());
+
+
+ Assert.assertNotNull(node.getInheritedMetaData());
+ Assert.assertEquals(0, node.getInheritedMetaData().size());
+
+ }
+
+ @Test
+ public void testMetaDataInheritanceInViewConfig()
+ {
+ this.viewConfigExtension.addPageDefinition(Pages.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Index.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Admin.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Admin.Index.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Public.class);
+ this.viewConfigExtension.addPageDefinition(Pages.Public.Index.class);
+
+ ViewConfigResolver viewConfigResolver = this.viewConfigResolverProducer.createViewConfigResolver();
+ ConfigDescriptor<?> configDescriptor = viewConfigResolver.getConfigDescriptor(Pages.class);
+
+ Assert.assertNotNull(configDescriptor);
+ Assert.assertNotNull(configDescriptor.getConfigClass());
+ Assert.assertEquals(Pages.class, configDescriptor.getConfigClass());
+
+ Assert.assertNotNull(configDescriptor.getMetaData());
+ Assert.assertEquals(1, configDescriptor.getMetaData().size());
+ Assert.assertEquals(1, configDescriptor.getMetaData(Folder.class).size());
+ Assert.assertEquals("/", configDescriptor.getMetaData(Folder.class).iterator().next().name());
+
+
+ ViewConfigDescriptor viewConfigDescriptor = viewConfigResolver.getViewConfigDescriptor(Pages.Index.class);
+
+ Assert.assertNotNull(viewConfigDescriptor);
+ Assert.assertEquals("/index.xhtml", viewConfigDescriptor.getViewId());
+ Assert.assertEquals(Pages.Index.class, viewConfigDescriptor.getConfigClass());
+
+ Assert.assertNotNull(viewConfigDescriptor.getMetaData());
+ Assert.assertEquals(1, viewConfigDescriptor.getMetaData().size());
+ Assert.assertEquals(View.NavigationMode.FORWARD, viewConfigDescriptor.getMetaData(View.class).iterator().next().navigation());
+ Assert.assertEquals(View.ViewParameterMode.EXCLUDE, viewConfigDescriptor.getMetaData(View.class).iterator().next().viewParams());
+ Assert.assertEquals("index", viewConfigDescriptor.getMetaData(View.class).iterator().next().name());
+ Assert.assertEquals("xhtml", viewConfigDescriptor.getMetaData(View.class).iterator().next().extension());
+ Assert.assertEquals("/", viewConfigDescriptor.getMetaData(View.class).iterator().next().basePath());
+
+
+ configDescriptor = viewConfigResolver.getConfigDescriptor(Pages.Admin.class);
+
+ Assert.assertNotNull(configDescriptor);
+ Assert.assertNotNull(configDescriptor.getConfigClass());
+ Assert.assertEquals(Pages.Admin.class, configDescriptor.getConfigClass());
+
+ Assert.assertNotNull(configDescriptor.getMetaData());
+ Assert.assertEquals(1, configDescriptor.getMetaData().size());
+ Assert.assertEquals(1, configDescriptor.getMetaData(Folder.class).size());
+ Assert.assertEquals("/admin/", configDescriptor.getMetaData(Folder.class).iterator().next().name());
+
+
+ viewConfigDescriptor = viewConfigResolver.getViewConfigDescriptor(Pages.Admin.Index.class);
+
+ Assert.assertNotNull(viewConfigDescriptor);
+ Assert.assertEquals("/admin/index.xhtml", viewConfigDescriptor.getViewId());
+ Assert.assertEquals(Pages.Admin.Index.class, viewConfigDescriptor.getConfigClass());
+
+ Assert.assertNotNull(viewConfigDescriptor.getMetaData());
+ Assert.assertEquals(1, viewConfigDescriptor.getMetaData().size());
+ Assert.assertEquals(View.NavigationMode.FORWARD, viewConfigDescriptor.getMetaData(View.class).iterator().next().navigation());
+ Assert.assertEquals(View.ViewParameterMode.EXCLUDE, viewConfigDescriptor.getMetaData(View.class).iterator().next().viewParams());
+ Assert.assertEquals("index", viewConfigDescriptor.getMetaData(View.class).iterator().next().name());
+ Assert.assertEquals("xhtml", viewConfigDescriptor.getMetaData(View.class).iterator().next().extension());
+ Assert.assertEquals("/admin/", viewConfigDescriptor.getMetaData(View.class).iterator().next().basePath());
+
+
+ configDescriptor = viewConfigResolver.getConfigDescriptor(Pages.Public.class);
+
+ Assert.assertNotNull(configDescriptor);
+ Assert.assertNotNull(configDescriptor.getConfigClass());
+ Assert.assertEquals(Pages.Public.class, configDescriptor.getConfigClass());
+
+ Assert.assertNotNull(configDescriptor.getMetaData());
+ Assert.assertEquals(1, configDescriptor.getMetaData().size());
+ Assert.assertEquals(1, configDescriptor.getMetaData(Folder.class).size());
+ Assert.assertEquals("/public/", configDescriptor.getMetaData(Folder.class).iterator().next().name());
+
+
+ viewConfigDescriptor = viewConfigResolver.getViewConfigDescriptor(Pages.Public.Index.class);
+
+ Assert.assertNotNull(viewConfigDescriptor);
+ Assert.assertEquals("/public/index.xhtml", viewConfigDescriptor.getViewId());
+ Assert.assertEquals(Pages.Public.Index.class, viewConfigDescriptor.getConfigClass());
+
+ Assert.assertNotNull(viewConfigDescriptor.getMetaData());
+ Assert.assertEquals(1, viewConfigDescriptor.getMetaData().size());
+ Assert.assertEquals(View.NavigationMode.FORWARD, viewConfigDescriptor.getMetaData(View.class).iterator().next().navigation());
+ Assert.assertEquals(View.ViewParameterMode.EXCLUDE, viewConfigDescriptor.getMetaData(View.class).iterator().next().viewParams());
+ Assert.assertEquals("index", viewConfigDescriptor.getMetaData(View.class).iterator().next().name());
+ Assert.assertEquals("xhtml", viewConfigDescriptor.getMetaData(View.class).iterator().next().extension());
+ Assert.assertEquals("/public/", viewConfigDescriptor.getMetaData(View.class).iterator().next().basePath());
+
+ }
+}