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 testPerspectiveReuseNoRecursiveIssue() throws Exception {
          when(navigationServices.loadNavTree()).thenReturn(new NavTreeBuilder()
                  .group("groupC", "", "", true)
                      .item("layout", "", "", true, NavWorkbenchCtx.perspective("B"))
                      .endGroup()
                  .build());
  
          LayoutRecursionIssue info = layoutTemplateAnalyzer.analyzeRecursion(layoutC);
          assertTrue(info.isEmpty());
      }
test_case.class_method_signature: LayoutTemplateAnalyzerTest.testPerspectiveReuseNoRecursiveIssue()
test_case.full_signature: @Test public void testPerspectiveReuseNoRecursiveIssue()
test_case.identifier: testPerspectiveReuseNoRecursiveIssue
test_case.invocations: thenReturn when loadNavTree build endGroup item group perspective analyzeRecursion assertTrue isEmpty
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testPerspectiveReuseNoRecursiveIssue()
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)