You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sv...@apache.org on 2005/08/24 16:51:54 UTC

svn commit: r239673 - /myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/inputsuggestajax/InputSuggestAjaxRenderer.java

Author: svieujot
Date: Wed Aug 24 07:51:44 2005
New Revision: 239673

URL: http://svn.apache.org/viewcvs?rev=239673&view=rev
Log:
inputSuggestAjax : Fallback when the propper suggest method isn't defined.

Modified:
    myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/inputsuggestajax/InputSuggestAjaxRenderer.java

Modified: myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/inputsuggestajax/InputSuggestAjaxRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/inputsuggestajax/InputSuggestAjaxRenderer.java?rev=239673&r1=239672&r2=239673&view=diff
==============================================================================
--- myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/inputsuggestajax/InputSuggestAjaxRenderer.java (original)
+++ myfaces/sandbox/trunk/src/java/org/apache/myfaces/custom/inputsuggestajax/InputSuggestAjaxRenderer.java Wed Aug 24 07:51:44 2005
@@ -30,6 +30,8 @@
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import javax.faces.el.MethodBinding;
+import javax.faces.el.MethodNotFoundException;
+
 import java.io.IOException;
 import java.util.Collection;
 import java.util.Iterator;
@@ -43,10 +45,9 @@
  */
 public class InputSuggestAjaxRenderer extends HtmlTextRenderer implements AjaxRenderer
 {
-    //private static Log log = LogFactory.getLog(AjaxInputSuggestRenderer.class);
+    private static final int DEFAULT_MAX_SUGGESTED_ITEMS = 200;
 
     private static final String JAVASCRIPT_ENCODED = "org.apache.myfaces.inputsuggestajax.JAVASCRIPT_ENCODED";
-      
 
    /**
      * Encodes any stand-alone javascript functions that are needed.  Uses either the extension filter, or a
@@ -203,13 +204,27 @@
 
         MethodBinding mb = InputSuggestAjax.getSuggestedItemsMethod();
         Collection suggesteds = null;
+        int maxSuggestedCount = InputSuggestAjax.getMaxSuggestedItems()!=null
+        							? InputSuggestAjax.getMaxSuggestedItems().intValue()
+        							: DEFAULT_MAX_SUGGESTED_ITEMS;
         if (InputSuggestAjax.getMaxSuggestedItems()!=null) {
-        	suggesteds = (Collection) mb.invoke(context,new Object[]{
-                    AjaxPhaseListener.getValueForComponent(context, uiComponent),
-                    InputSuggestAjax.getMaxSuggestedItems()});
+        	try{
+	        	suggesteds = (Collection) mb.invoke(context,new Object[]{
+	                    AjaxPhaseListener.getValueForComponent(context, uiComponent),
+	                    new Integer(maxSuggestedCount)});
+        	}catch(MethodNotFoundException dummy){
+        		suggesteds = (List) mb.invoke(context,new Object[]{
+	                    AjaxPhaseListener.getValueForComponent(context, uiComponent)});
+        	}
         } else {
-        	suggesteds = (List) mb.invoke(context,new Object[]{
-                    AjaxPhaseListener.getValueForComponent(context, uiComponent)});
+        	try{
+	        	suggesteds = (List) mb.invoke(context,new Object[]{
+	                    AjaxPhaseListener.getValueForComponent(context, uiComponent)});
+        	}catch(MethodNotFoundException dummy){
+        		suggesteds = (Collection) mb.invoke(context,new Object[]{
+                        AjaxPhaseListener.getValueForComponent(context, uiComponent),
+                        new Integer( DEFAULT_MAX_SUGGESTED_ITEMS )});
+        	}
         }
         
         StringBuffer buf = new StringBuffer();
@@ -227,9 +242,13 @@
             buf.append(" id='"+InputSuggestAjax.getListId()+"'");
         }
         buf.append(">");
-
-        for (Iterator i = suggesteds.iterator() ; i.hasNext() ; )
+        
+        int suggestedCount=0;
+        for (Iterator i = suggesteds.iterator() ; i.hasNext() ; suggestedCount++)
         {
+        	if( suggestedCount > maxSuggestedCount )
+        		break;
+        	
             buf.append("<li");
             if (InputSuggestAjax.getListItemStyleClass() != null)
             {