Author: awiner
Date: Mon Jan 22 14:32:08 2007
New Revision: 498834
URL: http://svn.apache.org/viewvc?view=rev&rev=498834
Log:
Add new, JSF 1.2 RequestContext API:
public abstract Set<UIComponent> getPartialTargets(UIComponent newTarget);
This API is necessary for JSF 1.2 invokeOnComponent()-based partial requests
(like Avatar) to make sure that partial targets of a component are also decoded.
Modified:
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java
Modified:
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java
URL:
http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java?view=diff&rev=498834&r1=498833&r2=498834
==============================================================================
---
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java
(original)
+++
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContext.java
Mon Jan 22 14:32:08 2007
@@ -19,6 +19,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
import java.util.TimeZone;
import javax.faces.component.UIComponent;
@@ -357,6 +358,11 @@
*/
public abstract void addPartialTarget(UIComponent newTarget);
+ /**
+ * Returns the set of partial targets related to a given UIComponent.
+ */
+ public abstract Set<UIComponent> getPartialTargets(UIComponent newTarget);
+
/**
* Adds a listener on a set of particular triggering components. If one of
* the named components gets updated in response to a partial event, then
Modified:
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java
URL:
http://svn.apache.org/viewvc/incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java?view=diff&rev=498834&r1=498833&r2=498834
==============================================================================
---
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java
(original)
+++
incubator/adffaces/branches/faces-1_2-070102/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextImpl.java
Mon Jan 22 14:32:08 2007
@@ -479,6 +479,17 @@
}
}
+ /**
+ * Returns the set of partial targets related to a given UIComponent.
+ */
+ @Override
+ public Set<UIComponent> getPartialTargets(UIComponent source)
+ {
+ HashSet<UIComponent> set = new HashSet<UIComponent>();
+ _addPartialTargets(set, source);
+ return set;
+ }
+
@Override
public void addPartialTriggerListeners
(UIComponent listener,
@@ -727,6 +738,33 @@
return _partialListeners;
}
+
+ //
+ // Recursively builds up the set of partial targets of
+ // a given component
+ //
+ private void _addPartialTargets(
+ Set<UIComponent> sofar, UIComponent from)
+ {
+ Map<UIComponent, Set<UIComponent>> pl = _getPartialListeners();
+ Set<UIComponent> listeners = pl.get(from);
+ if (listeners == null)
+ return;
+
+ for (UIComponent target : listeners)
+ {
+ // If we haven't encountered this target yet, add
+ // it, and continue recursively.
+ if (!sofar.contains(target))
+ {
+ sofar.add(target);
+ _addPartialTargets(sofar, target);
+ }
+ }
+ }
+
+
+
static private UIComponent _findRelativeComponent(
UIComponent from,