Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Lenya Wiki" for change 
notification.

The following page has been changed by AndreasHartmann:
http://wiki.apache.org/lenya/JcrContentModel

------------------------------------------------------------------------------
  
  ----
  
-  * [JcrContentModelDraft Draft]
+  * [wiki:JcrContentModelDraft Draft]
-  * [JcrContentModelSiteStructure Site Structure]
+  * [wiki:JcrContentModelSiteStructure Site Structure]
-  * [JcrContentModelAreas Areas]
+  * [wiki:JcrContentModelAreas Areas]
-  * [JcrContentModelTranslations Translations]
+  * [wiki:JcrContentModelTranslations Translations]
  
- 
- == Site Structure ==
- 
- Options:
- 
- === Use JCR node hierarchy ===
- 
-  * One "implicit" hierarchy
-  * Additional hierarchies possible:
-   * Via separate node hierarchies with references
-   * Via shared nodes (JSR 283)
- 
- Advantages:
- 
-  * Simple
-  * Straightforward
-  * Better performance (?)
- 
- === Use flat storage with artificial hierarchy ===
- 
-  * Either XML stored in a property (like now)
-  * Or separate node hierarchy:
-   * Via references to the content nodes
-   * Via shared nodes (JSR 283)
- 
- Advantages:
- 
-  * More flexibility re. content model (e.g. translations with common parent 
node) without constraining the URI space
- 
- ----
- 
- == Areas (Authoring, Staging, Live) ==
- 
- This section refers to areas as abstract concepts, not necessarily modeled as 
separated content areas.
- 
- Requirements:
- 
-  * independent from each other (changes to /authoring/foo don't influence 
staging/foo)
-  * self-contained
- 
- Options:
- 
- === Workspaces ===
- 
- Advantages:
- 
-  * Physically separated nodes with same UUID possible ("corresponding nodes" 
concept)
-  * Separated, independent
-  * Self-contained
- 
- Issues:
- 
-  * Changing the site structure requires to remove the involved nodes from all 
non-authoring areas (like now)
-  * Copying access control definitions?
-  * {{{Node.update(workspace)}}} copies the subtree:
-   * either nodes must be kept in a flat structure (no hierarchy)
-   * or nodes and properties must be copied manually
-   * or use referenceable child nodes
- 
- {{{
- /de
-   /foo < mix:referenceable
-     /lenya:document < mix:referenceable
-       /jcr:content = "Hello"
-     /bar
- }}}
- 
- Publish single node:
- 
- {{{
- getItem("/de/foo/lenya:document").update("staging");
- }}}
- 
- Publish subtree:
- 
- {{{
- getItem("/de/foo").update("staging");
- }}}
- 
- === Separated Areas in a Single Workspace ===
- 
- Advantages:
- 
-  * Simple access
- 
- Issues:
- 
-  * Copying access control definitions required
-  * Different UUIDs:
-   * Either rewrite links
-   * Or don't use JCR UUIDs but custom String properties for UUIDs
- 
- === Separated Areas in a Single Node ===
- 
- Example:
- 
- {{{
-   /foo
-     /lenya:authoring
-       /jcr:content = "Hello"
-     /lenya:staging
-       /jcr:content = "Hello"
-     /lenya:live
-       /jcr:content = "Hello"
-     /bar
-       /lenya:authoring
-       /…
- }}}
- 
- Advantages:
- 
-  * Simple
-  * Site structure can be changed without removing staged or published content
- 
- Issues:
- 
-  * Areas not self-contained
-  * No direct URI-to-path mapping possible
-  * Changes to site structure would be visible in all areas immediately
- 
- === Labelled Versions ===
- 
-  * Issues:
-   * All changes applied immediately, without calling {{{Session.save()}}}
-   * Access control to version history?
- 
- Submit:
- 
- {{{
- VersionHistory history = node.getVersionHistory();
- Version base = node.getBaseVersion();
- boolean move = true;
- history.addVersionLabel(base.getName(), "staging", move);
- }}}
- 
- Obtaining live version:
- 
- {{{
- VersionHistory history = node.getVersionHistory();
- Node liveVersion = history.getVersionByLabel("live");
- Node liveNode = liveVersion.getChild("jcr:frozenNode");
- }}}
- 
- ----
- 
- == Translations ==
- 
-  * 
http://mail-archives.apache.org/mod_mbox/jackrabbit-users/200703.mbox/[EMAIL 
PROTECTED]
- 
- Options:
- 
- === Shared UUID ===
- 
- Advantages:
- 
-  * Referencing a node without specifying the language is possible (e.g., 
fallback to the default language if a translation doesn't exist)
- 
- Issues:
-  
-  * JCR allows only one node with a particular UUID
-   * Either use a referenceable language-independent node
-   * Or don't use JCR UUIDs for references, but custom String-value properties
-  * With JCR UUIDs and a common referenceable parent node, structures like 
/en/welcome, /de/willkommen are not possible (would require separating the 
content hierarchy from the URI structure)
- 
- === Non-Shared UUID ===
- 
- Advantages:
- 
-  * JCR UUIDs could be used
-  * Arbitrary content hierarchies / URI structures
-  * Automatic referencial integrity check with respect to language version 
(i.e., /foo_de can't be removed if /bar_de points to it)
- 
- Issues:
- 
-  * References can only point to a particular translation
-  * A. Common parent node or artificial node
-   * Influences content hierarchy (and maybe URL structure)
-   * Obtain all translations of an artificial common node using 
{{{Node.getReferences()}}}
-  * B. No common parent node: relations between translations have to be 
maintained (or is this optional?)
-   * B.1. via multi-value reference property at each translation
-   * B.2. via language-independent node
-   * In either case, translations are not self-contained anymore 
- 
- Examples:
- 
- Non-shared UUID, arbitrary structure
- 
- {{{
- /de
-   /willkommen
-     /jcr:uuid = 1
-     /jcr:language = "de"
-     /lenya:translations = { 2 }
- /en
-   /welcome
-     /jcr:uuid = 2
-     /jcr:language = "en"
-     /lenya:translations = { 1 }
- }}}
- 
- Non-shared UUID, arbitrary structure, explicit translation references
- 
- {{{
- /welcome_de
-   /jcr:uuid = 1
-   /jcr:language = "de"
-   /lenya:translations = { 2 }
- /welcome_en
-   /jcr:uuid = 2
-   /jcr:language = "en"
-   /lenya:translations = { 1 }
- }}}
- 
- Non-shared UUID, arbitrary structure, implicit translation references via URL 
structure (String operations)
- 
- {{{
- /welcome_de
-   /jcr:uuid = 1
-   /jcr:language = "de"
- /welcome_en
-   /jcr:uuid = 2
-   /jcr:language = "en"
- }}}
- 
- Non-shared UUID, common parent node
- 
- {{{
- /welcome
-   /de
-     /jcr:uuid = 1
-     /jcr:language = "de"
-   /en
-     /jcr:uuid = 2
-     /jcr:language = "en"
- }}}
- 
- Shared UUID, common parent node
- 
- {{{
- /welcome
-   /jcr:uuid = 1
-   /de
-     /jcr:language = "de"
-   /en
-     /jcr:language = "en"
- }}}
- 
- Shared UUID, artificial shared node
- 
- {{{
- /de
-   /willkommen
-     /lenya:sharedDocumentNode = 1
-     /jcr:language = "de"
- /en
-   /welcome
-     /lenya:sharedDocumentNode = 1
-     /jcr:language = "en"
- /lenya:sharedDocumentNodes
-   /welcome
-     /jcr:uuid = 1
- }}}
- 
- Shared UUID, default language node is referenceable
- 
-  * Optional node type mix:referenceable assigned only to default-language 
nodes
-  * Default-language node must exist
- 
- {{{
- /de
-   /willkommen
-     /lenya:defaultLanguageNode = 1
-     /jcr:language = "de"
- /en
-   /welcome
-     /jcr:uuid = 1
-     /jcr:language = "en"
- }}}
- 
- Shared custom UUIDs
- 
- {{{
- /welcome_de
-   /lenya:uuid = 1
-   /jcr:language = "de"
- /welcome_en
-   /lenya:uuid = 1
-   /jcr:language = "en"
- }}}
- 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to