cmis_server 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +51 -0
  5. data/app/assets/javascripts/cmis_server/application.js +13 -0
  6. data/app/assets/stylesheets/cmis_server/application.css +15 -0
  7. data/app/controllers/cmis_server/application_controller.rb +19 -0
  8. data/app/controllers/cmis_server/atom_pub/base_controller.rb +23 -0
  9. data/app/controllers/cmis_server/atom_pub/bulk_controller.rb +302 -0
  10. data/app/controllers/cmis_server/atom_pub/content_controller.rb +178 -0
  11. data/app/controllers/cmis_server/atom_pub/entries_controller.rb +41 -0
  12. data/app/controllers/cmis_server/atom_pub/folder_collection_controller.rb +70 -0
  13. data/app/controllers/cmis_server/atom_pub/query_controller.rb +138 -0
  14. data/app/controllers/cmis_server/atom_pub/repository_controller.rb +75 -0
  15. data/app/controllers/cmis_server/atom_pub/secondary_types_controller.rb +149 -0
  16. data/app/controllers/cmis_server/atom_pub/service_documents_controller.rb +34 -0
  17. data/app/controllers/cmis_server/atom_pub/types_controller.rb +229 -0
  18. data/app/controllers/cmis_server/atom_pub/uri_templates_controller.rb +58 -0
  19. data/app/controllers/concerns/cmis_server/atom_pub/repository_scopable.rb +18 -0
  20. data/app/helpers/cmis_server/application_helper.rb +31 -0
  21. data/app/models/cmis_server/application_record.rb +5 -0
  22. data/app/services/cmis_server/bulk_update_service.rb +69 -0
  23. data/app/services/cmis_server/content_stream_service.rb +75 -0
  24. data/app/services/cmis_server/discovery_service.rb +31 -0
  25. data/app/services/cmis_server/navigation_service.rb +43 -0
  26. data/app/services/cmis_server/object_service.rb +176 -0
  27. data/app/services/cmis_server/repository_service.rb +40 -0
  28. data/app/services/cmis_server/secondary_type_service.rb +120 -0
  29. data/app/services/cmis_server/type_management_service.rb +117 -0
  30. data/app/views/cmis_server/atom_pub/bulk_update_feed.atom.builder +47 -0
  31. data/app/views/cmis_server/atom_pub/entries/_cmis_document_links.atom_entry.builder +0 -0
  32. data/app/views/cmis_server/atom_pub/entries/_cmis_folder_links.atom_entry.builder +3 -0
  33. data/app/views/cmis_server/atom_pub/entries/_object_entry.atom_entry.builder +64 -0
  34. data/app/views/cmis_server/atom_pub/entries/_property.atom_entry.builder +8 -0
  35. data/app/views/cmis_server/atom_pub/entries/object_entry.atom_entry.builder +1 -0
  36. data/app/views/cmis_server/atom_pub/entries/type_entry.atom_entry.builder +59 -0
  37. data/app/views/cmis_server/atom_pub/feeds/_feed_entry.atom_feed.builder +1 -0
  38. data/app/views/cmis_server/atom_pub/feeds/feed.atom_feed.builder +30 -0
  39. data/app/views/cmis_server/atom_pub/service_documents/_uri_template.atom_service.builder +5 -0
  40. data/app/views/cmis_server/atom_pub/service_documents/_workspace.atom_service.builder +89 -0
  41. data/app/views/cmis_server/atom_pub/service_documents/service_document.atom_service.builder +1 -0
  42. data/app/views/cmis_server/atom_pub/shared/_collection.xml.builder +7 -0
  43. data/app/views/cmis_server/atom_pub/shared/atom_entry_layout.atom_entry.builder +0 -0
  44. data/app/views/cmis_server/atom_pub/type_entry.atom.builder +69 -0
  45. data/app/views/cmis_server/atom_pub/types_feed.atom.builder +91 -0
  46. data/app/views/layouts/cmis_server/application.atom_entry.builder +2 -0
  47. data/app/views/layouts/cmis_server/application.atom_feed.builder +3 -0
  48. data/app/views/layouts/cmis_server/application.atom_service.builder +10 -0
  49. data/app/views/layouts/cmis_server/application.html.erb +14 -0
  50. data/config/routes.rb +49 -0
  51. data/lib/cmis_server/atom_pub/entry_parser.rb +72 -0
  52. data/lib/cmis_server/base_objects/base_type.rb +128 -0
  53. data/lib/cmis_server/base_objects/document.rb +68 -0
  54. data/lib/cmis_server/base_objects/folder.rb +104 -0
  55. data/lib/cmis_server/base_objects/item.rb +25 -0
  56. data/lib/cmis_server/base_types.rb +123 -0
  57. data/lib/cmis_server/cmis_object.rb +190 -0
  58. data/lib/cmis_server/configuration.rb +43 -0
  59. data/lib/cmis_server/constants.rb +8 -0
  60. data/lib/cmis_server/content_stream.rb +52 -0
  61. data/lib/cmis_server/context.rb +11 -0
  62. data/lib/cmis_server/document_object.rb +12 -0
  63. data/lib/cmis_server/document_type.rb +67 -0
  64. data/lib/cmis_server/engine.rb +60 -0
  65. data/lib/cmis_server/exceptions.rb +185 -0
  66. data/lib/cmis_server/folder_object.rb +18 -0
  67. data/lib/cmis_server/folder_type.rb +34 -0
  68. data/lib/cmis_server/id.rb +18 -0
  69. data/lib/cmis_server/item_adapter.rb +26 -0
  70. data/lib/cmis_server/item_object.rb +15 -0
  71. data/lib/cmis_server/item_type.rb +7 -0
  72. data/lib/cmis_server/object_adapter.rb +79 -0
  73. data/lib/cmis_server/property.rb +29 -0
  74. data/lib/cmis_server/property_definition.rb +118 -0
  75. data/lib/cmis_server/query/parser.output +2250 -0
  76. data/lib/cmis_server/query/parser.racc +222 -0
  77. data/lib/cmis_server/query/parser.racc.rb +1039 -0
  78. data/lib/cmis_server/query/parser.rex +114 -0
  79. data/lib/cmis_server/query/parser.rex.rb +238 -0
  80. data/lib/cmis_server/query/statement.rb +395 -0
  81. data/lib/cmis_server/query.rb +2 -0
  82. data/lib/cmis_server/renderable_collection.rb +45 -0
  83. data/lib/cmis_server/renderable_object.rb +49 -0
  84. data/lib/cmis_server/repository.rb +91 -0
  85. data/lib/cmis_server/secondary_type.rb +11 -0
  86. data/lib/cmis_server/type.rb +62 -0
  87. data/lib/cmis_server/type_registry.rb +115 -0
  88. data/lib/cmis_server/version.rb +4 -0
  89. data/lib/cmis_server.rb +22 -0
  90. data/lib/tasks/cmis_server_tasks.rake +4 -0
  91. data/test/cmis_server_test.rb +7 -0
  92. data/test/dummy/README.rdoc +28 -0
  93. data/test/dummy/Rakefile +6 -0
  94. data/test/dummy/app/assets/javascripts/application.js +13 -0
  95. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  96. data/test/dummy/app/controllers/application_controller.rb +5 -0
  97. data/test/dummy/app/helpers/application_helper.rb +2 -0
  98. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  99. data/test/dummy/bin/bundle +3 -0
  100. data/test/dummy/bin/rails +4 -0
  101. data/test/dummy/bin/rake +4 -0
  102. data/test/dummy/bin/setup +29 -0
  103. data/test/dummy/config/application.rb +26 -0
  104. data/test/dummy/config/boot.rb +5 -0
  105. data/test/dummy/config/database.yml +25 -0
  106. data/test/dummy/config/environment.rb +5 -0
  107. data/test/dummy/config/environments/development.rb +41 -0
  108. data/test/dummy/config/environments/production.rb +79 -0
  109. data/test/dummy/config/environments/test.rb +42 -0
  110. data/test/dummy/config/initializers/assets.rb +11 -0
  111. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  112. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  113. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  114. data/test/dummy/config/initializers/inflections.rb +16 -0
  115. data/test/dummy/config/initializers/mime_types.rb +4 -0
  116. data/test/dummy/config/initializers/session_store.rb +3 -0
  117. data/test/dummy/config/initializers/to_time_preserves_timezone.rb +10 -0
  118. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  119. data/test/dummy/config/locales/en.yml +23 -0
  120. data/test/dummy/config/routes.rb +4 -0
  121. data/test/dummy/config/secrets.yml +22 -0
  122. data/test/dummy/config.ru +4 -0
  123. data/test/dummy/public/404.html +67 -0
  124. data/test/dummy/public/422.html +67 -0
  125. data/test/dummy/public/500.html +66 -0
  126. data/test/dummy/public/favicon.ico +0 -0
  127. data/test/integration/navigation_test.rb +8 -0
  128. data/test/services/bulk_update_service_test.rb +121 -0
  129. data/test/services/content_stream_service_test.rb +176 -0
  130. data/test/services/secondary_type_service_test.rb +174 -0
  131. data/test/services/type_management_service_test.rb +146 -0
  132. data/test/test_helper.rb +16 -0
  133. metadata +326 -0
@@ -0,0 +1,174 @@
1
+ require 'test_helper'
2
+
3
+ module CmisServer
4
+ class SecondaryTypeServiceTest < ActiveSupport::TestCase
5
+ setup do
6
+ # Configuration du repository avec les capacités CMIS 1.1
7
+ @repository = Repository.new(
8
+ id: "test_repo",
9
+ name: "Test Repository",
10
+ description: "Test repository for CMIS 1.1 features"
11
+ )
12
+
13
+ # Créer un contexte avec le repository
14
+ @context = { repository: @repository }
15
+
16
+ # Service de gestion des types secondaires
17
+ @service = SecondaryTypeService.new(@context)
18
+
19
+ # Créer un type secondaire pour les tests
20
+ @secondary_type = SecondaryType.new(
21
+ id: "custom:markedForArchive",
22
+ local_name: "markedForArchive",
23
+ display_name: "Marked for Archive",
24
+ query_name: "custom:markedForArchive",
25
+ description: "Documents that should be archived",
26
+ base_id: "cmis:secondary",
27
+ creatable: true,
28
+ fileable: false,
29
+ queryable: true
30
+ )
31
+
32
+ # Ajouter une propriété au type secondaire
33
+ @secondary_type.add_property_definition(
34
+ PropertyDefinition.new(
35
+ id: "custom:archiveDate",
36
+ local_name: "archiveDate",
37
+ display_name: "Archive Date",
38
+ query_name: "custom:archiveDate",
39
+ description: "Date when the document should be archived",
40
+ property_type: "datetime",
41
+ cardinality: :single,
42
+ updatability: :readwrite,
43
+ required: false,
44
+ queryable: true,
45
+ orderable: true
46
+ )
47
+ )
48
+
49
+ # Ajouter le type secondaire au repository
50
+ @repository.add_type(@secondary_type)
51
+
52
+ # Créer un document pour les tests
53
+ @document = DocumentObject.new(
54
+ type: DocumentType.base,
55
+ properties: {
56
+ cmis_object_id: "test-doc",
57
+ cmis_name: "Document de test",
58
+ cmis_description: "Document pour tester les types secondaires"
59
+ }
60
+ )
61
+
62
+ @repository.add_object(@document)
63
+ end
64
+
65
+ test "add secondary type to document" do
66
+ # Ajouter le type secondaire au document
67
+ result = @service.add_secondary_type("test-doc", "custom:markedForArchive")
68
+
69
+ # Vérifier que l'ajout a réussi
70
+ assert result, "L'ajout du type secondaire devrait réussir"
71
+
72
+ # Récupérer le document mis à jour
73
+ updated_document = @repository.object("test-doc")
74
+
75
+ # Vérifier que le type secondaire a été ajouté
76
+ assert_includes updated_document.secondary_type_ids, "custom:markedForArchive",
77
+ "Le type secondaire devrait être ajouté à la liste des types secondaires"
78
+
79
+ # Vérifier que les propriétés du type secondaire sont disponibles
80
+ assert updated_document.properties.has_key?("custom:archiveDate"),
81
+ "Les propriétés du type secondaire devraient être ajoutées au document"
82
+ end
83
+
84
+ test "set secondary type property" do
85
+ # Ajouter d'abord le type secondaire
86
+ @service.add_secondary_type("test-doc", "custom:markedForArchive")
87
+
88
+ # Récupérer le document
89
+ document = @repository.object("test-doc")
90
+
91
+ # Définir une valeur pour la propriété du type secondaire
92
+ archive_date = DateTime.new(2025, 12, 31)
93
+ document.properties["custom:archiveDate"].value = archive_date
94
+
95
+ # Enregistrer le document
96
+ @repository.update_object(document)
97
+
98
+ # Récupérer le document mis à jour
99
+ updated_document = @repository.object("test-doc")
100
+
101
+ # Vérifier que la valeur de la propriété a été enregistrée
102
+ assert_equal archive_date, updated_document.properties["custom:archiveDate"].value,
103
+ "La valeur de la propriété du type secondaire devrait être enregistrée"
104
+ end
105
+
106
+ test "remove secondary type from document" do
107
+ # Ajouter d'abord le type secondaire
108
+ @service.add_secondary_type("test-doc", "custom:markedForArchive")
109
+
110
+ # Définir une valeur pour la propriété du type secondaire
111
+ document = @repository.object("test-doc")
112
+ document.properties["custom:archiveDate"].value = DateTime.new(2025, 12, 31)
113
+ @repository.update_object(document)
114
+
115
+ # Supprimer le type secondaire
116
+ result = @service.remove_secondary_type("test-doc", "custom:markedForArchive")
117
+
118
+ # Vérifier que la suppression a réussi
119
+ assert result, "La suppression du type secondaire devrait réussir"
120
+
121
+ # Récupérer le document mis à jour
122
+ updated_document = @repository.object("test-doc")
123
+
124
+ # Vérifier que le type secondaire a été supprimé
125
+ assert_not_includes updated_document.secondary_type_ids, "custom:markedForArchive",
126
+ "Le type secondaire devrait être supprimé de la liste"
127
+
128
+ # Vérifier que les propriétés du type secondaire ne sont plus disponibles
129
+ assert_not updated_document.properties.has_key?("custom:archiveDate"),
130
+ "Les propriétés du type secondaire devraient être supprimées du document"
131
+ end
132
+
133
+ test "add multiple secondary types" do
134
+ # Créer un deuxième type secondaire
135
+ second_type = SecondaryType.new(
136
+ id: "custom:confidential",
137
+ display_name: "Confidential",
138
+ base_id: "cmis:secondary"
139
+ )
140
+
141
+ # Ajouter une propriété
142
+ second_type.add_property_definition(
143
+ PropertyDefinition.new(
144
+ id: "custom:confidentialityLevel",
145
+ display_name: "Confidentiality Level",
146
+ property_type: "integer",
147
+ cardinality: :single
148
+ )
149
+ )
150
+
151
+ # Ajouter le type au repository
152
+ @repository.add_type(second_type)
153
+
154
+ # Ajouter les deux types secondaires au document
155
+ @service.add_secondary_type("test-doc", "custom:markedForArchive")
156
+ @service.add_secondary_type("test-doc", "custom:confidential")
157
+
158
+ # Récupérer le document mis à jour
159
+ updated_document = @repository.object("test-doc")
160
+
161
+ # Vérifier que les deux types secondaires ont été ajoutés
162
+ assert_includes updated_document.secondary_type_ids, "custom:markedForArchive",
163
+ "Le premier type secondaire devrait être ajouté"
164
+ assert_includes updated_document.secondary_type_ids, "custom:confidential",
165
+ "Le deuxième type secondaire devrait être ajouté"
166
+
167
+ # Vérifier que les propriétés des deux types sont disponibles
168
+ assert updated_document.properties.has_key?("custom:archiveDate"),
169
+ "Les propriétés du premier type secondaire devraient être disponibles"
170
+ assert updated_document.properties.has_key?("custom:confidentialityLevel"),
171
+ "Les propriétés du deuxième type secondaire devraient être disponibles"
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,146 @@
1
+ require 'test_helper'
2
+
3
+ module CmisServer
4
+ class TypeManagementServiceTest < ActiveSupport::TestCase
5
+ setup do
6
+ # Configuration du repository avec les capacités CMIS 1.1
7
+ @repository = Repository.new(
8
+ id: "test_repo",
9
+ name: "Test Repository",
10
+ description: "Test repository for CMIS 1.1 features",
11
+ capabilities: {
12
+ create_type: true,
13
+ update_type: true,
14
+ delete_type: true
15
+ }
16
+ )
17
+
18
+ # Créer un contexte avec le repository
19
+ @context = { repository: @repository }
20
+
21
+ # Service de gestion des types
22
+ @service = TypeManagementService.new(@context)
23
+ end
24
+
25
+ test "create new document type" do
26
+ # Créer un nouveau type document
27
+ new_type = DocumentType.new(
28
+ id: "custom:testDocument",
29
+ parent_id: "cmis:document",
30
+ local_name: "testDocument",
31
+ display_name: "Test Document Type",
32
+ query_name: "custom:testDocument",
33
+ description: "A test document type for CMIS 1.1",
34
+ base_id: "cmis:document",
35
+ creatable: true,
36
+ fileable: true,
37
+ queryable: true,
38
+ controllable_policy: false,
39
+ controllable_acl: false,
40
+ fulltext_indexed: true,
41
+ included_in_supertype_query: true
42
+ )
43
+
44
+ # Ajouter une propriété au type
45
+ new_type.add_property_definition(
46
+ PropertyDefinition.new(
47
+ id: "custom:priority",
48
+ local_name: "priority",
49
+ display_name: "Priority",
50
+ query_name: "custom:priority",
51
+ description: "Document priority",
52
+ property_type: "integer",
53
+ cardinality: :single,
54
+ updatability: :readwrite,
55
+ required: false,
56
+ queryable: true,
57
+ orderable: true
58
+ )
59
+ )
60
+
61
+ # Créer le type dans le repository
62
+ result = @service.create_type(new_type)
63
+
64
+ assert_not_nil result, "Le type devrait être créé"
65
+ assert_equal "custom:testDocument", result.id, "L'ID du type devrait correspondre"
66
+ assert_includes @repository.types.keys, "custom:testDocument", "Le type devrait être ajouté au repository"
67
+ end
68
+
69
+ test "update existing type" do
70
+ # Créer d'abord un type
71
+ original_type = DocumentType.new(
72
+ id: "custom:updateTest",
73
+ parent_id: "cmis:document",
74
+ display_name: "Original Type",
75
+ description: "Original description"
76
+ )
77
+ @repository.add_type(original_type)
78
+
79
+ # Modifier le type
80
+ updated_type = original_type.clone
81
+ updated_type.display_name = "Updated Type"
82
+ updated_type.description = "Updated description"
83
+
84
+ # Ajouter une nouvelle propriété
85
+ updated_type.add_property_definition(
86
+ PropertyDefinition.new(
87
+ id: "custom:newProperty",
88
+ display_name: "New Property",
89
+ property_type: "string",
90
+ cardinality: :single
91
+ )
92
+ )
93
+
94
+ # Mettre à jour le type dans le repository
95
+ result = @service.update_type(updated_type)
96
+
97
+ assert_not_nil result, "Le type mis à jour devrait être retourné"
98
+ assert_equal "Updated Type", result.display_name, "Le nom d'affichage devrait être mis à jour"
99
+ assert_equal "Updated description", result.description, "La description devrait être mise à jour"
100
+
101
+ # Vérifier que la propriété a été ajoutée
102
+ assert result.property_definitions.has_key?("custom:newProperty"), "La nouvelle propriété devrait être ajoutée"
103
+ end
104
+
105
+ test "delete unused type" do
106
+ # Créer un type pour le test
107
+ test_type = DocumentType.new(
108
+ id: "custom:typeToDelete",
109
+ parent_id: "cmis:document",
110
+ display_name: "Type to Delete"
111
+ )
112
+ @repository.add_type(test_type)
113
+
114
+ # Vérifier que le type existe
115
+ assert_includes @repository.types.keys, "custom:typeToDelete", "Le type devrait exister avant la suppression"
116
+
117
+ # Supprimer le type
118
+ result = @service.delete_type("custom:typeToDelete")
119
+
120
+ assert result, "La suppression devrait réussir"
121
+ assert_not_includes @repository.types.keys, "custom:typeToDelete", "Le type devrait être supprimé du repository"
122
+ end
123
+
124
+ test "cannot delete type with instances" do
125
+ # Créer un type pour le test
126
+ test_type = DocumentType.new(
127
+ id: "custom:typeWithInstances",
128
+ parent_id: "cmis:document",
129
+ display_name: "Type with Instances"
130
+ )
131
+ @repository.add_type(test_type)
132
+
133
+ # Simuler un document utilisant ce type
134
+ document = DocumentObject.new(type: test_type)
135
+ @repository.add_object(document)
136
+
137
+ # Tenter de supprimer le type
138
+ assert_raises(CmisServer::TypeManagementService::DeleteTypeError) do
139
+ @service.delete_type("custom:typeWithInstances")
140
+ end
141
+
142
+ # Vérifier que le type existe toujours
143
+ assert_includes @repository.types.keys, "custom:typeWithInstances", "Le type ne devrait pas être supprimé"
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,16 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+
7
+ # Load support files
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
9
+
10
+ # Load fixtures from the engine
11
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
12
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
13
+ ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
14
+ ActiveSupport::TestCase.fixtures :all
15
+ end
16
+
metadata ADDED
@@ -0,0 +1,326 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cmis_server
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Olivier Dirrenberger
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 7.1.3
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 7.1.3
26
+ - !ruby/object:Gem::Dependency
27
+ name: racc
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 1.8.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.8.0
40
+ - !ruby/object:Gem::Dependency
41
+ name: mime-types
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.5'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.5'
54
+ - !ruby/object:Gem::Dependency
55
+ name: sqlite3
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 1.6.0
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 1.6.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: rake
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '13.2'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '13.2'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rspec
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.13'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.13'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rexical
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 1.0.7
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.7
110
+ - !ruby/object:Gem::Dependency
111
+ name: pry-byebug
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ description: CMIS 1.1 server implementation to expose CMIS repositeries through rails
125
+ app
126
+ email:
127
+ - olivier.dirrenberger@sinoia.fr
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - MIT-LICENSE
133
+ - README.rdoc
134
+ - Rakefile
135
+ - app/assets/javascripts/cmis_server/application.js
136
+ - app/assets/stylesheets/cmis_server/application.css
137
+ - app/controllers/cmis_server/application_controller.rb
138
+ - app/controllers/cmis_server/atom_pub/base_controller.rb
139
+ - app/controllers/cmis_server/atom_pub/bulk_controller.rb
140
+ - app/controllers/cmis_server/atom_pub/content_controller.rb
141
+ - app/controllers/cmis_server/atom_pub/entries_controller.rb
142
+ - app/controllers/cmis_server/atom_pub/folder_collection_controller.rb
143
+ - app/controllers/cmis_server/atom_pub/query_controller.rb
144
+ - app/controllers/cmis_server/atom_pub/repository_controller.rb
145
+ - app/controllers/cmis_server/atom_pub/secondary_types_controller.rb
146
+ - app/controllers/cmis_server/atom_pub/service_documents_controller.rb
147
+ - app/controllers/cmis_server/atom_pub/types_controller.rb
148
+ - app/controllers/cmis_server/atom_pub/uri_templates_controller.rb
149
+ - app/controllers/concerns/cmis_server/atom_pub/repository_scopable.rb
150
+ - app/helpers/cmis_server/application_helper.rb
151
+ - app/models/cmis_server/application_record.rb
152
+ - app/services/cmis_server/bulk_update_service.rb
153
+ - app/services/cmis_server/content_stream_service.rb
154
+ - app/services/cmis_server/discovery_service.rb
155
+ - app/services/cmis_server/navigation_service.rb
156
+ - app/services/cmis_server/object_service.rb
157
+ - app/services/cmis_server/repository_service.rb
158
+ - app/services/cmis_server/secondary_type_service.rb
159
+ - app/services/cmis_server/type_management_service.rb
160
+ - app/views/cmis_server/atom_pub/bulk_update_feed.atom.builder
161
+ - app/views/cmis_server/atom_pub/entries/_cmis_document_links.atom_entry.builder
162
+ - app/views/cmis_server/atom_pub/entries/_cmis_folder_links.atom_entry.builder
163
+ - app/views/cmis_server/atom_pub/entries/_object_entry.atom_entry.builder
164
+ - app/views/cmis_server/atom_pub/entries/_property.atom_entry.builder
165
+ - app/views/cmis_server/atom_pub/entries/object_entry.atom_entry.builder
166
+ - app/views/cmis_server/atom_pub/entries/type_entry.atom_entry.builder
167
+ - app/views/cmis_server/atom_pub/feeds/_feed_entry.atom_feed.builder
168
+ - app/views/cmis_server/atom_pub/feeds/feed.atom_feed.builder
169
+ - app/views/cmis_server/atom_pub/service_documents/_uri_template.atom_service.builder
170
+ - app/views/cmis_server/atom_pub/service_documents/_workspace.atom_service.builder
171
+ - app/views/cmis_server/atom_pub/service_documents/service_document.atom_service.builder
172
+ - app/views/cmis_server/atom_pub/shared/_collection.xml.builder
173
+ - app/views/cmis_server/atom_pub/shared/atom_entry_layout.atom_entry.builder
174
+ - app/views/cmis_server/atom_pub/type_entry.atom.builder
175
+ - app/views/cmis_server/atom_pub/types_feed.atom.builder
176
+ - app/views/layouts/cmis_server/application.atom_entry.builder
177
+ - app/views/layouts/cmis_server/application.atom_feed.builder
178
+ - app/views/layouts/cmis_server/application.atom_service.builder
179
+ - app/views/layouts/cmis_server/application.html.erb
180
+ - config/routes.rb
181
+ - lib/cmis_server.rb
182
+ - lib/cmis_server/atom_pub/entry_parser.rb
183
+ - lib/cmis_server/base_objects/base_type.rb
184
+ - lib/cmis_server/base_objects/document.rb
185
+ - lib/cmis_server/base_objects/folder.rb
186
+ - lib/cmis_server/base_objects/item.rb
187
+ - lib/cmis_server/base_types.rb
188
+ - lib/cmis_server/cmis_object.rb
189
+ - lib/cmis_server/configuration.rb
190
+ - lib/cmis_server/constants.rb
191
+ - lib/cmis_server/content_stream.rb
192
+ - lib/cmis_server/context.rb
193
+ - lib/cmis_server/document_object.rb
194
+ - lib/cmis_server/document_type.rb
195
+ - lib/cmis_server/engine.rb
196
+ - lib/cmis_server/exceptions.rb
197
+ - lib/cmis_server/folder_object.rb
198
+ - lib/cmis_server/folder_type.rb
199
+ - lib/cmis_server/id.rb
200
+ - lib/cmis_server/item_adapter.rb
201
+ - lib/cmis_server/item_object.rb
202
+ - lib/cmis_server/item_type.rb
203
+ - lib/cmis_server/object_adapter.rb
204
+ - lib/cmis_server/property.rb
205
+ - lib/cmis_server/property_definition.rb
206
+ - lib/cmis_server/query.rb
207
+ - lib/cmis_server/query/parser.output
208
+ - lib/cmis_server/query/parser.racc
209
+ - lib/cmis_server/query/parser.racc.rb
210
+ - lib/cmis_server/query/parser.rex
211
+ - lib/cmis_server/query/parser.rex.rb
212
+ - lib/cmis_server/query/statement.rb
213
+ - lib/cmis_server/renderable_collection.rb
214
+ - lib/cmis_server/renderable_object.rb
215
+ - lib/cmis_server/repository.rb
216
+ - lib/cmis_server/secondary_type.rb
217
+ - lib/cmis_server/type.rb
218
+ - lib/cmis_server/type_registry.rb
219
+ - lib/cmis_server/version.rb
220
+ - lib/tasks/cmis_server_tasks.rake
221
+ - test/cmis_server_test.rb
222
+ - test/dummy/README.rdoc
223
+ - test/dummy/Rakefile
224
+ - test/dummy/app/assets/javascripts/application.js
225
+ - test/dummy/app/assets/stylesheets/application.css
226
+ - test/dummy/app/controllers/application_controller.rb
227
+ - test/dummy/app/helpers/application_helper.rb
228
+ - test/dummy/app/views/layouts/application.html.erb
229
+ - test/dummy/bin/bundle
230
+ - test/dummy/bin/rails
231
+ - test/dummy/bin/rake
232
+ - test/dummy/bin/setup
233
+ - test/dummy/config.ru
234
+ - test/dummy/config/application.rb
235
+ - test/dummy/config/boot.rb
236
+ - test/dummy/config/database.yml
237
+ - test/dummy/config/environment.rb
238
+ - test/dummy/config/environments/development.rb
239
+ - test/dummy/config/environments/production.rb
240
+ - test/dummy/config/environments/test.rb
241
+ - test/dummy/config/initializers/assets.rb
242
+ - test/dummy/config/initializers/backtrace_silencers.rb
243
+ - test/dummy/config/initializers/cookies_serializer.rb
244
+ - test/dummy/config/initializers/filter_parameter_logging.rb
245
+ - test/dummy/config/initializers/inflections.rb
246
+ - test/dummy/config/initializers/mime_types.rb
247
+ - test/dummy/config/initializers/session_store.rb
248
+ - test/dummy/config/initializers/to_time_preserves_timezone.rb
249
+ - test/dummy/config/initializers/wrap_parameters.rb
250
+ - test/dummy/config/locales/en.yml
251
+ - test/dummy/config/routes.rb
252
+ - test/dummy/config/secrets.yml
253
+ - test/dummy/public/404.html
254
+ - test/dummy/public/422.html
255
+ - test/dummy/public/500.html
256
+ - test/dummy/public/favicon.ico
257
+ - test/integration/navigation_test.rb
258
+ - test/services/bulk_update_service_test.rb
259
+ - test/services/content_stream_service_test.rb
260
+ - test/services/secondary_type_service_test.rb
261
+ - test/services/type_management_service_test.rb
262
+ - test/test_helper.rb
263
+ homepage: https://code.plugandwork.net/plugandwork/cmis_server
264
+ licenses:
265
+ - MIT
266
+ metadata: {}
267
+ rdoc_options: []
268
+ require_paths:
269
+ - lib
270
+ required_ruby_version: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - ">="
273
+ - !ruby/object:Gem::Version
274
+ version: 3.2.0
275
+ required_rubygems_version: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
280
+ requirements: []
281
+ rubygems_version: 3.6.7
282
+ specification_version: 4
283
+ summary: Ruby CMIS Server engine for rails apps
284
+ test_files:
285
+ - test/cmis_server_test.rb
286
+ - test/dummy/README.rdoc
287
+ - test/dummy/Rakefile
288
+ - test/dummy/app/assets/javascripts/application.js
289
+ - test/dummy/app/assets/stylesheets/application.css
290
+ - test/dummy/app/controllers/application_controller.rb
291
+ - test/dummy/app/helpers/application_helper.rb
292
+ - test/dummy/app/views/layouts/application.html.erb
293
+ - test/dummy/bin/bundle
294
+ - test/dummy/bin/rails
295
+ - test/dummy/bin/rake
296
+ - test/dummy/bin/setup
297
+ - test/dummy/config.ru
298
+ - test/dummy/config/application.rb
299
+ - test/dummy/config/boot.rb
300
+ - test/dummy/config/database.yml
301
+ - test/dummy/config/environment.rb
302
+ - test/dummy/config/environments/development.rb
303
+ - test/dummy/config/environments/production.rb
304
+ - test/dummy/config/environments/test.rb
305
+ - test/dummy/config/initializers/assets.rb
306
+ - test/dummy/config/initializers/backtrace_silencers.rb
307
+ - test/dummy/config/initializers/cookies_serializer.rb
308
+ - test/dummy/config/initializers/filter_parameter_logging.rb
309
+ - test/dummy/config/initializers/inflections.rb
310
+ - test/dummy/config/initializers/mime_types.rb
311
+ - test/dummy/config/initializers/session_store.rb
312
+ - test/dummy/config/initializers/to_time_preserves_timezone.rb
313
+ - test/dummy/config/initializers/wrap_parameters.rb
314
+ - test/dummy/config/locales/en.yml
315
+ - test/dummy/config/routes.rb
316
+ - test/dummy/config/secrets.yml
317
+ - test/dummy/public/404.html
318
+ - test/dummy/public/422.html
319
+ - test/dummy/public/500.html
320
+ - test/dummy/public/favicon.ico
321
+ - test/integration/navigation_test.rb
322
+ - test/services/bulk_update_service_test.rb
323
+ - test/services/content_stream_service_test.rb
324
+ - test/services/secondary_type_service_test.rb
325
+ - test/services/type_management_service_test.rb
326
+ - test/test_helper.rb