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); } }
private void traverseMenuBar(final BS3MenuBar menuBar, final MenuBars.Visitor visitor) { final Visitor bs3Visitor = visitor instanceof Visitor ? (Visitor) visitor : null; if(bs3Visitor != null) { bs3Visitor.preVisit(menuBar); bs3Visitor.visit(menuBar); } for (BS3Menu menu : menuBar.getMenus()) { traverseMenu(menu, visitor); } if(bs3Visitor != null) { bs3Visitor.postVisit(menuBar); } }
@Override public void visit(final MenuBars.Visitor visitor) { traverseMenuBar(getPrimary(), visitor); traverseMenuBar(getSecondary(), visitor); traverseMenuBar(getTertiary(), visitor); }
@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))); }
private BS3MenuBars deriveMenuBarsFromMetaModelFacets() { final BS3MenuBars menuBars = new BS3MenuBars(); append(visibleServiceAdapters, menuBars.getPrimary(), DomainServiceLayout.MenuBar.PRIMARY); append(visibleServiceAdapters, menuBars.getSecondary(), DomainServiceLayout.MenuBar.SECONDARY); append(visibleServiceAdapters, menuBars.getTertiary(), DomainServiceLayout.MenuBar.TERTIARY); menuBars.setTnsAndSchemaLocation(tnsAndSchemaLocation()); final BS3Menu otherMenu = new BS3Menu(); otherMenu.setNamed("Other"); otherMenu.setUnreferencedActions(true); menuBars.getPrimary().getMenus().add(otherMenu);
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; }
public BS3MenuBar menuBarFor(final DomainServiceLayout.MenuBar menuBar) { switch (menuBar) { case PRIMARY: return getPrimary(); case SECONDARY: return getSecondary(); case TERTIARY: return getTertiary(); } return null; }
private void traverseSection(final BS3MenuSection section, final MenuBars.Visitor visitor) { final Visitor bs3Visitor = visitor instanceof Visitor ? (Visitor) visitor : null; if(bs3Visitor != null) { bs3Visitor.preVisit(section); bs3Visitor.visit(section); } final List<ServiceActionLayoutData> actions = section.getServiceActions(); for (ServiceActionLayoutData action : actions) { visitor.visit(action); } if(bs3Visitor != null) { bs3Visitor.postVisit(section); } }
menuBars.setTnsAndSchemaLocation(tnsAndSchemaLocation()); menuBars.getAllServiceActionsByObjectTypeAndId(); fallbackMenuBars.visit(new BS3MenuBars.VisitorAdapter(){
private void append( final List<ObjectAdapter> serviceAdapters, final BS3MenuBar menuBar, final DomainServiceLayout.MenuBar menuBarPos) { List<ServiceAndAction> serviceActions = Lists.newArrayList(); // cf ServiceActionsModel & ServiceActionUtil#buildMenu in Wicket viewer for (final ObjectAdapter serviceAdapter : FluentIterable.from(serviceAdapters).filter(with(menuBarPos))) { collateServiceActions(serviceAdapter, ActionType.USER, serviceActions); collateServiceActions(serviceAdapter, ActionType.PROTOTYPE, serviceActions); } final Set<String> serviceNamesInOrder = serviceNamesInOrder(serviceAdapters, serviceActions); final Map<String, List<ServiceAndAction>> serviceActionsByName = groupByServiceName(serviceActions); // prune any service names that have no service actions serviceNamesInOrder.retainAll(serviceActionsByName.keySet()); List<BS3Menu> menus = buildMenuItems(serviceNamesInOrder, serviceActionsByName); menuBar.getMenus().addAll(menus); }
BS3Menu validate(final BS3MenuBars menuBars) { if (menuBars == null) { return null; } final List<BS3Menu> menusWithUnreferencedActionsFlagSet = Lists.newArrayList(); menuBars.visit(new BS3MenuBars.VisitorAdapter(){ @Override public void visit(final BS3Menu menu) { if(isSet(menu.isUnreferencedActions())) { menusWithUnreferencedActionsFlagSet.add(menu); } } private Boolean isSet(final Boolean flag) { return flag != null && flag; } }); final int size = menusWithUnreferencedActionsFlagSet.size(); if (size == 1) { return menusWithUnreferencedActionsFlagSet.get(0); } menuBars.setMetadataError( "Exactly one menu must have 'unreferencedActions' flag set; found " + size + " such menus"); if(!deploymentCategoryProvider.getDeploymentCategory().isProduction()) { messageService.warnUser("Menubars metadata errors; check the error log"); } LOG.error("Menubar layout metadata errors:\n\n{}\n\n", jaxbService.toXml(menuBars)); return null; }