Author: ekoneil
Date: Thu Apr  7 16:18:24 2005
New Revision: 160494

URL: http://svn.apache.org/viewcvs?view=rev&rev=160494
Log:
NetUI bug fixes:

BEEHIVE-504      data grid's headerCell doesn't support the <netui:attribute> 
tag
  Broke support for <netui:attribute> out of the <netui:behavior> tag

BEEHIVE-503      netui behavior tag should accept Object as a value
  <netui:behavior> can now take Object as a value.  If this is null, the tag 
receives and registers this as null.

BEEHIVE-502      parameterMap tag doesn't correctly handle a String[] as a map 
value
  <netui:parameterMap> handles map.get("key") that returns a String[] correctly

BEEHIVE-493      the pagermodel getLastRowForPage method doesn't handle a page 
that has fewer rows than the page size
  the getLastRowForPage now returns "3" when the data set is of size "4".  And, 
yes, this is right.  :)  Because row numbering on a page is zero based, this 
number is as if it was an array index.  For readable page sizes, be sure to add 
one in EL used to display this value in a page.

BB: self
DRT: NetUI pass
BVT: NetUI pass (one failure)



Modified:
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateCodec.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateFactory.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/PagerRenderer.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridResourceProvider.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/HeaderCellDecorator.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlTableCell.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java
    
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java
    
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/IBehaviorConsumer.java
    
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Behavior.java
    
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ParameterMap.java

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateCodec.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateCodec.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateCodec.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateCodec.java
 Thu Apr  7 16:18:24 2005
@@ -45,5 +45,7 @@
 
     public abstract DataGridState getDataGridState();
 
+    public abstract void setDataGridState(DataGridState state);
+
     public abstract DataGridURLBuilder getDataGridURLBuilder();
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateFactory.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateFactory.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateFactory.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridStateFactory.java
 Thu Apr  7 16:18:24 2005
@@ -78,11 +78,17 @@
         return builder;
     }
 
+    public final void attachDataGridState(String name, DataGridState state) {
+        DataGridStateCodec codec = lookupCodec(name, DEFAULT_DATA_GRID_CONFIG);
+        codec.setDataGridState(state);
+    }
+
     private final DataGridStateCodec lookupCodec(String name, DataGridConfig 
config) {
         DataGridStateCodec codec = null;
         if(_cache.containsKey(name))
             codec = _cache.get(name);
         else {
+            assert config != null : "Received a null DataGridConfig; unable to 
create a DataGridCodec";
             codec = config.createStateCodec(_request, name);
             _cache.put(name, codec);
         }

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java
 Thu Apr  7 16:18:24 2005
@@ -122,7 +122,10 @@
     }
 
     public int getLastRowForPage() {
-        return _currentRow + getPageSize() - 1;
+        if(_dataSetSize != null && _dataSetSize < getPageSize())
+            /* the dataSet size is absolute, so this value needs to be 
adjusted by 1 to be zero based */
+            return _dataSetSize-1;
+        else return _currentRow + getPageSize() - 1;
     }
 
     public int getFirstPage() {

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/PagerRenderer.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/PagerRenderer.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/PagerRenderer.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/rendering/PagerRenderer.java
 Thu Apr  7 16:18:24 2005
@@ -36,6 +36,7 @@
 public abstract class PagerRenderer {
 
     private static final Logger LOGGER = 
Logger.getInstance(PagerRenderer.class);
+    private static final String EMPTY_STRING = "";
 
     private PagerModel _pagerModel;
     private DataGridTagModel _gridModel;
@@ -68,7 +69,7 @@
     }
     
     protected String internalRender() {
-        return "";
+        return EMPTY_STRING;
     }
 
     protected String noDataRender() {

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridResourceProvider.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridResourceProvider.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridResourceProvider.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridResourceProvider.java
 Thu Apr  7 16:18:24 2005
@@ -41,14 +41,10 @@
     }
 
     public String getMessage(String key) {
-        assert key != null;
-
         return internalGetMessage(key);
     }
 
     public String formatMessage(String key, Object[] args) {
-        assert key != null;
-
         String msg = internalFormatMessage(getMessage(key), args);
         return msg;
     }

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java
 Thu Apr  7 16:18:24 2005
@@ -77,15 +77,18 @@
     DefaultDataGridStateCodec(DataGridConfig config) {
         _config = config;
         _state = _config.createDataGridState();
-        _urlBuilder = new DefaultDataGridURLBuilder(getGridName(), this, 
_state);
+        _urlBuilder = new DefaultDataGridURLBuilder(getGridName(), this);
     }
 
     public DataGridState getDataGridState() {
         if(!_decoded) {
             decode(getServletRequest().getParameterMap());
         }
-
         return _state;
+    }
+
+    public void setDataGridState(DataGridState state) {
+        _state = state;
     }
 
     public DefaultDataGridURLBuilder getDataGridURLBuilder() {

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java
 Thu Apr  7 16:18:24 2005
@@ -38,12 +38,10 @@
 
     private String _namespace;
     private DefaultDataGridStateCodec _codec;
-    private DataGridState _state;
 
-    DefaultDataGridURLBuilder(String namespace, DefaultDataGridStateCodec 
codec, DataGridState state) {
+    DefaultDataGridURLBuilder(String namespace, DefaultDataGridStateCodec 
codec) {
         _namespace = namespace;
         _codec = codec;
-        _state = state;
     }
 
     public String getPagerRowQueryParamKey() {
@@ -68,7 +66,7 @@
         Map params = _codec.getExistingParams();
         Map newParams = new HashMap();
 
-        PagerModel pagerModel = _state.getPagerModel();
+        PagerModel pagerModel = getDataGridState().getPagerModel();
         assert pagerModel != null;
 
         addSortParams(newParams);
@@ -86,7 +84,7 @@
         Map params = _codec.getExistingParams();
         Map newParams = new HashMap();
 
-        PagerModel pagerModel = _state.getPagerModel();
+        PagerModel pagerModel = getDataGridState().getPagerModel();
         assert pagerModel != null;
 
         addSortParams(newParams);
@@ -104,7 +102,7 @@
         Map params = _codec.getExistingParams();
         Map newParams = new HashMap();
 
-        PagerModel pagerModel = _state.getPagerModel();
+        PagerModel pagerModel = getDataGridState().getPagerModel();
         assert pagerModel != null;
 
         addSortParams(newParams);
@@ -122,7 +120,7 @@
         Map params = _codec.getExistingParams();
         Map newParams = new HashMap();
 
-        PagerModel pagerModel = _state.getPagerModel();
+        PagerModel pagerModel = getDataGridState().getPagerModel();
         assert pagerModel != null;
 
         addSortParams(newParams);
@@ -137,7 +135,7 @@
     }
 
     public String[] getPagerParamValues() {
-        PagerModel pagerModel = _state.getPagerModel();
+        PagerModel pagerModel = getDataGridState().getPagerModel();
 
         String[] params = new String[pagerModel.getLastPage() + 1];
         for(int i = 0; i < params.length; i++) {
@@ -149,7 +147,7 @@
 
     public Map buildSortQueryParamsMap(String sortExpression) {
 
-        SortModel sortModel = _state.getSortModel();
+        SortModel sortModel = getDataGridState().getSortModel();
         SortStrategy sortStrategy = sortModel.getSortStrategy();
 
         List currSorts = sortModel.getSorts();
@@ -199,20 +197,24 @@
         return params;
     }
 
+    private final DataGridState getDataGridState() {
+        return _codec.getDataGridState();
+    }
+
     private void addSortParams(Map map) {
-        Map tmp = _codec.buildSortParamMap(_state.getSortModel().getSorts());
+        Map tmp = 
_codec.buildSortParamMap(getDataGridState().getSortModel().getSorts());
         if(tmp != null)
             map.putAll(tmp);
     }
 
     private void addFilterParams(Map map) {
-        Map tmp = 
_codec.buildFilterParamMap(_state.getFilterModel().getFilters());
+        Map tmp = 
_codec.buildFilterParamMap(getDataGridState().getFilterModel().getFilters());
         if(tmp != null)
             map.putAll(tmp);
     }
 
     private void addPagerParams(Map map) {
-        Map tmp = _codec.buildPageParamMap(_state.getPagerModel().getRow(), 
_state.getPagerModel().getPageSize());
+        Map tmp = 
_codec.buildPageParamMap(getDataGridState().getPagerModel().getRow(), 
getDataGridState().getPagerModel().getPageSize());
         if(tmp != null)
             map.putAll(tmp);
     }

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/HeaderCellDecorator.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/HeaderCellDecorator.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/HeaderCellDecorator.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/HeaderCellDecorator.java
 Thu Apr  7 16:18:24 2005
@@ -39,10 +39,8 @@
 
         if(headerCellModel.getHeaderText() != null)
             appender.append(headerCellModel.getHeaderText());
-        else if(headerCellModel.getBodyContent() != null)
-            appender.append(headerCellModel.getBodyContent());
-        else
-            appender.append("&nbsp;");
+        /* todo: should convert this over to using the HtmlConstants rendering 
support */
+        else appender.append("&nbsp;");
 
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/cell/SortedCellDecorator.java
 Thu Apr  7 16:18:24 2005
@@ -69,7 +69,6 @@
     }
 
     protected String buildSortLink(JspContext jspContext, HeaderCellModel 
cellModel) {
-
         HttpServletRequest request = JspUtil.getRequest(jspContext);
         DataGridTagModel dgm = cellModel.getDataGridTagModel();
         assert dgm != null;
@@ -90,8 +89,7 @@
         /* build icon for existing sort */
         if(sortModel.isSorted(cellModel.getSortExpression()))
             imgTag.src = dgm.getResourcePath() + 
dgm.getSortImagePath(sortDirection);
-        else
-            imgTag.src = dgm.getResourcePath() + dgm.getDefaultSortImagePath();
+        else imgTag.src = dgm.getResourcePath() + 
dgm.getDefaultSortImagePath();
 
         imgTag.registerAttribute(AbstractHtmlState.ATTR_GENERAL, 
HtmlConstants.BORDER, "false");
 

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java
 Thu Apr  7 16:18:24 2005
@@ -31,7 +31,8 @@
         int lastPage = pagerModel.getLastPage();
 
         
buf.append(getDataGridTagModel().formatMessage(IDataGridMessageKeys.PAGER_FMT_BANNER,
-            new Integer[]{currentPage + 1, pagerModel.getLastPage() + 1}));
+                                                       new 
Integer[]{currentPage + 1,
+                                                                     
pagerModel.getLastPage() + 1}));
         buf.append("&nbsp;&nbsp;");
         if(pagerModel.getPreviousPage() >= 0)
             buf.append(buildLivePreviousLink());

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlTableCell.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlTableCell.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlTableCell.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractHtmlTableCell.java
 Thu Apr  7 16:18:24 2005
@@ -449,7 +449,7 @@
         throw new JspException(s);
     }
 
-    public void setBehavior(String name, String value, String facet)
+    public void setBehavior(String name, Object value, String facet)
         throws JspException {
         String s = Bundle.getString("Tags_BehaviorFacetNotSupported", new 
Object[]{facet});
         throw new JspException(s);

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/DataGrid.java
 Thu Apr  7 16:18:24 2005
@@ -148,10 +148,10 @@
      * @param facet
      * @throws JspException
      */
-    public void setBehavior(String name, String value, String facet)
+    public void setBehavior(String name, Object value, String facet)
         throws JspException {
         if(facet != null && facet.equals(FACET_RESOURCE)) {
-            _dataGridTagModel.addResourceOverride(name, value);
+            _dataGridTagModel.addResourceOverride(name, (value != null ? 
value.toString() : null));
         } else {
             String s = Bundle.getString("Tags_BehaviorFacetNotSupported", new 
Object[]{facet});
             throw new JspException(s);

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/HeaderCell.java
 Thu Apr  7 16:18:24 2005
@@ -24,6 +24,7 @@
 import javax.servlet.jsp.tagext.JspFragment;
 
 import org.apache.beehive.netui.tags.IBehaviorConsumer;
+import org.apache.beehive.netui.tags.IAttributeConsumer;
 import org.apache.beehive.netui.tags.html.HtmlConstants;
 import org.apache.beehive.netui.tags.html.IFormattable;
 import org.apache.beehive.netui.tags.rendering.ThTag;
@@ -40,6 +41,7 @@
 import 
org.apache.beehive.netui.databinding.datagrid.runtime.util.ExtensionUtil;
 import org.apache.beehive.netui.databinding.datagrid.api.sort.SortModel;
 import org.apache.beehive.netui.databinding.datagrid.api.filter.FilterModel;
+import org.apache.beehive.netui.util.Bundle;
 
 /**
  * @jsptagref.tagdescription Renders an HTML table head cell tag 
(<code>&lt;th></code>).
@@ -48,15 +50,15 @@
  */
 public class HeaderCell
     extends AbstractCell
-    implements IFormattable, IBehaviorConsumer {
+    implements IFormattable, IBehaviorConsumer, IAttributeConsumer {
 
     private static final String TAG_NAME = "HeaderCell";
 
-    private static final String FACET_HEADER_NAME = "header";
-    private static final String FACET_RENDERER_NAME = "renderer";
-    private static final String FACET_RENDERER_NAME_DEFAULT = "default";
-    private static final String FACET_RENDERER_NAME_SORT = "sort";
-    private static final String FACET_RENDERER_NAME_EXTENDS = "extends";
+    private static final String ATTRIBUTE_HEADER_NAME = "header";
+    private static final String BEHAVIOR_RENDERER_NAME = "renderer";
+    private static final String BEHAVIOR_RENDERER_NAME_DEFAULT = "default";
+    private static final String BEHAVIOR_RENDERER_NAME_SORT = "sort";
+    private static final String BEHAVIOR_RENDERER_NAME_EXTENDS = "extends";
 
     private static final CellDecorator DECORATOR_HEADER_DEFAULT;
     private static final CellDecorator DECORATOR_HEADER_SORTED;
@@ -513,29 +515,36 @@
         _cellState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, 
HtmlConstants.SCOPE, scope);
     }
 
-    public void setBehavior(String name, String value, String facet) throws 
JspException {
-        if(facet != null && facet.equals(FACET_HEADER_NAME)) {
+    public void setAttribute(String name, String value, String facet) throws 
JspException {
+        if(facet != null && facet.equals(ATTRIBUTE_HEADER_NAME)) {
             super.addStateAttribute(_cellState, name, value);
-            return;
         }
-        else if(facet != null && facet.equals(FACET_RENDERER_NAME)) {
+        else {
+            String s = Bundle.getString("Tags_AttributeFacetNotSupported", new 
Object[]{facet});
+            throw new JspException(s);
+        }
+    }
+
+    public void setBehavior(String name, Object value, String facet) throws 
JspException {
+        if (facet != null && facet.equals(BEHAVIOR_RENDERER_NAME)) {
+            String className = value != null ? value.toString() : null;
             /* provides a way to extend the existing decorators */
-            if(name.equals(FACET_RENDERER_NAME_EXTENDS)) {
-                CellDecorator cellDecorator = 
(CellDecorator)ExtensionUtil.instantiateClass(value, CellDecorator.class);
+            CellDecorator cellDecorator = (CellDecorator) 
ExtensionUtil.instantiateClass(className, CellDecorator.class);
+            if (name.equals(BEHAVIOR_RENDERER_NAME_EXTENDS)) {
                 cellDecorator.setNestedDecorator(getCellDecorator());
-                _cellDecorator = cellDecorator;
-                return;
-            }
-            else if(name.equals(FACET_RENDERER_NAME_SORT)) {
-                CellDecorator cellDecorator = 
(CellDecorator)ExtensionUtil.instantiateClass(value, CellDecorator.class);
+            } else if (name.equals(BEHAVIOR_RENDERER_NAME_SORT)) {
                 cellDecorator.setNestedDecorator(DECORATOR_HEADER_SORTED);
-                _cellDecorator = cellDecorator;
             }
             /* replace the core cell decorator with a new default */
-            else if(name.equals(FACET_RENDERER_NAME_DEFAULT)) {
-                CellDecorator cellDecorator = 
(CellDecorator)ExtensionUtil.instantiateClass(value, CellDecorator.class);
-                _cellDecorator = cellDecorator;
+            else if (name.equals(BEHAVIOR_RENDERER_NAME_DEFAULT)) {
+                /* no-op */
             }
+
+            _cellDecorator = cellDecorator;
+        }
+        else {
+            String s = Bundle.getString("Tags_BehaviorFacetNotSupported", new 
Object[]{facet});
+            throw new JspException(s);
         }
     }
 
@@ -554,7 +563,7 @@
 
         ArrayList<String> styleClasses = new ArrayList<String>();
 
-        /* todo: refactor.  add a chain of decorators here */
+        /* todo: refactor.  add a chain of style decorators here; easier to 
extend this way. */
         FilterModel filterModel = dataGridModel.getState().getFilterModel();
         if(filterModel.isFiltered(_headerCellModel.getFilterExpression()))
             
styleClasses.add(dataGridModel.getStyleModel().getHeaderCellFilteredClass());
@@ -588,11 +597,16 @@
             bodyContent = sw.toString();
         }
 
-        
_headerCellModel.setDataGridTagModel(DataGridUtil.getDataGridTagModel(getJspContext()));
-        _headerCellModel.setBodyContent(bodyContent);
-        _headerCellModel.setHeaderText(_headerText);
+        if(_headerText == null) {
+            appender.append(bodyContent.toString());
+        }
+        else {
+            
_headerCellModel.setDataGridTagModel(DataGridUtil.getDataGridTagModel(getJspContext()));
+            _headerCellModel.setBodyContent(bodyContent);
+            _headerCellModel.setHeaderText(_headerText);
 
-        getCellDecorator().decorate(getJspContext(), appender, 
_headerCellModel);
+            getCellDecorator().decorate(getJspContext(), appender, 
_headerCellModel);
+        }
     }
 
     protected void applyAttributes()

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/IBehaviorConsumer.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/IBehaviorConsumer.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/IBehaviorConsumer.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/IBehaviorConsumer.java
 Thu Apr  7 16:18:24 2005
@@ -35,5 +35,5 @@
      * @param facet The name of a facet to which the attribute will be 
applied.  This is optional.
      * @throws JspException A JspException may be thrown if there is an error 
setting the attribute.
      */
-    void setBehavior(String name, String value, String facet) throws 
JspException;
+    void setBehavior(String name, Object value, String facet) throws 
JspException;
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Behavior.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Behavior.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Behavior.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Behavior.java
 Thu Apr  7 16:18:24 2005
@@ -34,14 +34,13 @@
 public class Behavior extends AbstractSimpleTag
 {
     private String _name = null;
-    private String _value = null;
+    private Object _value = null;
     private String _facet = null;
 
     /**
      * Return the name of the Tag.
      */
-    public String getTagName()
-    {
+    public String getTagName() {
         return "Behavior";
     }
 
@@ -71,9 +70,9 @@
      * description="The value of the behavior to add to the parent tag."
      * @netui.tldx:attribute
      */
-    public void setValue(String value)
+    public void setValue(Object value)
     {
-        _value = setNonEmptyValueAttribute(value);
+        _value = value;
     }
 
     /**

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ParameterMap.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ParameterMap.java?view=diff&r1=160493&r2=160494
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ParameterMap.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ParameterMap.java
 Thu Apr  7 16:18:24 2005
@@ -119,7 +119,7 @@
             Iterator it = _map.entrySet().iterator();
             while (it.hasNext()) {
                 Map.Entry key = (Map.Entry) it.next();
-                parent.addParameter(key.getKey().toString(), 
key.getValue().toString(), null);
+                parent.addParameter(key.getKey().toString(), key.getValue(), 
null);
             }
         }
         else {


Reply via email to