Module: CmisServer

Defined in:
lib/cmis_server.rb,
lib/cmis_server/id.rb,
lib/cmis_server/type.rb,
lib/cmis_server/engine.rb,
lib/cmis_server/context.rb,
lib/cmis_server/version.rb,
lib/cmis_server/property.rb,
lib/cmis_server/constants.rb,
lib/cmis_server/item_type.rb,
lib/cmis_server/base_types.rb,
lib/cmis_server/exceptions.rb,
lib/cmis_server/repository.rb,
lib/cmis_server/cmis_object.rb,
lib/cmis_server/folder_type.rb,
lib/cmis_server/item_object.rb,
lib/cmis_server/item_adapter.rb,
lib/cmis_server/configuration.rb,
lib/cmis_server/document_type.rb,
lib/cmis_server/folder_object.rb,
lib/cmis_server/type_registry.rb,
lib/cmis_server/content_stream.rb,
lib/cmis_server/object_adapter.rb,
lib/cmis_server/secondary_type.rb,
lib/cmis_server/document_object.rb,
lib/cmis_server/query/statement.rb,
lib/cmis_server/base_objects/item.rb,
lib/cmis_server/query/parser.racc.rb,
lib/cmis_server/renderable_object.rb,
lib/cmis_server/base_objects/folder.rb,
lib/cmis_server/property_definition.rb,
lib/cmis_server/atom_pub/entry_parser.rb,
lib/cmis_server/base_objects/document.rb,
lib/cmis_server/renderable_collection.rb,
lib/cmis_server/base_objects/base_type.rb,
app/services/cmis_server/object_service.rb,
app/models/cmis_server/application_record.rb,
app/helpers/cmis_server/application_helper.rb,
app/services/cmis_server/discovery_service.rb,
app/services/cmis_server/navigation_service.rb,
app/services/cmis_server/repository_service.rb,
app/services/cmis_server/bulk_update_service.rb,
app/services/cmis_server/content_stream_service.rb,
app/services/cmis_server/secondary_type_service.rb,
app/services/cmis_server/type_management_service.rb,
app/controllers/cmis_server/application_controller.rb,
app/controllers/cmis_server/atom_pub/base_controller.rb,
app/controllers/cmis_server/atom_pub/bulk_controller.rb,
app/controllers/cmis_server/atom_pub/query_controller.rb,
app/controllers/cmis_server/atom_pub/types_controller.rb,
app/controllers/cmis_server/atom_pub/content_controller.rb,
app/controllers/cmis_server/atom_pub/entries_controller.rb,
app/controllers/cmis_server/atom_pub/repository_controller.rb,
app/controllers/cmis_server/atom_pub/uri_templates_controller.rb,
app/controllers/cmis_server/atom_pub/secondary_types_controller.rb,
app/controllers/cmis_server/atom_pub/folder_collection_controller.rb,
app/controllers/cmis_server/atom_pub/service_documents_controller.rb,
app/controllers/concerns/cmis_server/atom_pub/repository_scopable.rb

Defined Under Namespace

Modules: ApplicationHelper, AtomPub, BaseObjects, Query Classes: ApplicationController, ApplicationRecord, BaseType, BaseTypeDefinition, Boolean, BulkUpdateService, CmisObject, CmisStandardError, Configuration, ConstraintViolation, ContentStream, ContentStreamService, Context, DiscoveryService, Document, DocumentObject, DocumentType, Engine, EntryParser, Folder, FolderObject, FolderType, Id, InheritedDecorator, InvalidOperation, InvalidType, InvalidTypeDefinition, ItemAdapter, ItemObject, ItemType, NavigationService, NotSupported, ObjectAdapter, ObjectNotFound, ObjectService, Property, PropertyDefinition, RenderableCollection, RenderableObject, Repository, RepositoryService, RuntimeError, SecondaryType, SecondaryTypeService, Type, TypeManagementService, TypeRegistry

Constant Summary collapse

VERSION =
"1.0.3"
CMIS_VERSION_SUPPORTED =
"1.1"
CMIS_NAMESPACE =
"http://docs.oasis-open.org/ns/cmis/core/201107/"
CMIS_REST_ATOM_NAMESPACE =
"http://docs.oasis-open.org/ns/cmis/restatom/201107/"
SECONDARY_TYPE =

Secondary Type Definition - déplacé ici pour éviter les dépendances circulaires

CmisServer::BaseTypeDefinition.new(id:                   'cmis:secondary',
                           parent_type:          nil,
                           description:          "A CMIS secondary type",
                           display_name:         'Secondary',
                           creatable:            false,
                           fileable:             false,
                           queryable:            true,
                           controllable_policy:  false,
                           controllable_acl:     false,
                           property_definitions: [
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:name'.freeze, type: String, required: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:description'.freeze, type: String, required: false}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:objectId'.freeze, type: CmisServer::Id, required: true, updatability: :readonly}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:baseTypeId'.freeze, type: CmisServer::Id, required: true, updatability: :readonly, value: ->(obj) { obj.type.base_id }}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:objectTypeId'.freeze, type: CmisServer::Id, required: true, updatability: :oncreate, value: ->(obj) { obj.type.id }}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:createdBy'.freeze, type: String, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:creationDate'.freeze, type: DateTime, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:lastModifiedBy'.freeze, type: String, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:lastModificationDate'.freeze, type: DateTime, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:changeToken'.freeze, type: String, required: false, updatability: :readonly}),
                                                 ]
)
ITEM_TYPE =

Item Type Definition - déplacé ici pour éviter les dépendances circulaires

CmisServer::BaseTypeDefinition.new(id:                   'cmis:item',
                      parent_type:          nil,
                      description:          "A CMIS item",
                      display_name:         'Item',
                      creatable:            true,
                      fileable:             true,
                      queryable:            true,
                      property_definitions: [
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:name'.freeze, type: String, required: true}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:description'.freeze, type: String, required: false}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:objectId'.freeze, type: CmisServer::Id, required: true, updatability: :readonly}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:baseTypeId'.freeze, type: CmisServer::Id, required: true, updatability: :readonly, value: ->(obj) { obj.type.base_id }}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:objectTypeId'.freeze, type: CmisServer::Id, required: true, updatability: :oncreate, value: ->(obj) { obj.type.id }}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:secondaryObjectTypeIds'.freeze, type: CmisServer::Id, required: false, updatability: :readwrite, cardinality: :multi}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:createdBy'.freeze, type: String, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:creationDate'.freeze, type: DateTime, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:lastModifiedBy'.freeze, type: String, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:lastModificationDate'.freeze, type: DateTime, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                              CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:changeToken'.freeze, type: String, required: false, updatability: :readonly}),
                                            ]
)
DOCUMENT_TYPE =
CmisServer::BaseTypeDefinition.new(id:                   'cmis:document',
                           parent_type:          nil,
                           description:          "A CMIS document",
                           display_name:         'Document',
                           creatable:            true,
                           fileable:             true,
                           queryable:            true,
                           property_definitions: [
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:name'.freeze, type: String, required: true, updatability: :readwrite}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:description'.freeze, type: String, required: false, updatability: :readwrite}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:objectId'.freeze, type: CmisServer::Id, required: true, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:baseTypeId'.freeze, type: CmisServer::Id, required: true, updatability: :readonly, value: ->(obj) { obj.type.base_id }}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:objectTypeId'.freeze, type: CmisServer::Id, required: true, updatability: :oncreate, value: ->(obj) { obj.type.id }}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:secondaryObjectTypeIds'.freeze, type: CmisServer::Id, required: false, updatability: :readwrite, cardinality: :multi}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:createdBy'.freeze, type: String, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:creationDate'.freeze, type: DateTime, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:lastModifiedBy'.freeze, type: String, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:lastModificationDate'.freeze, type: DateTime, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:changeToken'.freeze, type: String, required: false, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:isImmutable'.freeze, type: Boolean, required: false, updatability: :readonly, default: false}),

                                                     # Versionning properties
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:isLatestVersion'.freeze, type: Boolean, required: false, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:isMajorVersion'.freeze, type: Boolean, required: false, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:isLatestMajorVersion'.freeze, type: Boolean, required: false, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:isPrivateWorkingCopy'.freeze, type: Boolean, required: false, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:versionLabel'.freeze, type: String, required: false, cardinality: :single, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:versionSeriesId'.freeze, type: CmisServer::Id, required: false, cardinality: :single, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:isVersionSeriesCheckedOut'.freeze, type: Boolean, required: false, cardinality: :single, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:versionSeriesCheckedOutBy'.freeze, type: String, required: false, cardinality: :single, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:versionSeriesCheckedOutId'.freeze, type: Id, required: false, cardinality: :single, updatability: :readonly}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:checkinComment'.freeze, type: String, required: false, cardinality: :single, updatability: :readonly}),

                                                     # ContentStream properties
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:contentStreamLength'.freeze, type: Integer, required: false, cardinality: :single, updatability: :readonly, value: ->(obj) { obj.content_stream&.length }}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:contentStreamMimeType'.freeze, type: String, required: false, cardinality: :single, updatability: :readonly, value: ->(obj) { obj.content_stream&.media_type }}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:contentStreamFileName'.freeze, type: String, required: false, cardinality: :single, updatability: :readonly, value: ->(obj) { obj.content_stream&.filename }}),
                                                     CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:contentStreamId'.freeze, type: String, required: false, cardinality: :single, updatability: :readonly, value: ->(obj) { obj.content_stream&.id }}),
                                                 ]
)
FOLDER_TYPE =
CmisServer::BaseTypeDefinition.new(id:                   'cmis:folder',
                         parent_type:          nil,
                         description:          "A CMIS folder",
                         display_name:         'Folder',
                         creatable:            true,
                         fileable:             true,
                         queryable:            true,
                         property_definitions: [
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:name'.freeze, type: String, required: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:description'.freeze, type: String, required: false}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:objectId'.freeze, type: CmisServer::Id, required: true, updatability: :readonly}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:baseTypeId'.freeze, type: CmisServer::Id, required: true, updatability: :readonly, value: ->(obj) { obj.type.base_id }}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:objectTypeId'.freeze, type: CmisServer::Id, required: true, updatability: :oncreate, value: ->(obj) { obj.type.id }}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:secondaryObjectTypeIds'.freeze, type: CmisServer::Id, required: false, updatability: :readonly, cardinality: :multi}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:createdBy'.freeze, type: String, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:creationDate'.freeze, type: DateTime, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:lastModifiedBy'.freeze, type: String, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:lastModificationDate'.freeze, type: DateTime, required: false, updatability: :readonly, queryable: true, orderable: true}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:changeToken'.freeze, type: String, required: false, updatability: :readonly}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:parentId'.freeze, type: CmisServer::Id, required: false, updatability: :readonly}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:path'.freeze, type: CmisServer::Id, required: false, updatability: :readonly}),
                                                   CmisServer::PropertyDefinition.register_property_definition({id: 'cmis:allowedChildObjectTypeIds'.freeze, type: CmisServer::Id, required: false, updatability: :readonly, cardinality: :multi}),
                                               ]
)
BASE_TYPES =
[DOCUMENT_TYPE, FOLDER_TYPE, SECONDARY_TYPE, ITEM_TYPE]

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



9
10
11
# File 'lib/cmis_server.rb', line 9

def self.configuration
  @configuration ||= Configuration.new
end

Class Method Details

.configure {|configuration| ... } ⇒ Object

Yields:



17
18
19
# File 'lib/cmis_server.rb', line 17

def self.configure
  yield(configuration)
end

.resetObject



13
14
15
# File 'lib/cmis_server.rb', line 13

def self.reset
  @configuration = Configuration.new
end