test_class.declarator: pluginServices
test_class.modifier: @Mock
test_class.original_string: @Mock
      PerspectivePluginServicesImpl pluginServices;
test_class.type: PerspectivePluginServicesImpl
test_class.var_name: pluginServices
test_class.declarator: navigationServices
test_class.modifier: @Mock
test_class.original_string: @Mock
      NavigationServicesImpl navigationServices;
test_class.type: NavigationServicesImpl
test_class.var_name: navigationServices
test_class.declarator: layoutTemplateAnalyzer
test_class.modifier: @InjectMocks
test_class.original_string: @InjectMocks
      LayoutTemplateAnalyzer layoutTemplateAnalyzer;
test_class.type: LayoutTemplateAnalyzer
test_class.var_name: layoutTemplateAnalyzer
test_class.declarator: layoutA = new LayoutTemplate("A")
test_class.original_string: LayoutTemplate layoutA = new LayoutTemplate("A");
test_class.type: LayoutTemplate
test_class.var_name: layoutA
test_class.declarator: layoutB = new LayoutTemplate("B")
test_class.original_string: LayoutTemplate layoutB = new LayoutTemplate("B");
test_class.type: LayoutTemplate
test_class.var_name: layoutB
test_class.declarator: layoutC = new LayoutTemplate("C")
test_class.original_string: LayoutTemplate layoutC = new LayoutTemplate("C");
test_class.type: LayoutTemplate
test_class.var_name: layoutC
test_class.declarator: layoutD = new LayoutTemplate("D")
test_class.original_string: LayoutTemplate layoutD = new LayoutTemplate("D");
test_class.type: LayoutTemplate
test_class.var_name: layoutD
test_class.declarator: layoutE = new LayoutTemplate("D")
test_class.original_string: LayoutTemplate layoutE = new LayoutTemplate("D");
test_class.type: LayoutTemplate
test_class.var_name: layoutE
test_class.declarator: layoutColumnA = new LayoutColumn("12")
test_class.original_string: LayoutColumn layoutColumnA = new LayoutColumn("12");
test_class.type: LayoutColumn
test_class.var_name: layoutColumnA
test_class.declarator: layoutColumnB = new LayoutColumn("12")
test_class.original_string: LayoutColumn layoutColumnB = new LayoutColumn("12");
test_class.type: LayoutColumn
test_class.var_name: layoutColumnB
test_class.declarator: layoutColumnD = new LayoutColumn("12")
test_class.original_string: LayoutColumn layoutColumnD = new LayoutColumn("12");
test_class.type: LayoutColumn
test_class.var_name: layoutColumnD
test_class.declarator: layoutComponentA = new LayoutComponent(CAROUSEL.getFQClassName())
test_class.original_string: LayoutComponent layoutComponentA = new LayoutComponent(CAROUSEL.getFQClassName());
test_class.type: LayoutComponent
test_class.var_name: layoutComponentA
test_class.declarator: layoutComponentB = new LayoutComponent(CAROUSEL.getFQClassName())
test_class.original_string: LayoutComponent layoutComponentB = new LayoutComponent(CAROUSEL.getFQClassName());
test_class.type: LayoutComponent
test_class.var_name: layoutComponentB
test_class.declarator: layoutComponentC1 = new LayoutComponent(TABLIST.getFQClassName())
test_class.original_string: LayoutComponent layoutComponentC1 = new LayoutComponent(TABLIST.getFQClassName());
test_class.type: LayoutComponent
test_class.var_name: layoutComponentC1
test_class.declarator: layoutComponentC2 = new LayoutComponent(TABLIST.getFQClassName())
test_class.original_string: LayoutComponent layoutComponentC2 = new LayoutComponent(TABLIST.getFQClassName());
test_class.type: LayoutComponent
test_class.var_name: layoutComponentC2
test_class.declarator: layoutComponentD = new LayoutComponent(TREE.getFQClassName())
test_class.original_string: LayoutComponent layoutComponentD = new LayoutComponent(TREE.getFQClassName());
test_class.type: LayoutComponent
test_class.var_name: layoutComponentD
test_class.declarator: layoutComponentE = new LayoutComponent()
test_class.original_string: LayoutComponent layoutComponentE = new LayoutComponent();
test_class.type: LayoutComponent
test_class.var_name: layoutComponentE
test_class.file: dashbuilder-backend/dashbuilder-navigation-backend/src/test/java/org/dashbuilder/navigation/service/LayoutTemplateAnalyzerTest.java
test_class.identifier: LayoutTemplateAnalyzerTest
test_case.body: @Test
      public void testIndirectRecursiveIssue() throws Exception {
          when(navigationServices.loadNavTree()).thenReturn(new NavTreeBuilder()
                  .group("groupA", "", "", true)
                      .item("layout", "", "", true, NavWorkbenchCtx.perspective("B"))
                      .endGroup()
                  .group("groupB", "", "", true)
                      .item("layout", "", "", true, NavWorkbenchCtx.perspective("A"))
                      .endGroup()
                  .build());
  
          LayoutRecursionIssue info = layoutTemplateAnalyzer.analyzeRecursion(layoutA);
          assertEquals(info.getRefList().size(), 7);
          assertEquals(info.getRefList().get(0), new LayoutNavigationRef(PERSPECTIVE, "A"));
          assertEquals(info.getRefList().get(1), new LayoutNavigationRef(NAV_COMPONENT, CAROUSEL.getFQClassName()));
          assertEquals(info.getRefList().get(2), new LayoutNavigationRef(NAV_GROUP_DEFINED, "groupA"));
          assertEquals(info.getRefList().get(3), new LayoutNavigationRef(PERSPECTIVE, "B"));
          assertEquals(info.getRefList().get(4), new LayoutNavigationRef(NAV_COMPONENT, CAROUSEL.getFQClassName()));
          assertEquals(info.getRefList().get(5), new LayoutNavigationRef(NAV_GROUP_DEFINED, "groupB"));
          assertEquals(info.getRefList().get(6), new LayoutNavigationRef(PERSPECTIVE, "A"));
      }
test_case.class_method_signature: LayoutTemplateAnalyzerTest.testIndirectRecursiveIssue()
test_case.full_signature: @Test public void testIndirectRecursiveIssue()
test_case.identifier: testIndirectRecursiveIssue
test_case.invocations: thenReturn when loadNavTree build endGroup item group endGroup item group perspective perspective analyzeRecursion assertEquals size getRefList assertEquals get getRefList assertEquals get getRefList getFQClassName assertEquals get getRefList assertEquals get getRefList assertEquals get getRefList getFQClassName assertEquals get getRefList assertEquals get getRefList
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testIndirectRecursiveIssue()
focal_class.declarator: ALL_NAV_GROUP_COMPONENTS = Arrays.asList(CAROUSEL, MENUBAR, TABLIST, TREE, TILES)
focal_class.modifier: static final
focal_class.original_string: static final List<NavDragComponentType> ALL_NAV_GROUP_COMPONENTS = Arrays.asList(CAROUSEL, MENUBAR, TABLIST, TREE, TILES);
focal_class.type: List<NavDragComponentType>
focal_class.var_name: ALL_NAV_GROUP_COMPONENTS
focal_class.declarator: SHOW_ENTIRE_NAV_GROUP_COMPONENTS = Arrays.asList(CAROUSEL)
focal_class.modifier: static final
focal_class.original_string: static final List<NavDragComponentType> SHOW_ENTIRE_NAV_GROUP_COMPONENTS = Arrays.asList(CAROUSEL);
focal_class.type: List<NavDragComponentType>
focal_class.var_name: SHOW_ENTIRE_NAV_GROUP_COMPONENTS
focal_class.declarator: DEFAULT_ITEM_NAV_GROUP_COMPONENTS = Arrays.asList(MENUBAR, TABLIST, TREE)
focal_class.modifier: static final
focal_class.original_string: static final List<NavDragComponentType> DEFAULT_ITEM_NAV_GROUP_COMPONENTS = Arrays.asList(MENUBAR, TABLIST, TREE);
focal_class.type: List<NavDragComponentType>
focal_class.var_name: DEFAULT_ITEM_NAV_GROUP_COMPONENTS
focal_class.declarator: pluginServices
focal_class.modifier: private
focal_class.original_string: private PerspectivePluginServicesImpl pluginServices;
focal_class.type: PerspectivePluginServicesImpl
focal_class.var_name: pluginServices
focal_class.declarator: navigationServices
focal_class.modifier: private
focal_class.original_string: private NavigationServicesImpl navigationServices;
focal_class.type: NavigationServicesImpl
focal_class.var_name: navigationServices
focal_class.file: dashbuilder-backend/dashbuilder-navigation-backend/src/main/java/org/dashbuilder/navigation/service/LayoutTemplateAnalyzer.java
focal_class.identifier: LayoutTemplateAnalyzer
focal_class.class_method_signature: LayoutTemplateAnalyzer.LayoutTemplateAnalyzer()
focal_class.full_signature: public  LayoutTemplateAnalyzer()
focal_class.identifier: LayoutTemplateAnalyzer
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  LayoutTemplateAnalyzer()
focal_class.class_method_signature: LayoutTemplateAnalyzer.LayoutTemplateAnalyzer(PerspectivePluginServicesImpl pluginServices, NavigationServicesImpl navigationServices)
focal_class.full_signature: @Inject public  LayoutTemplateAnalyzer(PerspectivePluginServicesImpl pluginServices, NavigationServicesImpl navigationServices)
focal_class.identifier: LayoutTemplateAnalyzer
focal_class.modifiers: @Inject public
focal_class.parameters: (PerspectivePluginServicesImpl pluginServices, NavigationServicesImpl navigationServices)
focal_class.signature:  LayoutTemplateAnalyzer(PerspectivePluginServicesImpl pluginServices, NavigationServicesImpl navigationServices)
focal_class.class_method_signature: LayoutTemplateAnalyzer.analyzeRecursion(LayoutTemplate layoutTemplate)
focal_class.full_signature: public LayoutRecursionIssue analyzeRecursion(LayoutTemplate layoutTemplate)
focal_class.identifier: analyzeRecursion
focal_class.modifiers: public
focal_class.parameters: (LayoutTemplate layoutTemplate)
focal_class.return: LayoutRecursionIssue
focal_class.signature: LayoutRecursionIssue analyzeRecursion(LayoutTemplate layoutTemplate)
focal_class.class_method_signature: LayoutTemplateAnalyzer.analyzeRecursion(LayoutTemplate layoutTemplate, LayoutTemplateContext layoutCtx)
focal_class.full_signature: public LayoutRecursionIssue analyzeRecursion(LayoutTemplate layoutTemplate, LayoutTemplateContext layoutCtx)
focal_class.identifier: analyzeRecursion
focal_class.modifiers: public
focal_class.parameters: (LayoutTemplate layoutTemplate, LayoutTemplateContext layoutCtx)
focal_class.return: LayoutRecursionIssue
focal_class.signature: LayoutRecursionIssue analyzeRecursion(LayoutTemplate layoutTemplate, LayoutTemplateContext layoutCtx)
focal_class.class_method_signature: LayoutTemplateAnalyzer.analyzeRecursion(LayoutTemplate layoutTemplate, LayoutRecursionIssue issue, LayoutTemplateContext layoutCtx)
focal_class.full_signature: public boolean analyzeRecursion(LayoutTemplate layoutTemplate, LayoutRecursionIssue issue, LayoutTemplateContext layoutCtx)
focal_class.identifier: analyzeRecursion
focal_class.modifiers: public
focal_class.parameters: (LayoutTemplate layoutTemplate, LayoutRecursionIssue issue, LayoutTemplateContext layoutCtx)
focal_class.return: boolean
focal_class.signature: boolean analyzeRecursion(LayoutTemplate layoutTemplate, LayoutRecursionIssue issue, LayoutTemplateContext layoutCtx)
focal_class.class_method_signature: LayoutTemplateAnalyzer.analyzeRecursion(LayoutRow row, LayoutRecursionIssue issue, LayoutTemplateContext layoutCtx)
focal_class.full_signature: public boolean analyzeRecursion(LayoutRow row, LayoutRecursionIssue issue, LayoutTemplateContext layoutCtx)
focal_class.identifier: analyzeRecursion
focal_class.modifiers: public
focal_class.parameters: (LayoutRow row, LayoutRecursionIssue issue, LayoutTemplateContext layoutCtx)
focal_class.return: boolean
focal_class.signature: boolean analyzeRecursion(LayoutRow row, LayoutRecursionIssue issue, LayoutTemplateContext layoutCtx)
focal_class.class_method_signature: LayoutTemplateAnalyzer.analyzeRecursion(NavGroup navGroup, LayoutNavigationRefType navGroupRefType, LayoutRecursionIssue issue)
focal_class.full_signature: public boolean analyzeRecursion(NavGroup navGroup, LayoutNavigationRefType navGroupRefType, LayoutRecursionIssue issue)
focal_class.identifier: analyzeRecursion
focal_class.modifiers: public
focal_class.parameters: (NavGroup navGroup, LayoutNavigationRefType navGroupRefType, LayoutRecursionIssue issue)
focal_class.return: boolean
focal_class.signature: boolean analyzeRecursion(NavGroup navGroup, LayoutNavigationRefType navGroupRefType, LayoutRecursionIssue issue)
focal_class.class_method_signature: LayoutTemplateAnalyzer.analyzeRecursion(String perspectiveId, LayoutRecursionIssue issue)
focal_class.full_signature: public boolean analyzeRecursion(String perspectiveId, LayoutRecursionIssue issue)
focal_class.identifier: analyzeRecursion
focal_class.modifiers: public
focal_class.parameters: (String perspectiveId, LayoutRecursionIssue issue)
focal_class.return: boolean
focal_class.signature: boolean analyzeRecursion(String perspectiveId, LayoutRecursionIssue issue)
focal_class.class_method_signature: LayoutTemplateAnalyzer.hasNavigationComponents(LayoutTemplate layoutTemplate)
focal_class.full_signature: public boolean hasNavigationComponents(LayoutTemplate layoutTemplate)
focal_class.identifier: hasNavigationComponents
focal_class.modifiers: public
focal_class.parameters: (LayoutTemplate layoutTemplate)
focal_class.return: boolean
focal_class.signature: boolean hasNavigationComponents(LayoutTemplate layoutTemplate)
focal_class.class_method_signature: LayoutTemplateAnalyzer.hasNavigationComponents(LayoutRow row)
focal_class.full_signature: public boolean hasNavigationComponents(LayoutRow row)
focal_class.identifier: hasNavigationComponents
focal_class.modifiers: public
focal_class.parameters: (LayoutRow row)
focal_class.return: boolean
focal_class.signature: boolean hasNavigationComponents(LayoutRow row)
focal_class.class_method_signature: LayoutTemplateAnalyzer.showEntireNavGroup(LayoutComponent component)
focal_class.full_signature: protected boolean showEntireNavGroup(LayoutComponent component)
focal_class.identifier: showEntireNavGroup
focal_class.modifiers: protected
focal_class.parameters: (LayoutComponent component)
focal_class.return: boolean
focal_class.signature: boolean showEntireNavGroup(LayoutComponent component)
focal_class.class_method_signature: LayoutTemplateAnalyzer.hasDefaultItem(LayoutComponent component)
focal_class.full_signature: protected boolean hasDefaultItem(LayoutComponent component)
focal_class.identifier: hasDefaultItem
focal_class.modifiers: protected
focal_class.parameters: (LayoutComponent component)
focal_class.return: boolean
focal_class.signature: boolean hasDefaultItem(LayoutComponent component)
focal_class.class_method_signature: LayoutTemplateAnalyzer.isRuntimePerspectiveId(NavItem navItem)
focal_class.full_signature: protected boolean isRuntimePerspectiveId(NavItem navItem)
focal_class.identifier: isRuntimePerspectiveId
focal_class.modifiers: protected
focal_class.parameters: (NavItem navItem)
focal_class.return: boolean
focal_class.signature: boolean isRuntimePerspectiveId(NavItem navItem)
focal_class.class_method_signature: LayoutTemplateAnalyzer.getFirstRuntimePerspective(List<NavItem> itemList)
focal_class.full_signature: protected NavItem getFirstRuntimePerspective(List<NavItem> itemList)
focal_class.identifier: getFirstRuntimePerspective
focal_class.modifiers: protected
focal_class.parameters: (List<NavItem> itemList)
focal_class.return: NavItem
focal_class.signature: NavItem getFirstRuntimePerspective(List<NavItem> itemList)
focal_method.body: public LayoutRecursionIssue analyzeRecursion(LayoutTemplate layoutTemplate) {
          return analyzeRecursion(layoutTemplate, null);
      }
focal_method.class_method_signature: LayoutTemplateAnalyzer.analyzeRecursion(LayoutTemplate layoutTemplate)
focal_method.full_signature: public LayoutRecursionIssue analyzeRecursion(LayoutTemplate layoutTemplate)
focal_method.identifier: analyzeRecursion
focal_method.invocations: analyzeRecursion
focal_method.modifiers: public
focal_method.parameters: (LayoutTemplate layoutTemplate)
focal_method.return: LayoutRecursionIssue
focal_method.signature: LayoutRecursionIssue analyzeRecursion(LayoutTemplate layoutTemplate)