private static List<BS3Menu> buildMenuItems( final Set<String> serviceNamesInOrder, final Map<String, List<ServiceAndAction>> serviceActionsByName) { final List<BS3Menu> menus = Lists.newArrayList(); for (String serviceName : serviceNamesInOrder) { BS3Menu menu = new BS3Menu(serviceName); menus.add(menu); BS3MenuSection menuSection = new BS3MenuSection(); final List<ServiceAndAction> serviceActionsForName = serviceActionsByName.get(serviceName); for (ServiceAndAction serviceAndAction : serviceActionsForName) { if(serviceAndAction.separator && !menuSection.getServiceActions().isEmpty()) { menu.getSections().add(menuSection); menuSection = new BS3MenuSection(); } ObjectAction objectAction = serviceAndAction.objectAction; final String objectType = serviceAndAction.serviceAdapter.getSpecification().getSpecId().asString(); ServiceActionLayoutData action = new ServiceActionLayoutData(objectType, objectAction.getId()); action.setNamed(objectAction.getName()); menuSection.getServiceActions().add(action); } if(!menuSection.getServiceActions().isEmpty()) { menu.getSections().add(menuSection); } } return menus; }
@Test public void happyCase() throws Exception { // given BS3MenuBars menuBars = new BS3MenuBars(); BS3Menu menu = new BS3Menu(); menu.setNamed("Parties"); BS3MenuSection organisationMenu = new BS3MenuSection(); organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "findByReference")); organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "findByName")); organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "create")); menu.getSections().add(organisationMenu); BS3MenuSection personMenu = new BS3MenuSection(); personMenu.getServiceActions().add(new ServiceActionLayoutData("parties.PersonMenu", "findByUsername")); personMenu.getServiceActions().add(new ServiceActionLayoutData("parties.PersonMenu", "create")); menu.getSections().add(personMenu); menuBars.getPrimary().getMenus().add(menu); // when String xml = jaxbService.toXml(menuBars); System.out.println(xml); // when BS3MenuBars menuBars2 = jaxbService.fromXml(BS3MenuBars.class, xml); // then String xml2 = jaxbService.toXml(menuBars2); assertThat(xml, is(equalTo(xml2))); }
final BS3Menu otherMenu = new BS3Menu(); otherMenu.setNamed("Other"); otherMenu.setUnreferencedActions(true); menuBars.getPrimary().getMenus().add(otherMenu);
private void traverseMenu(final BS3Menu menu, final MenuBars.Visitor visitor) { final Visitor bs3Visitor = visitor instanceof Visitor ? (Visitor) visitor : null; if(bs3Visitor != null) { bs3Visitor.preVisit(menu); bs3Visitor.visit(menu); } final List<BS3MenuSection> sections = menu.getSections(); for (BS3MenuSection section : sections) { traverseSection(section, visitor); } if(bs3Visitor != null) { bs3Visitor.postVisit(menu); } }