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 2014/11/09 23:11:34 UTC

deltaspike git commit: DELTASPIKE-774 map javax.faces.bean.ViewScoped to javax.faces.view.ViewScoped

Repository: deltaspike
Updated Branches:
  refs/heads/master e29829306 -> 7e4825269


DELTASPIKE-774 map javax.faces.bean.ViewScoped to javax.faces.view.ViewScoped


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

Branch: refs/heads/master
Commit: 7e4825269a2c58ed994974f17b0b30e2f4753d21
Parents: e298293
Author: gpetracek <gp...@apache.org>
Authored: Sun Nov 9 22:54:20 2014 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Sun Nov 9 23:03:15 2014 +0100

----------------------------------------------------------------------
 .../jsf/impl/scope/mapped/MappedJsf2ScopeExtension.java  |  8 ++++++++
 .../jsf/impl/scope/view/ViewScopedExtension.java         |  7 +++++++
 .../org/apache/deltaspike/jsf/impl/util/JsfUtils.java    | 11 +++++++++++
 3 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/7e482526/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/mapped/MappedJsf2ScopeExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/mapped/MappedJsf2ScopeExtension.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/mapped/MappedJsf2ScopeExtension.java
index 960eaa5..2f92d4c 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/mapped/MappedJsf2ScopeExtension.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/mapped/MappedJsf2ScopeExtension.java
@@ -21,7 +21,9 @@ package org.apache.deltaspike.jsf.impl.scope.mapped;
 import org.apache.deltaspike.core.api.projectstage.ProjectStage;
 import org.apache.deltaspike.core.spi.activation.Deactivatable;
 import org.apache.deltaspike.core.util.ClassDeactivationUtils;
+import org.apache.deltaspike.core.util.ClassUtils;
 import org.apache.deltaspike.core.util.ProjectStageProducer;
+import org.apache.deltaspike.jsf.impl.util.JsfUtils;
 
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.spi.AnnotatedType;
@@ -57,6 +59,12 @@ public class MappedJsf2ScopeExtension implements Extension, Deactivatable
                 javax.enterprise.context.SessionScoped.class);
         this.mappedJsfScopes.put(javax.faces.bean.RequestScoped.class,
                 javax.enterprise.context.RequestScoped.class);
+
+        if (JsfUtils.isViewScopeDelegationEnabled())
+        {
+            this.mappedJsfScopes.put(javax.faces.bean.ViewScoped.class,
+                ClassUtils.tryToLoadClassForName("javax.faces.view.ViewScoped"));
+        }
     }
 
     protected void init(@Observes BeforeBeanDiscovery beforeBeanDiscovery)

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/7e482526/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/view/ViewScopedExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/view/ViewScopedExtension.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/view/ViewScopedExtension.java
index 245e43a..303e1fd 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/view/ViewScopedExtension.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/scope/view/ViewScopedExtension.java
@@ -28,6 +28,7 @@ import javax.faces.bean.ViewScoped;
 
 import org.apache.deltaspike.core.spi.activation.Deactivatable;
 import org.apache.deltaspike.core.util.ClassDeactivationUtils;
+import org.apache.deltaspike.jsf.impl.util.JsfUtils;
 
 
 /**
@@ -58,6 +59,12 @@ public class ViewScopedExtension implements Extension, Deactivatable
     {
         isActivated = ClassDeactivationUtils.isActivated(getClass());
 
+        if (isActivated)
+        {
+            //this extension is only needed if the cdi-based view-scope handling isn't delegated to jsf 2.2+
+            isActivated = !JsfUtils.isViewScopeDelegationEnabled();
+        }
+
         if (!isActivated)
         {
             return;

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/7e482526/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/JsfUtils.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/JsfUtils.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/JsfUtils.java
index 7b1dabf..8e0686f 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/JsfUtils.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/util/JsfUtils.java
@@ -18,9 +18,11 @@
  */
 package org.apache.deltaspike.jsf.impl.util;
 
+import org.apache.deltaspike.core.api.config.ConfigResolver;
 import org.apache.deltaspike.core.api.config.view.metadata.ViewConfigResolver;
 import org.apache.deltaspike.core.api.provider.BeanProvider;
 import org.apache.deltaspike.core.api.config.view.navigation.NavigationParameterContext;
+import org.apache.deltaspike.core.util.ClassUtils;
 import org.apache.deltaspike.jsf.api.config.JsfModuleConfig;
 import org.apache.deltaspike.jsf.impl.listener.phase.WindowMetaData;
 import org.apache.deltaspike.jsf.impl.message.FacesMessageEntry;
@@ -351,4 +353,13 @@ public abstract class JsfUtils
         }
         return true;
     }
+
+    /**
+     * @return true if JSF 2.2+ is available and the delegation mode isn't deactivated via config, false otherwise
+     */
+    public static boolean isViewScopeDelegationEnabled()
+    {
+        return ClassUtils.tryToLoadClassForName("javax.faces.view.ViewScoped") != null && !"false".equalsIgnoreCase(
+            ConfigResolver.getPropertyValue("deltaspike.scope.view.delegate", Boolean.TRUE.toString()));
+    }
 }