Version dynamic tab shell 12 c

Hi all

I use JDeveloper 12 c (12.1.2.0.0).

I would like to know if there is a version of 12 c shell available dynamic tab and if so, from where I can download the source of it.

Thanks in advance,

Gijith.

Hi Frank,.

In the link you provided above ( Shell of the user interface - interface user ADF templates - dynamic tabs UI Shell model functional model UI ) now I can see that the zip source name has changed to dynamic-tab-shell-src - 121200.zip. Is it a changed which is fully compatible with 12 c?

Gijith.

Tags: Java

Similar Questions

  • AMPe ADF with Dynamic tab Shell not made in iPAD 1 +.

    Hello

    We used the Oracle Dynamic tab Shell templates to build our page of dashboard with several dynamic tabs.
    A year back when we have initially created the main dashboard with Dynamic tab Shell and used of the UIShell API to open new dynamic tab when clicking the command links in the browser side of left hand. We started with Jdev 11.1.1.3 and upgrade us until Jdev 11.1.1.5.

    Now this last requirement is, we need to test our applications in the Safari browser in iPAD (2.0). During the test, we observed under questions.

    (1) the page with Dynamic tab Shell JSPX is keep showing "Loading"... "We had updated the Safari browser twice to render the page.
    (2) any af:commandLink under the JSPX which has shell model dynamic tab, does not. We have lots of links on the left navigation and when clicking on each link will open a new tab dynamic (we use UIShell API). Nothing happens when clicking on these af:commandLinks.
    (3) we have 'Home' and 'Logout' links at the top right. Nothing happens on the links click too.

    All these as af:commandLinks and af:commandButtons not working as expected when we have them beside a JSPX page without shell dynamic tab.

    Tested and observed the same behavior both in version 1.0 and newer iPad iPAD 2.0.
    We desperately need help on thin. Pls let us know, if I need to provide more details. Are there specific configurations required to make it work in Jdev 11.1.1.5? At this stage we cannot improve our Env 11.1.1.6 or 11.1.2 as we already have these applications in Production and we should give users flexibility to be used in the iPAD.

    Help, please!

    Thank you!!
    Subba.

    Subba,

    I understand, however support for iPad added in PS5 is a set of new features, not a bug fix, so this cannot be claimed as a one off patch with the support of the Oracle. In this case that is expected to capture customers highlights new features of upgrade.

    Thank you

  • Oracle Dynamic tabs Shell - open same workflow in multiple tabs

    Hello

    Summary of the problem:
    Is there a way to open a workflow (bounded task flows, with always create new scope txn) in multiple tabs using a page (jspx) based on the model of dynamic tabs Oracle shell. That is, the user must be able to work on the two tabs (loaded with the same workflow) independently.

    Problem scenario:
    I use model Oracle Dynamic tabs Shell in one of my .jspx page say default.jspx. This default.jspx is the entry point of my app via adfc - config.Xml.

    Tell my navigation menu a itemNode node1

    Node1-> corresponds to a stream of flow available1 (bounded task flows, with always create new scope txn)

    The navigation of the user I wanted to is as below:

    When the application is run default.jspx is loaded with above the navigation menu.
    (1) when the user clicks on node 1, it must open the stream in a dynamic tab available1 say tab1
    (2) when the user clicks on node 1 again, it must open the stream in another dynamic tab available1 say tab2
    The user must be able to work on the two tabs (loaded with the same workflow) independently.

    Question: When I tried the application above that I encounter the error below:
    Caused by: oracle.adf.controller.activity.ActivityLogicException: ADFC-00020: workflow ' / WEB-INF/flows/homeTF.xml#homeTF' requires a new transaction, but surgery is already open on the chassis.

    Thank you and best regards,
    Pramod Gujjeti

    Pramod salvation,

    Have you tried to set the attributes of your workflow Transaction? Open your workflow definition and then go to preview Tab. Change the appropriate attributes as defining the transaction as 'Always start new operation' or by unchecking the ' data controls share with calling workflow. Try to mix the settings and find the one that meet your needs.

    Kind regards
    Pino

  • How to put logoImagePath in oracle Dynamic tabs Shell

    Hello
    I use the model 'oracle Dynamic tabs Shell', and I want to replace the logo 'oracle' with my own logo image.
    Unfortunately, I do not know how to set the "logoImagePath".
    Can someone help me?


    Thanks in advance

    Hello
    If your logo image file is for example in the public_html/images folder, then you can set the logoImagePath as follows:

    
    

    Pino

  • Dynamic tab Shell cut Images and text

    I use the Shell dynamic tab on a page and try to get a few images-links and output text display correctly in the global toolbar.  I want the links to the image on the left side of the toolbar and the output on the right side text.  The problem is the pictures are cut off and the text is envelope in a small space and is not entirely legible.  The images are 32 x 32 pixels.  Should I resize them to something smaller?  I tried to use small images previously, but it seems simply push down and still cut.

    The full text of output must be "logged in as: username", but it is force into a small space and cutting the username like this:

    Connected

    as:

    username (this line is not visible in the toolbar)

    Here is my code.  Any help is appreciated.

    ...

    "< af:pageTemplate viewId="/oracle/ui/pattern/dynamicShell/dynamicTabShell.jspx "value =" #{bindings.ptb1} ' "

    ID = "pt1" >

    ...

    < f: facet name = "globalToolbar" >

    < af:panelGroupLayout id = "pgl5" layout = "horizontal" valign = "top" >

    < af:toolbar flex = '1' stretchId = 'stretch1"id ="tb1">

    < af:group id = "grp1" >

    "" < af:commandImageLink text = "' actionListener =" #{tabmanagement.dashboardSelected} "id ="cil1"icon="/images/AsIconDashboard.png "partialSubmit ="true"/ >

    "" < af:commandImageLink text = "' actionListener =" #{tabmanagement.toggleSelected} "id ="cil2"icon="/images/AsIconToggle.png "partialSubmit ="true"/ >

    < / af:group >

    < af:spacer id = "stretch1" width = "10" height = "35" clientComponent = "true" / >

    < af:outputText id = value = "#{tabmanagement.loggedInAsText}" / "loggedInAsOT" >

    < / af:toolbar >

    < / af:panelGroupLayout >

    < / f: facet >

    ...

    Move text output of the globalToolbar facet in the facet globalSearch fixed problems and gave me the results:

    ...

    Icon="/images/AsIconDashboard.png" partialSubmit = "true" / >

    Icon="/images/AsIconToggle.png" partialSubmit = "true" / >

    ...

    ...

  • Dynamic tabs Shell Docs/tutorial

    I have spent a lot of time looking for documentation on this point - please prove me a retard and provide a link. Thank you!

    Trouble finding documentation is a lot of relevant links in the forum and maybe also point to the wrong location because of a recent migration of OTN. Redirects are underway with the OTN admins. Used, of course, like a band-aid until we can update all the links - manually.

    Meanwhile the method more reliable and perhaps the long practice of obtaining information on this model is to install the documentation locally as an extension JDev. It is very easy to do. Just follow the steps here:

    http://forums.Oracle.com/forums/Ann.jspa?annID=1272

  • Oracle adf dynamic Scroll tab shell

    Hi all

    I use 11.1.2.4.0, i developed ADF application with shell tab dynamic Oracle JDeveloper.

    the problem is that I have a few pages too large jsff, should I add scrolling to the dynamic tab?

    Kind regards

    If you use a container that can be scrolled if the area is too small, it should work out of the box. Check Oracle ADF: a model with a behavior, if you add a scroll of type panelGroupLayout to the region, it should amine if the tank is too small.

    Timo

  • The dynamic user interface shell: opening of the dynamic tabs

    I'm trying to implement the dynamic tabs using the ADF dynamic user interface Shell. After clicking on a link, a dynamic tab opens that displays a table. One of the attributes of this table is again a link and when you click on this link it should open a new tab dynamically. But when I'm clicking on this link attribute in the first tab, it gives a NullPointerException, the getCurrentInstance() in the tab context returns a null value. How can I solve this problem?

    I had similar requirements. Add the input parameter according to the flow of tasks which you try to call the other task from the link stream.

    Name: tabContext

    class: oracle.ui.pattern.dynamicShell.TabContext

    scope: #{pageFlowScope.tabContext}

    required: true

    This solves the problem.

  • Dynamic tab Interface User Shell - close the tab action &amp; number of open tabs control

    Hello
    I browsed the forum, but could not get their hands on a concrete solution to the issue on how to capture the event action to close the tab and perform an action on this?
    The thread below about my question, but doesn't seem to have a good solution
    Re: Dynamic tab Interface User Shell: control icon close

    And another question, currently in the TabContext the number of open tabs is at the limit of 15. How can I replace only such that I do not allow more than 7 tabs open at the same time?

    Please help me with the two queries above. Thank you!

    Kind regards
    SS

    Sorry for the delay so much. Finally got some time to play with the model and by downloading the source code for dynamicTabTemplate and substituting the closeIcon worked like a charm.
    Let me summarize what I did to help someone who is looking for it :)
    (1) download the source code for dynamicTabTemplate
    (2) added and additional attribute to the model closeTab
    ++
    +closeTab+.
    +java.lang.String+.
    ++
    true
    +
    +
    +
    +
    (2) the dynamicTabShell.jspx edition, closeIcon commanlink actionListener to be linked to the "#{viewScope.tabContext.closeIcon}".
    (3) implemented the method of closeIcon in TabContext
    +@Override+
    + ' public void closeIcon (ActionEvent actionEvent) {+
    CloseIconInterface bean = getBean().
    bean.closeIcon (actionEvent);
    +}+
    (4) generated the jar.
    (5) delete the oracle supplied jar dynamicTabTemplate by default and instead added my custom pot generated on demand
    (6) implementing the new model
    (7) set all attributes with attribute closeTab. It would take the name of BackingBean... example:
    (8) xxxBean done to implement CloseTabInterface
    (9) implementation of the method closeIcon with custom code to confirm the page close prior to removal of the tab.

    However as you say, I will keep tab on the future updates of the default model tab updates fail bug fixes or improvements.

    Thanks to all those who have looked into this for me and I hope this helps someone else :)... Good luck!

  • Dynamic UI shell

    Hi all

    I use Jdeveloper 11.1.2.4 version.

    I am facing a problem when opening a region (which is part of another application, using as lib ADF Jar) in a new tab in dynamic UI Shell (using Launcher.java APIs).

    USE CASE-

    My hand (ex, MainApp) Application. I have a different scope (ex, HrApp), who have taskflow (ex, showHrTF) is deployed as ADF Lib JAR and added to my main Application.

    now my main Application that put in place Taskflow of opening in a new tab (using the API file Launcher.java), want to open new tab of the region (HrAPP showHrTF).

    My current support of the approach for open taskflow existing in the new tab, but opening the region in a new tab does not work with my approach.

    Any suggestion. sample, link.

    Kind regards

    you need to store some taskflows in both applications on the same path, ex: mainapp to store taskflows under WEB-INF/flow/in MainApp View Controller

    HrApp store taskflows under WEB-INF/flow/in HrApp View Controller

    You can use (e.g., WEB-INF/flows/testTF.xml&testTF). for both.

  • Dynamic tab does not display data

    11.1.1.4, JHS 11.1.1.3 JDev

    I have a table with a groupLink field that opens another group in a dynamic tab. When I put in a debug output I see the underlying view for the new dynamic tab performs a query to the top the correct data, but when the tab opens, it says 'no rows found. I have a couple of other groupLinks on other pages, one of which works, one of which gives the same result as this one. They are all setup according to the instructions in the JHS Developer's guide. Any idea, that all would be appreciated.

    Here's the JDev console output (lines starting with 'Debug' are my output inserted in the executeQuery method):

    < BreadcrumbManager > < processBreadcrumbs > processBreadcrumbs of execution for null
    < BreadcrumbManager > < loadBreadcrumbConfig > loadBreadcrumbConfig: pagePath is null
    < SetCurrentRowBean > < run > call queryByKeyValue on module app with voUsage MyView1 and rowKeyValue 1028
    < JhsApplicationModuleImpl > < queryByKeyValueInternal > queryByKeyValueInternal(value=1028) of execution for MyView1
    < JhsApplicationModuleImpl > < queryByKeyValueInternal > queryByKeyValueInternal of execution (key = Id value = 1028) to MyView1
    Debug - execute query
    Debug - SQL [statement]
    Debug - 1 lines found
    Debug - found = 1028 line ID
    Run < JhsPageLifecycle > ValidateRegion < validateRegion > to the com_pq_tracs_view_pageDefs_AccountsPageDef_WEB_INF_adfc_config_Accounts_xml_AccountsTaskFlow region
    Run < JhsPageLifecycle > RefreshRegion < refreshRegion > to the page fragment current region com_pq_tracs_view_pageDefs_AccountsPageDef_WEB_INF_adfc_config_Accounts_xml_AccountsTaskFlow: / AccountsTaskFlow/accounts
    < JhsApplicationModuleImpl > < applyBindParams > applyBindParams of performance for Lookup1
    < JhsApplicationModuleImpl > < applyBindParams > ViewObject Lookup1: bind the values of the parameters have not changed, no. Requery performed
    < JhsApplicationModuleImpl > < applyBindParams > applyBindParams of execution for Lookup2
    < JhsApplicationModuleImpl > < applyBindParams > ViewObject Lookup2: bind the values of the parameters have not changed, no. Requery performed
    < JhsApplicationModuleImpl > < applyBindParams > applyBindParams of execution for Lookup3
    < JhsApplicationModuleImpl > < applyBindParams > no binding query parameters not passed in applyBindParams for Lookup3, do nothing
    < JhsApplicationModuleImpl > < applyBindParams > applyBindParams of performance for Lookup4
    < JhsApplicationModuleImpl > < applyBindParams > ViewObject Lookup4: bind the values of the parameters have not changed, no. Requery performed
    < BreadcrumbManager > < processBreadcrumbs > processBreadcrumbs of execution for/AccountsTaskFlow/accounts
    Common thread of < BreadcrumbStack > < add > add stack: "null" (accounts/AccountsTaskFlow /)
    < BreadcrumbManager > < processBreadcrumbs > processBreadcrumbs of performance for /UIShell

    Steve,

    I think you hit a problem that we solved in the next version.
    Can you try to replace the macros GROUP_HAS_ROW and PARENT_GROUP_HAS_ROW of common.vm with the code below?

    #macro (GROUP_HAS_ROW)
    # Through viewObject instead of current line directly from binding of the iter
    # a query of entire table otherwise will be always performed during automatic query off!
    # but we express it only self-investigation turned off, otherwise the alyout form, the
    # switch element shows 'no line '!
    #if ($JHS.current.group.databound) #if ($JHS.current.group.autoQuery) #ITERATOR (.currentRow)! = null #else (#ITERATOR (.viewObject)! = null and #ITERATOR (). viewObject.currentRow! = null) #else (true) #end #end #end

    #macro (PARENT_GROUP_HAS_ROW)
    #if ($JHS.current.group.databound & $JHS.page.group! = $JHS.current.group) #if (${JHS.current.group.parentGroup} & ${JHS.current.group.parentGroup.databound}) #if ($JHS.current.group.parentGroup.autoQuery) #PARENT_ITERATOR (.currentRow)! = null #else (#PARENT_ITERATOR (.viewObject)! = null and #PARENT_ITERATOR (). viewObject.currentRow! = null) #end # true else #end #else (true) #end #end

    Steven Davelaar,
    Jheadstart team.

  • Cancel Wizard dynamic tab button

    Hello
    I use a stream train insert Wizard in the DB. When I open the page in Modal or Modless
    pop-up, everything works, problems come out when I change to show in
    New dynamic tab.

    In the form, I have a required date field, when I pres the button to open the menu with
    the calendar of all deposited entries disappear. Remains only the label of the field on the page.

    As I said that that happens in a new dynamic tab.

    I also found that happens when "get it back to the Database" change in Instance under Tuning mode
    a value No lines.

    Is it maybe a bug?

    Kind regards
    Dejan

    Dejan,

    Yes, it is a bug in JHeadstart. It resolved in the next 11.1.1.4 exit, scheduled for October.

    For the moment, as a work around, you can comment on the JhsPhaseListener in faces - config.xml:

    oracle.jheadstart.controller.jsf.listener.JhsPhaseListener

    The listener of phase marks the dirty current tab and the origin of the problem.
    In the next version, we took a different approach in the current tab notation dirty.

    Steven Davelaar,
    JHeadstart team.

  • Layout of the dynamic tabs

    Hello

    I use the latest version of JHeadstart (11.1.1.3.35). I chose the layout of dynamic tabs and everything works fine except that the homepage always shows all groups as a tab on the home page. If I click on any one of them it will go to the tree menu and dynamic tabs. I also changed "Tab of Menu entry-level content" to all possible values, but that does not change. Any help would be appreciated.

    Sayyed

    Sayyed,

    You can confugure what jspx page is started when you run the application. By default, it is the House, jspx page, but you can change the execution of the uishell.jspx page that contains dynamic tabs.

    You can change it under properties propject - run configuration.

    Steven Davelaar,
    JHeadstart team.

  • Dynamic tabs

    See the CODE below.

    When the button is selected, the content below appears. Now what I want to do is to select the Home button to make them disappear. How is that possible?

    <! DOCTYPE html >

    < html lang = "en" >

    < head >

    < title > Bootstrap case < /title >

    < meta charset = "utf-8" >

    < meta name = "viewport" content = "width = device-width, original scale = 1" >

    " < link rel ="stylesheet"href =" http://MaxCDN.bootstrapcdn.com/bootstrap/3.3.6/CSS/bootstrap.min.CSS ">

    " < script src =" https://AJAX.googleapis.com/AJAX/libs/jQuery/1.12.0/jQuery.min.js "> < / script > .

    " < script src =" http://MaxCDN.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js "> < / script > .

    < / head >

    < body >

    < div class = "container" >

    Dynamic tabs < h2 > < / h2 >

    < ul class = "nav tabs-nav" >

    < li > < a data toggle = "tab" href = "#home" > home < /a > < /li >

    < li > < a data toggle = "tab" href = "#menu1" > Menu 1 < /a > < /li >

    < li > < a data toggle = "tab" href = "#menu2" > Menu 2 < /a > < /li >

    < li > < a data toggle = "tab" href = "#menu3" > Menu 3 < /a > < /li >

    < /ul >

    < div class = "Content tab" >

    < div id = 'home' class = "tab-pane" bland >

    < H3 > HOME < / h3 >

    < p > Lorem ipsum dolor sit amet, 195kgs adipisicing elit, sed eiusmod tempor storage developed and pain ut magna aliqua. < /p >

    < / div >

    < div id = "menu1" class = "tab-pane" bland >

    1 menu < h3 > < / h3 >

    < p > Ut enim ad minim veniam, quis nostrud ullamco laboris nisi ut aliquip ex ea commodo computer practice. < /p >

    < / div >

    < div id = "menu2" class = "tab-pane" bland >

    2 menu < h3 > < / h3 >

    < p > Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam. < /p >

    < / div >

    < div id = "menu3' class ="tab-pane"bland >

    3 menu < h3 > < / h3 >

    < p > Aeacus ipsa quae ab illo inventore veritatis and almost architectural beatae vitae dicta sunt explicabo. < /p >

    < / div >

    < / div >

    < / div >

    < / body >

    < / html >

    Its been asked a zillion times:

    show/hide tabs "bootstrap" of twitter - JSFiddle

  • Error in rejecting the many dynamic tabs

    Hi all

    On behalf of expanding knowledge, I bring you another question.  We use JDev/JHS 11.1.1.4 and our project is a migration of JHS 11.1.1.3.  This question relates to how JHeadStart treats the opening events and closing associated with the dynamic tabs.

    Our use case, is that there are several top-level groups in a menu to open as their own dynamic tab.  We support having several tabs open at the same time.  We lack in a problem where, after the closure of several tabs quickly, we receive an error similar to the following:

    <LifecycleImpl> <_handleException> ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase APPLY_REQUEST_VALUES 2
    java.lang.IllegalArgumentException: fromIndex(0) > toIndex(-1)
        at java.util.SubList.<init>(AbstractList.java:604)
        at java.util.RandomAccessSubList.<init>(AbstractList.java:758)
        at java.util.AbstractList.subList(AbstractList.java:468)
        at oracle.jheadstart.view.dyntab.DynTabTracker.getActiveTabList(DynTabTracker.java:158)
        at oracle.jheadstart.view.dyntab.DynTabContext.getMatchingTab(DynTabContext.java:354)
        at oracle.jheadstart.view.dyntab.DynTabContext.addOrSelectTab(DynTabContext.java:169)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.launchActivity(DynamicRegionManager.java:468)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.launchDynamicTabIfNeeded(DynamicRegionManager.java:505)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.setCurrentTaskFlowName(DynamicRegionManager.java:225)
        at oracle.jheadstart.controller.jsf.application.JhsNavigationHandlerImpl.handleNavigation(JhsNavigationHandlerImpl.java:142)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:130)
        at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190)
        at org.apache.myfaces.trinidad.component.UIXCollection.broadcast(UIXCollection.java:148)
        at org.apache.myfaces.trinidad.component.UIXTree.broadcast(UIXTree.java:232)
        at oracle.adf.view.rich.component.rich.data.RichTree.broadcast(RichTree.java:248)
        at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:102)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:92)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:361)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:96)
        at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:96)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:879)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:356)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:185)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
        at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
        at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:175)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.jheadstart.controller.jsf.AuthenticationFilter.doFilter(AuthenticationFilter.java:282)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
        at java.security.AccessController.doPrivileged(Native Method)
        at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
        at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
        at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
        at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    <RegistrationConfigurator> <handleError> ADF_FACES-60096:Server Exception during PPR, #1
    java.lang.IllegalArgumentException: fromIndex(0) > toIndex(-1)
        at java.util.SubList.<init>(AbstractList.java:604)
        at java.util.RandomAccessSubList.<init>(AbstractList.java:758)
        at java.util.AbstractList.subList(AbstractList.java:468)
        at oracle.jheadstart.view.dyntab.DynTabTracker.getActiveTabList(DynTabTracker.java:158)
        at oracle.jheadstart.view.dyntab.DynTabContext.getMatchingTab(DynTabContext.java:354)
        at oracle.jheadstart.view.dyntab.DynTabContext.addOrSelectTab(DynTabContext.java:169)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.launchActivity(DynamicRegionManager.java:468)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.launchDynamicTabIfNeeded(DynamicRegionManager.java:505)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.setCurrentTaskFlowName(DynamicRegionManager.java:225)
        at oracle.jheadstart.controller.jsf.application.JhsNavigationHandlerImpl.handleNavigation(JhsNavigationHandlerImpl.java:142)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:130)
        at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190)
        at org.apache.myfaces.trinidad.component.UIXCollection.broadcast(UIXCollection.java:148)
        at org.apache.myfaces.trinidad.component.UIXTree.broadcast(UIXTree.java:232)
        at oracle.adf.view.rich.component.rich.data.RichTree.broadcast(RichTree.java:248)
        at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:102)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:92)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:361)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:96)
        at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:96)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:879)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:356)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:185)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
        at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
        at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:175)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.jheadstart.controller.jsf.AuthenticationFilter.doFilter(AuthenticationFilter.java:282)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
        at java.security.AccessController.doPrivileged(Native Method)
        at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
        at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
        at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
        at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    
    

    From what I've seen, the number of active tabs gets decremented before closing the tab in fact.  This sometimes requires closing a tab more than once (which decrements the number of active tabs less than 0).  Then, when you try to open a new tab, the number of active tabs is passed as argument to the sublist mentioned in the above stack.  If the number is less than 0, the exception above occurs.

    What follows is a variation on the above, the only difference is that if reject you everything except a tab, then try to open a new one, the following error is thrown.

    
    <LifecycleImpl> <_handleException> ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase APPLY_REQUEST_VALUES 2
    java.lang.IllegalStateException: TabList state is corrupted!
        at oracle.jheadstart.view.dyntab.DynTabContext.getFirstInactiveTabOrThrow(DynTabContext.java:252)
        at oracle.jheadstart.view.dyntab.DynTabContext.addTab(DynTabContext.java:221)
        at oracle.jheadstart.view.dyntab.DynTabContext.addOrSelectTab(DynTabContext.java:180)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.launchActivity(DynamicRegionManager.java:468)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.launchDynamicTabIfNeeded(DynamicRegionManager.java:505)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.setCurrentTaskFlowName(DynamicRegionManager.java:225)
        at oracle.jheadstart.controller.jsf.application.JhsNavigationHandlerImpl.handleNavigation(JhsNavigationHandlerImpl.java:142)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:130)
        at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190)
        at org.apache.myfaces.trinidad.component.UIXCollection.broadcast(UIXCollection.java:148)
        at org.apache.myfaces.trinidad.component.UIXTree.broadcast(UIXTree.java:232)
        at oracle.adf.view.rich.component.rich.data.RichTree.broadcast(RichTree.java:248)
        at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:102)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:92)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:361)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:96)
        at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:96)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:879)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:356)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:185)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
        at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
        at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:175)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.jheadstart.controller.jsf.AuthenticationFilter.doFilter(AuthenticationFilter.java:282)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
        at java.security.AccessController.doPrivileged(Native Method)
        at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
        at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
        at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
        at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    <RegistrationConfigurator> <handleError> ADF_FACES-60096:Server Exception during PPR, #1
    java.lang.IllegalStateException: TabList state is corrupted!
        at oracle.jheadstart.view.dyntab.DynTabContext.getFirstInactiveTabOrThrow(DynTabContext.java:252)
        at oracle.jheadstart.view.dyntab.DynTabContext.addTab(DynTabContext.java:221)
        at oracle.jheadstart.view.dyntab.DynTabContext.addOrSelectTab(DynTabContext.java:180)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.launchActivity(DynamicRegionManager.java:468)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.launchDynamicTabIfNeeded(DynamicRegionManager.java:505)
        at oracle.jheadstart.controller.jsf.bean.DynamicRegionManager.setCurrentTaskFlowName(DynamicRegionManager.java:225)
        at oracle.jheadstart.controller.jsf.application.JhsNavigationHandlerImpl.handleNavigation(JhsNavigationHandlerImpl.java:142)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:130)
        at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190)
        at org.apache.myfaces.trinidad.component.UIXCollection.broadcast(UIXCollection.java:148)
        at org.apache.myfaces.trinidad.component.UIXTree.broadcast(UIXTree.java:232)
        at oracle.adf.view.rich.component.rich.data.RichTree.broadcast(RichTree.java:248)
        at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:102)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:92)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:361)
        at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:96)
        at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:96)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:879)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:356)
        at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:185)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
        at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)
        at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)
        at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:175)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.jheadstart.controller.jsf.AuthenticationFilter.doFilter(AuthenticationFilter.java:282)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
        at java.security.AccessController.doPrivileged(Native Method)
        at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
        at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
        at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
        at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
    

    It is not a lot of info on this there and it seems to relate to internal libraries so I thought I'd ask for advice here.  My first thought was to override the method, passing the number of active tabs to catch if value is less than zero, but which does not take account of the second instance.  Anyone encountered this before?

    Thank you very much

    After considerable efforts, we found a solution if everyone should experience this error.  This code checks simply tab always has a unique identifier, and if so, remove the tab from the active list.

    Note: If your system works well, you may never encounter this error.  But it can be recreated with ease by turning on a lot of logging or by setting a breakpoint in one removeTab method in the class DynTabContext JHS.

    public class CustomDynTabContext extends DynTabContext {
        public CustomsDynTabContext() {
            super();
        }
    
        @Override
        protected void removeTab(DynTab tab, boolean force) {
    
            //Need to first check if tab is already null,
            //this prevents tabList from becoming corrupt
            if (tab.getUniqueIdentifier() != null) {
                super.removeTab(tab, force);
            }
        }
    }
    

Maybe you are looking for