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/03/23 13:28:25 UTC

git commit: DELTASPIKE-288 improved javadoc and minor cleanup

Updated Branches:
  refs/heads/master 2d839c526 -> 46879b6be


DELTASPIKE-288 improved javadoc and minor cleanup


Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/46879b6b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/46879b6b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/46879b6b

Branch: refs/heads/master
Commit: 46879b6bea4a3042794fd651f9ed72dbeadf6e79
Parents: 2d839c5
Author: gpetracek <gp...@apache.org>
Authored: Sat Mar 23 13:05:49 2013 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Sat Mar 23 13:24:34 2013 +0100

----------------------------------------------------------------------
 .../core/api/config/view/ViewConfig.java           |    1 +
 .../config/view/metadata/CallbackDescriptor.java   |    4 ++
 .../api/config/view/metadata/ConfigDescriptor.java |    7 ++--
 .../metadata/ExecutableCallbackDescriptor.java     |    3 +-
 .../view/metadata/SimpleCallbackDescriptor.java    |    4 ++-
 .../config/view/metadata/ViewConfigDescriptor.java |    2 +-
 .../config/view/metadata/ViewConfigResolver.java   |    5 +++
 .../view/metadata/annotation/Aggregated.java       |    9 +++--
 .../view/metadata/annotation/DefaultCallback.java  |   27 +++++++++++++-
 .../config/view/controller/ViewControllerBean.java |   24 ++++++------
 .../api/navigation/NavigationParameterContext.java |    3 +-
 .../config/view/DefaultConfigNodeConverter.java    |   20 +++++-----
 .../DefaultNavigationParameterContext.java         |    2 +
 .../deltaspike/jsf/impl/util/SecurityUtils.java    |    4 +-
 .../view/controller/uc003/ViewConfigTest.java      |    1 -
 .../config/view/controller/uc004/TestSecured.java  |   10 +++---
 .../view/controller/uc004/ViewConfigTest.java      |    4 +-
 .../config/view/custom/uc002/CustomMetaData.java   |    1 -
 .../api/authorization/annotation/Secured.java      |   10 +++---
 19 files changed, 91 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/ViewConfig.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/ViewConfig.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/ViewConfig.java
index 2e66aa8..66db48a 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/ViewConfig.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/ViewConfig.java
@@ -20,6 +20,7 @@ package org.apache.deltaspike.core.api.config.view;
 
 /**
  * Marker interface for type-safe view-config classes.
+ * Required for view-configs which represent a (logical) page and optional for the rest (e.g. folder-configs).
  */
 public interface ViewConfig
 {

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/CallbackDescriptor.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/CallbackDescriptor.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/CallbackDescriptor.java
index dd500ff..168b939 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/CallbackDescriptor.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/CallbackDescriptor.java
@@ -29,6 +29,10 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * Basic descriptor for a given class and callback-type.
+ * It finds and caches the method/s of the given class which are annotated with the given callback-type.
+ */
 public abstract class CallbackDescriptor
 {
     protected List<CallbackEntry> callbacks = new ArrayList<CallbackEntry>();

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ConfigDescriptor.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ConfigDescriptor.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ConfigDescriptor.java
index d91b726..ad69b92 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ConfigDescriptor.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ConfigDescriptor.java
@@ -22,7 +22,8 @@ import java.lang.annotation.Annotation;
 import java.util.List;
 
 /**
- * Descriptor for type-safe configs
+ * Base descriptor for all type-safe view-configs which represents the
+ * config-class and meta-data, callbacks,... provided by/bound to this class.
  */
 public interface ConfigDescriptor
 {
@@ -65,7 +66,7 @@ public interface ConfigDescriptor
     /**
      * Callbacks which are configured for the entry and bound to the given meta-data type.
      * @param metaDataType type of the meta-data (e.g. PageBean.class)
-     * @param executorType type of the executor which allows to get a typed result (e.g. Secured.SecuredDescriptor)
+     * @param executorType type of the executor which allows to get a typed result (e.g. Secured.Descriptor)
      * @return descriptor for the callback which also allows to invoke it or null if there is no callback-method
      */
     <T extends ExecutableCallbackDescriptor> T getExecutableCallbackDescriptor(Class<? extends Annotation> metaDataType,
@@ -75,7 +76,7 @@ public interface ConfigDescriptor
      * Callbacks which are configured for the entry and bound to the given meta-data type.
      * @param metaDataType type of the meta-data (e.g. PageBean.class)
      * @param callbackType type of the callback (e.g. PreRenderView.class)
-     * @param executorType type of the executor which allows to get a typed result (e.g. Secured.SecuredDescriptor)
+     * @param executorType type of the executor which allows to get a typed result (e.g. Secured.Descriptor)
      * @return descriptor for the callback which also allows to invoke it or null if there is no callback-method
      */
     <T extends ExecutableCallbackDescriptor> T getExecutableCallbackDescriptor(Class<? extends Annotation> metaDataType,

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ExecutableCallbackDescriptor.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ExecutableCallbackDescriptor.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ExecutableCallbackDescriptor.java
index ff20b0b..417770c 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ExecutableCallbackDescriptor.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ExecutableCallbackDescriptor.java
@@ -26,7 +26,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 /**
- * Provides {@link #execute} only for concrete descriptors, but doesn't expose it (-> can't get used by accident).
+ * Specialized {@link CallbackDescriptor}
+ * which provides {@link #execute} only for concrete descriptors, but doesn't expose it (-> can't get used by accident).
  * Concrete implementations can provide type-safe versions of it, but delegate the final execution to {@link #execute}.
  *
  * @param <R> return type

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SimpleCallbackDescriptor.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SimpleCallbackDescriptor.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SimpleCallbackDescriptor.java
index c4787b2..ae27c13 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SimpleCallbackDescriptor.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/SimpleCallbackDescriptor.java
@@ -22,7 +22,9 @@ import java.lang.annotation.Annotation;
 import java.util.List;
 
 /**
- * For callback-methods without (supported) parameters
+ * {@link ExecutableCallbackDescriptor} for simple callback-methods without (supported) parameters,
+ * which exposes #execute without parameters.
+ *
  * @param <R> return type
  */
 public abstract class SimpleCallbackDescriptor<R> extends ExecutableCallbackDescriptor<R>

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigDescriptor.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigDescriptor.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigDescriptor.java
index 61fa0b4..e12d2d5 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigDescriptor.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigDescriptor.java
@@ -21,7 +21,7 @@ package org.apache.deltaspike.core.api.config.view.metadata;
 import org.apache.deltaspike.core.api.config.view.ViewConfig;
 
 /**
- * Descriptor for view-configs
+ * Descriptor which represents a concrete view (/page).
  */
 public interface ViewConfigDescriptor extends ConfigDescriptor
 {

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigResolver.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigResolver.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigResolver.java
index 9f7c1a0..6b03384 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigResolver.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/ViewConfigResolver.java
@@ -24,6 +24,11 @@ import java.util.List;
 
 /**
  * Resolver for view-configs
+ *
+ * A {@link ConfigDescriptor} can be bound to any config-class (without required base-type).
+ * That's needed e.g. for folder-configs. Whereas {@link ViewConfigDescriptor}s only represent config-classes which
+ * inherit from {@link ViewConfig} which is required for all page-configs.
+ *
  * Use {@link org.apache.deltaspike.core.spi.config.view.ViewConfigRoot} to configure a custom resolver.
  */
 //TODO re-visit name since we also need ConfigDescriptor

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/Aggregated.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/Aggregated.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/Aggregated.java
index 316648c..cb18eca 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/Aggregated.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/Aggregated.java
@@ -23,13 +23,16 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
 import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
-import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 
 /**
- * Can be used to mark annotations as aggregated meta-data.
+ * This annotation can be used to mark annotations as aggregated meta-data.
+ * Core just provides this annotation, but the concrete behaviour is defined by a concrete ConfigNodeConverter.
+ * E.g. DefaultConfigNodeConverter uses the result stored in ViewConfigNode#getInheritedMetaData to replace
+ * default- (/ null-) values of "higher" levels with custom values of "lower" levels,
+ * if #value is 'true'.
  */
-@Target({ ANNOTATION_TYPE, METHOD })
+@Target({ ANNOTATION_TYPE }) //TODO re-visit and discuss method-level (for annotation-attributes)
 @Retention(RUNTIME)
 @Documented
 public @interface Aggregated

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/DefaultCallback.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/DefaultCallback.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/DefaultCallback.java
index 83b94c0..594f3c7 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/DefaultCallback.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/view/metadata/annotation/DefaultCallback.java
@@ -30,8 +30,31 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 @Documented
 
 /**
- * Optional marker if there is only one callback bound to a view-meta-data type.
- * If there are multiple callbacks it's needed to use custom annotations (e.g. see @Secured vs. @PageBean)
+ * A ConfigDescriptor can contain CallbackDescriptors in general as well as ExecutableCallbackDescriptors.
+ * An ExecutableCallbackDescriptor can reference one or multiple callback-method/s. If there is only one callback type,
+ * it's possible to annotate it with @DefaultCallback.
+ * That allows to handle it in an easier fashion
+ * (= without providing a special marker (-annotation) for the target method).
+ *
+ * If there are multiple callback types, it's needed to use custom annotations as marker for the target method.
+ * (e.g. see @Secured vs. @ViewControllerBean)
+ *
+ * ViewConfigDescriptor viewConfigDescriptor = viewConfigResolver.getViewConfigDescriptor(PageConfig.class);
+ * viewConfigDescriptor.getExecutableCallbackDescriptor(
+ *   Secured.class, Secured.Descriptor.class).execute(accessDecisionVoterContext);
+ * is short for
+ * viewConfigDescriptor.getExecutableCallbackDescriptor(
+ *   Secured.class, DefaultCallback.class, Secured.Descriptor.class).execute(accessDecisionVoterContext);
+ *
+ * whereas e.g.
+ * viewConfigDescriptor.getExecutableCallbackDescriptor(
+ *   ViewControllerBean.class, PreRenderView.class, ViewControllerBean.ViewControllerDescriptor.class).execute();
+ * or just
+ * viewConfigDescriptor.getExecutableCallbackDescriptor(
+ * ViewControllerBean.class, PreRenderView.class, SimpleCallbackDescriptor.class).execute();
+ *
+ * are needed to call only @PreRenderView callbacks
+ * (and not the others like @InitView which are also bound to @ViewControllerBean)
  */
 //TODO find a better name
 public @interface DefaultCallback

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/controller/ViewControllerBean.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/controller/ViewControllerBean.java b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/controller/ViewControllerBean.java
index 6f08be5..071eeca 100644
--- a/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/controller/ViewControllerBean.java
+++ b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/config/view/controller/ViewControllerBean.java
@@ -41,7 +41,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 @Retention(RUNTIME)
 @Documented
 
-@ViewMetaData(preProcessor = ViewControllerBean.ViewControllerBeanConfigPreProcessor.class)
+@ViewMetaData(preProcessor = ViewControllerBean.AnnotationPreProcessor.class)
 public @interface ViewControllerBean
 {
     /**
@@ -59,29 +59,29 @@ public @interface ViewControllerBean
     //TODO
     String name() default "";
 
-    public class ViewControllerBeanConfigPreProcessor implements ConfigPreProcessor<ViewControllerBean>
+    class AnnotationPreProcessor implements ConfigPreProcessor<ViewControllerBean>
     {
         @Override
         public ViewControllerBean beforeAddToConfig(ViewControllerBean metaData, ViewConfigNode viewConfigNode)
         {
             viewConfigNode.registerCallbackDescriptors(
-                    ViewControllerBean.class, new ViewControllerDescriptor(metaData.value(), InitView.class));
+                    ViewControllerBean.class, new Descriptor(metaData.value(), InitView.class));
             viewConfigNode.registerCallbackDescriptors(
-                    ViewControllerBean.class, new ViewControllerDescriptor(metaData.value(), PreViewAction.class));
+                    ViewControllerBean.class, new Descriptor(metaData.value(), PreViewAction.class));
             viewConfigNode.registerCallbackDescriptors(
-                    ViewControllerBean.class, new ViewControllerDescriptor(metaData.value(), PreRenderView.class));
+                    ViewControllerBean.class, new Descriptor(metaData.value(), PreRenderView.class));
             viewConfigNode.registerCallbackDescriptors(
-                    ViewControllerBean.class, new ViewControllerDescriptor(metaData.value(), PostRenderView.class));
+                    ViewControllerBean.class, new Descriptor(metaData.value(), PostRenderView.class));
             return metaData; //no change needed
         }
+    }
 
-        //not needed outside
-        private class ViewControllerDescriptor extends SimpleCallbackDescriptor<Void>
+    //not needed outside
+    static class Descriptor extends SimpleCallbackDescriptor<Void>
+    {
+        protected Descriptor(Class beanClass, Class<? extends Annotation> callbackType)
         {
-            protected ViewControllerDescriptor(Class beanClass, Class<? extends Annotation> callbackType)
-            {
-                super(beanClass, callbackType);
-            }
+            super(beanClass, callbackType);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/navigation/NavigationParameterContext.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/navigation/NavigationParameterContext.java b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/navigation/NavigationParameterContext.java
index 98ce8b5..0b84013 100644
--- a/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/navigation/NavigationParameterContext.java
+++ b/deltaspike/modules/jsf/api/src/main/java/org/apache/deltaspike/jsf/api/navigation/NavigationParameterContext.java
@@ -18,12 +18,13 @@
  */
 package org.apache.deltaspike.jsf.api.navigation;
 
+import java.io.Serializable;
 import java.util.Map;
 
 /**
  * Can be used to add parameters dynamically to the final navigation string
  */
-public interface NavigationParameterContext
+public interface NavigationParameterContext extends Serializable
 {
     void addPageParameter(String key, Object value);
 

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/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 ea01fdc..68e98f7 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
@@ -103,16 +103,16 @@ public class DefaultConfigNodeConverter implements ConfigNodeConverter
 
         List<Annotation> mergedResult = new ArrayList<Annotation>();
 
-        for (Annotation currentAnnotation : inheritedMetaData)
+        for (Annotation inheritedAnnotation : inheritedMetaData)
         {
-            ViewMetaData viewMetaData = currentAnnotation.annotationType().getAnnotation(ViewMetaData.class);
+            ViewMetaData viewMetaData = inheritedAnnotation.annotationType().getAnnotation(ViewMetaData.class);
 
             if (viewMetaData == null)
             {
                 continue;
             }
 
-            Aggregated aggregated = currentAnnotation.annotationType().getAnnotation(Aggregated.class);
+            Aggregated aggregated = inheritedAnnotation.annotationType().getAnnotation(Aggregated.class);
 
             if (aggregated == null)
             {
@@ -121,28 +121,28 @@ public class DefaultConfigNodeConverter implements ConfigNodeConverter
 
             if (aggregated.value()) //aggregation for the whole annotation is allowed
             {
-                mergedResult.add(currentAnnotation);
+                mergedResult.add(inheritedAnnotation);
             }
             else
             {
-                Annotation existingMetaData = findInResult(nodeViewMetaData, currentAnnotation);
-                if (existingMetaData == null)
+                Annotation currentNodeMetaData = findInResult(nodeViewMetaData, inheritedAnnotation);
+                if (currentNodeMetaData == null)
                 {
-                    Annotation mergedMetaData = findInResult(mergedResult, currentAnnotation);
+                    Annotation mergedMetaData = findInResult(mergedResult, inheritedAnnotation);
 
                     if (mergedMetaData == null)
                     {
-                        mergedResult.add(currentAnnotation);
+                        mergedResult.add(inheritedAnnotation);
                     }
                     else
                     {
-                        Annotation mergedAnnotation = mergeAnnotationInstance(mergedMetaData, currentAnnotation);
+                        Annotation mergedAnnotation = mergeAnnotationInstance(mergedMetaData, inheritedAnnotation);
                         mergedResult.add(mergedAnnotation);
                     }
                 }
                 else
                 {
-                    Annotation mergedAnnotation = mergeAnnotationInstance(existingMetaData, currentAnnotation);
+                    Annotation mergedAnnotation = mergeAnnotationInstance(currentNodeMetaData, inheritedAnnotation);
                     mergedResult.add(mergedAnnotation);
                 }
             }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/DefaultNavigationParameterContext.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/DefaultNavigationParameterContext.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/DefaultNavigationParameterContext.java
index 050a826..62f1c3e 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/DefaultNavigationParameterContext.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/navigation/DefaultNavigationParameterContext.java
@@ -33,6 +33,8 @@ import java.util.Map;
 @RequestScoped
 public class DefaultNavigationParameterContext implements NavigationParameterContext
 {
+    private static final long serialVersionUID = 6027959542775130265L;
+
     private Map<String, String> parameters = new HashMap<String, String>();
 
     protected DefaultNavigationParameterContext()

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/SecurityUtils.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/SecurityUtils.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/SecurityUtils.java
index baf2022..2fca938 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/SecurityUtils.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/SecurityUtils.java
@@ -59,8 +59,8 @@ public abstract class SecurityUtils
             return;
         }
 
-        Secured.SecuredDescriptor securedDescriptor = viewConfigDescriptor
-                .getExecutableCallbackDescriptor(Secured.class, Secured.SecuredDescriptor.class);
+        Secured.Descriptor securedDescriptor = viewConfigDescriptor
+                .getExecutableCallbackDescriptor(Secured.class, Secured.Descriptor.class);
 
         AccessDecisionState voterState = AccessDecisionState.VOTE_IN_PROGRESS;
         try

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc003/ViewConfigTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc003/ViewConfigTest.java b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc003/ViewConfigTest.java
index f3de9f2..4765daf 100644
--- a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc003/ViewConfigTest.java
+++ b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc003/ViewConfigTest.java
@@ -22,7 +22,6 @@ 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.controller.*;
-import org.apache.deltaspike.jsf.api.config.view.controller.ViewControllerBean;
 import org.apache.deltaspike.jsf.impl.config.view.ViewConfigExtension;
 import org.apache.deltaspike.jsf.impl.config.view.ViewConfigResolverProducer;
 import org.junit.After;

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/TestSecured.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/TestSecured.java b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/TestSecured.java
index 7a3ea00..75c8c1c 100644
--- a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/TestSecured.java
+++ b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/TestSecured.java
@@ -39,12 +39,12 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 @Retention(RUNTIME)
 @Documented
 
-@ViewMetaData(preProcessor = TestSecured.SecuredConfigPreProcessor.class)
+@ViewMetaData(preProcessor = TestSecured.AnnotationPreProcessor.class)
 public @interface TestSecured
 {
     Class<? extends TestAccessDecisionVoter>[] value();
 
-    class SecuredConfigPreProcessor implements ConfigPreProcessor<TestSecured>
+    class AnnotationPreProcessor implements ConfigPreProcessor<TestSecured>
     {
         //for a real implementation see e.g.:
         //org.apache.deltaspike.security.api.authorization.annotation.Secured
@@ -56,16 +56,16 @@ public @interface TestSecured
 
             if (descriptors.isEmpty()) //just for testing different constellations - usually not needed!
             {
-                descriptors.add(new TestSecuredDescriptor(metaData.value(), DefaultCallback.class));
+                descriptors.add(new Descriptor(metaData.value(), DefaultCallback.class));
             }
             return metaData; //no change needed
         }
     }
 
     //can be used from outside to get a typed result
-    static class TestSecuredDescriptor extends ExecutableCallbackDescriptor<Set<String>>
+    static class Descriptor extends ExecutableCallbackDescriptor<Set<String>>
     {
-        public TestSecuredDescriptor(Class[] beanClasses, Class<? extends Annotation> callbackMarker)
+        public Descriptor(Class[] beanClasses, Class<? extends Annotation> callbackMarker)
         {
             super(beanClasses, callbackMarker);
         }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/ViewConfigTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/ViewConfigTest.java b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/ViewConfigTest.java
index ab7ecea..0a99b66 100644
--- a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/ViewConfigTest.java
+++ b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/controller/uc004/ViewConfigTest.java
@@ -121,7 +121,7 @@ public class ViewConfigTest
         ViewConfigNode node = this.viewConfigExtension.findNode(SimplePageConfig.class);
         //add it to avoid in-container test for this simple constellation - usually not needed!
         node.getCallbackDescriptors().put(TestSecured.class, new ArrayList<CallbackDescriptor>() {{
-            add(new TestSecured.TestSecuredDescriptor(new Class[] {SimpleTestAccessDecisionVoter.class}, DefaultCallback.class) {
+            add(new TestSecured.Descriptor(new Class[] {SimpleTestAccessDecisionVoter.class}, DefaultCallback.class) {
                 @Override
                 protected Object getTargetObject(Class targetType)
                 {
@@ -136,7 +136,7 @@ public class ViewConfigTest
         Assert.assertNotNull(viewConfigDescriptor);
         Assert.assertNotNull(viewConfigDescriptor.getCallbackDescriptor(TestSecured.class));
         List<Set<String> /*return type of one callback*/> callbackResult =
-            viewConfigDescriptor.getExecutableCallbackDescriptor(TestSecured.class, TestSecured.TestSecuredDescriptor.class)
+            viewConfigDescriptor.getExecutableCallbackDescriptor(TestSecured.class, TestSecured.Descriptor.class)
                 .execute("param1", "param2");
         Assert.assertNotNull(callbackResult);
         Assert.assertEquals(1, callbackResult.size());

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/custom/uc002/CustomMetaData.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/custom/uc002/CustomMetaData.java b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/custom/uc002/CustomMetaData.java
index 4a97579..f2a8c9d 100644
--- a/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/custom/uc002/CustomMetaData.java
+++ b/deltaspike/modules/jsf/impl/src/test/java/org/apache/deltaspike/test/jsf/impl/config/view/custom/uc002/CustomMetaData.java
@@ -43,6 +43,5 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
     int value1();
 
     //TODO discuss value aggregation for arrays
-    @Aggregated(true)
     int[] value2();
 }

http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/46879b6b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/Secured.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/Secured.java b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/Secured.java
index 35f80c9..07d36e5 100644
--- a/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/Secured.java
+++ b/deltaspike/modules/security/api/src/main/java/org/apache/deltaspike/security/api/authorization/annotation/Secured.java
@@ -53,7 +53,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
 @SecurityBindingType
 
 //don't use @Aggregated(true) - we need to support different error-pages (per folder/page)
-@ViewMetaData(preProcessor = Secured.SecuredConfigPreProcessor.class)
+@ViewMetaData(preProcessor = Secured.AnnotationPreProcessor.class)
 public @interface Secured
 {
     /**
@@ -73,20 +73,20 @@ public @interface Secured
     @Nonbinding
     Class<? extends ViewConfig> errorView() default DefaultErrorView.class;
 
-    class SecuredConfigPreProcessor implements ConfigPreProcessor<Secured>
+    class AnnotationPreProcessor implements ConfigPreProcessor<Secured>
     {
         @Override
         public Secured beforeAddToConfig(Secured metaData, ViewConfigNode viewConfigNode)
         {
-            viewConfigNode.registerCallbackDescriptors(Secured.class, new SecuredDescriptor(metaData.value()));
+            viewConfigNode.registerCallbackDescriptors(Secured.class, new Descriptor(metaData.value()));
             return metaData; //no change needed
         }
     }
 
     //can be used from outside to get a typed result
-    static class SecuredDescriptor extends ExecutableCallbackDescriptor<Set<SecurityViolation>>
+    static class Descriptor extends ExecutableCallbackDescriptor<Set<SecurityViolation>>
     {
-        public SecuredDescriptor(Class<? extends AccessDecisionVoter>[] accessDecisionVoterBeanClasses)
+        public Descriptor(Class<? extends AccessDecisionVoter>[] accessDecisionVoterBeanClasses)
         {
             super(accessDecisionVoterBeanClasses, DefaultCallback.class);
         }