active-fedora 8.7.0 → 9.0.0.beta1

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 (242) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +8 -15
  3. data/Gemfile +5 -5
  4. data/History.txt +0 -80
  5. data/README.md +1 -0
  6. data/Rakefile +0 -3
  7. data/active-fedora.gemspec +8 -7
  8. data/config/fedora.yml +5 -4
  9. data/config/predicate_mappings.yml +5 -5
  10. data/gemfiles/rails4.1.gemfile +10 -0
  11. data/gemfiles/rails4.2.beta.gemfile +10 -0
  12. data/lib/active_fedora.rb +151 -117
  13. data/lib/active_fedora/associations.rb +47 -15
  14. data/lib/active_fedora/associations/association.rb +29 -8
  15. data/lib/active_fedora/associations/association_scope.rb +5 -5
  16. data/lib/active_fedora/associations/belongs_to_association.rb +20 -63
  17. data/lib/active_fedora/associations/builder/association.rb +61 -25
  18. data/lib/active_fedora/associations/builder/belongs_to.rb +7 -94
  19. data/lib/active_fedora/associations/builder/collection_association.rb +11 -43
  20. data/lib/active_fedora/associations/builder/contains.rb +28 -0
  21. data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +13 -3
  22. data/lib/active_fedora/associations/builder/has_many.rb +16 -10
  23. data/lib/active_fedora/associations/builder/property.rb +14 -0
  24. data/lib/active_fedora/associations/builder/singular_association.rb +14 -18
  25. data/lib/active_fedora/associations/builder/singular_property.rb +12 -0
  26. data/lib/active_fedora/associations/collection_association.rb +57 -80
  27. data/lib/active_fedora/associations/contains_association.rb +50 -0
  28. data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +44 -24
  29. data/lib/active_fedora/associations/has_many_association.rb +46 -14
  30. data/lib/active_fedora/associations/rdf.rb +86 -0
  31. data/lib/active_fedora/associations/singular_association.rb +4 -8
  32. data/lib/active_fedora/associations/singular_rdf.rb +15 -0
  33. data/lib/active_fedora/attached_files.rb +195 -0
  34. data/lib/active_fedora/attribute_methods.rb +122 -0
  35. data/lib/active_fedora/attribute_methods/dirty.rb +16 -0
  36. data/lib/active_fedora/attribute_methods/read.rb +61 -0
  37. data/lib/active_fedora/attribute_methods/write.rb +47 -0
  38. data/lib/active_fedora/attributes.rb +93 -44
  39. data/lib/active_fedora/attributes/primary_key.rb +12 -0
  40. data/lib/active_fedora/autosave_association.rb +2 -2
  41. data/lib/active_fedora/base.rb +16 -15
  42. data/lib/active_fedora/callbacks.rb +7 -7
  43. data/lib/active_fedora/change_set.rb +34 -0
  44. data/lib/active_fedora/cleaner.rb +62 -0
  45. data/lib/active_fedora/config.rb +4 -22
  46. data/lib/active_fedora/core.rb +173 -99
  47. data/lib/active_fedora/datastream.rb +4 -117
  48. data/lib/active_fedora/datastreams.rb +2 -263
  49. data/lib/active_fedora/datastreams/nokogiri_datastreams.rb +28 -51
  50. data/lib/active_fedora/{datastream_attribute.rb → delegated_attribute.rb} +57 -26
  51. data/lib/active_fedora/errors.rb +61 -0
  52. data/lib/active_fedora/fedora.rb +19 -0
  53. data/lib/active_fedora/fedora_attributes.rb +58 -26
  54. data/lib/active_fedora/file.rb +318 -0
  55. data/lib/active_fedora/file_configurator.rb +32 -32
  56. data/lib/active_fedora/file_path_builder.rb +24 -0
  57. data/lib/active_fedora/files_hash.rb +82 -0
  58. data/lib/active_fedora/fixity_service.rb +40 -0
  59. data/lib/active_fedora/indexing.rb +55 -82
  60. data/lib/active_fedora/indexing_service.rb +70 -0
  61. data/lib/active_fedora/ldp_resource.rb +26 -0
  62. data/lib/active_fedora/loadable_from_json.rb +112 -0
  63. data/lib/active_fedora/model.rb +5 -19
  64. data/lib/active_fedora/nested_attributes.rb +5 -6
  65. data/lib/active_fedora/nom_datastream.rb +15 -25
  66. data/lib/active_fedora/om_datastream.rb +26 -197
  67. data/lib/active_fedora/persistence.rb +95 -71
  68. data/lib/active_fedora/predicates.rb +4 -4
  69. data/lib/active_fedora/qualified_dublin_core_datastream.rb +17 -18
  70. data/lib/active_fedora/querying.rb +3 -4
  71. data/lib/active_fedora/railtie.rb +3 -6
  72. data/lib/active_fedora/rdf.rb +3 -1
  73. data/lib/active_fedora/rdf/datastream_indexing.rb +11 -0
  74. data/lib/active_fedora/rdf/fcrepo.rb +10 -324
  75. data/lib/active_fedora/rdf/indexing.rb +20 -16
  76. data/lib/active_fedora/rdf/ldp.rb +6 -0
  77. data/lib/active_fedora/rdf/ntriples_rdf_datastream.rb +1 -1
  78. data/lib/active_fedora/rdf/persistence.rb +5 -6
  79. data/lib/active_fedora/rdf/rdf_datastream.rb +44 -37
  80. data/lib/active_fedora/rdf/rdfxml_datastream.rb +13 -0
  81. data/lib/active_fedora/rdf/rels_ext.rb +26 -0
  82. data/lib/active_fedora/reflection.rb +256 -199
  83. data/lib/active_fedora/relation.rb +18 -6
  84. data/lib/active_fedora/relation/finder_methods.rb +69 -38
  85. data/lib/active_fedora/relation/query_methods.rb +7 -3
  86. data/lib/active_fedora/rspec_matchers/belong_to_associated_active_fedora_object_matcher.rb +7 -7
  87. data/lib/active_fedora/rspec_matchers/have_many_associated_active_fedora_objects_matcher.rb +8 -8
  88. data/lib/active_fedora/rspec_matchers/have_predicate_matcher.rb +9 -11
  89. data/lib/active_fedora/simple_datastream.rb +18 -13
  90. data/lib/active_fedora/solr_instance_loader.rb +18 -38
  91. data/lib/active_fedora/solr_service.rb +37 -20
  92. data/lib/active_fedora/sparql_insert.rb +45 -0
  93. data/lib/active_fedora/test_support.rb +1 -22
  94. data/lib/active_fedora/version.rb +1 -1
  95. data/lib/active_fedora/versionable.rb +90 -0
  96. data/lib/active_fedora/with_metadata.rb +37 -0
  97. data/lib/active_fedora/with_metadata/metadata_node.rb +70 -0
  98. data/lib/generators/active_fedora/config/config_generator.rb +0 -1
  99. data/lib/generators/active_fedora/config/solr/solr_generator.rb +1 -1
  100. data/lib/generators/active_fedora/model/model_generator.rb +5 -5
  101. data/lib/generators/active_fedora/model/templates/datastream_spec.rb.erb +1 -1
  102. data/lib/generators/active_fedora/model/templates/model_spec.rb.erb +2 -2
  103. data/lib/tasks/active_fedora_dev.rake +21 -27
  104. data/spec/config_helper.rb +1 -1
  105. data/spec/fixtures/mixed_rdf_descMetadata.nt +6 -6
  106. data/spec/fixtures/rails_root/config/predicate_mappings.yml +3 -19
  107. data/spec/fixtures/solr_rdf_descMetadata.nt +6 -6
  108. data/spec/integration/associations_spec.rb +133 -153
  109. data/spec/integration/attached_files_spec.rb +164 -0
  110. data/spec/integration/attributes_spec.rb +73 -12
  111. data/spec/integration/autosave_association_spec.rb +3 -3
  112. data/spec/integration/base_spec.rb +57 -351
  113. data/spec/integration/belongs_to_association_spec.rb +86 -76
  114. data/spec/integration/bug_spec.rb +3 -3
  115. data/spec/integration/collection_association_spec.rb +4 -4
  116. data/spec/integration/complex_rdf_datastream_spec.rb +54 -56
  117. data/spec/integration/delete_all_spec.rb +18 -15
  118. data/spec/integration/eradicate_spec.rb +54 -0
  119. data/spec/integration/fedora_solr_sync_spec.rb +7 -5
  120. data/spec/integration/field_to_solr_name_spec.rb +5 -5
  121. data/spec/integration/file_fixity_spec.rb +40 -0
  122. data/spec/integration/file_spec.rb +122 -0
  123. data/spec/integration/full_featured_model_spec.rb +53 -63
  124. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +141 -114
  125. data/spec/integration/has_many_associations_spec.rb +142 -64
  126. data/spec/integration/json_serialization_spec.rb +50 -8
  127. data/spec/integration/model_spec.rb +12 -29
  128. data/spec/integration/nested_attribute_spec.rb +28 -20
  129. data/spec/integration/ntriples_datastream_spec.rb +60 -57
  130. data/spec/integration/om_datastream_spec.rb +51 -140
  131. data/spec/integration/rdf_nested_attributes_spec.rb +16 -14
  132. data/spec/integration/relation_delegation_spec.rb +7 -9
  133. data/spec/integration/relation_spec.rb +9 -7
  134. data/spec/integration/scoped_query_spec.rb +26 -26
  135. data/spec/integration/solr_instance_loader_spec.rb +69 -53
  136. data/spec/integration/solr_service_spec.rb +12 -73
  137. data/spec/integration/versionable_spec.rb +477 -0
  138. data/spec/integration/with_metadata_spec.rb +52 -0
  139. data/spec/samples/hydra-mods_article_datastream.rb +10 -6
  140. data/spec/samples/models/mods_article.rb +6 -2
  141. data/spec/samples/oral_history_sample.xml +1 -1
  142. data/spec/samples/oral_history_xml.xml +1 -1
  143. data/spec/samples/special_thing.rb +3 -3
  144. data/spec/spec_helper.rb +22 -12
  145. data/spec/support/an_active_model.rb +3 -7
  146. data/spec/unit/active_fedora_spec.rb +20 -17
  147. data/spec/unit/attached_files_spec.rb +203 -0
  148. data/spec/unit/attributes_spec.rb +286 -207
  149. data/spec/unit/base_active_model_spec.rb +8 -8
  150. data/spec/unit/base_datastream_management_spec.rb +11 -24
  151. data/spec/unit/base_extra_spec.rb +17 -67
  152. data/spec/unit/base_spec.rb +163 -428
  153. data/spec/unit/builder/has_and_belongs_to_many_spec.rb +2 -2
  154. data/spec/unit/callback_spec.rb +38 -23
  155. data/spec/unit/change_set_spec.rb +46 -0
  156. data/spec/unit/code_configurator_spec.rb +5 -5
  157. data/spec/unit/config_spec.rb +9 -14
  158. data/spec/unit/core_spec.rb +59 -8
  159. data/spec/unit/file_configurator_spec.rb +55 -53
  160. data/spec/unit/file_path_builder_spec.rb +18 -0
  161. data/spec/unit/file_spec.rb +221 -0
  162. data/spec/unit/files_hash_spec.rb +53 -0
  163. data/spec/unit/fixity_service_spec.rb +34 -0
  164. data/spec/unit/has_and_belongs_to_many_association_spec.rb +134 -0
  165. data/spec/unit/has_many_association_spec.rb +51 -0
  166. data/spec/unit/indexing_service_spec.rb +23 -0
  167. data/spec/unit/indexing_spec.rb +26 -0
  168. data/spec/unit/inheritance_spec.rb +9 -10
  169. data/spec/unit/model_spec.rb +15 -33
  170. data/spec/unit/nom_datastream_spec.rb +13 -10
  171. data/spec/unit/ntriples_datastream_spec.rb +81 -96
  172. data/spec/unit/om_datastream_spec.rb +137 -227
  173. data/spec/unit/persistence_spec.rb +28 -34
  174. data/spec/unit/predicates_spec.rb +29 -29
  175. data/spec/unit/property_spec.rb +1 -3
  176. data/spec/unit/qualified_dublin_core_datastream_spec.rb +27 -32
  177. data/spec/unit/query_spec.rb +116 -149
  178. data/spec/unit/rdf_datastream_spec.rb +25 -43
  179. data/spec/unit/rdf_resource_datastream_spec.rb +24 -123
  180. data/spec/unit/{rdfxml_rdf_datastream_spec.rb → rdfxml_datastream_spec.rb} +21 -25
  181. data/spec/unit/readonly_spec.rb +23 -0
  182. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +6 -6
  183. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +6 -6
  184. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +6 -6
  185. data/spec/unit/serializers_spec.rb +1 -1
  186. data/spec/unit/simple_datastream_spec.rb +12 -23
  187. data/spec/unit/solr_config_options_spec.rb +14 -17
  188. data/spec/unit/solr_service_spec.rb +38 -77
  189. data/spec/unit/sparql_insert_spec.rb +32 -0
  190. data/spec/unit/validations_spec.rb +8 -11
  191. metadata +96 -121
  192. data/lib/active_fedora/auditable.rb +0 -9
  193. data/lib/active_fedora/content_model.rb +0 -70
  194. data/lib/active_fedora/datastream_collections.rb +0 -302
  195. data/lib/active_fedora/datastream_hash.rb +0 -35
  196. data/lib/active_fedora/digital_object.rb +0 -55
  197. data/lib/active_fedora/fixture_exporter.rb +0 -33
  198. data/lib/active_fedora/fixture_loader.rb +0 -48
  199. data/lib/active_fedora/rdf/identifiable.rb +0 -66
  200. data/lib/active_fedora/rdf/project_hydra.rb +0 -12
  201. data/lib/active_fedora/rdf/rdfxml_rdf_datastream.rb +0 -13
  202. data/lib/active_fedora/rdf_xml_writer.rb +0 -49
  203. data/lib/active_fedora/relationship_graph.rb +0 -101
  204. data/lib/active_fedora/reload_on_save.rb +0 -16
  205. data/lib/active_fedora/rels_ext_datastream.rb +0 -100
  206. data/lib/active_fedora/rspec_matchers/match_fedora_datastream_matcher.rb +0 -41
  207. data/lib/active_fedora/rubydora_connection.rb +0 -35
  208. data/lib/active_fedora/semantic_node.rb +0 -164
  209. data/lib/active_fedora/service_definitions.rb +0 -88
  210. data/lib/active_fedora/sharding.rb +0 -58
  211. data/lib/active_fedora/solr_digital_object.rb +0 -68
  212. data/lib/active_fedora/unsaved_digital_object.rb +0 -58
  213. data/lib/generators/active_fedora/config/fedora/fedora_generator.rb +0 -12
  214. data/lib/generators/active_fedora/config/fedora/templates/fedora.yml +0 -38
  215. data/lib/generators/active_fedora/config/fedora/templates/fedora_conf/conf/development/fedora.fcfg +0 -953
  216. data/lib/generators/active_fedora/config/fedora/templates/fedora_conf/conf/test/fedora.fcfg +0 -953
  217. data/lib/tasks/active_fedora.rake +0 -83
  218. data/spec/fixtures/sharded_fedora.yml +0 -11
  219. data/spec/integration/auditable_spec.rb +0 -29
  220. data/spec/integration/datastream_collections_spec.rb +0 -127
  221. data/spec/integration/datastream_spec.rb +0 -90
  222. data/spec/integration/datastreams_spec.rb +0 -173
  223. data/spec/integration/load_from_solr_spec.rb +0 -66
  224. data/spec/integration/rels_ext_datastream_spec.rb +0 -82
  225. data/spec/support/mock_fedora.rb +0 -44
  226. data/spec/unit/content_model_spec.rb +0 -86
  227. data/spec/unit/datastream_collections_spec.rb +0 -420
  228. data/spec/unit/datastream_spec.rb +0 -83
  229. data/spec/unit/datastreams_spec.rb +0 -243
  230. data/spec/unit/has_and_belongs_to_many_collection_spec.rb +0 -96
  231. data/spec/unit/has_many_collection_spec.rb +0 -35
  232. data/spec/unit/rdf_vocab_spec.rb +0 -30
  233. data/spec/unit/rdf_xml_writer_spec.rb +0 -63
  234. data/spec/unit/relationship_graph_spec.rb +0 -115
  235. data/spec/unit/reload_on_save_spec.rb +0 -24
  236. data/spec/unit/rels_ext_datastream_spec.rb +0 -170
  237. data/spec/unit/rspec_matchers/match_fedora_datastream_matcher_spec.rb +0 -44
  238. data/spec/unit/rubydora_connection_spec.rb +0 -12
  239. data/spec/unit/semantic_node_spec.rb +0 -112
  240. data/spec/unit/service_definitions_spec.rb +0 -63
  241. data/spec/unit/solr_digital_object_spec.rb +0 -97
  242. data/spec/unit/unsaved_digital_object_spec.rb +0 -48
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: e224662430e191129b3b26e5f18164a477895bd5614adeb0e5527b9e42ae7808
4
- data.tar.gz: 98a03c1090684b44d694915d2bcd64738eb79027fdf2636b4eb12ccb3588d55a
2
+ SHA1:
3
+ metadata.gz: 23fac3b5c068cdb6deef749ef858f484dc5e5e6d
4
+ data.tar.gz: d8b17b361ea94983e72bcbaad7625600389cf05f
5
5
  SHA512:
6
- metadata.gz: f522ce58af5f522b67c765e387c816ba3f2de6d0e62e88aea1f375d3e243d4e0b43e41bd9e9753e29db770d95357adfcc3cf5df943249fce036b12cba4f12422
7
- data.tar.gz: fe1228ca8d1921bc7e97a1e1bde1d9a3bb274c9a4c5fcfd2ca8b2c8dc786512da8ff8b0ef21875e0011075f291f6aee37df07ce1c12101c41d09ae5bed0e2608
6
+ metadata.gz: f17f40b3dee2c5d3944fe722bb716726d27da32144c6445cda25e83076ad9a3c3122ea32e1e687cf2431eee90721a32a6cad7ffebccf8c6ab0f4c89992013854
7
+ data.tar.gz: ff15b6b7406fccac6f782e488bef7ea595aef525af56f38a2dd1f5fee0b63f16d4511fa79414297022a4baaca171a5a969864b2f39b293286d4f91e149467bd4
@@ -1,22 +1,15 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.5.1
3
+ - 2.1
4
4
 
5
- matrix:
6
- include:
7
- - rvm: 2.5.1
8
- env: RAILS_VERSION=5.2.0
9
- - rvm: 2.4.4
10
- env: RAILS_VERSION=5.1.6
11
- - rvm: 2.3.7
12
- env: RAILS_VERSION=5.0.7
13
- - rvm: 2.2.10
14
- env: RAILS_VERSION=4.2.10
15
- - rvm: 2.1.10
16
- env: RAILS_VERSION=4.2.10
5
+ gemfile:
6
+ - gemfiles/rails4.1.gemfile
7
+ - gemfiles/rails4.2.beta.gemfile
8
+
9
+
10
+ notifications:
11
+ irc: "irc.freenode.org#projecthydra"
17
12
 
18
13
  env:
19
14
  global:
20
15
  - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
21
-
22
- jdk: oraclejdk8
data/Gemfile CHANGED
@@ -2,13 +2,13 @@ source "https://rubygems.org"
2
2
 
3
3
  # Bundler will rely on active-fedora.gemspec for dependency information.
4
4
 
5
- gemspec
5
+ gemspec path: File.expand_path('..', __FILE__)
6
+
7
+ gem 'byebug' unless ENV['TRAVIS']
6
8
 
7
9
  group :test do
8
10
  gem 'simplecov', require: false
11
+ gem 'coveralls', require: false
9
12
  end
10
13
 
11
- gem 'jruby-openssl', :platform=> :jruby
12
- gem 'activemodel', ENV['RAILS_VERSION'] if ENV['RAILS_VERSION']
13
- gem 'linkeddata', '~> 1.99'
14
- gem 'rsolr', '~> 1.x'
14
+ gem 'jruby-openssl', platform: :jruby
@@ -1,83 +1,3 @@
1
- 8.1.0
2
-
3
- 2015-04-27: Patches casting behavior [David Chandek-Stark]
4
- See https://github.com/projecthydra/active_fedora/wiki/Patching-ActiveFedora-7.x-&-8.x-Casting-Behavior
5
- for detailed information on the problem.
6
-
7
- The solution offered in this patch preserves the most-specific-class algorithm
8
- of `ActiveFedora::ContentModel.best_model_for` and raises a new execption,
9
- `ActiveFedora::ModelNotAsserted` in `ActiveFedora::Core#adapt_to_cmodel`.
10
-
11
- Note that a repository object can still be loaded into a model class not asserted,
12
- for example, by using `.find` with `cast: false`.
13
-
14
- Closes #746 (although not really a backport)
15
-
16
- 8.0.1
17
-
18
- 2015-03-11: Backport solr escape patch [Chris Colvard]
19
-
20
- 8.0.0
21
-
22
- 2015-01-07: Can assign single ActiveTriples::Resource to single-valued attribute
23
- (fixes #653) [David Chandek-Stark]
24
-
25
- 2014-12-04: point to FCRepo 3.x stable branch [Benjamin Armintor]
26
-
27
- 2013-02-28: github issue 48 tests and YARD [Benjamin Armintor]
28
-
29
- 2014-12-02: Removed pending deprecations omitted in 8.0.0.rc1 Bumped version to
30
- 8.0.0.rc2 [David Chandek-Stark]
31
-
32
- 2014-12-02: Bumped version to 8.0.0.rc1 [David Chandek-Stark]
33
-
34
- 2014-11-28: Removed pending deprecations for version 8.0.0. [David
35
- Chandek-Stark]
36
-
37
- 2014-11-19: add RDF::Vocabulary subclasses for Fcrepo and ProjectHydra [Benjamin
38
- Armintor]
39
-
40
- 2014-11-24: rename ActiveFedora::Rdf to ActiveFedora::RDF [Benjamin Armintor]
41
-
42
- 2014-11-21: Adding optional yml paramters as comments so people know they exist
43
- [Carolyn Cole]
44
-
45
- 2014-11-18: Makes sure all values are handled as arrays [Hector Correa]
46
-
47
- 2014-11-17: Bumped version to 8.0.0.pre1 [David Chandek-Stark]
48
-
49
- 2014-10-02: Remove ObjectResource from RdfDatastream [Tom Johnson]
50
-
51
- 2014-09-22: Factors out behavior from ActiveFedora::Rdf::ObjectResource to mixin
52
- ActiveFedora::Rdf::Persistence. [David Chandek-Stark]
53
-
54
- v7.1.2
55
-
56
- 2014-11-05: Revert "clarified a comment" [Adam Wead]
57
-
58
- 2014-11-04: clarified a comment [Brian Maddy]
59
-
60
- 2014-10-21: Correction to comment example [Joe Atzberger]
61
-
62
- 2014-10-07: Bug #479: Typo in XSD filename value stuck in config generator
63
- templates [Joe Atzberger]
64
-
65
- v7.1.1
66
-
67
- 2014-09-16: RdfDatastream#deserialize should always return an RDF::Graph. Fixes
68
- #471 [Justin Coyne]
69
-
70
- 2014-08-15: Set default mimeType for NtriplesRDFDatastream to
71
- 'application/n-triples' per W3C recommendation.
72
- http://www.w3.org/TR/n-triples/#n-triples-mediatype Fixes #464 [David
73
- Chandek-Stark]
74
-
75
- 2014-08-04: RDFDatastream#content= patched to accept IO, matching
76
- Rubydora::Datastream API Fixes #461 [David Chandek-Stark]
77
-
78
- 2014-07-30: Only set ds content in #create_datastream for managed and inline
79
- [David Chandek-Stark]
80
-
81
1
  v7.1.0
82
2
 
83
3
  2014-07-17: Update Om and Rubydora depencencies [Justin Coyne]
data/README.md CHANGED
@@ -4,6 +4,7 @@ Description
4
4
  [![Build Status](https://travis-ci.org/projecthydra/active_fedora.png?branch=master)](https://travis-ci.org/projecthydra/active\_fedora)
5
5
  [![Version](https://badge.fury.io/rb/active-fedora.png)](http://badge.fury.io/rb/active-fedora)
6
6
  [![Dependencies](https://gemnasium.com/projecthydra/active_fedora.png)](https://gemnasium.com/projecthydra/active\_fedora)
7
+ [![Coverage Status](https://img.shields.io/coveralls/projecthydra/active_fedora.svg)](https://coveralls.io/r/projecthydra/active_fedora)
7
8
 
8
9
  Rubydora and ActiveFedora provide a set of Ruby gems for creating and
9
10
  managing objects in the Fedora Repository Architecture
data/Rakefile CHANGED
@@ -1,8 +1,5 @@
1
1
  require 'rake/clean'
2
- require 'rubygems'
3
2
  require 'bundler'
4
- require "bundler/setup"
5
- require "active-fedora"
6
3
 
7
4
  Bundler::GemHelper.install_tasks
8
5
 
@@ -14,23 +14,23 @@ Gem::Specification.new do |s|
14
14
  s.license = "APACHE2"
15
15
  s.required_ruby_version = '>= 1.9.3'
16
16
 
17
- s.add_dependency 'rsolr', ">= 1.0.11", '< 3'
17
+ s.add_dependency 'rsolr', "~> 1.0.10"
18
18
  s.add_dependency 'om', '~> 3.1'
19
19
  s.add_dependency 'nom-xml', '>= 0.5.1'
20
- s.add_dependency "activesupport", '>= 4.2.10'
21
- s.add_dependency "rubydora", '>= 1.8.0', '< 3'
20
+ s.add_dependency "activesupport", '>= 4.1.0'
22
21
  s.add_dependency "active-triples", '~> 0.4.0'
23
- s.add_dependency "rdf-rdfxml", '~> 1.1'
22
+ s.add_dependency "rdf-rdfxml", '~> 1.1.0'
23
+ s.add_dependency "linkeddata"
24
24
  s.add_dependency "deprecation"
25
+ s.add_dependency "ldp", '~> 0.0.9'
26
+ s.add_dependency "rdf-ldp"
27
+
25
28
  s.add_development_dependency "rdoc"
26
29
  s.add_development_dependency "yard"
27
30
  s.add_development_dependency "rake"
28
31
  s.add_development_dependency "jettywrapper", ">=1.4.0"
29
32
  s.add_development_dependency "rspec", "~> 3.0"
30
- s.add_development_dependency "rspec-its"
31
33
  s.add_development_dependency "equivalent-xml"
32
- s.add_development_dependency "rest-client"
33
- s.add_development_dependency "webmock"
34
34
  s.add_development_dependency "simplecov", '~> 0.7.1'
35
35
 
36
36
  s.files = `git ls-files`.split("\n")
@@ -43,3 +43,4 @@ Gem::Specification.new do |s|
43
43
  s.require_paths = ["lib"]
44
44
 
45
45
  end
46
+
@@ -1,13 +1,14 @@
1
1
  development:
2
2
  user: fedoraAdmin
3
3
  password: fedoraAdmin
4
- url: http://127.0.0.1:8983/fedora
4
+ url: http://127.0.0.1:8983/fedora/rest
5
+ base_path: /dev
5
6
  test:
6
7
  user: fedoraAdmin
7
8
  password: fedoraAdmin
8
- url: http://127.0.0.1:8983/fedora-test
9
+ url: http://localhost:8983/fedora/rest
10
+ base_path: /test
9
11
  production:
10
12
  user: fedoraAdmin
11
13
  password: fedoraAdmin
12
- url: http://127.0.0.1:8080/fedora
13
-
14
+ url: http://127.0.0.1:8983/fedora/rest
@@ -1,12 +1,12 @@
1
- # The default namespace maps to the default namespace for generating rels_ext from solr
2
- :default_namespace: info:fedora/fedora-system:def/relations-external#
1
+ # The default namespace maps to the default namespace for generating relationships from solr
2
+ :default_namespace: http://fedora.info/definitions/v4/rels-ext#
3
3
 
4
4
  # namespace mappings---
5
5
  # you can add specific mappings for your institution by providing the following:
6
6
  # namespace_uri:
7
7
  # :relationship_symbol: relationship_identifier
8
8
  #
9
- # For example, if you have the following element in your rels_ext:
9
+ # For example, if you have the following element in your relationships:
10
10
  #
11
11
  # <oai:itemID>oai:example.edu:changeme:500</oai:itemID>
12
12
  #
@@ -14,7 +14,7 @@
14
14
  # :oai_item_id => ["info:fedora/oai:example.edu:changeme:500"]
15
15
  #
16
16
  :predicate_mapping:
17
- info:fedora/fedora-system:def/relations-external#:
17
+ http://fedora.info/definitions/v4/rels-ext#:
18
18
  :conforms_to: conformsTo
19
19
  :has_annotation: hasAnnotation
20
20
  :has_collection_member: hasCollectionMember
@@ -40,7 +40,7 @@
40
40
  :is_part_of: isPartOf
41
41
  :is_subset_of: isSubsetOf
42
42
  :is_topic_of: isTopicOf
43
- info:fedora/fedora-system:def/model#:
43
+ http://fedora.info/definitions/v4/model#:
44
44
  :is_contractor_of: isContractorOf
45
45
  :is_deployment_of: isDeploymentOf
46
46
  :has_service: hasService
@@ -0,0 +1,10 @@
1
+ source "https://rubygems.org"
2
+
3
+ file = File.expand_path("../../Gemfile", __FILE__)
4
+
5
+ if File.exists?(file)
6
+ puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
7
+ instance_eval File.read(file)
8
+ end
9
+
10
+ gem 'activemodel', '~> 4.1.1'
@@ -0,0 +1,10 @@
1
+ source "https://rubygems.org"
2
+
3
+ file = File.expand_path("../../Gemfile", __FILE__)
4
+
5
+ if File.exists?(file)
6
+ puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v`
7
+ instance_eval File.read(file)
8
+ end
9
+
10
+ gem 'activemodel', '~> 4.2.0.beta4'
@@ -1,49 +1,65 @@
1
1
  require 'active_support'
2
- require "solrizer"
2
+ require 'active_model'
3
+ require 'ldp'
4
+ require 'solrizer'
3
5
  require 'active_fedora/file_configurator'
4
- require 'active_fedora/rubydora_connection'
5
6
  require 'active_support/core_ext/class/attribute'
6
7
  require 'active_support/core_ext/object'
7
8
  require 'active_support/core_ext/hash/indifferent_access'
8
- require "active_support/core_ext/hash/except"
9
+ require 'active_support/core_ext/hash/except'
9
10
  require 'active_triples'
11
+ require 'rdf/ldp'
10
12
 
11
13
  SOLR_DOCUMENT_ID = Solrizer.default_field_mapper.id_field unless defined?(SOLR_DOCUMENT_ID)
12
14
  ENABLE_SOLR_UPDATES = true unless defined?(ENABLE_SOLR_UPDATES)
13
15
 
16
+ # Monkey patching RDF::Literal::DateTime to support fractional seconds.
17
+ # See https://github.com/projecthydra/active_fedora/issues/497
18
+ module RDF
19
+ class Literal
20
+ class DateTime < Literal
21
+ ALTERNATIVE_FORMAT = '%Y-%m-%dT%H:%M:%S'.freeze
22
+
23
+ def to_s
24
+ @string ||= begin
25
+ nano = @object.strftime('%N').sub(/0+\Z/, '')
26
+ nano = '.' + nano unless nano.blank?
27
+ @object.strftime(ALTERNATIVE_FORMAT) + nano + 'Z'
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
14
34
  module ActiveFedora #:nodoc:
15
35
  extend ActiveSupport::Autoload
16
36
 
17
- class ObjectNotFoundError < RuntimeError; end # :nodoc:
18
- class PredicateMappingsNotFoundError < RuntimeError; end # :nodoc:
19
- class UnknownAttributeError < NoMethodError; end; # :nodoc:
20
- class ConfigurationError < RuntimeError; end # :nodoc:
21
- class AssociationTypeMismatch < RuntimeError; end # :nodoc:
22
- class UnregisteredPredicateError < RuntimeError; end # :nodoc:
23
- class RecordNotSaved < RuntimeError; end # :nodoc:
24
- class IllegalOperation < RuntimeError; end # :nodoc:
25
- class Rollback < RuntimeError; end # :nodoc:
26
- class ModelNotAsserted < RuntimeError; end # :nodoc:
27
-
28
37
  eager_autoload do
29
38
  autoload :AssociationRelation
30
39
  autoload :Associations
40
+ autoload :AttachedFiles
41
+ autoload :AttributeMethods
31
42
  autoload :Attributes
32
- autoload :Auditable
33
43
  autoload :AutosaveAssociation
34
44
  autoload :Base
35
- autoload :ContentModel
36
45
  autoload :Callbacks
46
+ autoload :ChangeSet
37
47
  autoload :Config
38
48
  autoload :Core
39
49
  autoload :Datastream
40
- autoload :DatastreamAttribute
41
- autoload :DatastreamHash
42
50
  autoload :Datastreams
43
- autoload :DigitalObject
51
+ autoload :DelegatedAttribute
52
+ autoload :Fedora
44
53
  autoload :FedoraAttributes
54
+ autoload :File
45
55
  autoload :FileConfigurator
56
+ autoload :FilePathBuilder
57
+ autoload :FilesHash
58
+ autoload :FixityService
46
59
  autoload :Indexing
60
+ autoload :IndexingService
61
+ autoload :LdpResource
62
+ autoload :LoadableFromJson
47
63
  autoload :Model
48
64
  autoload :NestedAttributes
49
65
  autoload :NomDatastream
@@ -56,12 +72,12 @@ module ActiveFedora #:nodoc:
56
72
  autoload :RDF
57
73
  autoload_under 'rdf' do
58
74
  autoload :RDFDatastream
59
- autoload :RdfxmlRDFDatastream
75
+ autoload :RDFXMLDatastream
60
76
  autoload :NtriplesRDFDatastream
77
+ autoload :FedoraRdfResource
61
78
  end
62
79
  autoload :Reflection
63
80
  autoload :Relation
64
- autoload :ReloadOnSave
65
81
 
66
82
  autoload_under 'relation' do
67
83
  autoload :Calculations
@@ -71,25 +87,38 @@ module ActiveFedora #:nodoc:
71
87
  autoload :FinderMethods
72
88
  end
73
89
 
74
- autoload :RelationshipGraph
75
- autoload :RelsExtDatastream
76
90
  autoload :Scoping
77
- autoload :SemanticNode
78
- autoload :ServiceDefinitions
79
91
  autoload :Serialization
80
- autoload :Sharding
81
92
  autoload :SimpleDatastream
82
- autoload :SolrDigitalObject
93
+ autoload :SolrInstanceLoader
83
94
  autoload :SolrService
84
- autoload :UnsavedDigitalObject
85
- autoload :FixtureLoader
86
- autoload :FixtureExporter
87
- autoload :DatastreamCollections
95
+ autoload :SparqlInsert
88
96
  autoload :Predicates
89
97
  autoload :Validations
90
- autoload :SolrInstanceLoader
98
+ autoload :Versionable
99
+ autoload :WithMetadata
100
+ end
101
+
102
+ module AttributeMethods
103
+ extend ActiveSupport::Autoload
104
+
105
+ eager_autoload do
106
+ autoload :Read
107
+ autoload :Write
108
+ autoload :Dirty
109
+ end
91
110
  end
92
111
 
112
+ module Attributes
113
+ extend ActiveSupport::Autoload
114
+
115
+ eager_autoload do
116
+ autoload :Serializers
117
+ autoload :PrimaryKey
118
+ end
119
+ end
120
+
121
+
93
122
  module Scoping
94
123
  extend ActiveSupport::Autoload
95
124
 
@@ -102,101 +131,106 @@ module ActiveFedora #:nodoc:
102
131
  class << self
103
132
  attr_reader :fedora_config, :solr_config, :config_options
104
133
  attr_accessor :configurator
105
- end
106
- self.configurator ||= ActiveFedora::FileConfigurator.new
107
-
108
- def self.fedora_config
109
- @fedora_config ||= Config.new(configurator.fedora_config)
110
- end
111
- def self.solr_config; self.configurator.solr_config; end
112
- def self.config_options; self.configurator.config_options; end
113
- def self.config_loaded?; self.configurator.config_loaded?; end
114
-
115
- def self.init( options={} )
116
- # Make config_options into a Hash if nil is passed in as the value
117
- options = {} if options.nil?
118
- # For backwards compatibility, handle cases where config_path (a String) is passed in as the argument rather than a config_options hash
119
- # In all other cases, set config_path to config_options[:config_path], which is ok if it's nil
120
- if options.is_a? String
121
- raise ArgumentError, "Calling ActiveFedora.init with a path as an argument has been removed. Use ActiveFedora.init(:fedora_config_path=>#{options})"
122
- end
123
- @fedora_config = nil
124
- SolrService.reset!
125
- Predicates.predicate_config = nil
126
- self.configurator.init(options)
127
- end
128
134
 
129
- def self.config
130
- self.fedora_config
131
- end
135
+ def fedora_config
136
+ @fedora_config ||= Config.new(configurator.fedora_config)
137
+ end
138
+ def solr_config; configurator.solr_config; end
139
+ def config_options; configurator.config_options; end
140
+ def config_loaded?; configurator.config_loaded?; end
132
141
 
133
- # Determine what environment we're running in. Order of preference is:
134
- # 1. config_options[:environment]
135
- # 2. Rails.env
136
- # 3. ENV['environment']
137
- # 4. ENV['RAILS_ENV']
138
- # 5. development
139
- # @return [String]
140
- # @example
141
- # ActiveFedora.init(:environment=>"test")
142
- # ActiveFedora.environment => "test"
143
- def self.environment
144
- if config_options.fetch(:environment,nil)
145
- return config_options[:environment]
146
- elsif defined?(Rails.env) and !Rails.env.nil?
147
- return Rails.env.to_s
148
- elsif defined?(ENV['environment']) and !(ENV['environment'].nil?)
149
- return ENV['environment']
150
- elsif defined?(ENV['RAILS_ENV']) and !(ENV['RAILS_ENV'].nil?)
151
- raise RuntimeError, "You're depending on RAILS_ENV for setting your environment. Please use ENV['environment'] for non-rails environment setting: 'rake foo:bar environment=test'"
152
- else
153
- ENV['environment'] = 'development'
142
+ def init( options={} )
143
+ # Make config_options into a Hash if nil is passed in as the value
144
+ options = {} if options.nil?
145
+ # For backwards compatibility, handle cases where config_path (a String) is passed in as the argument rather than a config_options hash
146
+ # In all other cases, set config_path to config_options[:config_path], which is ok if it's nil
147
+ if options.is_a? String
148
+ raise ArgumentError, "Calling ActiveFedora.init with a path as an argument has been removed. Use ActiveFedora.init(:fedora_config_path=>#{options})"
149
+ end
150
+ @fedora_config = nil
151
+ SolrService.reset!
152
+ Predicates.predicate_config = nil
153
+ configurator.init(options)
154
154
  end
155
- end
156
-
157
- def self.solr
158
- ActiveFedora::SolrService.instance
159
- end
160
-
161
- def self.predicate_config
162
- configurator.predicate_config
163
- end
164
-
165
- def self.root
166
- File.expand_path('../..', __FILE__)
167
- end
168
-
169
- def self.version
170
- ActiveFedora::VERSION
171
- end
172
-
173
- # Convenience method for getting class constant based on a string
174
- # @example
175
- # ActiveFedora.class_from_string("Om")
176
- # => Om
177
- # ActiveFedora.class_from_string("ActiveFedora::RdfNode::TermProxy")
178
- # => ActiveFedora::RdfNode::TermProxy
179
- # @example Search within ActiveFedora::RdfNode for a class called "TermProxy"
180
- # ActiveFedora.class_from_string("TermProxy", ActiveFedora::RdfNode)
181
- # => ActiveFedora::RdfNode::TermProxy
182
- def self.class_from_string(class_name, container_class=Kernel)
183
- container_class = container_class.name if container_class.is_a? Module
184
- container_parts = container_class.split('::')
185
- (container_parts + class_name.split('::')).flatten.inject(Kernel) do |mod, class_name|
186
- if mod == Kernel
187
- Object.const_get(class_name)
188
- elsif mod.const_defined? class_name.to_sym
189
- mod.const_get(class_name)
155
+
156
+ def config
157
+ fedora_config
158
+ end
159
+
160
+ # Determine what environment we're running in. Order of preference is:
161
+ # 1. config_options[:environment]
162
+ # 2. Rails.env
163
+ # 3. ENV['environment']
164
+ # 4. ENV['RAILS_ENV']
165
+ # 5. development
166
+ # @return [String]
167
+ # @example
168
+ # ActiveFedora.init(:environment=>"test")
169
+ # ActiveFedora.environment => "test"
170
+ def environment
171
+ if config_options.fetch(:environment,nil)
172
+ return config_options[:environment]
173
+ elsif defined?(Rails.env) and !Rails.env.nil?
174
+ return Rails.env.to_s
175
+ elsif defined?(ENV['environment']) and !(ENV['environment'].nil?)
176
+ return ENV['environment']
177
+ elsif defined?(ENV['RAILS_ENV']) and !(ENV['RAILS_ENV'].nil?)
178
+ raise RuntimeError, "You're depending on RAILS_ENV for setting your environment. Please use ENV['environment'] for non-rails environment setting: 'rake foo:bar environment=test'"
190
179
  else
191
- container_parts.pop
192
- class_from_string(class_name, container_parts.join('::'))
180
+ ENV['environment'] = 'development'
181
+ end
182
+ end
183
+
184
+ def solr
185
+ ActiveFedora::SolrService.instance
186
+ end
187
+
188
+ def fedora
189
+ @fedora ||= Fedora.new(fedora_config.credentials)
190
+ end
191
+
192
+ def predicate_config
193
+ configurator.predicate_config
194
+ end
195
+
196
+ def root
197
+ ::File.expand_path('../..', __FILE__)
198
+ end
199
+
200
+ def version
201
+ ActiveFedora::VERSION
202
+ end
203
+
204
+ # Convenience method for getting class constant based on a string
205
+ # @example
206
+ # ActiveFedora.class_from_string("Om")
207
+ # => Om
208
+ # ActiveFedora.class_from_string("ActiveFedora::RdfNode::TermProxy")
209
+ # => ActiveFedora::RdfNode::TermProxy
210
+ # @example Search within ActiveFedora::RdfNode for a class called "TermProxy"
211
+ # ActiveFedora.class_from_string("TermProxy", ActiveFedora::RdfNode)
212
+ # => ActiveFedora::RdfNode::TermProxy
213
+ def class_from_string(class_name, container_class=Kernel)
214
+ container_class = container_class.name if container_class.is_a? Module
215
+ container_parts = container_class.split('::')
216
+ (container_parts + class_name.split('::')).flatten.inject(Kernel) do |mod, class_name|
217
+ if mod == Kernel
218
+ Object.const_get(class_name)
219
+ elsif mod.const_defined? class_name.to_sym
220
+ mod.const_get(class_name)
221
+ else
222
+ container_parts.pop
223
+ class_from_string(class_name, container_parts.join('::'))
224
+ end
193
225
  end
194
226
  end
195
227
  end
196
228
 
229
+ self.configurator ||= ActiveFedora::FileConfigurator.new
230
+
197
231
  end
198
232
 
199
233
 
200
- I18n.load_path << File.dirname(__FILE__) + '/active_fedora/locale/en.yml'
234
+ I18n.load_path << ::File.dirname(__FILE__) + '/active_fedora/locale/en.yml'
201
235
 
202
236
  require 'active_fedora/railtie' if defined?(Rails)