folder.setSkin("skin-1");
folder.setDefaultPage("default-page.psml");
folder.setShortTitle("Root");
GenericMetadata metadata = folder.getMetadata();
metadata.addField(Locale.FRENCH, "title", "[fr] Root Folder");
SecurityConstraints folderConstraints = pageManager.newSecurityConstraints();
folderConstraints.setOwner("admin");
List inlineFolderConstraints = new ArrayList(2);
SecurityConstraint folderConstraint = pageManager.newFolderSecurityConstraint();
folderConstraint.setUsers(Shared.makeListFromCSV("user,admin"));
folderConstraint.setRoles(Shared.makeListFromCSV("manager"));
folderConstraint.setGroups(Shared.makeListFromCSV("*"));
folderConstraint.setPermissions(Shared.makeListFromCSV("view,edit"));
inlineFolderConstraints.add(folderConstraint);
folderConstraint = folder.newSecurityConstraint();
folderConstraint.setPermissions(Shared.makeListFromCSV("edit"));
inlineFolderConstraints.add(folderConstraint);
folderConstraints.setSecurityConstraints(inlineFolderConstraints);
List folderConstraintsRefs = new ArrayList(2);
folderConstraintsRefs.add("public-view");
folderConstraintsRefs.add("public-edit");
folderConstraints.setSecurityConstraintsRefs(folderConstraintsRefs);
folder.setSecurityConstraints(folderConstraints);
List documentOrder = new ArrayList(2);
documentOrder.add("some-other-page.psml");
documentOrder.add("default-page.psml");
folder.setDocumentOrder(documentOrder);
MenuDefinition newMenu = folder.newMenuDefinition();
newMenu.setName("folder-menu");
newMenu.setTitle("The Test Folder Menu");
newMenu.setShortTitle("Folder Menu");
newMenu.setProfile("group-fallback");
metadata = newMenu.getMetadata();
metadata.addField(Locale.FRENCH, "short-title", "[fr] Folder Menu");
metadata.addField(Locale.FRENCH, "title", "[fr] The Test Folder Menu");
MenuSeparatorDefinition newSeparator = folder.newMenuSeparatorDefinition();
newSeparator.setText("-- Folder Menu --");
newSeparator.setTitle("Rollover: Folder Menu");
newSeparator.setSkin("header");
metadata = newSeparator.getMetadata();
metadata.addField(Locale.FRENCH, "text", "-- [fr] Folder Menu --");
metadata.addField(Locale.FRENCH, "title", "[fr] Rollover: Folder Menu");
newMenu.getMenuElements().add(newSeparator);
MenuOptionsDefinition newOptions0 = folder.newMenuOptionsDefinition();
newOptions0.setOptions("/*.psml");
newOptions0.setRegexp(true);
newOptions0.setSkin("flash");
newMenu.getMenuElements().add(newOptions0);
MenuOptionsDefinition newOptions1 = folder.newMenuOptionsDefinition();
newOptions1.setOptions("/folder0");
newOptions1.setProfile("role-fallback");
newOptions1.setOrder("/folder*");
newOptions1.setDepth(1);
newOptions1.setPaths(true);
newMenu.getMenuElements().add(newOptions1);
MenuDefinition newNestedMenu = folder.newMenuDefinition();
newNestedMenu.setOptions("/*/");
newNestedMenu.setRegexp(true);
newNestedMenu.setDepth(2);
newNestedMenu.setOrder("/x*/,/y*/,/z*/");
newNestedMenu.setSkin("bold");
newMenu.getMenuElements().add(newNestedMenu);
MenuExcludeDefinition newExcludeMenu = folder.newMenuExcludeDefinition();
newExcludeMenu.setName("exclude-menu");
newMenu.getMenuElements().add(newExcludeMenu);
MenuIncludeDefinition newIncludeMenu = folder.newMenuIncludeDefinition();
newIncludeMenu.setName("include-menu");
newIncludeMenu.setNest(true);
newMenu.getMenuElements().add(newIncludeMenu);
folder.getMenuDefinitions().add(newMenu);
newMenu = folder.newMenuDefinition();
newMenu.setName("folder-breadcrumb-menu");
newMenu.setSkin("bread-crumbs");
newMenu.setOptions("./");
newMenu.setPaths(true);
folder.getMenuDefinitions().add(newMenu);
pageManager.updateFolder(folder);
assertNull(folder.getParent());
Page page = pageManager.newPage("/default-page.psml");
assertEquals("Default Page", page.getTitle());
page.setTitle("Default Page");
page.setVersion("6.89");
page.setDefaultDecorator("tigris", Fragment.LAYOUT);
page.setDefaultDecorator("blue-gradient", Fragment.PORTLET);
page.setSkin("skin-1");
page.setShortTitle("Default");
metadata = page.getMetadata();
metadata.addField(Locale.FRENCH, "title", "[fr] Default Page");
metadata.addField(Locale.JAPANESE, "title", "[ja] Default Page");
SecurityConstraints pageConstraints = page.newSecurityConstraints();
pageConstraints.setOwner("user");
List inlinePageConstraints = new ArrayList(1);
SecurityConstraint pageConstraint = page.newSecurityConstraint();
pageConstraint.setUsers(Shared.makeListFromCSV("jetspeed"));
pageConstraint.setPermissions(Shared.makeListFromCSV("edit"));
inlinePageConstraints.add(pageConstraint);
pageConstraints.setSecurityConstraints(inlinePageConstraints);
List pageConstraintsRefs = new ArrayList(1);
pageConstraintsRefs.add("manager-edit");
pageConstraints.setSecurityConstraintsRefs(pageConstraintsRefs);
page.setSecurityConstraints(pageConstraints);
List pageMenus = new ArrayList();
newMenu = page.newMenuDefinition();
newMenu.setName("page-menu-1");
newMenu.setTitle("The Test Page Menu");
metadata = newMenu.getMetadata();
metadata.addField(Locale.FRENCH, "title", "[fr] The Test Page Menu");
newSeparator = page.newMenuSeparatorDefinition();
newSeparator.setText("-- Page Menu --");
List menuElements = new ArrayList();
menuElements.add(newSeparator);
newOptions0 = page.newMenuOptionsDefinition();
newOptions0.setOptions("/*.psml");
menuElements.add(newOptions0);
newNestedMenu = page.newMenuDefinition();
newNestedMenu.setOptions("/*/");
menuElements.add(newNestedMenu);
newExcludeMenu = page.newMenuExcludeDefinition();
newExcludeMenu.setName("exclude-menu");
menuElements.add(newExcludeMenu);
newIncludeMenu = page.newMenuIncludeDefinition();
newIncludeMenu.setName("include-menu");
menuElements.add(newIncludeMenu);
newMenu.setMenuElements(menuElements);
pageMenus.add(newMenu);
newMenu = page.newMenuDefinition();
newMenu.setName("page-menu-2");
newMenu.setOptions("./");
pageMenus.add(newMenu);
page.setMenuDefinitions(pageMenus);
Fragment root = page.getRootFragment();
root.setDecorator("blue-gradient");
root.setName("jetspeed-layouts::VelocityTwoColumns");
root.setShortTitle("Root");
root.setTitle("Root Fragment");
root.setState("Normal");
root.setLayoutSizes("50%,50%");
root.getProperties().put("custom-prop1", "custom-prop-value1");
root.getProperties().put("custom-prop2", "custom-prop-value2");
Fragment portlet = pageManager.newPortletFragment();
portlet.setName("security::LoginPortlet");
portlet.setShortTitle("Portlet");
portlet.setTitle("Portlet Fragment");
portlet.setState("Normal");
portlet.setLayoutRow(88);
portlet.setLayoutColumn(99);
portlet.setLayoutX(12.34F);
portlet.setLayoutY(23.45F);
portlet.setLayoutZ(34.56F);
portlet.setLayoutWidth(45.67F);
portlet.setLayoutHeight(56.78F);
List preferences = new ArrayList(2);
FragmentPreference preference = pageManager.newFragmentPreference();
preference.setName("pref0");
preference.setReadOnly(true);
List preferenceValues = new ArrayList(2);
preferenceValues.add("pref0-value0");
preferenceValues.add("pref0-value1");
preference.setValueList(preferenceValues);
preferences.add(preference);
preference = pageManager.newFragmentPreference();
preference.setName("pref1");
preferenceValues = new ArrayList(1);
preferenceValues.add("pref1-value");
preference.setValueList(preferenceValues);
preferences.add(preference);
portlet.setPreferences(preferences);
root.getFragments().add(portlet);
portlet = pageManager.newPortletFragment();
portlet.setName("some-app::SomePortlet");
portlet.setShortTitle("Some Portlet");
portlet.setTitle("Some Portlet Fragment");
portlet.setState("Normal");
portlet.setLayoutRow(22);
portlet.setLayoutColumn(11);
portlet.setLayoutX(11.11F);
portlet.setLayoutY(22.22F);
portlet.setLayoutZ(33.33F);
portlet.setLayoutWidth(44.44F);
portlet.setLayoutHeight(55.55F);
SecurityConstraints fragmentConstraints = portlet.newSecurityConstraints();
fragmentConstraints.setOwner("user");
portlet.setSecurityConstraints(fragmentConstraints);
root.getFragments().add(portlet);
pageManager.updatePage(page);
assertNotNull(page.getParent());
assertEquals(page.getParent().getId(), folder.getId());
assertNotNull(folder.getPages());
assertEquals(1, folder.getPages().size());
assertNotNull(pageManager.getPages(folder));
assertEquals(1, pageManager.getPages(folder).size());
page = pageManager.newPage("/another-page.psml");
assertEquals("Another Page", page.getTitle());
page.setTitle("Another Page");
pageManager.updatePage(page);
assertNotNull(page.getParent());
assertEquals(page.getParent().getId(), folder.getId());
page = pageManager.newPage("/some-other-page.psml");
assertEquals("Some Other Page", page.getTitle());
page.setTitle("Some Other Page");
pageManager.updatePage(page);
assertNotNull(page.getParent());
assertEquals(page.getParent().getId(), folder.getId());
assertEquals(3, folder.getPages().size());
assertEquals(3, pageManager.getPages(folder).size());
Link link = pageManager.newLink("/default.link");
assertEquals("Default", link.getTitle());
link.setTitle("Default Link");
link.setVersion("1.23");
link.setShortTitle("Default");
link.setTarget("top");
link.setUrl("http://www.default.org/");
metadata = link.getMetadata();
metadata.addField(Locale.FRENCH, "title", "[fr] Default Link");
metadata.addField(Locale.GERMAN, "title", "[de] Default Link");
SecurityConstraints linkConstraints = link.newSecurityConstraints();
linkConstraints.setOwner("user");
List inlineLinkConstraints = new ArrayList(1);
SecurityConstraint linkConstraint = link.newSecurityConstraint();
linkConstraint.setUsers(Shared.makeListFromCSV("jetspeed"));
linkConstraint.setPermissions(Shared.makeListFromCSV("edit"));
inlineLinkConstraints.add(linkConstraint);
linkConstraints.setSecurityConstraints(inlineLinkConstraints);
List linkConstraintsRefs = new ArrayList(1);
linkConstraintsRefs.add("manager-edit");
linkConstraints.setSecurityConstraintsRefs(linkConstraintsRefs);
link.setSecurityConstraints(linkConstraints);
pageManager.updateLink(link);
assertNotNull(link.getParent());