active-fedora 8.7.0 → 9.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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)