dev@javaserverfaces.java.net

Review: Fix demo issues.

From: Jayashri Visvanathan <Jayashri.Visvanathan_at_Sun.COM>
Date: Tue, 17 May 2005 09:46:14 -0700

M components/src/java/components/components/GraphComponent.java
  register listener from the constructor only ifits n initial request
  to prevent accumulation of listeners.

M components/src/java/components/renderkit/RepeaterRenderer.java
  commented out call to super.encodeChildren, pending resolution of
  JSF Spec issue 79

M guessNumber/src/java/guessNumber/UserNumberBean.java
  Fix null ptr exception when a submit point is clicked without a value.


Index: components/src/java/components/components/GraphComponent.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-demo/components/src/java/components/components/GraphComponent.java,v
retrieving revision 1.1
diff -u -r1.1 GraphComponent.java
--- components/src/java/components/components/GraphComponent.java 20 May 2004 17:08:47 -0000 1.1
+++ components/src/java/components/components/GraphComponent.java 17 May 2005 16:39:43 -0000
@@ -52,6 +52,11 @@
 import javax.faces.context.FacesContext;
 import javax.faces.event.ActionEvent;
 
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.ResponseStateManager;
+import javax.faces.FactoryFinder;
+
 /**
  * Component wrapping a {_at_link Graph} object that is pointed at by the
  * a value binding reference expression. This component supports
@@ -69,10 +74,20 @@
         // set a default actionListener to expand or collapse a node
         // when a node is clicked.
         Class signature[] = {ActionEvent.class};
- setActionListener(FacesContext.getCurrentInstance().getApplication()
+ // add listener only if its an initial request. If its a postback
+ // the listener will be persisted by the state saving mechanism, so
+ // we don't want to accumulate the listeners.
+ FacesContext context = FacesContext.getCurrentInstance();
+ String renderkitId =
+ context.getApplication().getViewHandler().
+ calculateRenderKitId(context);
+ ResponseStateManager rsm = this.getResponseStateManager(context,
+ renderkitId);
+ if (!rsm.isPostback(context)) {
+ setActionListener(FacesContext.getCurrentInstance().getApplication()
                           .createMethodBinding(
- "#{GraphBean.processGraphEvent}",
- signature));
+ "#{GraphBean.processGraphEvent}", signature));
+ }
 
     }
 
@@ -84,6 +99,20 @@
 
         return ("Graph");
 
+ }
+
+ protected ResponseStateManager getResponseStateManager(FacesContext context,
+ String renderKitId){
+
+ RenderKitFactory renderKitFactory = (RenderKitFactory)
+ FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+
+ RenderKit renderKit = renderKitFactory.getRenderKit(context, renderKitId);
+
+ if ( renderKit != null) {
+ return renderKit.getResponseStateManager();
+ }
+ return null;
     }
 
 }
Index: components/src/java/components/renderkit/RepeaterRenderer.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-demo/components/src/java/components/renderkit/RepeaterRenderer.java,v
retrieving revision 1.2
diff -u -r1.2 RepeaterRenderer.java
--- components/src/java/components/renderkit/RepeaterRenderer.java 16 Jul 2004 01:09:19 -0000 1.2
+++ components/src/java/components/renderkit/RepeaterRenderer.java 17 May 2005 16:39:43 -0000
@@ -101,8 +101,9 @@
      */
     public void encodeChildren(FacesContext context, UIComponent component)
         throws IOException {
-
- super.encodeChildren(context, component);
+ // PENDING (visvan) Issue 79. If we decide to fix this in the spec,
+ // this call can be uncommented.
+ // super.encodeChildren(context, component);
         ResponseWriter writer = context.getResponseWriter();
         UIData data = (UIData) component;
 
Index: guessNumber/src/java/guessNumber/UserNumberBean.java
===================================================================
RCS file: /cvs/javaserverfaces-sources/jsf-demo/guessNumber/src/java/guessNumber/UserNumberBean.java,v
retrieving revision 1.6
diff -u -r1.6 UserNumberBean.java
--- guessNumber/src/java/guessNumber/UserNumberBean.java 13 May 2005 11:41:12 -0000 1.6
+++ guessNumber/src/java/guessNumber/UserNumberBean.java 17 May 2005 16:39:44 -0000
@@ -77,10 +77,11 @@
 
     public String getResponse() {
 
- assert (userNumber != null); // indicates an EL conversion failure
-
- if (userNumber.compareTo(randomInt) == 0) {
+ if (userNumber != null && userNumber.compareTo(randomInt) == 0) {
             return "Yay! You got it!";
+ } else if (userNumber == null) {
+ return "Sorry, " + userNumber +
+ " is incorrect. Try a larger number.";
         } else {
             int num = userNumber.intValue();
             if (num > randomInt.intValue()) {