You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2020/10/30 15:08:25 UTC
[myfaces] branch master updated: Jakarta Faces 4.0 - Spec Issue
#1497 - API enhancements for Java8
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/master by this push:
new 895fc4e Jakarta Faces 4.0 - Spec Issue #1497 - API enhancements for Java8
895fc4e is described below
commit 895fc4ebed67cf9de121157c1a3563490d4ea9b0
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Fri Oct 30 16:08:18 2020 +0100
Jakarta Faces 4.0 - Spec Issue #1497 - API enhancements for Java8
---
.../java/jakarta/faces/component/StateHelper.java | 11 +++++++++
.../jakarta/faces/component/_DeltaStateHelper.java | 26 +++++++++++++++++++++
.../behavior/_AjaxBehaviorDeltaStateHelper.java | 17 ++++++++++++++
.../component/behavior/_DeltaStateHelper.java | 27 +++++++++++++++++++++-
.../java/jakarta/faces/event/PhaseListener.java | 10 ++++++--
.../main/java/jakarta/faces/render/Renderer.java | 12 +++++-----
6 files changed, 94 insertions(+), 9 deletions(-)
diff --git a/api/src/main/java/jakarta/faces/component/StateHelper.java b/api/src/main/java/jakarta/faces/component/StateHelper.java
index 716a7f0..fbaf7d4 100644
--- a/api/src/main/java/jakarta/faces/component/StateHelper.java
+++ b/api/src/main/java/jakarta/faces/component/StateHelper.java
@@ -19,6 +19,7 @@
package jakarta.faces.component;
import java.io.Serializable;
+import java.util.function.Supplier;
/**
* @since 2.0
@@ -31,6 +32,16 @@ public interface StateHelper extends StateHolder
public Object eval(Serializable key, Object defaultValue);
+ /**
+ *
+ * @param key
+ * @param defaultValueSupplier
+ * @return
+ *
+ * @since 4.0
+ */
+ public Object eval(Serializable key, Supplier<Object> defaultValueSupplier);
+
public Object get(Serializable key);
public Object put(Serializable key, Object value);
diff --git a/api/src/main/java/jakarta/faces/component/_DeltaStateHelper.java b/api/src/main/java/jakarta/faces/component/_DeltaStateHelper.java
index e64dcf2..0137d7b 100644
--- a/api/src/main/java/jakarta/faces/component/_DeltaStateHelper.java
+++ b/api/src/main/java/jakarta/faces/component/_DeltaStateHelper.java
@@ -28,6 +28,7 @@ import java.util.Map;
import jakarta.el.ValueExpression;
import jakarta.faces.context.FacesContext;
+import java.util.function.Supplier;
/**
* A delta enabled state holder implementing the StateHolder Interface.
@@ -355,6 +356,31 @@ class _DeltaStateHelper implements StateHelper, TransientStateHelper, TransientS
}
return defaultValue;
}
+
+
+ /**
+ *
+ * @param key
+ * @param defaultValueSupplier
+ * @return
+ *
+ * @since 4.0
+ */
+ @Override
+ public Object eval(Serializable key, Supplier<Object> defaultValueSupplier)
+ {
+ Object returnValue = _fullState.get(key);
+ if (returnValue != null)
+ {
+ return returnValue;
+ }
+ ValueExpression expression = _component.getValueExpression(key.toString());
+ if (expression != null)
+ {
+ return expression.getValue(_component.getFacesContext().getELContext());
+ }
+ return defaultValueSupplier.get();
+ }
@Override
public Object get(Serializable key)
diff --git a/api/src/main/java/jakarta/faces/component/behavior/_AjaxBehaviorDeltaStateHelper.java b/api/src/main/java/jakarta/faces/component/behavior/_AjaxBehaviorDeltaStateHelper.java
index f982590..c3f482b 100644
--- a/api/src/main/java/jakarta/faces/component/behavior/_AjaxBehaviorDeltaStateHelper.java
+++ b/api/src/main/java/jakarta/faces/component/behavior/_AjaxBehaviorDeltaStateHelper.java
@@ -30,6 +30,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.function.Supplier;
/**
* Delta state helper to deal with the ajax
@@ -154,6 +155,22 @@ class _AjaxBehaviorDeltaStateHelper<A extends AjaxBehavior> implements StateHelp
}
@Override
+ public Object eval(Serializable key, Supplier<Object> defaultValueSupplier)
+ {
+ Object returnValue = _fullState.get(key);
+ if (returnValue != null)
+ {
+ return returnValue;
+ }
+ ValueExpression expression = _target.getValueExpression(key.toString());
+ if (expression != null)
+ {
+ return expression.getValue(FacesContext.getCurrentInstance().getELContext());
+ }
+ return defaultValueSupplier.get();
+ }
+
+ @Override
public Object get(Serializable key)
{
return _fullState.get(key);
diff --git a/api/src/main/java/jakarta/faces/component/behavior/_DeltaStateHelper.java b/api/src/main/java/jakarta/faces/component/behavior/_DeltaStateHelper.java
index fa1052f..8d573e7 100644
--- a/api/src/main/java/jakarta/faces/component/behavior/_DeltaStateHelper.java
+++ b/api/src/main/java/jakarta/faces/component/behavior/_DeltaStateHelper.java
@@ -31,6 +31,7 @@ import jakarta.faces.component.StateHelper;
import jakarta.faces.component.StateHolder;
import jakarta.faces.component.UIComponentBase;
import jakarta.faces.context.FacesContext;
+import java.util.function.Supplier;
/**
* A delta enabled state holder implementing the StateHolder Interface.
@@ -134,7 +135,7 @@ import jakarta.faces.context.FacesContext;
* validator or listeners should deal with StateHolder or PartialStateHolder
* on component classes.
*/
-class _DeltaStateHelper <A extends AjaxBehavior> implements StateHelper
+class _DeltaStateHelper<A extends AjaxBehavior> implements StateHelper
{
/**
@@ -248,6 +249,30 @@ class _DeltaStateHelper <A extends AjaxBehavior> implements StateHelper
return defaultValue;
}
+ /**
+ *
+ * @param key
+ * @param defaultValueSupplier
+ * @return
+ *
+ * @since 4.0
+ */
+ @Override
+ public Object eval(Serializable key, Supplier<Object> defaultValueSupplier)
+ {
+ Object returnValue = _fullState.get(key);
+ if (returnValue != null)
+ {
+ return returnValue;
+ }
+ ValueExpression expression = _target.getValueExpression(key.toString());
+ if (expression != null)
+ {
+ return expression.getValue(_target.getFacesContext().getELContext());
+ }
+ return defaultValueSupplier.get();
+ }
+
@Override
public Object get(Serializable key)
{
diff --git a/api/src/main/java/jakarta/faces/event/PhaseListener.java b/api/src/main/java/jakarta/faces/event/PhaseListener.java
index 83b3026..c478bb9 100755
--- a/api/src/main/java/jakarta/faces/event/PhaseListener.java
+++ b/api/src/main/java/jakarta/faces/event/PhaseListener.java
@@ -23,9 +23,15 @@ package jakarta.faces.event;
*/
public interface PhaseListener extends java.util.EventListener, java.io.Serializable
{
- void afterPhase(PhaseEvent event);
+ default void afterPhase(PhaseEvent event)
+ {
+
+ }
- void beforePhase(PhaseEvent event);
+ default void beforePhase(PhaseEvent event)
+ {
+
+ }
PhaseId getPhaseId();
}
diff --git a/api/src/main/java/jakarta/faces/render/Renderer.java b/api/src/main/java/jakarta/faces/render/Renderer.java
index a0fc559..c33c7eb 100755
--- a/api/src/main/java/jakarta/faces/render/Renderer.java
+++ b/api/src/main/java/jakarta/faces/render/Renderer.java
@@ -27,14 +27,14 @@ import jakarta.faces.convert.ConverterException;
/**
* see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">JSF Specification</a>
*/
-public abstract class Renderer
+public abstract class Renderer<T extends UIComponent>
{
/**
* @since 2.2
*/
public static final String PASSTHROUGH_RENDERER_LOCALNAME_KEY = "elementName";
- public void decode(FacesContext context, UIComponent component)
+ public void decode(FacesContext context, T component)
{
if (context == null)
{
@@ -49,7 +49,7 @@ public abstract class Renderer
/**
* @throws IOException if an input/output error occurs while rendering
*/
- public void encodeBegin(FacesContext context, UIComponent component) throws IOException
+ public void encodeBegin(FacesContext context, T component) throws IOException
{
if (context == null)
{
@@ -71,7 +71,7 @@ public abstract class Renderer
* @param component
* @throws IOException
*/
- public void encodeChildren(FacesContext context, UIComponent component) throws IOException
+ public void encodeChildren(FacesContext context, T component) throws IOException
{
if (context == null)
{
@@ -100,7 +100,7 @@ public abstract class Renderer
/**
* @throws IOException if an input/output error occurs while rendering
*/
- public void encodeEnd(FacesContext context, UIComponent component) throws IOException
+ public void encodeEnd(FacesContext context, T component) throws IOException
{
if (context == null)
{
@@ -141,7 +141,7 @@ public abstract class Renderer
return false;
}
- public Object getConvertedValue(FacesContext context, UIComponent component, Object submittedValue)
+ public Object getConvertedValue(FacesContext context, T component, Object submittedValue)
throws ConverterException
{
if (context == null)