You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2005/12/02 17:52:40 UTC
svn commit: r351770 [3/3] - in /portals/jetspeed-2/trunk:
components/page-manager/src/java/JETSPEED-INF/ojb/
components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/
components/page-manager/src/java/org/apache/jetspeed/om/folder/psml/ compo...
Modified: portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java Fri Dec 2 08:52:05 2005
@@ -684,28 +684,28 @@
// test writing page menu definitions
page = pageManager.getPage(this.testPage002);
page.setMenuDefinitions(new ArrayList());
- MenuDefinition newMenu = pageManager.newMenuDefinition();
+ MenuDefinition newMenu = page.newMenuDefinition();
newMenu.setName("updated-menu");
newMenu.setSkin("tabs");
newMenu.setMenuElements(new ArrayList());
- MenuSeparatorDefinition newSeparator = pageManager.newMenuSeparatorDefinition();
+ MenuSeparatorDefinition newSeparator = page.newMenuSeparatorDefinition();
newSeparator.setText("-- Updated Menu --");
newMenu.getMenuElements().add(newSeparator);
- MenuOptionsDefinition newOptions0 = pageManager.newMenuOptionsDefinition();
+ MenuOptionsDefinition newOptions0 = page.newMenuOptionsDefinition();
newOptions0.setOptions("/*.psml");
newOptions0.setRegexp(true);
newMenu.getMenuElements().add(newOptions0);
- MenuOptionsDefinition newOptions1 = pageManager.newMenuOptionsDefinition();
+ MenuOptionsDefinition newOptions1 = page.newMenuOptionsDefinition();
newOptions1.setOptions("/folder0");
newMenu.getMenuElements().add(newOptions1);
- MenuDefinition newNestedMenu = pageManager.newMenuDefinition();
+ MenuDefinition newNestedMenu = page.newMenuDefinition();
newNestedMenu.setOptions("/*/");
newNestedMenu.setRegexp(true);
newMenu.getMenuElements().add(newNestedMenu);
- MenuExcludeDefinition newExcludeMenu = pageManager.newMenuExcludeDefinition();
+ MenuExcludeDefinition newExcludeMenu = page.newMenuExcludeDefinition();
newExcludeMenu.setName("exclude-menu");
newMenu.getMenuElements().add(newExcludeMenu);
- MenuIncludeDefinition newIncludeMenu = pageManager.newMenuIncludeDefinition();
+ MenuIncludeDefinition newIncludeMenu = page.newMenuIncludeDefinition();
newIncludeMenu.setName("include-menu");
newIncludeMenu.setNest(true);
newMenu.getMenuElements().add(newIncludeMenu);
@@ -736,7 +736,7 @@
// test writing folder menu definitions
folder = pageManager.getFolder(this.testFolder2);
folder.setMenuDefinitions(new ArrayList());
- newMenu = pageManager.newMenuDefinition();
+ newMenu = folder.newMenuDefinition();
newMenu.setName("updated-menu");
newMenu.setSkin("bread-crumbs");
newMenu.setOptions("./");
Modified: portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java Fri Dec 2 08:52:05 2005
@@ -27,6 +27,11 @@
import org.apache.jetspeed.om.common.SecurityConstraints;
import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.om.folder.FolderNotFoundException;
+import org.apache.jetspeed.om.folder.MenuDefinition;
+import org.apache.jetspeed.om.folder.MenuExcludeDefinition;
+import org.apache.jetspeed.om.folder.MenuIncludeDefinition;
+import org.apache.jetspeed.om.folder.MenuOptionsDefinition;
+import org.apache.jetspeed.om.folder.MenuSeparatorDefinition;
import org.apache.jetspeed.om.page.Fragment;
import org.apache.jetspeed.om.page.Page;
import org.apache.jetspeed.om.page.PageSecurity;
@@ -165,6 +170,55 @@
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());
@@ -191,6 +245,35 @@
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");
@@ -423,6 +506,30 @@
assertNotNull(check.getSecurityConstraints().getSecurityConstraints());
assertEquals(1, check.getSecurityConstraints().getSecurityConstraints().size());
assertEquals("jetspeed", Shared.makeCSVFromList(((SecurityConstraint)check.getSecurityConstraints().getSecurityConstraints().get(0)).getUsers()));
+ assertNotNull(check.getMenuDefinitions());
+ assertEquals(2, check.getMenuDefinitions().size());
+ MenuDefinition checkMenu = (MenuDefinition)check.getMenuDefinitions().get(0);
+ assertEquals("page-menu-1", checkMenu.getName());
+ assertEquals("The Test Page Menu", checkMenu.getTitle());
+ assertEquals("[fr] The Test Page Menu", checkMenu.getTitle(Locale.FRENCH));
+ assertNotNull(checkMenu.getMenuElements());
+ assertEquals(5,checkMenu.getMenuElements().size());
+ assertTrue(checkMenu.getMenuElements().get(0) instanceof MenuSeparatorDefinition);
+ assertEquals("-- Page Menu --", ((MenuSeparatorDefinition)checkMenu.getMenuElements().get(0)).getText());
+ assertTrue(checkMenu.getMenuElements().get(1) instanceof MenuOptionsDefinition);
+ assertEquals("/*.psml", ((MenuOptionsDefinition)checkMenu.getMenuElements().get(1)).getOptions());
+ assertTrue(checkMenu.getMenuElements().get(2) instanceof MenuDefinition);
+ assertEquals("/*/", ((MenuDefinition)checkMenu.getMenuElements().get(2)).getOptions());
+ assertNotNull(((MenuDefinition)checkMenu.getMenuElements().get(2)).getMenuElements());
+ assertTrue(((MenuDefinition)checkMenu.getMenuElements().get(2)).getMenuElements().isEmpty());
+ assertTrue(checkMenu.getMenuElements().get(3) instanceof MenuExcludeDefinition);
+ assertEquals("exclude-menu", ((MenuExcludeDefinition)checkMenu.getMenuElements().get(3)).getName());
+ assertTrue(checkMenu.getMenuElements().get(4) instanceof MenuIncludeDefinition);
+ assertEquals("include-menu", ((MenuIncludeDefinition)checkMenu.getMenuElements().get(4)).getName());
+ checkMenu = (MenuDefinition)check.getMenuDefinitions().get(1);
+ assertEquals("page-menu-2", checkMenu.getName());
+ assertNotNull(checkMenu.getMenuElements());
+ assertTrue(checkMenu.getMenuElements().isEmpty());
assertNotNull(check.getRootFragment());
assertEquals("blue-gradient", check.getRootFragment().getDecorator());
assertEquals("jetspeed-layouts::VelocityTwoColumns", check.getRootFragment().getName());
@@ -512,6 +619,53 @@
assertEquals("__subsite-rootx", ((Node)all.next()).getName());
assertEquals("another-page.psml", ((Node)all.next()).getName());
assertEquals("page.security", ((Node)all.next()).getName());
+ assertNotNull(check.getMenuDefinitions());
+ assertEquals(2, check.getMenuDefinitions().size());
+ MenuDefinition checkMenu = (MenuDefinition)check.getMenuDefinitions().get(0);
+ assertEquals("folder-breadcrumb-menu", checkMenu.getName());
+ assertEquals("bread-crumbs", checkMenu.getSkin());
+ assertEquals("./", checkMenu.getOptions());
+ assertTrue(checkMenu.isPaths());
+ assertNotNull(checkMenu.getMenuElements());
+ assertTrue(checkMenu.getMenuElements().isEmpty());
+ checkMenu = (MenuDefinition)check.getMenuDefinitions().get(1);
+ assertEquals("folder-menu", checkMenu.getName());
+ assertEquals("The Test Folder Menu", checkMenu.getTitle());
+ assertEquals("Folder Menu", checkMenu.getShortTitle());
+ assertEquals("group-fallback", checkMenu.getProfile());
+ assertEquals("[fr] Folder Menu", checkMenu.getShortTitle(Locale.FRENCH));
+ assertEquals("[fr] The Test Folder Menu", checkMenu.getTitle(Locale.FRENCH));
+ assertNotNull(checkMenu.getMenuElements());
+ assertEquals(6,checkMenu.getMenuElements().size());
+ assertTrue(checkMenu.getMenuElements().get(0) instanceof MenuSeparatorDefinition);
+ assertEquals("-- Folder Menu --", ((MenuSeparatorDefinition)checkMenu.getMenuElements().get(0)).getText());
+ assertEquals("Rollover: Folder Menu", ((MenuSeparatorDefinition)checkMenu.getMenuElements().get(0)).getTitle());
+ assertEquals("header", ((MenuSeparatorDefinition)checkMenu.getMenuElements().get(0)).getSkin());
+ assertEquals("-- [fr] Folder Menu --", ((MenuSeparatorDefinition)checkMenu.getMenuElements().get(0)).getText(Locale.FRENCH));
+ assertEquals("[fr] Rollover: Folder Menu", ((MenuSeparatorDefinition)checkMenu.getMenuElements().get(0)).getTitle(Locale.FRENCH));
+ assertTrue(checkMenu.getMenuElements().get(1) instanceof MenuOptionsDefinition);
+ assertEquals("/*.psml", ((MenuOptionsDefinition)checkMenu.getMenuElements().get(1)).getOptions());
+ assertTrue(((MenuOptionsDefinition)checkMenu.getMenuElements().get(1)).isRegexp());
+ assertEquals("flash", ((MenuOptionsDefinition)checkMenu.getMenuElements().get(1)).getSkin());
+ assertTrue(checkMenu.getMenuElements().get(2) instanceof MenuOptionsDefinition);
+ assertEquals("/folder0", ((MenuOptionsDefinition)checkMenu.getMenuElements().get(2)).getOptions());
+ assertEquals("role-fallback", ((MenuOptionsDefinition)checkMenu.getMenuElements().get(2)).getProfile());
+ assertEquals("/folder*", ((MenuOptionsDefinition)checkMenu.getMenuElements().get(2)).getOrder());
+ assertEquals(1, ((MenuOptionsDefinition)checkMenu.getMenuElements().get(2)).getDepth());
+ assertTrue(((MenuOptionsDefinition)checkMenu.getMenuElements().get(2)).isPaths());
+ assertTrue(checkMenu.getMenuElements().get(3) instanceof MenuDefinition);
+ assertEquals("/*/", ((MenuDefinition)checkMenu.getMenuElements().get(3)).getOptions());
+ assertTrue(((MenuDefinition)checkMenu.getMenuElements().get(3)).isRegexp());
+ assertEquals(2, ((MenuDefinition)checkMenu.getMenuElements().get(3)).getDepth());
+ assertEquals("/x*/,/y*/,/z*/", ((MenuDefinition)checkMenu.getMenuElements().get(3)).getOrder());
+ assertEquals("bold", ((MenuDefinition)checkMenu.getMenuElements().get(3)).getSkin());
+ assertNotNull(((MenuDefinition)checkMenu.getMenuElements().get(3)).getMenuElements());
+ assertTrue(((MenuDefinition)checkMenu.getMenuElements().get(3)).getMenuElements().isEmpty());
+ assertTrue(checkMenu.getMenuElements().get(4) instanceof MenuExcludeDefinition);
+ assertEquals("exclude-menu", ((MenuExcludeDefinition)checkMenu.getMenuElements().get(4)).getName());
+ assertTrue(checkMenu.getMenuElements().get(5) instanceof MenuIncludeDefinition);
+ assertEquals("include-menu", ((MenuIncludeDefinition)checkMenu.getMenuElements().get(5)).getName());
+ assertTrue(((MenuIncludeDefinition)checkMenu.getMenuElements().get(5)).isNest());
}
catch (FolderNotFoundException e)
{
@@ -567,6 +721,11 @@
folder.getDocumentOrder().remove("some-other-page.psml");
folder.getDocumentOrder().add("UPDATED");
folder.getDocumentOrder().add("some-other-page.psml");
+ MenuDefinition updateMenu = (MenuDefinition)folder.getMenuDefinitions().get(1);
+ updateMenu.setName("UPDATED");
+ updateMenu.setTitle("UPDATED");
+ updateMenu.getMetadata().addField(Locale.JAPANESE, "short-title", "[ja] UPDATED");
+ ((MenuOptionsDefinition)updateMenu.getMenuElements().get(2)).setProfile("UPDATED");
pageManager.updateFolder(folder);
assertNotNull(folder.getAll());
Modified: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/impl/GenericMetadataImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/impl/GenericMetadataImpl.java?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/impl/GenericMetadataImpl.java (original)
+++ portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/impl/GenericMetadataImpl.java Fri Dec 2 08:52:05 2005
@@ -112,7 +112,7 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.common.GenericMetadata#setField(java.util.Collection)
+ * @see org.apache.jetspeed.om.common.GenericMetadata#setFields(java.util.Collection)
*/
public void setFields(Collection fields)
{
@@ -129,5 +129,59 @@
}
}
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.common.GenericMetadata#copyFields(java.util.Collection)
+ */
+ public void copyFields(Collection fields)
+ {
+ // preserve matching fields during copy to
+ // minimize persistent store thrash and
+ // field uniqueness constraint violations
+ // that may occur if identical field is
+ // removed and reinserted
+ if ((this.fields != null) && !this.fields.isEmpty())
+ {
+ // remove unique existing fields
+ if (fields != null)
+ {
+ this.fields.retainAll(fields);
+ }
+ else
+ {
+ this.fields = null;
+ }
+ }
+ if ((fields != null) && !fields.isEmpty())
+ {
+ // create new fields collection if necessary
+ if (this.fields == null)
+ {
+ this.fields = new ArrayList();
+ }
+ // copy unique new metadata members
+ Iterator fieldIter = fields.iterator();
+ while (fieldIter.hasNext())
+ {
+ LocalizedField field = (LocalizedField)fieldIter.next();
+ if (!this.fields.contains(field))
+ {
+ addField(field.getLocale(), field.getName(), field.getValue());
+ }
+ }
+ }
+
+ // update field map
+ this.fieldMap.clear();
+ if (this.fields != null)
+ {
+ Iterator fieldIter = this.fields.iterator();
+ while (fieldIter.hasNext())
+ {
+ LocalizedField field = (LocalizedField)fieldIter.next();
+ this.fieldMap.put(field.getName(), field);
+ }
+ }
}
}
Modified: portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml (original)
+++ portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml Fri Dec 2 08:52:05 2005
@@ -120,6 +120,59 @@
</unique>
</table>
+ <table name="FOLDER_MENU">
+ <column name="MENU_ID" primaryKey="true" required="true" type="INTEGER"/>
+ <column name="CLASS_NAME" required="true" size="100" type="VARCHAR"/>
+ <column name="PARENT_ID" type="INTEGER"/>
+ <column name="FOLDER_ID" type="INTEGER"/>
+ <column name="ELEMENT_ORDER" type="INTEGER"/>
+ <column name="NAME" size="100" type="VARCHAR"/>
+ <column name="TITLE" size="100" type="VARCHAR"/>
+ <column name="SHORT_TITLE" size="40" type="VARCHAR"/>
+ <column name="TEXT" size="100" type="VARCHAR"/>
+ <column name="OPTIONS" size="255" type="VARCHAR"/>
+ <column name="DEPTH" type="INTEGER"/>
+ <column name="IS_PATHS" type="BOOLEANINT"/>
+ <column name="IS_REGEXP" type="BOOLEANINT"/>
+ <column name="PROFILE" size="80" type="VARCHAR"/>
+ <column name="OPTIONS_ORDER" size="255" type="VARCHAR"/>
+ <column name="SKIN" size="80" type="VARCHAR"/>
+ <column name="IS_NEST" type="BOOLEANINT"/>
+ <foreign-key foreignTable="FOLDER_MENU" onDelete="cascade">
+ <reference foreign="MENU_ID" local="PARENT_ID"/>
+ </foreign-key>
+ <foreign-key foreignTable="FOLDER" onDelete="cascade">
+ <reference foreign="FOLDER_ID" local="FOLDER_ID"/>
+ </foreign-key>
+ <index name="IX_FOLDER_MENU_1">
+ <index-column name="PARENT_ID"/>
+ </index>
+ <unique name="UN_FOLDER_MENU_1">
+ <unique-column name="FOLDER_ID"/>
+ <unique-column name="NAME"/>
+ </unique>
+ </table>
+
+ <table name="FOLDER_MENU_METADATA">
+ <column name="METADATA_ID" primaryKey="true" required="true" type="INTEGER"/>
+ <column name="MENU_ID" type="INTEGER" required="true"/>
+ <column name="NAME" required="true" size="15" type="VARCHAR"/>
+ <column name="LOCALE" required="true" size="20" type="VARCHAR"/>
+ <column name="VALUE" required="true" size="100" type="VARCHAR"/>
+ <foreign-key foreignTable="FOLDER_MENU" onDelete="cascade">
+ <reference foreign="MENU_ID" local="MENU_ID"/>
+ </foreign-key>
+ <index name="IX_FOLDER_MENU_METADATA_1">
+ <index-column name="MENU_ID"/>
+ </index>
+ <unique name="UN_FOLDER_MENU_METADATA_1">
+ <unique-column name="MENU_ID"/>
+ <unique-column name="NAME"/>
+ <unique-column name="LOCALE"/>
+ <unique-column name="VALUE"/>
+ </unique>
+ </table>
+
<!--
Page Definition
-->
@@ -206,6 +259,59 @@
<unique name="UN_PAGE_CONSTRAINTS_REF_1">
<unique-column name="PAGE_ID"/>
<unique-column name="NAME"/>
+ </unique>
+ </table>
+
+ <table name="PAGE_MENU">
+ <column name="MENU_ID" primaryKey="true" required="true" type="INTEGER"/>
+ <column name="CLASS_NAME" required="true" size="100" type="VARCHAR"/>
+ <column name="PARENT_ID" type="INTEGER"/>
+ <column name="PAGE_ID" type="INTEGER"/>
+ <column name="ELEMENT_ORDER" type="INTEGER"/>
+ <column name="NAME" size="100" type="VARCHAR"/>
+ <column name="TITLE" size="100" type="VARCHAR"/>
+ <column name="SHORT_TITLE" size="40" type="VARCHAR"/>
+ <column name="TEXT" size="100" type="VARCHAR"/>
+ <column name="OPTIONS" size="255" type="VARCHAR"/>
+ <column name="DEPTH" type="INTEGER"/>
+ <column name="IS_PATHS" type="BOOLEANINT"/>
+ <column name="IS_REGEXP" type="BOOLEANINT"/>
+ <column name="PROFILE" size="80" type="VARCHAR"/>
+ <column name="OPTIONS_ORDER" size="255" type="VARCHAR"/>
+ <column name="SKIN" size="80" type="VARCHAR"/>
+ <column name="IS_NEST" type="BOOLEANINT"/>
+ <foreign-key foreignTable="PAGE_MENU" onDelete="cascade">
+ <reference foreign="MENU_ID" local="PARENT_ID"/>
+ </foreign-key>
+ <foreign-key foreignTable="PAGE" onDelete="cascade">
+ <reference foreign="PAGE_ID" local="PAGE_ID"/>
+ </foreign-key>
+ <index name="IX_PAGE_MENU_1">
+ <index-column name="PARENT_ID"/>
+ </index>
+ <unique name="UN_PAGE_MENU_1">
+ <unique-column name="PAGE_ID"/>
+ <unique-column name="NAME"/>
+ </unique>
+ </table>
+
+ <table name="PAGE_MENU_METADATA">
+ <column name="METADATA_ID" primaryKey="true" required="true" type="INTEGER"/>
+ <column name="MENU_ID" type="INTEGER" required="true"/>
+ <column name="NAME" required="true" size="15" type="VARCHAR"/>
+ <column name="LOCALE" required="true" size="20" type="VARCHAR"/>
+ <column name="VALUE" required="true" size="100" type="VARCHAR"/>
+ <foreign-key foreignTable="PAGE_MENU" onDelete="cascade">
+ <reference foreign="MENU_ID" local="MENU_ID"/>
+ </foreign-key>
+ <index name="IX_PAGE_MENU_METADATA_1">
+ <index-column name="MENU_ID"/>
+ </index>
+ <unique name="UN_PAGE_MENU_METADATA_1">
+ <unique-column name="MENU_ID"/>
+ <unique-column name="NAME"/>
+ <unique-column name="LOCALE"/>
+ <unique-column name="VALUE"/>
</unique>
</table>
Modified: portals/jetspeed-2/trunk/etc/sql/derby/schema/phase2-schema.sql
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/etc/sql/derby/schema/phase2-schema.sql?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/etc/sql/derby/schema/phase2-schema.sql (original)
+++ portals/jetspeed-2/trunk/etc/sql/derby/schema/phase2-schema.sql Fri Dec 2 08:52:05 2005
@@ -99,6 +99,58 @@
UNIQUE (FOLDER_ID, NAME));
CREATE INDEX IX_FOLDER_ORDER_1 ON FOLDER_ORDER (FOLDER_ID);
+-------------------------------------------------------------------------
+-- FOLDER_MENU
+-------------------------------------------------------------------------
+CREATE TABLE FOLDER_MENU
+(
+ MENU_ID INTEGER NOT NULL,
+ CLASS_NAME VARCHAR(100) NOT NULL,
+ PARENT_ID INTEGER,
+ FOLDER_ID INTEGER,
+ ELEMENT_ORDER INTEGER,
+ NAME VARCHAR(100),
+ TITLE VARCHAR(100),
+ SHORT_TITLE VARCHAR(40),
+ TEXT VARCHAR(100),
+ OPTIONS VARCHAR(255),
+ DEPTH INTEGER,
+ IS_PATHS INTEGER,
+ IS_REGEXP INTEGER,
+ PROFILE VARCHAR(80),
+ OPTIONS_ORDER VARCHAR(255),
+ SKIN VARCHAR(80),
+ IS_NEST INTEGER,
+ PRIMARY KEY(MENU_ID),
+ FOREIGN KEY (PARENT_ID) REFERENCES FOLDER_MENU (MENU_ID)
+ ON DELETE CASCADE
+ ,
+ FOREIGN KEY (FOLDER_ID) REFERENCES FOLDER (FOLDER_ID)
+ ON DELETE CASCADE
+
+-- Derby doesn't support UNIQUE constraints on nullable columns !!!
+-- replace UNIQUE (FOLDER_ID, NAME) with IX_FOLDER_MENU_UNIQUE_FN index below...
+ );
+
+CREATE INDEX IX_FOLDER_MENU_1 ON FOLDER_MENU (PARENT_ID);
+CREATE INDEX IX_FOLDER_MENU_UNIQUE_FN ON FOLDER_MENU (FOLDER_ID, NAME);
+--------------------------------------------------------------------------
+-- FOLDER_MENU_METADATA
+--------------------------------------------------------------------------
+CREATE TABLE FOLDER_MENU_METADATA
+(
+ METADATA_ID INTEGER NOT NULL,
+ MENU_ID INTEGER NOT NULL,
+ NAME VARCHAR(15) NOT NULL,
+ LOCALE VARCHAR(20) NOT NULL,
+ VALUE VARCHAR(100) NOT NULL,
+ PRIMARY KEY(METADATA_ID),
+ FOREIGN KEY (MENU_ID) REFERENCES FOLDER_MENU (MENU_ID)
+ ON DELETE CASCADE
+ ,
+ UNIQUE (MENU_ID, NAME, LOCALE, VALUE));
+
+CREATE INDEX IX_FOLDER_MENU_METADATA_1 ON FOLDER_MENU_METADATA (MENU_ID);
-----------------------------------------------------------------------------
-- PAGE
-----------------------------------------------------------------------------
@@ -186,6 +238,58 @@
UNIQUE (PAGE_ID, NAME));
CREATE INDEX IX_PAGE_CONSTRAINTS_REF_1 ON PAGE_CONSTRAINTS_REF (PAGE_ID);
+-------------------------------------------------------------------------
+-- PAGE_MENU
+-------------------------------------------------------------------------
+CREATE TABLE PAGE_MENU
+(
+ MENU_ID INTEGER NOT NULL,
+ CLASS_NAME VARCHAR(100) NOT NULL,
+ PARENT_ID INTEGER,
+ PAGE_ID INTEGER,
+ ELEMENT_ORDER INTEGER,
+ NAME VARCHAR(100),
+ TITLE VARCHAR(100),
+ SHORT_TITLE VARCHAR(40),
+ TEXT VARCHAR(100),
+ OPTIONS VARCHAR(255),
+ DEPTH INTEGER,
+ IS_PATHS INTEGER,
+ IS_REGEXP INTEGER,
+ PROFILE VARCHAR(80),
+ OPTIONS_ORDER VARCHAR(255),
+ SKIN VARCHAR(80),
+ IS_NEST INTEGER,
+ PRIMARY KEY(MENU_ID),
+ FOREIGN KEY (PARENT_ID) REFERENCES PAGE_MENU (MENU_ID)
+ ON DELETE CASCADE
+ ,
+ FOREIGN KEY (PAGE_ID) REFERENCES PAGE (PAGE_ID)
+ ON DELETE CASCADE
+
+-- Derby doesn't support UNIQUE constraints on nullable columns !!!
+-- replace UNIQUE (PAGE_ID, NAME) with IX_PAGE_MENU_UNIQUE_PN index below...
+ );
+
+CREATE INDEX IX_PAGE_MENU_1 ON PAGE_MENU (PARENT_ID);
+CREATE INDEX IX_PAGE_MENU_UNIQUE_PN ON PAGE_MENU (PAGE_ID, NAME);
+--------------------------------------------------------------------------
+-- PAGE_MENU_METADATA
+--------------------------------------------------------------------------
+CREATE TABLE PAGE_MENU_METADATA
+(
+ METADATA_ID INTEGER NOT NULL,
+ MENU_ID INTEGER NOT NULL,
+ NAME VARCHAR(15) NOT NULL,
+ LOCALE VARCHAR(20) NOT NULL,
+ VALUE VARCHAR(100) NOT NULL,
+ PRIMARY KEY(METADATA_ID),
+ FOREIGN KEY (MENU_ID) REFERENCES PAGE_MENU (MENU_ID)
+ ON DELETE CASCADE
+ ,
+ UNIQUE (MENU_ID, NAME, LOCALE, VALUE));
+
+CREATE INDEX IX_PAGE_MENU_METADATA_1 ON PAGE_MENU_METADATA (MENU_ID);
-----------------------------------------------------------------------------
-- FRAGMENT
-----------------------------------------------------------------------------
Modified: portals/jetspeed-2/trunk/etc/sql/drop.sql
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/etc/sql/drop.sql?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/etc/sql/drop.sql (original)
+++ portals/jetspeed-2/trunk/etc/sql/drop.sql Fri Dec 2 08:52:05 2005
@@ -25,10 +25,14 @@
DROP TABLE FRAGMENT_CONSTRAINTS_REF;
DROP TABLE FRAGMENT_CONSTRAINT;
DROP TABLE FRAGMENT;
+DROP TABLE PAGE_MENU_METADATA;
+DROP TABLE PAGE_MENU;
DROP TABLE PAGE_CONSTRAINTS_REF;
DROP TABLE PAGE_CONSTRAINT;
DROP TABLE PAGE_METADATA;
DROP TABLE PAGE;
+DROP TABLE FOLDER_MENU_METADATA;
+DROP TABLE FOLDER_MENU;
DROP TABLE FOLDER_ORDER;
DROP TABLE FOLDER_CONSTRAINTS_REF;
DROP TABLE FOLDER_CONSTRAINT;
Modified: portals/jetspeed-2/trunk/etc/sql/oracle/drop.sql
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/etc/sql/oracle/drop.sql?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/etc/sql/oracle/drop.sql (original)
+++ portals/jetspeed-2/trunk/etc/sql/oracle/drop.sql Fri Dec 2 08:52:05 2005
@@ -30,10 +30,14 @@
DROP TABLE FRAGMENT_CONSTRAINTS_REF;
DROP TABLE FRAGMENT_CONSTRAINT;
DROP TABLE FRAGMENT;
+DROP TABLE PAGE_MENU_METADATA;
+DROP TABLE PAGE_MENU;
DROP TABLE PAGE_CONSTRAINTS_REF;
DROP TABLE PAGE_CONSTRAINT;
DROP TABLE PAGE_METADATA;
DROP TABLE PAGE;
+DROP TABLE FOLDER_MENU_METADATA;
+DROP TABLE FOLDER_MENU;
DROP TABLE FOLDER_ORDER;
DROP TABLE FOLDER_CONSTRAINTS_REF;
DROP TABLE FOLDER_CONSTRAINT;
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/GenericMetadata.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/GenericMetadata.java?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/GenericMetadata.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/GenericMetadata.java Fri Dec 2 08:52:05 2005
@@ -98,4 +98,14 @@
* @return
*/
LocalizedField createLocalizedField();
-}
\ No newline at end of file
+
+ /**
+ *
+ * <p>
+ * copyFields
+ * </p>
+ *
+ * @param fields
+ */
+ public void copyFields( Collection fields );
+}
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/SecuredResource.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/SecuredResource.java?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/SecuredResource.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/SecuredResource.java Fri Dec 2 08:52:05 2005
@@ -54,30 +54,30 @@
/**
* <p>
- * setSecurityConstraints
+ * newSecurityConstraints
* </p>
*
- * @param constraints security constraints for resource
+ * @return a newly created SecurityConstraints object for use in SecuredResource
*/
- void setSecurityConstraints(SecurityConstraints constraints);
+ SecurityConstraints newSecurityConstraints();
/**
* <p>
- * newSecurityConstraints
+ * newSecurityConstraint
* </p>
*
- * @return a newly created SecurityConstraints object
+ * @return a newly created SecurityConstraint object for use in SecuredResource
*/
- SecurityConstraints newSecurityConstraints();
+ SecurityConstraint newSecurityConstraint();
/**
* <p>
- * newSecurityConstraint
+ * setSecurityConstraints
* </p>
*
- * @return a newly created SecurityConstraint object
+ * @param constraints security constraints for resource
*/
- SecurityConstraint newSecurityConstraint();
+ void setSecurityConstraints(SecurityConstraints constraints);
/**
* <p>
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java Fri Dec 2 08:52:05 2005
@@ -213,6 +213,41 @@
List getMenuDefinitions();
/**
+ * newMenuDefinition - creates a new empty menu definition
+ *
+ * @return a newly created MenuDefinition object for use in Folder
+ */
+ MenuDefinition newMenuDefinition();
+
+ /**
+ * newMenuExcludeDefinition - creates a new empty menu exclude definition
+ *
+ * @return a newly created MenuExcludeDefinition object for use in Folder
+ */
+ MenuExcludeDefinition newMenuExcludeDefinition();
+
+ /**
+ * newMenuIncludeDefinition - creates a new empty menu include definition
+ *
+ * @return a newly created MenuIncludeDefinition object for use in Folder
+ */
+ MenuIncludeDefinition newMenuIncludeDefinition();
+
+ /**
+ * newMenuOptionsDefinition - creates a new empty menu options definition
+ *
+ * @return a newly created MenuOptionsDefinition object for use in Folder
+ */
+ MenuOptionsDefinition newMenuOptionsDefinition();
+
+ /**
+ * newMenuSeparatorDefinition - creates a new empty menu separator definition
+ *
+ * @return a newly created MenuSeparatorDefinition object for use in Folder
+ */
+ MenuSeparatorDefinition newMenuSeparatorDefinition();
+
+ /**
* setMenuDefinitions - set list of menu definitions
*
* @param definitions definition list
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java Fri Dec 2 08:52:05 2005
@@ -17,6 +17,12 @@
import java.util.List;
+import org.apache.jetspeed.om.folder.MenuDefinition;
+import org.apache.jetspeed.om.folder.MenuExcludeDefinition;
+import org.apache.jetspeed.om.folder.MenuIncludeDefinition;
+import org.apache.jetspeed.om.folder.MenuOptionsDefinition;
+import org.apache.jetspeed.om.folder.MenuSeparatorDefinition;
+
/**
* This interface represents a complete page document used by Jetspeed
* to layout a user-customizable portal page.
@@ -109,6 +115,41 @@
* @return definition list
*/
List getMenuDefinitions();
+
+ /**
+ * newMenuDefinition - creates a new empty menu definition
+ *
+ * @return a newly created MenuDefinition object for use in Page
+ */
+ MenuDefinition newMenuDefinition();
+
+ /**
+ * newMenuExcludeDefinition - creates a new empty menu exclude definition
+ *
+ * @return a newly created MenuExcludeDefinition object for use in Page
+ */
+ MenuExcludeDefinition newMenuExcludeDefinition();
+
+ /**
+ * newMenuIncludeDefinition - creates a new empty menu include definition
+ *
+ * @return a newly created MenuIncludeDefinition object for use in Page
+ */
+ MenuIncludeDefinition newMenuIncludeDefinition();
+
+ /**
+ * newMenuOptionsDefinition - creates a new empty menu options definition
+ *
+ * @return a newly created MenuOptionsDefinition object for use in Page
+ */
+ MenuOptionsDefinition newMenuOptionsDefinition();
+
+ /**
+ * newMenuSeparatorDefinition - creates a new empty menu separator definition
+ *
+ * @return a newly created MenuSeparatorDefinition object for use in Page
+ */
+ MenuSeparatorDefinition newMenuSeparatorDefinition();
/**
* setMenuDefinitions - set list of menu definitions
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/PageSecurity.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/PageSecurity.java?rev=351770&r1=351769&r2=351770&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/PageSecurity.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/PageSecurity.java Fri Dec 2 08:52:05 2005
@@ -44,21 +44,21 @@
/**
* <p>
- * setSecurityConstraintsDefs
+ * newSecurityConstraintsDef
* </p>
*
- * @param defintions security constraints definitions
+ * @return a newly created SecurityConstraintsDef object for use in PageSecurity
*/
- void setSecurityConstraintsDefs(List definitions);
+ SecurityConstraintsDef newSecurityConstraintsDef();
/**
* <p>
- * newSecurityConstraintsDef
+ * setSecurityConstraintsDefs
* </p>
*
- * @return a newly created SecurityConstraintsDef object
+ * @param defintions security constraints definitions
*/
- SecurityConstraintsDef newSecurityConstraintsDef();
+ void setSecurityConstraintsDefs(List definitions);
/**
* <p>
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org