Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0-Alpha1
    • Fix Version/s: 2.0-Alpha2, 2.0.0
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      ICEfaces

      Description

      ICEfaces 2.0 currently provides a simple extension of the SessionRenderer via org.icefaces.application.PushRenderer.

      This needs enhancement as follows: invocation from non-JSF contexts, clustering support, single view rendering, and convenience methods for rendering all and rendering periodically.

        Activity

        Hide
        Ted Goddard added a comment -

        The PushRenderer class is intended to contain only what is most critically needed – additional methods (such as remove()) cause application developers to believe that they need to be called for correct use.
        We may want to remove addCurrentView() from this class.
        These methods can be used in a JSF context only (or, perhaps we should allow render() to be called in a non-JSF context, but only for single .war deployments where a static singleton is appropriate).
        Clustering is supported through a naming scheme on groupName.

        public class org.icefaces.application.PushRenderer

        { public static final String ALL_SESSIONS; public static void addCurrentSession(String groupName) throws IllegalStateException; public static void addCurrentView(String groupName) throws IllegalStateException; public static void render(String); }

        For more advanced use, including multi .war .ear deployments, non-JSF invocation in all contexts, an instance-based API is needed:

        public class org.icefaces.application.PushRenderManager

        { public final String ALL_SESSIONS; public static PushRenderManager getInstance() throws IllegalStateException; public void addCurrentSession(String groupName) throws IllegalStateException; public void addCurrentView(String groupName) throws IllegalStateException; public void removeCurrentSession(String groupName); public void removeCurrentView(String groupName); public void render(String groupName); public void stopRender(String groupName); public void renderPeriodically(String groupName, long intervalMillis); }

        Rendering a single view can be performed via render(viewKey).

        Clustered rendering (when supported) is directed through a groupName valid in a cluster-wide naming service, such as JNDI.

        Show
        Ted Goddard added a comment - The PushRenderer class is intended to contain only what is most critically needed – additional methods (such as remove()) cause application developers to believe that they need to be called for correct use. We may want to remove addCurrentView() from this class. These methods can be used in a JSF context only (or, perhaps we should allow render() to be called in a non-JSF context, but only for single .war deployments where a static singleton is appropriate). Clustering is supported through a naming scheme on groupName. public class org.icefaces.application.PushRenderer { public static final String ALL_SESSIONS; public static void addCurrentSession(String groupName) throws IllegalStateException; public static void addCurrentView(String groupName) throws IllegalStateException; public static void render(String); } For more advanced use, including multi .war .ear deployments, non-JSF invocation in all contexts, an instance-based API is needed: public class org.icefaces.application.PushRenderManager { public final String ALL_SESSIONS; public static PushRenderManager getInstance() throws IllegalStateException; public void addCurrentSession(String groupName) throws IllegalStateException; public void addCurrentView(String groupName) throws IllegalStateException; public void removeCurrentSession(String groupName); public void removeCurrentView(String groupName); public void render(String groupName); public void stopRender(String groupName); public void renderPeriodically(String groupName, long intervalMillis); } Rendering a single view can be performed via render(viewKey). Clustered rendering (when supported) is directed through a groupName valid in a cluster-wide naming service, such as JNDI.
        Hide
        Deryk Sinotte added a comment -

        The initial implementation of the PushRenderer is currently in place. Since this JIRA is basically a broad case covering that, it's being marked as fixed. Not all the features in this JIRA have been implemented but more specific JIRAs can be opened as required going forward.

        Show
        Deryk Sinotte added a comment - The initial implementation of the PushRenderer is currently in place. Since this JIRA is basically a broad case covering that, it's being marked as fixed. Not all the features in this JIRA have been implemented but more specific JIRAs can be opened as required going forward.

          People

          • Assignee:
            Deryk Sinotte
            Reporter:
            Ted Goddard
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: