| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| <rep='internal'> |
| <jcr='http://www.jcp.org/jcr/1.0'> |
| <nt='http://www.jcp.org/jcr/nt/1.0'> |
| <mix='http://www.jcp.org/jcr/mix/1.0'> |
| <oak='http://jackrabbit.apache.org/oak/ns/1.0'> |
| |
| //------------------------------------------------------------------------------ |
| // B A S E T Y P E |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * nt:base is an abstract primary node type that is the base type for all other |
| * primary node types. It is the only primary node type without supertypes. |
| * |
| * @since 1.0 |
| */ |
| [nt:base] |
| abstract |
| - jcr:primaryType (NAME) mandatory autocreated protected COMPUTE |
| - jcr:mixinTypes (NAME) protected multiple COMPUTE |
| |
| //------------------------------------------------------------------------------ |
| // S T A N D A R D A P P L I C A T I O N N O D E T Y P E S |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * This abstract node type serves as the supertype of nt:file and nt:folder. |
| * @since 1.0 |
| */ |
| [nt:hierarchyNode] > mix:created |
| abstract |
| |
| /** |
| * Nodes of this node type may be used to represent files. This node type inherits |
| * the item definitions of nt:hierarchyNode and requires a single child node called |
| * jcr:content. The jcr:content node is used to hold the actual content of the |
| * file. This child node is mandatory, but not auto-created. Its node type will be |
| * application-dependent and therefore it must be added by the user. A common |
| * approach is to make the jcr:content a node of type nt:resource or oak:Resource. The |
| * jcr:content child node is also designated as the primary child item of its parent. |
| * |
| * @since 1.0 |
| */ |
| [nt:file] > nt:hierarchyNode |
| primaryitem jcr:content |
| + jcr:content (nt:base) mandatory |
| |
| /** |
| * The nt:linkedFile node type is similar to nt:file, except that the content |
| * node is not stored directly as a child node, but rather is specified by a |
| * REFERENCE property. This allows the content node to reside anywhere in the |
| * workspace and to be referenced by multiple nt:linkedFile nodes. The content |
| * node must be referenceable. |
| * |
| * @since 1.0 |
| */ |
| [nt:linkedFile] > nt:hierarchyNode |
| primaryitem jcr:content |
| - jcr:content (REFERENCE) mandatory |
| |
| /** |
| * Nodes of this type may be used to represent folders or directories. This node |
| * type inherits the item definitions of nt:hierarchyNode and adds the ability |
| * to have any number of other nt:hierarchyNode child nodes with any names. |
| * This means, in particular, that it can have child nodes of types nt:folder, |
| * nt:file or nt:linkedFile. |
| * |
| * @since 1.0 |
| */ |
| [nt:folder] > nt:hierarchyNode |
| + * (nt:hierarchyNode) VERSION |
| |
| /** |
| * This node type may be used to represent the content of a file. In particular, |
| * the jcr:content subnode of an nt:file node will often be an nt:resource. |
| * |
| * @since 1.0 |
| */ |
| [nt:resource] > mix:mimeType, mix:lastModified, mix:referenceable |
| primaryitem jcr:data |
| - jcr:data (BINARY) mandatory |
| |
| /** |
| * This node type may be used to represent the content of a file. This should be |
| * preferred over nt:resource if non referenceable nt:file nodes are required |
| * |
| * @since 1.5.6 |
| */ |
| [oak:Resource] > mix:mimeType, mix:lastModified |
| primaryitem jcr:data |
| - jcr:data (BINARY) mandatory |
| |
| /** |
| * This mixin node type can be used to add standardized title and description |
| * properties to a node. |
| * |
| * Note that the protected attributes suggested by JSR283 are omitted in this variant. |
| * @since 2.0 |
| */ |
| [mix:title] |
| mixin |
| - jcr:title (STRING) |
| - jcr:description (STRING) |
| |
| /** |
| * This mixin node type can be used to add standardized creation information |
| * properties to a node. Since the properties are protected, their values are |
| * controlled by the repository, which should set them appropriately upon the |
| * initial persist of a node with this mixin type. In cases where this mixin is |
| * added to an already existing node the semantics of these properties are |
| * implementation specific. Note that jackrabbit initializes the properties to |
| * the current date and user in this case. |
| * |
| * |
| * @since 2.0 |
| */ |
| [mix:created] |
| mixin |
| - jcr:created (DATE) autocreated protected |
| - jcr:createdBy (STRING) autocreated protected |
| |
| /** |
| * This mixin node type can be used to provide standardized modification |
| * information properties to a node. |
| * |
| * The following is not yet implemented in Jackrabbit: |
| * "Since the properties are protected, their values |
| * are controlled by the repository, which should set them appropriately upon a |
| * significant modification of the subgraph of a node with this mixin. What |
| * constitutes a significant modification will depend on the semantics of the various |
| * parts of a node's subgraph and is implementation-dependent" |
| * |
| * Jackrabbit initializes the properties to the current date and user in the |
| * case they are newly created. |
| * |
| * Note that the protected attributes suggested by JSR283 are omitted in this variant. |
| * @since 2.0 |
| */ |
| [mix:lastModified] |
| mixin |
| - jcr:lastModified (DATE) autocreated |
| - jcr:lastModifiedBy (STRING) autocreated |
| |
| /** |
| * This mixin node type can be used to provide a standardized property that |
| * specifies the natural language in which the content of a node is expressed. |
| * The value of the jcr:language property should be a language code as defined |
| * in RFC 46465. Examples include "en" (English), "en-US" (United States English), |
| * "de" (German) and "de-CH" (Swiss German). |
| * |
| * Note that the protected attributes suggested by JSR283 are omitted in this variant. |
| * @since 2.0 |
| */ |
| [mix:language] |
| mixin |
| - jcr:language (STRING) |
| |
| /** |
| * This mixin node type can be used to provide standardized mimetype and |
| * encoding properties to a node. If a node of this type has a primary item |
| * that is a single-value BINARY property then jcr:mimeType property indicates |
| * the media type applicable to the contents of that property and, if that |
| * media type is one to which a text encoding applies, the jcr:encoding property |
| * indicates the character set used. If a node of this type does not meet the |
| * above precondition then the interpretation of the jcr:mimeType and |
| * jcr:encoding properties is implementation-dependent. |
| * |
| * Note that the protected attributes suggested by JSR283 are omitted in this variant. |
| * @since 2.0 |
| */ |
| [mix:mimeType] |
| mixin |
| - jcr:mimeType (STRING) |
| - jcr:encoding (STRING) |
| |
| /** |
| * This node type may be used to represent the location of a JCR item not just |
| * within a particular workspace but within the space of all workspaces in all JCR |
| * repositories. |
| * |
| * @prop jcr:protocol Stores a string holding the protocol through which the |
| * target repository is to be accessed. |
| * @prop jcr:host Stores a string holding the host name of the system |
| * through which the repository is to be accessed. |
| * @prop jcr:port Stores a string holding the port number through which the |
| * target repository is to be accessed. |
| * |
| * The semantics of these properties above are left undefined but are assumed to be |
| * known by the application. The names and descriptions of the properties are not |
| * normative and the repository does not enforce any particular semantic |
| * interpretation on them. |
| * |
| * @prop jcr:repository Stores a string holding the name of the target repository. |
| * @prop jcr:workspace Stores the name of a workspace. |
| * @prop jcr:path Stores a path to an item. |
| * @prop jcr:id Stores a weak reference to a node. |
| * |
| * In most cases either the jcr:path or the jcr:id property would be used, but |
| * not both, since they may point to different nodes. If any of the properties |
| * other than jcr:path and jcr:id are missing, the address can be interpreted as |
| * relative to the current container at the same level as the missing specifier. |
| * For example, if no repository is specified, then the address can be |
| * interpreted as referring to a workspace and path or id within the current |
| * repository. |
| * |
| * @since 2.0 |
| */ |
| [nt:address] |
| - jcr:protocol (STRING) |
| - jcr:host (STRING) |
| - jcr:port (STRING) |
| - jcr:repository (STRING) |
| - jcr:workspace (STRING) |
| - jcr:path (PATH) |
| - jcr:id (WEAKREFERENCE) |
| |
| /** |
| * The mix:etag mixin type defines a standardized identity validator for BINARY |
| * properties similar to the entity tags used in HTTP/1.1 |
| * |
| * A jcr:etag property is an opaque string whose syntax is identical to that |
| * defined for entity tags in HTTP/1.1. Semantically, the jcr:etag is comparable |
| * to the HTTP/1.1 strong entity tag. |
| * |
| * On creation of a mix:etag node N, or assignment of mix:etag to N, the |
| * repository must create a jcr:etag property with an implementation determined |
| * value. |
| * |
| * The value of the jcr:etag property must change immediately on persist of any |
| * of the following changes to N: |
| * - A BINARY property is added t o N. |
| * - A BINARY property is removed from N. |
| * - The value of an existing BINARY property of N changes. |
| * |
| * @since 2.0 |
| */ |
| [mix:etag] |
| mixin |
| - jcr:etag (STRING) protected autocreated |
| |
| /** |
| * mix:atomicCounter will define a node as a counter which will keep tracks of increasing/decreasing |
| * consistently across a cluster of oak instances. https://issues.apache.org/jira/browse/OAK-2220 |
| */ |
| [mix:atomicCounter] |
| mixin |
| - oak:counter (LONG) = '0' protected autocreated |
| |
| /** |
| * allows restricting node types such as NT_FOLDER to have NT_UNSTRUCTURED. Required for oak:index |
| */ |
| [mix:indexable] |
| mixin |
| + oak:index (nt:base) = nt:unstructured COPY |
| |
| //------------------------------------------------------------------------------ |
| // U N S T R U C T U R E D C O N T E N T |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * This node type is used to store unstructured content. It allows any number of |
| * child nodes or properties with any names. It also allows multiple nodes having |
| * the same name as well as both multi-value and single-value properties with any |
| * names. This node type also supports client-orderable child nodes. |
| * |
| * @since 1.0 |
| */ |
| [nt:unstructured] |
| orderable |
| - * (UNDEFINED) multiple |
| - * (UNDEFINED) |
| + * (nt:base) = nt:unstructured sns VERSION |
| |
| [oak:Unstructured] |
| - * (UNDEFINED) multiple |
| - * (UNDEFINED) |
| + * (nt:base) = oak:Unstructured VERSION |
| |
| /** |
| * Unstructured base node type for repository internal information that must not |
| * be copied to the version store OPV |
| * |
| * @since oak 1.0 |
| */ |
| [rep:Unstructured] |
| - * (UNDEFINED) multiple IGNORE |
| - * (UNDEFINED) IGNORE |
| + * (nt:base) = rep:Unstructured IGNORE |
| |
| /** |
| * Unstructured base node type for protected repository internal information |
| * that is protected and must not be copied to the version store OPV |
| * |
| * @since oak 1.4 |
| */ |
| [rep:UnstructuredProtected] abstract |
| - * (UNDEFINED) protected multiple IGNORE |
| - * (UNDEFINED) protected IGNORE |
| + * (rep:UnstructuredProtected) protected IGNORE |
| |
| //------------------------------------------------------------------------------ |
| // R E F E R E N C E A B L E |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * This node type adds an auto-created, mandatory, protected STRING property to |
| * the node, called jcr:uuid, which exposes the identifier of the node. |
| * Note that the term "UUID" is used for backward compatibility with JCR 1.0 |
| * and does not necessarily imply the use of the UUID syntax, or global uniqueness. |
| * The identifier of a referenceable node must be a referenceable identifier. |
| * Referenceable identifiers must fulfill a number of constraints beyond the |
| * minimum required of standard identifiers (see 3.8.3 Referenceable Identifiers). |
| * A reference property is a property that holds the referenceable identifier of a |
| * referenceable node and therefore serves as a pointer to that node. The two types |
| * of reference properties, REFERENCE and WEAKREFERENCE differ in that the former |
| * enforces referential integrity while the latter does not. |
| * |
| * @since 1.0 |
| */ |
| [mix:referenceable] |
| mixin |
| - jcr:uuid (STRING) mandatory autocreated protected INITIALIZE |
| |
| //------------------------------------------------------------------------------ |
| // L O C K I N G |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * @since 1.0 |
| */ |
| [mix:lockable] |
| mixin |
| - jcr:lockOwner (STRING) protected IGNORE |
| - jcr:lockIsDeep (BOOLEAN) protected IGNORE |
| |
| //------------------------------------------------------------------------------ |
| // S H A R E A B L E N O D E S |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * @since 2.0 |
| */ |
| [mix:shareable] > mix:referenceable |
| mixin |
| |
| //------------------------------------------------------------------------------ |
| // V E R S I O N I N G |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * @since 2.0 |
| */ |
| [mix:simpleVersionable] |
| mixin |
| - jcr:isCheckedOut (BOOLEAN) = 'true' mandatory autocreated protected IGNORE |
| |
| /** |
| * @since 1.0 |
| */ |
| [mix:versionable] > mix:simpleVersionable, mix:referenceable |
| mixin |
| - jcr:versionHistory (REFERENCE) mandatory protected IGNORE < 'nt:versionHistory' |
| - jcr:baseVersion (REFERENCE) mandatory protected IGNORE < 'nt:version' |
| - jcr:predecessors (REFERENCE) mandatory protected multiple IGNORE < 'nt:version' |
| - jcr:mergeFailed (REFERENCE) protected multiple ABORT < 'nt:version' |
| /** @since 2.0 */ |
| - jcr:activity (REFERENCE) protected < 'nt:activity' |
| /** @since 2.0 */ |
| - jcr:configuration (REFERENCE) protected IGNORE < 'nt:configuration' |
| |
| /** |
| * @since 1.0 |
| */ |
| [nt:versionHistory] > mix:referenceable |
| - jcr:versionableUuid (STRING) mandatory autocreated protected ABORT |
| /** @since 2.0 */ |
| - jcr:copiedFrom (WEAKREFERENCE) protected ABORT < 'nt:version' |
| + jcr:rootVersion (nt:version) = nt:version mandatory autocreated protected ABORT |
| + jcr:versionLabels (nt:versionLabels) = nt:versionLabels mandatory autocreated protected ABORT |
| + * (nt:version) = nt:version protected ABORT |
| |
| /** |
| * @since 1.0 |
| */ |
| [nt:versionLabels] |
| - * (REFERENCE) protected ABORT < 'nt:version' |
| |
| /** |
| * @since 1.0 |
| */ |
| [nt:version] > mix:referenceable |
| - jcr:created (DATE) mandatory autocreated protected ABORT |
| - jcr:predecessors (REFERENCE) protected multiple ABORT < 'nt:version' |
| - jcr:successors (REFERENCE) protected multiple ABORT < 'nt:version' |
| /** @since 2.0 */ |
| - jcr:activity (REFERENCE) protected ABORT < 'nt:activity' |
| + jcr:frozenNode (nt:frozenNode) protected ABORT |
| |
| /** |
| * @since 1.0 |
| */ |
| [nt:frozenNode] |
| orderable |
| - jcr:frozenPrimaryType (NAME) mandatory autocreated protected ABORT |
| - jcr:frozenMixinTypes (NAME) protected multiple ABORT |
| - jcr:frozenUuid (STRING) mandatory autocreated protected ABORT |
| - * (UNDEFINED) protected ABORT |
| - * (UNDEFINED) protected multiple ABORT |
| + * (nt:base) protected sns ABORT |
| |
| /** |
| * @since 1.0 |
| */ |
| [nt:versionedChild] |
| - jcr:childVersionHistory (REFERENCE) mandatory autocreated protected ABORT < 'nt:versionHistory' |
| |
| /** |
| * @since 2.0 |
| */ |
| [nt:activity] > mix:referenceable |
| - jcr:activityTitle (STRING) mandatory autocreated protected |
| |
| /** |
| * @since 2.0 |
| */ |
| [nt:configuration] > mix:versionable |
| - jcr:root (REFERENCE) mandatory autocreated protected |
| |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:VersionablePaths] |
| mixin |
| - * (PATH) protected ABORT |
| |
| //------------------------------------------------------------------------------ |
| // N O D E T Y P E S |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * This node type is used to store a node type definition. Property and child node |
| * definitions within the node type definition are stored as same-name sibling nodes |
| * of type nt:propertyDefinition and nt:childNodeDefinition. |
| * |
| * @since 1.0 |
| */ |
| [nt:nodeType] |
| - jcr:nodeTypeName (NAME) protected mandatory |
| - jcr:supertypes (NAME) protected multiple |
| - jcr:isAbstract (BOOLEAN) protected mandatory |
| - jcr:isQueryable (BOOLEAN) protected mandatory |
| - jcr:isMixin (BOOLEAN) protected mandatory |
| - jcr:hasOrderableChildNodes (BOOLEAN) protected mandatory |
| - jcr:primaryItemName (NAME) protected |
| + jcr:propertyDefinition (nt:propertyDefinition) = nt:propertyDefinition protected sns |
| + jcr:childNodeDefinition (nt:childNodeDefinition) = nt:childNodeDefinition protected sns |
| |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:NodeType] > nt:nodeType |
| - rep:supertypes (NAME) protected multiple autocreated |
| - rep:primarySubtypes (NAME) protected multiple autocreated |
| - rep:mixinSubtypes (NAME) protected multiple autocreated |
| - rep:mandatoryProperties (NAME) protected multiple autocreated |
| - rep:mandatoryChildNodes (NAME) protected multiple autocreated |
| - rep:protectedProperties (NAME) protected multiple autocreated |
| - rep:protectedChildNodes (NAME) protected multiple autocreated |
| - rep:hasProtectedResidualProperties (BOOLEAN) protected autocreated |
| - rep:hasProtectedResidualChildNodes (BOOLEAN) protected autocreated |
| - rep:namedSingleValuedProperties (NAME) protected multiple autocreated |
| + rep:namedPropertyDefinitions (rep:NamedPropertyDefinitions) = rep:NamedPropertyDefinitions protected |
| + rep:residualPropertyDefinitions (rep:PropertyDefinitions) = rep:PropertyDefinitions protected |
| + rep:namedChildNodeDefinitions (rep:NamedChildNodeDefinitions) = rep:NamedChildNodeDefinitions protected |
| + rep:residualChildNodeDefinitions (rep:ChildNodeDefinitions) = rep:ChildNodeDefinitions protected |
| |
| [rep:NamedPropertyDefinitions] |
| + * (rep:PropertyDefinitions) = rep:PropertyDefinitions protected |
| |
| [rep:PropertyDefinitions] |
| + * (rep:PropertyDefinition) = rep:PropertyDefinition protected |
| |
| [rep:PropertyDefinition] > nt:propertyDefinition |
| - rep:declaringNodeType (NAME) protected mandatory |
| |
| [rep:NamedChildNodeDefinitions] |
| + * (rep:ChildNodeDefinitions) = rep:ChildNodeDefinitions protected |
| |
| [rep:ChildNodeDefinitions] |
| + * (rep:ChildNodeDefinition) = rep:ChildNodeDefinition protected |
| |
| [rep:ChildNodeDefinition] > nt:childNodeDefinition |
| - rep:declaringNodeType (NAME) protected mandatory |
| |
| /** |
| * This node type used to store a property definition within a node type definition, |
| * which itself is stored as an nt:nodeType node. |
| * |
| * @since 1.0 |
| */ |
| [nt:propertyDefinition] |
| - jcr:name (NAME) protected |
| - jcr:autoCreated (BOOLEAN) protected mandatory |
| - jcr:mandatory (BOOLEAN) protected mandatory |
| - jcr:onParentVersion (STRING) protected mandatory |
| < 'COPY', 'VERSION', 'INITIALIZE', 'COMPUTE', 'IGNORE', 'ABORT' |
| - jcr:protected (BOOLEAN) protected mandatory |
| - jcr:requiredType (STRING) protected mandatory |
| < 'STRING', 'URI', 'BINARY', 'LONG', 'DOUBLE', |
| 'DECIMAL', 'BOOLEAN', 'DATE', 'NAME', 'PATH', |
| 'REFERENCE', 'WEAKREFERENCE', 'UNDEFINED' |
| - jcr:valueConstraints (STRING) protected multiple |
| - jcr:defaultValues (UNDEFINED) protected multiple |
| - jcr:multiple (BOOLEAN) protected mandatory |
| - jcr:availableQueryOperators (NAME) protected mandatory multiple |
| - jcr:isFullTextSearchable (BOOLEAN) protected mandatory |
| - jcr:isQueryOrderable (BOOLEAN) protected mandatory |
| |
| /** |
| * This node type used to store a child node definition within a node type definition, |
| * which itself is stored as an nt:nodeType node. |
| * |
| * @since 1.0 |
| */ |
| [nt:childNodeDefinition] |
| - jcr:name (NAME) protected |
| - jcr:autoCreated (BOOLEAN) protected mandatory |
| - jcr:mandatory (BOOLEAN) protected mandatory |
| - jcr:onParentVersion (STRING) protected mandatory |
| < 'COPY', 'VERSION', 'INITIALIZE', 'COMPUTE', 'IGNORE', 'ABORT' |
| - jcr:protected (BOOLEAN) protected mandatory |
| - jcr:requiredPrimaryTypes (NAME) = 'nt:base' protected mandatory multiple |
| - jcr:defaultPrimaryType (NAME) protected |
| - jcr:sameNameSiblings (BOOLEAN) protected mandatory |
| |
| //------------------------------------------------------------------------------ |
| // Q U E R Y |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * @since 1.0 |
| */ |
| [nt:query] |
| - jcr:statement (STRING) |
| - jcr:language (STRING) |
| |
| /** |
| * Index definitions storage |
| * |
| * @since oak 0.6 |
| */ |
| [oak:QueryIndexDefinition] > oak:Unstructured |
| - type (STRING) mandatory |
| - async (STRING) |
| - reindex (BOOLEAN) IGNORE |
| |
| //------------------------------------------------------------------------------ |
| // L I F E C Y C L E M A N A G E M E N T |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * Only nodes with mixin node type mix:lifecycle may participate in a lifecycle. |
| * |
| * @peop jcr:lifecyclePolicy |
| * This property is a reference to another node that contains |
| * lifecycle policy information. The definition of the referenced |
| * node is not specified. |
| * @prop jcr:currentLifecycleState |
| * This property is a string identifying the current lifecycle |
| * state of this node. The format of this string is not specified. |
| * |
| * @since 2.0 |
| */ |
| [mix:lifecycle] |
| mixin |
| - jcr:lifecyclePolicy (REFERENCE) protected INITIALIZE |
| - jcr:currentLifecycleState (STRING) protected INITIALIZE |
| |
| //------------------------------------------------------------------------------ |
| // J A C K R A B B I T I N T E R N A L S |
| //------------------------------------------------------------------------------ |
| |
| [rep:root] > nt:unstructured |
| + jcr:system (rep:system) = rep:system mandatory IGNORE |
| |
| [rep:system] |
| orderable |
| + jcr:versionStorage (rep:versionStorage) = rep:versionStorage mandatory protected ABORT |
| + jcr:nodeTypes (rep:nodeTypes) = rep:nodeTypes mandatory protected ABORT |
| // @since 2.0 |
| + jcr:activities (rep:Activities) = rep:Activities mandatory protected ABORT |
| // @since 2.0 |
| + jcr:configurations (rep:Configurations) = rep:Configurations protected ABORT |
| + * (nt:base) = nt:base IGNORE |
| // @since oak 1.0 |
| + rep:privileges (rep:Privileges) = rep:Privileges protected ABORT |
| |
| |
| /** |
| * Node Types (virtual) storage |
| */ |
| [rep:nodeTypes] |
| + * (nt:nodeType) = nt:nodeType protected ABORT |
| |
| /** |
| * Version storage |
| */ |
| [rep:versionStorage] |
| + * (nt:versionHistory) = nt:versionHistory protected ABORT |
| + * (rep:versionStorage) = rep:versionStorage protected ABORT |
| - * (UNDEFINED) protected ABORT |
| - * (UNDEFINED) protected multiple ABORT |
| |
| /** |
| * Activities storage |
| * @since 2.0 |
| */ |
| [rep:Activities] |
| + * (nt:activity) = nt:activity protected ABORT |
| + * (rep:Activities) = rep:Activities protected ABORT |
| |
| /** |
| * the intermediate nodes for the configurations storage. |
| * Note: since the versionable node points to the configuration and vice versa, |
| * a configuration could never be removed because no such API exists. therefore |
| * the child node definitions are not protected. |
| * @since 2.0 |
| */ |
| [rep:Configurations] |
| + * (nt:configuration) = nt:configuration ABORT |
| + * (rep:Configurations) = rep:Configurations ABORT |
| |
| /** |
| * mixin that provides a multi value property for referencing versions. |
| * This is used for recording the baseline versions in the nt:configuration |
| * node, and to setup a bidirectional relationship between activities and |
| * the respective versions |
| * @since 2.0 |
| */ |
| [rep:VersionReference] mix |
| - rep:versions (REFERENCE) protected multiple |
| |
| // ----------------------------------------------------------------------------- |
| // J A C K R A B B I T S E C U R I T Y |
| // ----------------------------------------------------------------------------- |
| |
| [rep:AccessControllable] |
| mixin |
| + rep:policy (rep:Policy) protected IGNORE |
| |
| [rep:RepoAccessControllable] |
| mixin |
| + rep:repoPolicy (rep:Policy) protected IGNORE |
| |
| [rep:Policy] |
| abstract |
| |
| [rep:ACL] > rep:Policy |
| orderable |
| + * (rep:ACE) = rep:GrantACE protected IGNORE |
| |
| [rep:ACE] |
| - rep:principalName (STRING) protected mandatory |
| - rep:privileges (NAME) protected mandatory multiple |
| - rep:nodePath (PATH) protected /* deprecated in favor of restrictions */ |
| - rep:glob (STRING) protected /* deprecated in favor of restrictions */ |
| - * (UNDEFINED) protected /* deprecated in favor of restrictions */ |
| + rep:restrictions (rep:Restrictions) = rep:Restrictions protected |
| |
| [rep:GrantACE] > rep:ACE |
| |
| [rep:DenyACE] > rep:ACE |
| |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:Restrictions] |
| - * (UNDEFINED) protected |
| - * (UNDEFINED) protected multiple |
| |
| // ----------------------------------------------------------------------------- |
| // Principal based AC |
| // ----------------------------------------------------------------------------- |
| |
| [rep:AccessControl] |
| + * (rep:AccessControl) protected IGNORE |
| + * (rep:PrincipalAccessControl) protected IGNORE |
| |
| [rep:PrincipalAccessControl] > rep:AccessControl |
| + rep:policy (rep:Policy) protected IGNORE |
| |
| // ----------------------------------------------------------------------------- |
| // Permissions |
| // ----------------------------------------------------------------------------- |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:PermissionStore] |
| - rep:accessControlledPath (STRING) protected IGNORE |
| - rep:numPermissions (LONG) protected IGNORE |
| - rep:modCount (LONG) protected IGNORE |
| + * (rep:PermissionStore) = rep:PermissionStore protected IGNORE |
| + * (rep:Permissions) = rep:Permissions protected IGNORE |
| |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:Permissions] |
| - * (UNDEFINED) protected IGNORE |
| - * (UNDEFINED) protected multiple IGNORE |
| + * (rep:Permissions) = rep:Permissions protected IGNORE |
| |
| // ----------------------------------------------------------------------------- |
| // User Management |
| // ----------------------------------------------------------------------------- |
| |
| [rep:Authorizable] > mix:referenceable, nt:hierarchyNode |
| abstract |
| + * (nt:base) = nt:unstructured VERSION |
| - rep:principalName (STRING) protected mandatory |
| - rep:authorizableId (STRING) protected /* @since oak 1.0 */ |
| - * (UNDEFINED) |
| - * (UNDEFINED) multiple |
| |
| [rep:Impersonatable] |
| mixin |
| - rep:impersonators (STRING) protected multiple |
| |
| [rep:Password] |
| - * (UNDEFINED) protected |
| - * (UNDEFINED) protected multiple |
| |
| [rep:User] > rep:Authorizable, rep:Impersonatable |
| + rep:pwd (rep:Password) = rep:Password protected |
| - rep:password (STRING) protected |
| - rep:disabled (STRING) protected |
| |
| [rep:SystemUser] > rep:User /* @since oak 1.1.0 */ |
| |
| [rep:Group] > rep:Authorizable, rep:MemberReferences |
| + rep:members (rep:Members) = rep:Members multiple protected VERSION /* @deprecated since oak 1.0 (remove?) */ |
| + rep:membersList (rep:MemberReferencesList) = rep:MemberReferencesList protected COPY /* @since oak 1.0 */ |
| |
| [rep:AuthorizableFolder] > nt:hierarchyNode |
| + * (rep:Authorizable) = rep:User VERSION |
| + * (rep:AuthorizableFolder) = rep:AuthorizableFolder VERSION |
| |
| /* |
| * @deprecated since oak 1.0 |
| */ |
| [rep:Members] |
| orderable |
| + * (rep:Members) = rep:Members protected multiple |
| - * (WEAKREFERENCE) protected < 'rep:Authorizable' |
| |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:MemberReferences] |
| - rep:members (WEAKREFERENCE) protected multiple < 'rep:Authorizable' |
| |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:MemberReferencesList] |
| + * (rep:MemberReferences) = rep:MemberReferences protected COPY |
| |
| /** |
| * @since oak 1.4 |
| */ |
| [rep:Cache] > rep:UnstructuredProtected |
| - rep:expiration (LONG) protected IGNORE |
| |
| // ----------------------------------------------------------------------------- |
| // Privilege Management |
| // ----------------------------------------------------------------------------- |
| |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:Privileges] |
| + * (rep:Privilege) = rep:Privilege protected ABORT |
| - rep:next (LONG) protected multiple mandatory |
| |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:Privilege] |
| - rep:isAbstract (BOOLEAN) protected |
| - rep:aggregates (NAME) protected multiple |
| - rep:bits (LONG) protected multiple mandatory |
| |
| // ----------------------------------------------------------------------------- |
| // Token Management |
| // ----------------------------------------------------------------------------- |
| /** |
| * @since oak 1.0 |
| */ |
| [rep:Token] > mix:referenceable |
| - rep:token.key (STRING) protected mandatory |
| - rep:token.exp (DATE) protected mandatory |
| - * (UNDEFINED) protected |
| - * (UNDEFINED) multiple protected |
| |
| // ----------------------------------------------------------------------------- |
| // J A C K R A B B I T R E T E N T I O N M A N A G E M E N T |
| // ----------------------------------------------------------------------------- |
| |
| [rep:RetentionManageable] |
| mixin |
| - rep:hold (UNDEFINED) protected multiple IGNORE |
| - rep:retentionPolicy (UNDEFINED) protected IGNORE |
| |
| // ----------------------------------------------------------------------------- |
| // Oak save conflict resolution |
| // ----------------------------------------------------------------------------- |
| |
| [rep:MergeConflict] |
| mixin |
| primaryitem rep:ours |
| + rep:ours (rep:Unstructured) protected IGNORE |