[ 
https://issues.apache.org/jira/browse/WICKET-2594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12892089#action_12892089
 ] 

Hudson commented on WICKET-2594:
--------------------------------

Integrated in Apache Wicket 1.5.x #168 (See 
[http://hudson.zones.apache.org/hudson/job/Apache%20Wicket%201.5.x/168/])
    

> TabbedPanel, tabsVisibilityCache throws IndexOutOfBounds
> --------------------------------------------------------
>
>                 Key: WICKET-2594
>                 URL: https://issues.apache.org/jira/browse/WICKET-2594
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-extensions
>    Affects Versions: 1.4.3
>            Reporter: Thies Edeling
>            Assignee: Igor Vaynberg
>         Attachments: TabbedPanelTest.java
>
>
> With wicket extensions 1.4.3, TabbedPanel throws an IndexOutOfBounds 
> exception on the tabsVisibilityCache array when adding more tabs after the 
> panel is rendered.
> The onBeforeRender method calls the isTabVisible method which initializes an 
> array of booleans for visibility caching. The length of this array is the 
> amount of tabs added at that time. When - through ajax - a new tab is added 
> after rendering and setSelectedTab is called an exception is thrown at:
>    Boolean visible = tabsVisibilityCache[tabIndex];
> Fix: increase the array before checking or use a List. In TabbedPanel
>       private boolean isTabVisible(int tabIndex)
>       {
>               if (tabsVisibilityCache == null)
>               {
>                       tabsVisibilityCache = new Boolean[getTabs().size()];
>               }
>               if (tabsVisibilityCache.length < tabIndex + 1)
>               {
>                       tabsVisibilityCache = 
> Arrays.copyOf(tabsVisibilityCache, tabIndex + 1);         
>               }
>               
>               if (tabsVisibilityCache.length > 0)
>               {
>                       Boolean visible = tabsVisibilityCache[tabIndex];
>                       
>                       if (visible == null)
>                       {
>                               visible = getTabs().get(tabIndex).isVisible();
>                               tabsVisibilityCache[tabIndex] = visible;
>                       }
>                       
>                       return visible;
>               }
>               else
>               {
>                       return false;
>               }
>       }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to