{ "$schema" : "http://modeshape.org/3.0/repository-config#", "id" : "http://modeshape.org/3.0/repository-config#", "type" : "object", "additionalProperties" : false, "properties" : { "name" : { "type" : "string", "required" : true, "description" : "The name of the repository. If not provided, the name of the configuration file is used (minus the filename extension)." }, "description" : { "type" : "string", "description" : "The optional description of this repository. It is unused by ModeShape." }, "jndiName" : { "type" : "string", "description" : "The name in JNDI where this repository is to be registered. If not specified, the location is assumed to be 'java:jcr/local/', where '' is the repository name. Setting this field to an empty string signals that the repository should not be registered in JNDI." }, "eventBusSize" : { "type" : "number", "description" : "The maximum number of events that can co-exit in the event bus, before blocking and waiting for the slowest consumer(s) to finish and free up subsequent slots. Should be a power of 2, or the system will auto-adjust to the closest power of 2", "default" : 1024 }, "lockTimeoutMillis" : { "type" : "integer", "default" : "10000", "description" : "The number of milliseconds to wait when a lock cannot be obtained on a node. In highly concurrent cases, this may be adjusted. Defaults to 10 seconds" }, "monitoring" : { "type" : "object", "description" : "The specification for the monitoring system for the repository.", "additionalProperties" : false, "properties" : { "enabled" : { "type" : "boolean", "default" : true, "description" : "The flag specifying whether the repositories should record monitoring statistics. This is enabled by default." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, "garbageCollection" : { "type" : "object", "description" : "The specification for reclaiming unused persistent storage for the repository.", "additionalProperties" : false, "properties" : { "threadPool" : { "type" : "string", "default" : "modeshape-gc", "description" : "Name of the thread pool that should be used to asynchronously reclaim unused persistent storage. Thread pools are named globally within a single ModeShape engine, and by default all repositories use the same thread pool for garbage collection." }, "initialTime" : { "type" : "string", "default" : "00:00", "pattern" : "(([0-1][0-9])|([2][0-3])):[0-5][0-9]", "description" : "The local time that the first garbage collection process should be run. Garbage collection may be relatively expensive, as it involves scanning all persisted content, so it's recommended that this be done durign off hours if possible. By default, garbage collection is run at midnight (local time) after the repository is started." }, "intervalInHours" : { "type" : "integer", "default" : "24", "description" : "The number of hours between garbage collection runs. By default the interval is 24 hours (meaning it runs once per day)." }, } }, "storage" : { "type" : "object", "description" : "The specification of how to store the repository and binary data", "additionalProperties" : false, "properties" : { "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, "persistence" : { "type" : [ { "type" : "object", "additionalProperties" : true, "properties" : { "type" : { "type" : "string", "description" : "The specification of the database persistence", "enum" : [ "db", "database" ] }, "connectionUrl" : { "type" : "string", "default" : "jdbc:h2:mem:modeshape;DB_CLOSE_DELAY=-1", "description" : "The db connection url" }, "driver" : { "type" : "string", "default" : "org.h2.Driver", "description" : "The fully qualified name of the DB driver" }, "username" : { "type" : "string", "default" : "sa", "description" : "The db connection user name" }, "password" : { "type" : "string", "default" : "", "description" : "The db connection password" }, "dataSourceJndiName" : { "type" : "string", "description" : "The JNDI name of an existing datasource" }, "tableName" : { "type" : "string", "default" : "MODESHAPE_REPOSITORY", "description" : "The name of the DB table where ModeShape will store data" }, "createOnStart" : { "type" : "boolean", "default" : true, "description" : "Whether the DB table should be created on startup if it does not exist" }, "dropOnExit" : { "type" : "boolean", "default" : false, "description" : "Whether the DB table should be dropped on exit" }, "fetchSize" : { "type" : "integer", "default" : 1000, "description" : "The JDBC fetch size" }, "compress" : { "type" : "boolean", "default" : true, "description" : "Whether binary data stored in the DB should be compressed or not" } } }, { "type": "object", "additionalProperties": true, "properties": { "type": { "type": "string", "description": "The specification of a custom persistence provider" } } } ] }, "transactionManagerLookup" : { "type" : "object", "default" : "default", "description" : "The configuration of the transaction manager lookup instance", "additionalProperties" : false, "properties" : { "name" : { "type" : "string", "default" : "org.modeshape.jcr.txn.DefaultTransactionManagerLookup", "description" : "The fully qualified name of the TransactionManagerLookup instance which ModeShape should use to detect an active transaction manager" }, "classloader" : { "type" : "string", "description" : "The optional paths that should be used to load the transaction manager lookup class." } } }, "documentOptimization" : { "type" : "object", "description" : "The specification for optimizing the representation of each individual node persisted in the repository. Currently this is DISABLED by default; to enable, define a 'documentOptimization' document (even empty) under 'storage'.", "additionalProperties" : false, "properties" : { "threadPool" : { "type" : "string", "default" : "modeshape-opt", "description" : "Name of the thread pool that should be used to asynchronously optimize persisted node representations. This process is only required when nodes have large numbers of children, as defined by the child count target. Thread pools are named globally within a single ModeShape engine, and by default all repositories use the same thread pool for document optimization. DOCUMENT OPTIMIZATION IS A TECHNOLOGY PREVIEW AND SHOULD NOT YET BE USED IN PRODUCTION." }, "initialTime" : { "type" : "string", "default" : "00:00", "pattern" : "(([0-1][0-9])|([2][0-3])):[0-5][0-9]", "description" : "The local time that the first document optimization process should be run. Document optimization may be relatively expensive, as it involves scanning all persisted content, so it's recommended that this be done during off hours if possible. The format is 'hh:mm', or two-digit hours and two-digit minutes. By default, the value is '02:00' garbage collection is run at 2AM (local time) after the repository is started. DOCUMENT OPTIMIZATION IS A TECHNOLOGY PREVIEW AND SHOULD NOT YET BE USED IN PRODUCTION." }, "intervalInHours" : { "type" : "integer", "default" : "24", "description" : "The number of hours between document optimization runs. By default the interval is 24 hours (meaning it runs once per day). DOCUMENT OPTIMIZATION IS A TECHNOLOGY PREVIEW AND SHOULD NOT YET BE USED IN PRODUCTION." }, "childCountTarget" : { "type" : "integer", "minimum" : 1, "description" : "The maximum number of children that are ideally stored within a single document (e.g., node document or separate page of children). A lower number might result in more pages but faster load times for nodes when accessing a subset of the children, but getting particular children or all children of a node will require reading multiple documents/pages. A larger number may increase the time required to read each document/page, but may reduce the total number of document/page reads necessary to load a particular child or all children of a node. There is no default because the performance is highly dependent upon application usage and access patterns. Therefore, we strongly recommend testing with various values. Optimization is only enabled with a valid value. DOCUMENT OPTIMIZATION IS A TECHNOLOGY PREVIEW AND SHOULD NOT YET BE USED IN PRODUCTION." }, "childCountTolerance" : { "type" : "integer", "minimum" : 1, "description" : "The range that the actual number of children in a document can vary above the target before the documents/pages are split, or below the target before documents/pages are merged. There is no default because the performance is highly dependent upon application usage and access patterns. Therefore, we strongly recommend testing with various values. Optimization is only enabled with a valid value. DOCUMENT OPTIMIZATION IS A TECHNOLOGY PREVIEW AND SHOULD NOT YET BE USED IN PRODUCTION." }, } }, "binaryStorage" : { "type" : [ { "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "description" : "The specification of the transient binary store, which keeps BINARY values on disk in the temp directory.", "enum" : [ "transient" ] }, "storeName" : { "type" : "string", "description" : "A short, implementer-supplied name for this binary store" }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "mimeTypeDetection" : { "type" : "string", "description" : "What type of mime-type detection should be performed when uploading binary values. Defaults to 'content' - i.e. reading the binary content (at least the headers) to determine the mime type", "default" : "content", "enum" : [ "none", "content", "name" ] }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "description" : "The specification of the file-based binary store, which keeps BINARY values on disk in the specified directory.", "enum" : [ "file" ] }, "storeName" : { "type" : "string", "description" : "A short, implementer-supplied name for this binary store" }, "directory" : { "type" : "string", "required" : true, "description" : "The location of the directory the file system under which the BINARY values should be stored. The value can be an absolute or relative path." }, "trash" : { "type" : "string", "required" : false, "description" : "The location of the directory the file system under which unused BINARY values should be stored before removing them from disk. The value can be an absolute or relative path." }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "mimeTypeDetection" : { "type" : "string", "description" : "What type of mime-type detection should be performed when uploading binary values. Defaults to 'content' - i.e. reading the binary content (at least the headers) to determine the mime type", "default" : "content", "enum" : [ "none", "content", "name" ] }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "description" : "The specification of the database binary store, which stores BINARY values in a JDBC-compatible database accessed through a JDBC DataSource registered in JNDI.", "enum" : [ "database" ] }, "storeName" : { "type" : "string", "description" : "A short, implementer-supplied name for this binary store" }, "dataSourceJndiName" : { "type" : "string", "description" : "The name in JNDI where the JDBC DataSource is registered that should be used for binary storage.", "required" : true, }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "mimeTypeDetection" : { "type" : "string", "description" : "What type of mime-type detection should be performed when uploading binary values. Defaults to 'content' - i.e. reading the binary content (at least the headers) to determine the mime type", "default" : "content", "enum" : [ "none", "content", "name" ] }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : true, "properties" : { "type" : { "type" : "string", "description" : "The specification of the database binary store, which stores BINARY values in a JDBC-compatible database accessed through a JDBC connection established by specifying the driver class, URL, and other properties", "enum" : [ "database" ] }, "storeName" : { "type" : "string", "description" : "A short, implementer-supplied name for this binary store" }, "driverClass" : { "type" : "string", "description" : "The full-qualified name of the JDBC driver class.", "required" : true, }, "url" : { "type" : "string", "description" : "The URL to be used to establish the database connection.", "required" : true, }, "username" : { "type" : "string", "description" : "The (optional) username for the database connection. Many JDBC drivers accept specifying the username in the URL.", "required" : false, }, "password" : { "type" : "string", "description" : "The (optional) password for the database connection. Many JDBC drivers accept specifying the password in the URL.", "required" : false, }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "mimeTypeDetection" : { "type" : "string", "description" : "What type of mime-type detection should be performed when uploading binary values. Defaults to 'content' - i.e. reading the binary content (at least the headers) to determine the mime type", "default" : "content", "enum" : [ "none", "content", "name" ] }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : true, "properties" : { "type" : { "type" : "string", "description" : "The specification of the Cassandra binary store", "enum" : [ "cassandra" ] }, "address" : { "type" : "string", "description" : "The address of a Cassandra Node", "required" : true, }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "mimeTypeDetection" : { "type" : "string", "description" : "What type of mime-type detection should be performed when uploading binary values. Defaults to 'content' - i.e. reading the binary content (at least the headers) to determine the mime type", "default" : "content", "enum" : [ "none", "content", "name" ] }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : true, "properties" : { "type" : { "type" : "string", "description" : "The specification of the Cassandra binary store", "enum" : [ "mongo" ] }, "host" : { "type" : "string", "description" : "The name of the MongoDB host", }, "port" : { "type" : "integer", "description" : "The MongoDB port", }, "database" : { "type" : "string", "description" : "The name of the database where to store the binary content", "default" : "ModeShape_BinaryStore", }, "username" : { "type" : "string", "description" : "The username to use when connecting to MongoDB", }, "password" : { "type" : "string", "description" : "The password to use when connecting to MongoDB", }, "hostAddresses" : { "type" : "array", "uniqueItems" : true, "description" : "The optional array of hostname:port values representing MongoDB server addresses for a replica set" }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "mimeTypeDetection" : { "type" : "string", "description" : "What type of mime-type detection should be performed when uploading binary values. Defaults to 'content' - i.e. reading the binary content (at least the headers) to determine the mime type", "default" : "content", "enum" : [ "none", "content", "name" ] }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." } } }, { "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "description" : "The specification of the S3 binary store, which stores BINARY values in Amazon S3", "enum" : [ "s3" ] }, "username" : { "type" : "string", "description" : "The access key ID for the connection to Amazon S3.", "required" : false }, "password" : { "type" : "string", "description" : "The secret key for the connection to Amazon S3.", "required" : false }, "bucketName" : { "type" : "string", "description" : "The S3 bucket name in which binary values will be stored.", "required" : true }, "endPoint" : { "type" : "string", "description" : "The endpoint URL used to communicate with S3.", "required" : false }, "deleteUnusedNatively" : { "type" : "boolean", "description" : "Whether to use native functionality to delete unused binary values.", "required" : false }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "mimeTypeDetection" : { "type" : "string", "description" : "What type of mime-type detection should be performed when uploading binary values. Defaults to 'content' - i.e. reading the binary content (at least the headers) to determine the mime type", "default" : "content", "enum" : [ "none", "content", "name" ] }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." } } }, { "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "description" : "The specification of a composite binary store.", "enum" : [ "composite" ] }, "namedStores" : { "type" : "object", "required" : true, "description" : "A map of implementer-supplied keys to other binaryStorage types", "additionalProperties" : { "type" : [ { "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "description" : "The specification of the transient binary store, which keeps BINARY values on disk in the temp directory.", "enum" : [ "transient" ] }, "storeName" : { "type" : "string", "description" : "A short, implementer-supplied name for this binary store" }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "description" : "The specification of the file-based binary store, which keeps BINARY values on disk in the specified directory.", "enum" : [ "file" ] }, "storeName" : { "type" : "string", "description" : "A short, implementer-supplied name for this binary store" }, "directory" : { "type" : "string", "required" : true, "description" : "The location of the directory the file system under which the BINARY values should be stored. The value can be an absolute or relative path." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : false, "properties" : { "type" : { "type" : "string", "description" : "The specification of the database binary store, which stores BINARY values in a JDBC-compatible database accessed through a JDBC DataSource registered in JNDI.", "enum" : [ "database" ] }, "storeName" : { "type" : "string", "description" : "A short, implementer-supplied name for this binary store" }, "dataSourceJndiName" : { "type" : "string", "description" : "The name in JNDI where the JDBC DataSource is registered that should be used for binary storage.", "required" : true, }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : true, "properties" : { "type" : { "type" : "string", "description" : "The specification of the database binary store, which stores BINARY values in a JDBC-compatible database accessed through a JDBC connection established by specifying the driver class, URL, and other properties", "enum" : [ "database" ] }, "storeName" : { "type" : "string", "description" : "A short, implementer-supplied name for this binary store" }, "driverClass" : { "type" : "string", "description" : "The full-qualified name of the JDBC driver class.", "required" : true, }, "url" : { "type" : "string", "description" : "The URL to be used to establish the database connection.", "required" : true, }, "username" : { "type" : "string", "description" : "The (optional) username for the database connection. Many JDBC drivers accept specifying the username in the URL.", "required" : false, }, "password" : { "type" : "string", "description" : "The (optional) password for the database connection. Many JDBC drivers accept specifying the password in the URL.", "required" : false, }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : true, "properties" : { "type" : { "type" : "string", "description" : "The specification of a custom binary store.", "enum" : [ "custom" ] }, "classname" : { "type" : "string", "required" : true, "description" : "The fully-qualified name of the 'org.modeshape.jcr.value.binary.BinaryStore' implementation class." }, "classloader" : { "type" : "string", "description" : "The optional name of the classloader that should be used to load the BinaryStore implementation class. If empty or not provided, the classpath accessible to ModeShape will be used." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } } ] }, "properties": { "default" : { "type" : "object", "required" : true, "description" : "a binaryStorage configuration element for the binaryStore that is used in the absence of applicable storage hints" } } }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "mimeTypeDetection" : { "type": "string", "description": "What type of mime-type detection should be performed when uploading binary values. Defaults to 'content' - i.e. reading the binary content (at least the headers) to determine the mime type", "default": "content", "enum": [ "none", "content", "name" ] }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, { "type" : "object", "additionalProperties" : true, "properties" : { "type" : { "type" : "string", "description" : "The specification of a custom binary store.", "enum" : [ "custom" ] }, "classname" : { "type" : "string", "required" : true, "description" : "The fully-qualified name of the 'org.modeshape.jcr.value.binary.BinaryStore' implementation class." }, "classloader" : { "type" : "string", "description" : "The optional name of the classloader that should be used to load the BinaryStore implementation class. If empty or not provided, the classpath accessible to ModeShape will be used." }, "minimumBinarySizeInBytes" : { "type" : "integer", "default" : 4096, "description" : "The size threshold that dictates whether binary values should be stored in the binary store. Binary values smaller than this value are stored with the node, whereas binary values with a size equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is '4096' bytes, or 4 kilobytes." }, "minimumStringSize" : { "type" : "integer", "description" : "The size threshold that dictates whether string values should be stored in the binary store. String values shorter than this length are stored with the node, whereas strings with a length equal to or greater than this limit will be stored separately from the node and in the binary store, keyed by the SHA-1 hash of the value. This is a space and performance optimization that stores each unique large value only once. The default value is to match the 'minimumBinarySizeInBytes' value." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, ] }, } }, "clustering": { "type": "object", "description": "The clustering configuration. If absent, clustering will be disabled", "additionalProperties": false, "properties": { "clusterName": { "type": "string", "default" : "ModeShape-JCR", "description": "The name of the cluster to which a JGroups channel will connect" }, "configuration": { "type": "string", "default" : "org/modeshape/jcr/clustering/jgroups-config.xml", "description": "The path to the JGroups configuration file that should be used" }, "locking" : { "type" : "string", "enum" : ["jgroups", "db"], "default" : "jgroups", "description" : "The locking mechanism to use while clustering. Defaults to JGroups" }, "description": { "type": "string", "description": "The optional description of this section of the configuration. It is unused by ModeShape." } } }, "workspaces" : { "type" : "object", "additionalProperties" : false, "properties" : { "predefined" : { "type" : "array", "uniqueItems" : true, "description" : "The names of the workspaces that are defined to exist." }, "default" : { "type" : "string", "description" : "The name of the workspace that should be used when not specified by calls to login to a Session." }, "allowCreation" : { "type" : "boolean", "default" : true, "description" : "Specifies whether users can create additional workspaces beyond the predefined, system, and default workspaces. The default value is 'true'." }, "cacheSize" : { "type" : "integer", "default" : 10000, "description" : "The maximum number of entries the workspace cache can hold in-memory" }, "initialContent" : { "type" : "object", "uniqueItems" : true, "description" : "The workspace name to initial content xml mapping that allows initial content to be imported into workspace. The '*' string is used when a default content should be imported into all the workspaces.", "additionalProperties" : true }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." } } }, "externalSources" : { "type" : "object", "description" : "The named set of external sources that can access content in external systems.", "required" : false, "additionalProperties" : { "type" : "object", "additionalProperties" : true, "description" : "Specification of a single external source configuration.", "properties" : { "classname" : { "type" : "string", "required" : true, "description" : "The fully-qualified name of the 'org.modeshape.jcr.federation.Connector' subclass. A shortcut for built-in connectors is to just use the name of the class (without the package specification)." }, "classloader" : { "type" : "string", "description" : "The optional name of the classloader that should be used to load the connector class. If empty or not provided, the classpath accessible to ModeShape will be used." }, "queryable" : { "type" : "boolean", "default" : true, "description" : "Optional flag which indicates whether this source's content should be indexed or not by the repository. By default, all content is queryable " }, "cacheable" : { "type" : "boolean", "default" : true, "description": "Whether documents exposed by this source should be cached by the repository or not" }, "readonly" : { "type" : "boolean", "default" : false, "description" : "Optional flag which indicates if an external source should support both writing and reading, or just reading. This flag is ignored for read-only sources and makes sense only for writable sources." }, "projections" : { "type" : "array", "items" : { "type" : "string", "pattern" : "(\w+):((([/]([^/=]|(\\.))+)+)|[/])\s*=>\s*((([/]([^/]|(\\.))+)+)|[/])" }, "description" : "The expressions that describes the projection path expressions, in the format wsName:/projectedPath => externalPath" }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } } }, "security" : { "type" : "object", "additionalProperties" : false, "properties" : { "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, "jaas" : { "type" : "object", "description" : "The configuration of the authentication/authorization provider that uses JAAS.", "properties" : { "policyName" : { "type" : "string", "default" : "modeshape-jcr", "description" : "The name of the JAAS policy that should be to validate credentials. If not specified, JAAS authentication is not used." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, "anonymous" : { "type" : "object", "description" : "The configuration of the authentication/authorization provider that uses JAAS.", "properties" : { "roles" : { "type" : "array", "default" : [ "readonly","readwrite", "admin"], "items" : { "type" : "string", }, "uniqueItems" : true, "description" : "An array of roles provided for anonymous access. Anonymous logins will be disabled if no value or an empty value is provided." }, "username" : { "type" : "string", "default" : "", "description" : "The username that should be used for anonymous users." }, "useOnFailedLogin" : { "type" : "boolean", "default" : false, "description" : "Indicates whether a failed attempt to authenticate should automatically fall back to attempt to anonymous access instead. If anonymous access is not enabled, then failed login attempts will still cause a LoginException to be thrown. The default value is 'false'." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } }, "providers" : { "type" : "array", "description" : "The named set of security provider configurations", "items" : { "type" : "object", "description" : "Specification of a security provider configuration.", "additionalProperties" : true, "properties" : { "classname" : { "type" : "string", "required" : true, "description" : "The fully-qualified name of the 'org.modeshape.jcr.security.AuthenticationProvider' implementation class. Aliases can be used for the built-in providers: 'jaas' for the JAAS provider, and 'servlet' for the Servlet provider." }, "classloader" : { "type" : "string", "description" : "The optional name of the classloader that should be used to load the AuthenicationProvider implementation class. If empty or not provided, the classpath accessible to ModeShape will be used." }, "name" : { "type" : "string", "description" : "The optional unqiue name of the security provider configuration, used for administration and reporting. If not specified, the classname will be used." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } } } } }, "indexProviders" : { "type" : "object", "description" : "The named set of index provider configurations", "required" : false, "additionalProperties" : { "type" : "object", "additionalProperties" : true, "description" : "Specification of an index provider configuration.", "properties" : { "classname" : { "type" : "string", "required" : true, "description" : "The fully-qualified name of the 'org.modeshape.jcr.spi.index.provider.IndexProvider' implementation class." }, "classloader" : { "type" : "string", "description" : "The optional name of the classloader that should be used to load the QueryIndexService implementation class. If empty or not provided, the classpath accessible to ModeShape will be used." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } } }, "indexes" : { "type" : "object", "description" : "The specification of the indexes used in the repository.", "required" : false, "additionalProperties" : { "type" : "object", "additionalProperties" : true, "description" : "Specification of a sequencer configuration.", "properties" : { "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, "provider" : { "type" : "string", "description" : "The name of the index provider that is responsible for this index. If the name does not match that of an index provider, the index will be disabled." }, "workspaces" : { "type" : "string", "default" : "*", "description" : "The regular expression pattern that stipulates which workspaces this index is to be used for. By default, the pattern is '*', which means all workspaces. A literal string will match the exact workspace name. Any workspaces that do not match this pattern will not use this index." }, "kind" : { "type" : "string", "enum" : ["unique","value","enumerated","text","nodetype"], "default" : "value", "description" : "The kind of the index." }, "synchronous" : { "type" : "boolean", "default" : "true", "description" : "Whether the index is updated synchronously before the save method returns. The default is 'true'." }, "nodeType" : { "type" : "string", "default" : "nt:base", "description" : "The name of the node type for which this index is define. This index will include data only from nodes that are of this type (implicitly or explicitly)." }, "columns" : { "type" : "string", "pattern" : "([^(,]+)[(]([^),]+)[)](,([^(,]+)[(]([^),]+)[)])*", "description" : "A comma-separated list of column definitions, where each column definition consists of a property name and in parentheses the property type. For example, 'jcr:mixin(STRING)' is a column definition that specifies the 'jcr:mixin' property and 'STRING' type." }, } } }, "reindexing" : { "type" : "object", "additionalProperties" : false, "description" : "Reindexing behavior configuration", "properties" : { "async" : { "type" : "boolean", "default" : true, "description" : "Whether on startup reindexing should be performed synchronously or asynchronously" }, "mode" : { "enum" : ["if_missing", "incremental"], "default" : "if_missing", "description" : "Specifies whether the entire repository will be reindexed if there is at least one provider which has an out-of-date index or whether the indexes for each provider will rebuilt only from the last successful update time. This only works if the repository journal is enabled." } } }, "textExtraction" : { "type" : "object", "additionalProperties" : false, "description" : "The extractor configurations.", "properties" : { "threadPool" : { "type" : "string", "default" : "modeshape-workers", "description" : "Name of the thread pool that should be used for text extracting. Thread pools are named globally within a single ModeShape engine, and by default all repositories use the same thread pool for sequencing and indexing." }, "maxPoolSize" : { "type" : "integer", "default" : 4, "description" : "The maximum number of threads that can be spawned at the same time to perform text extraction" }, "extractors" : { "type" : "object", "description" : "The container for the list of configured text extractors", "additionalProperties" : { "type" : "object", "description" : "Specification of a text extractor configuration.", "additionalProperties" : true, "properties" : { "classname" : { "type" : "string", "required" : true, "description" : "The fully-qualified name of the 'org.modeshape.jcr.text.TextExtractor' implementation class. A shortcut for built-in extractors is to just specify the name of the class (without the package specifciation)." }, "classloader" : { "type" : "string", "description" : "The optional name of the classloader that should be used to load the extract class. If empty or not provided, the classpath accessible to ModeShape will be used." }, "name" : { "type" : "string", "description" : "The optional unique name of the extractor configuration, used for administration and reporting purposes. If not specified, the extractor's classname will be used." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." } } } } } }, "sequencing" : { "type" : "object", "description" : "The options for sequencing.", "additionalProperties" : false, "properties" : { "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, "removeDerivedContentWithOriginal" : { "type" : "boolean", "default" : true, "description" : "DEPRECATED: This was never used and is currently ignored." }, "threadPool" : { "type" : "string", "default" : "modeshape-workers", "description" : "Name of the thread pool that should be used for sequencing. Thread pools are named globally within a single ModeShape engine, and by default all repositories use the same thread pool for sequencing and indexing." }, "maxPoolSize" : { "type" : "integer", "default" : 10, "description" : "The maximum number of threads that can be spawned at the same time to perform sequencing" }, "sequencers" : { "type" : "object", "description" : "The named set of sequencer configurations", "required" : false, "additionalProperties" : { "type" : "object", "additionalProperties" : true, "description" : "Specification of a sequencer configuration.", "properties" : { "classname" : { "type" : "string", "required" : true, "description" : "The fully-qualified name of the 'org.modeshape.jcr.api.sequencer.Sequencer' subclass. A shortcut for built-in sequencers is to just use the name of the class (without the package specification)." }, "classloader" : { "type" : "string", "description" : "The optional name of the classloader that should be used to load the sequencer class. If empty or not provided, the classpath accessible to ModeShape will be used." }, "pathExpressions" : { "type" : "array", "items" : { "type" : "string" }, "description" : "The expressions that describes the paths upon which this sequencer operates and the paths where the sequencer output is written." }, "pathExpression" : { "type" : "string", "description" : "The expressions that describes a single path expression" }, "acceptedMimeTypes" : { "type" : "array", "items" : { "type" : "string", }, "uniqueItems" : true, "description" : "The optional MIME types for the kind of content that this sequencer configuration should process. If not specified, then the sequencer class' default MIME types will be used. Set to an empty array to forcibly allow processing content with any MIME type." }, "description" : { "type" : "string", "description" : "The optional description of this section of the configuration. It is unused by ModeShape." }, } } } } }, "node-types" : { "type" : "array", "description" : "The set of cnd files which should be imported at start-up", "items" : { "type" : "string", "description" : "A list of cnd files which are accessible on the classpath, from which initial content will be imported" } }, "journaling" : { "type" : "object", "description" : "The journal configuration which enables ModeShape to store a local journal of all the changes", "properties" : { "enabled" : { "type" : "boolean", "description" : "Whether the journal should be enabled or not", "default" : true }, "location" : { "type" : "string", "description" : "The folder where the journal entries are stored by ModeShape", "default" : "modeshape/journal" }, "maxDaysToKeepRecords" : { "type" : "integer", "description" : "The maximum number of days a journal entry should be kept on disk before removed. By default, no entries are removed", "default" : -1 }, "asyncWritesEnabled" : { "type" : "boolean", "description" : "Whether journal entries should be persisted to disk asynchronously or not", "default" : false }, "threadPool" : { "type" : "string", "default" : "modeshape-journaling-gc", "description" : "Name of the thread pool that should be used when cleaning up older journal entries" }, "initialTime" : { "type" : "string", "default" : "00:00", "pattern" : "(([0-1][0-9])|([2][0-3])):[0-5][0-9]", "description" : "The local time that the first journal garbage collection process should be run. Garbage collection may be relatively expensive, as it involves scanning all persisted content, so it's recommended that this be done during off hours if possible. By default, garbage collection is run at midnight (local time) after the repository is started." }, "intervalInHours" : { "type" : "integer", "default" : "24", "description" : "The number of hours between journal garbage collection runs. By default the interval is 24 hours (meaning it runs once per day)." } } } } }