DataGridRenderer extends AbstractRowsRenderer implements MetaComponentRenderer { @Override protected Class<? extends UIComponent> getComponentClass() { return AbstractDataGrid.class; }  @Override void encodeRow(ResponseWriter writer, FacesContext facesContext, RowHolderBase rowHolder); void encodeHeader(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid, boolean partial); void encodeFooter(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid, boolean partial); void encodeCaption(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid); void encodeNoData(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid); void encodeFacet(ResponseWriter writer, FacesContext facesContext, UIComponent facet, EncodeStrategy strategy,
        AbstractDataGrid dataGrid, Object[] params); void encodeTBody(ResponseWriter writer, FacesContext facesContext, AbstractDataGrid dataGrid, boolean partial); @Override RowHolderBase createRowHolder(FacesContext context, UIComponent component, Object[] options); void encodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId); void decodeMetaComponent(FacesContext context, UIComponent component, String metaComponentId); DataVisitResult process(FacesContext facesContext, Object rowKey, Object argument); @Override void encodeFakeRow(FacesContext facesContext, RowHolderBase rowHolder);  }
@Test public final void testGetComponentClass() throws IOException { FacesRequest facesRequest = startFacesRequest(); FacesContext facesContext = FacesContext.getCurrentInstance(); AbstractDataGrid component = (AbstractDataGrid) facesContext.getViewRoot().findComponent("dataGrid"); DataGridRenderer renderer = (DataGridRenderer) FacesContext.getCurrentInstance().getRenderKit() .getRenderer(component.getFamily(), component.getRendererType()); assertEquals(AbstractDataGrid.class, renderer.getComponentClass()); facesRequest.release(); }