for (Iterator iterator =
menusEle.getChildrenWithName(new QName(WSO2CARBON_NS, MENUE_ELE));
iterator.hasNext();) {
OMElement menuEle = (OMElement) iterator.next();
Menu menu = new Menu();
Iterator idEles = menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "id"));
if (idEles.hasNext()) {
OMElement idEle = (OMElement) idEles.next();
menu.setId(idEle.getText());
} else {
//found menu without an Id
log.warn(componentName + " contains a component.xml with empty menu id");
}
Iterator i18nKeyEles =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "i18n-key"));
if (i18nKeyEles.hasNext()) {
OMElement i18nKeyEle = (OMElement) i18nKeyEles.next();
menu.setI18nKey(i18nKeyEle.getText());
}
Iterator i18nBundleEles =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "i18n-bundle"));
if (i18nBundleEles.hasNext()) {
OMElement i18nBundleEle = (OMElement) i18nBundleEles.next();
menu.setI18nBundle(i18nBundleEle.getText());
}
Iterator parentMenuEles =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "parent-menu"));
if (parentMenuEles.hasNext()) {
OMElement parentMenuEle = (OMElement) parentMenuEles.next();
menu.setParentMenu(parentMenuEle.getText());
}
Iterator regionEles = menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "region"));
if (regionEles.hasNext()) {
OMElement regionEle = (OMElement) regionEles.next();
menu.setRegion(regionEle.getText());
}
Iterator iconEles = menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "icon"));
if (iconEles.hasNext()) {
OMElement iconEle = (OMElement) iconEles.next();
menu.setIcon(iconEle.getText());
}
Iterator linkEles = menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "link"));
if (linkEles.hasNext()) {
OMElement linkEle = (OMElement) linkEles.next();
menu.setLink(linkEle.getText());
}
Iterator orderEles = menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "order"));
if (orderEles.hasNext()) {
OMElement orderEle = (OMElement) orderEles.next();
menu.setOrder(orderEle.getText());
}
Iterator styleClassEles =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "style-class"));
if (styleClassEles.hasNext()) {
OMElement styleEle = (OMElement) styleClassEles.next();
menu.setStyleClass(styleEle.getText());
}
Iterator requireAuthenticationEles =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "skip-authentication"));
if (requireAuthenticationEles.hasNext()) {
menu.setRequireAuthentication(false);
component.addUnauthenticatedUrl(menu.getLink());
OMElement skipAuthElement = (OMElement) requireAuthenticationEles.next();
Iterator skipLinkEles =
skipAuthElement.getChildrenWithName(new QName(WSO2CARBON_NS, "skip-link"));
while (skipLinkEles.hasNext()) {
OMElement skipLinkElement = (OMElement) skipLinkEles.next();
if (skipLinkElement.getLocalName().equalsIgnoreCase("skip-link")) {
if (skipLinkElement.getText() != null) {
component.addUnauthenticatedUrl(skipLinkElement.getText());
}
}
}
}
Iterator requirePermissionElements =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, REQUIRE_PERMISSION));
List<String> permissions = new LinkedList<String>();
while (requirePermissionElements.hasNext()) {
OMElement permissionEle = (OMElement) requirePermissionElements.next();
permissions.add(permissionEle.getText());
}
if (permissions.size() > 0) {
menu.setRequirePermission(permissions.toArray(new String[permissions.size()]));
} else {
Iterator permissionElements =
menuEle.getChildrenWithName(
new QName(WSO2CARBON_NS, "all"));
if (permissionElements.hasNext()) {
menu.setAllPermissionsRequired(true);
} else {
permissionElements =
menuEle.getChildrenWithName(
new QName(WSO2CARBON_NS, "at-least"));
if (permissionElements.hasNext()) {
menu.setAtLeastOnePermissionsRequired(true);
}
}
if (permissionElements.hasNext()) {
OMElement permissionsEle = (OMElement) permissionElements.next();
requirePermissionElements =
permissionsEle.getChildrenWithName(
new QName(WSO2CARBON_NS, REQUIRE_PERMISSION));
while (requirePermissionElements.hasNext()) {
OMElement permissionEle = (OMElement) requirePermissionElements.next();
permissions.add(permissionEle.getText());
}
if (permissions.size() > 0) {
menu.setRequirePermission(
permissions.toArray(new String[permissions.size()]));
}
}
}
// checking require master tenant flag
Iterator requireSuperTenantEles =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, REQUIRE_SUPER_TENANT));
if (requireSuperTenantEles.hasNext()) {
OMElement requireSuperTenantEle = (OMElement) requireSuperTenantEles.next();
if ("true".equalsIgnoreCase(requireSuperTenantEle.getText())) {
menu.setRequireSuperTenant(true);
}
}
// checking require master tenant flag
Iterator requireNotSuperTenantEles =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, REQUIRE_NOT_SUPER_TENANT));
if (requireNotSuperTenantEles.hasNext()) {
OMElement requireNotSuperTenantEle = (OMElement) requireNotSuperTenantEles.next();
if ("true".equalsIgnoreCase(requireNotSuperTenantEle.getText())) {
menu.setRequireNotSuperTenant(true);
}
}
// checking the require not logged in
Iterator requireNotLoggedInEles =
menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, REQUIRE_NOT_LOGGED_IN));
if (requireNotLoggedInEles.hasNext()) {
OMElement requireNotLoggedInEle = (OMElement) requireNotLoggedInEles.next();
if ("true".equalsIgnoreCase(requireNotLoggedInEle.getText())) {
menu.setRequireNotLoggedIn(true);
}
}
//url parameters
Iterator<OMElement> urlParamsEles = menuEle.getChildrenWithName(new QName(WSO2CARBON_NS, "url-params"));
if (urlParamsEles.hasNext()) {
OMElement urlParamsEle = (OMElement) urlParamsEles.next();
menu.setUrlParameters(urlParamsEle.getText());
}
component.addMenu(menu);
}
}