active-fedora 12.0.3 → 12.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -7
  3. data/.rubocop_todo.yml +10 -100
  4. data/.travis.yml +21 -0
  5. data/CODE_OF_CONDUCT.md +36 -0
  6. data/CONTRIBUTING.md +23 -21
  7. data/Gemfile +1 -2
  8. data/History.txt +29 -29
  9. data/LICENSE +16 -14
  10. data/README.md +40 -29
  11. data/SUPPORT.md +5 -0
  12. data/active-fedora.gemspec +7 -7
  13. data/lib/active_fedora.rb +1 -1
  14. data/lib/active_fedora/aggregation/list_source.rb +3 -2
  15. data/lib/active_fedora/associations/builder/collection_association.rb +1 -0
  16. data/lib/active_fedora/associations/collection_association.rb +3 -0
  17. data/lib/active_fedora/associations/collection_proxy.rb +2 -0
  18. data/lib/active_fedora/associations/directly_contains_one_association.rb +1 -0
  19. data/lib/active_fedora/associations/indirectly_contains_association.rb +2 -0
  20. data/lib/active_fedora/associations/singular_association.rb +1 -0
  21. data/lib/active_fedora/attribute_methods.rb +1 -1
  22. data/lib/active_fedora/attribute_methods/read.rb +1 -1
  23. data/lib/active_fedora/attribute_methods/write.rb +1 -1
  24. data/lib/active_fedora/attributes.rb +1 -1
  25. data/lib/active_fedora/attributes/property_builder.rb +1 -0
  26. data/lib/active_fedora/callbacks.rb +7 -2
  27. data/lib/active_fedora/fedora.rb +8 -0
  28. data/lib/active_fedora/file.rb +7 -5
  29. data/lib/active_fedora/indexing/descendant_fetcher.rb +1 -1
  30. data/lib/active_fedora/indexing/field_mapper.rb +2 -0
  31. data/lib/active_fedora/indexing/suffix.rb +3 -1
  32. data/lib/active_fedora/inheritable_accessors.rb +1 -0
  33. data/lib/active_fedora/loadable_from_json.rb +1 -0
  34. data/lib/active_fedora/nested_attributes.rb +1 -0
  35. data/lib/active_fedora/persistence.rb +14 -1
  36. data/lib/active_fedora/persistence/null_identifier_service.rb +11 -0
  37. data/lib/active_fedora/reflection.rb +1 -1
  38. data/lib/active_fedora/relation.rb +14 -0
  39. data/lib/active_fedora/relation/delegation.rb +2 -1
  40. data/lib/active_fedora/relation/finder_methods.rb +1 -0
  41. data/lib/active_fedora/relation/merger.rb +1 -0
  42. data/lib/active_fedora/validations.rb +7 -0
  43. data/lib/active_fedora/version.rb +1 -1
  44. data/lib/active_fedora/with_metadata.rb +1 -0
  45. data/lib/active_fedora/with_metadata/metadata_node.rb +2 -1
  46. data/lib/generators/active_fedora/config/solr/templates/solr/config/schema.xml +64 -51
  47. data/lib/generators/active_fedora/config/solr/templates/solr/config/solrconfig.xml +4 -1
  48. data/lib/generators/active_fedora/model/templates/datastream.rb.erb +1 -1
  49. data/spec/integration/file_spec.rb +1 -1
  50. data/spec/integration/relation_spec.rb +43 -0
  51. data/spec/spec_helper.rb +11 -9
  52. data/spec/support/an_active_model.rb +4 -0
  53. data/spec/unit/callback_spec.rb +8 -1
  54. data/spec/unit/file_spec.rb +0 -17
  55. data/spec/unit/validations_spec.rb +18 -0
  56. metadata +28 -25
  57. data/.circleci/config.yml +0 -47
data/LICENSE CHANGED
@@ -1,14 +1,16 @@
1
- ##########################################################################
2
- # Copyright 2011 Stanford University Libraries (SULAIR) and MediaShelf, LLC
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
1
+ Copyright 2011 Stanford University Libraries (SULAIR) and MediaShelf, LLC
2
+ Copyright 2011 The Pennsylvania State University
3
+ Copyright 2012 University of Notre Dame
4
+ Additional copyright may be held by others, as reflected in the commit history.
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
data/README.md CHANGED
@@ -1,40 +1,54 @@
1
- Description
2
- -----------
1
+ # ActiveFedora
3
2
 
4
- [![Build Status](https://travis-ci.org/samvera/active_fedora.png?branch=master)](https://travis-ci.org/samvera/active\_fedora)
5
- [![Version](https://badge.fury.io/rb/active-fedora.png)](http://badge.fury.io/rb/active-fedora)
6
- [![Dependencies](https://gemnasium.com/samvera/active_fedora.png)](https://gemnasium.com/samvera/active\_fedora)
7
- [![Coverage Status](https://img.shields.io/coveralls/samvera/active_fedora.svg)](https://coveralls.io/r/samvera/active_fedora)
3
+ Code: [![Version](https://badge.fury.io/rb/active-fedora.png)](http://badge.fury.io/rb/active-fedora)
4
+ [![Build Status](https://travis-ci.org/samvera/active_fedora.png?branch=master)](https://travis-ci.org/samvera/active_fedora)
5
+ [![Coverage Status](https://coveralls.io/repos/github/samvera/active_fedora/badge.svg?branch=master)](https://coveralls.io/github/samvera/active_fedora?branch=master)
6
+
7
+ Docs: [![Contribution Guidelines](http://img.shields.io/badge/CONTRIBUTING-Guidelines-blue.svg)](./CONTRIBUTING.md)
8
+ [![Apache 2.0 License](http://img.shields.io/badge/APACHE2-license-blue.svg)](./LICENSE)
9
+
10
+ Jump in: [![Slack Status](http://slack.samvera.org/badge.svg)](http://slack.samvera.org/)
11
+
12
+ # What is ActiveFedora?
8
13
 
9
14
  ActiveFedora is a Ruby gem for creating and
10
15
  managing objects in the Fedora Repository Architecture
11
16
  ([http://fedora-commons.org](http://fedora-commons.org)). ActiveFedora
12
17
  is loosely based on “ActiveRecord” in Rails. Version 9.0+ works with Fedora 4 and prior versions work on Fedora 3. Version 9.2+ works with Solr 4.10. Version 10.0+ works with Fedora >= 4.5.1.
13
18
 
14
- Getting Help
15
- ------------
19
+ ## Product Owner & Maintenance
20
+ ActiveFedora is a Core Component of the Samvera community. The documentation for
21
+ what this means can be found
22
+ [here](http://samvera.github.io/core_components.html#requirements-for-a-core-component).
16
23
 
17
- - Community Discussions & Mailing List are located at
18
- [http://groups.google.com/group/samvera-tech](http://groups.google.com/group/samvera-tech)
19
- - Developers hang out on [slack.samvera.org](http://slack.samvera.org/)
24
+ ### Product Owner
20
25
 
21
- Installation
22
- ------------
26
+ [no-reply](https://github.com/no-reply)
23
27
 
24
- The gem is hosted on rubygems.
28
+ # Help
25
29
 
26
- ```bash
27
- gem install active-fedora
28
- ```
30
+ The Samvera community is here to help. Please see our [support guide](./SUPPORT.md).
29
31
 
30
- Getting Started
31
- ---------------
32
+ # Getting Started
32
33
 
33
34
  The [Dive into Hydra](https://github.com/samvera/hydra/wiki/Dive-into-Hydra)
34
35
  gives you a brief tour through ActiveFedora’s features on the command line.
35
36
 
36
- Generators
37
- ----------
37
+ ## Prerequisites
38
+
39
+ - A Fedora Commons Repository installation (configured by URL in fedora.yml)
40
+ - A Solr index (configured by URL in solr.yml)
41
+ - A JDK8+ installation (if running the test suite)
42
+
43
+ ## Installation
44
+
45
+ The gem is hosted on rubygems.
46
+
47
+ ```bash
48
+ gem install active-fedora
49
+ ```
50
+
51
+ ## Generators
38
52
 
39
53
  You can generate a model inheriting from ActiveFedora::Base.
40
54
 
@@ -42,8 +56,7 @@ You can generate a model inheriting from ActiveFedora::Base.
42
56
  rails generate active_fedora:model Book
43
57
  ```
44
58
 
45
- Testing (this Gem)
46
- ------------------
59
+ ## Testing (this Gem)
47
60
 
48
61
  In order to run the RSpec tests, you need to have a copy of the
49
62
  ActiveFedora source code, and then run bundle install in the source
@@ -88,11 +101,9 @@ is installed, run:
88
101
  rake spec
89
102
  ```
90
103
 
91
- Acknowledgements
92
- ----------------
104
+ # Acknowledgments
93
105
 
94
- Creator: Matt Zumwalt ([MediaShelf](http://yourmediashelf.com))
106
+ This software has been developed by and is brought to you by the Samvera community. Learn more at the
107
+ [Samvera website](http://samvera.org/).
95
108
 
96
- Developers:
97
- Justin Coyne, McClain Looney & Eddie Shin
98
- ([MediaShelf](http://yourmediashelf.com)), Rick Johnson (Notre Dame)
109
+ ![Samvera Logo](https://wiki.duraspace.org/download/thumbnails/87459292/samvera-fall-font2-200w.png?version=1&modificationDate=1498550535816&api=v2)
@@ -0,0 +1,5 @@
1
+ If you would like to report an issue, first search [the list of issues](https://github.com/samvera/active_fedora/issues/) to see if someone else has already reported it, and then feel free to [create a new issue](https://github.com/samvera/active_fedora/issues/new).
2
+
3
+ If you have questions or need help, please email [the Samvera community tech list](https://groups.google.com/forum/#!forum/samvera-tech) or stop by the #dev channel in [the Samvera community Slack team](https://wiki.duraspace.org/pages/viewpage.action?pageId=87460391#Getintouch!-Slack).
4
+
5
+ You can learn more about the various Samvera communication channels on the [Get in touch!](https://wiki.duraspace.org/pages/viewpage.action?pageId=87460391) wiki page.
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Matt Zumwalt", "McClain Looney", "Justin Coyne"]
10
10
  s.email = ["samvera-tech@googlegroups.com"]
11
- s.homepage = %q{https://github.com/projecthydra/active_fedora}
11
+ s.homepage = %q{https://github.com/samvera/active_fedora}
12
12
  s.summary = %q{A convenience libary for manipulating documents in the Fedora Repository.}
13
13
  s.description = %q{ActiveFedora provides for creating and managing objects in the Fedora Repository Architecture.}
14
14
  s.license = "Apache-2.0"
@@ -16,16 +16,16 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.add_dependency 'rsolr', '>= 1.1.2', '< 3'
18
18
  s.add_dependency 'solrizer', '>= 3.4', '< 5'
19
- s.add_dependency "activesupport", '>= 4.2.4', '< 5.2'
20
- s.add_dependency "activemodel", '>= 4.2', '< 5.2'
19
+ s.add_dependency "activesupport", '>= 4.2.4', '< 5.3'
20
+ s.add_dependency "activemodel", '>= 4.2.10', '< 5.3'
21
21
  s.add_dependency "active-triples", '>= 0.11.0', '< 2.0.0'
22
22
  s.add_dependency "deprecation"
23
- s.add_dependency "ldp", '~> 0.7.0'
23
+ s.add_dependency "ldp", '>= 0.7.0', '< 2'
24
24
  s.add_dependency "ruby-progressbar", '~> 1.0'
25
- s.add_dependency 'faraday', '~> 0.12.1'
25
+ s.add_dependency 'faraday', '~> 0.12'
26
26
  s.add_dependency 'faraday-encoding', '0.0.4'
27
27
 
28
- s.add_development_dependency "rails", ">= 4.2", "< 5.2"
28
+ s.add_development_dependency "rails"
29
29
  s.add_development_dependency "rdoc"
30
30
  s.add_development_dependency "yard"
31
31
  s.add_development_dependency "rake"
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
35
35
  s.add_development_dependency "rspec-its"
36
36
  s.add_development_dependency "equivalent-xml"
37
37
  s.add_development_dependency "simplecov", '~> 0.8'
38
- s.add_development_dependency "rubocop", '~> 0.47.1'
38
+ s.add_development_dependency "rubocop", '~> 0.56.0'
39
39
  s.add_development_dependency "rubocop-rspec", '~> 1.12.0'
40
40
 
41
41
  s.files = `git ls-files`.split("\n")
@@ -9,7 +9,7 @@ require 'active_support/core_ext/hash/except'
9
9
  require 'active_triples'
10
10
 
11
11
  # Monkey patching RDF::Literal::DateTime to support fractional seconds.
12
- # See https://github.com/projecthydra/active_fedora/issues/497
12
+ # See https://github.com/samvera/active_fedora/issues/497
13
13
  # Also monkey patches in a fix for timezones to be stored properly.
14
14
  module RDF
15
15
  class Literal
@@ -15,7 +15,7 @@ module ActiveFedora
15
15
  # Overriding so that we don't track previously_changed, which was
16
16
  # rather expensive.
17
17
  def clear_changed_attributes
18
- @changed_attributes.clear
18
+ clear_changes_information
19
19
  end
20
20
 
21
21
  def changed?
@@ -36,7 +36,7 @@ module ActiveFedora
36
36
  # Serializing head/tail/nodes slows things down CONSIDERABLY, and is not
37
37
  # useful.
38
38
  # @note This method is used by ActiveFedora::Base upstream for indexing,
39
- # at https://github.com/projecthydra/active_fedora/blob/master/lib/active_fedora/profile_indexing_service.rb.
39
+ # at https://github.com/samvera/active_fedora/blob/master/lib/active_fedora/indexing_service.rb.
40
40
  def serializable_hash(_options = nil)
41
41
  {}
42
42
  end
@@ -80,6 +80,7 @@ module ActiveFedora
80
80
  # Set node subjects to a term in AF JUST so that AF will persist the
81
81
  # sub-graphs.
82
82
  # TODO: Find a way to fix this.
83
+ # See https://github.com/samvera/active_fedora/issues/1337
83
84
  resource.set_value(:nodes, [])
84
85
  self.nodes += graph.subjects.to_a
85
86
  ordered_self.changes_committed!
@@ -26,6 +26,7 @@ module ActiveFedora::Associations::Builder
26
26
  full_callback_name = "#{callback_name}_for_#{name}"
27
27
 
28
28
  # TODO : why do i need method_defined? I think its because of the inheritance chain
29
+ # See https://github.com/samvera/active_fedora/issues/1333
29
30
  model.class_attribute full_callback_name.to_sym unless model.method_defined?(full_callback_name)
30
31
 
31
32
  callbacks = Array(options[callback_name.to_sym]).map do |callback|
@@ -43,6 +43,7 @@ module ActiveFedora
43
43
  ids = Array(ids).reject(&:blank?)
44
44
  replace(klass.find(ids)) # .index_by { |r| r.id }.values_at(*ids))
45
45
  # TODO, like this when find() can return multiple records
46
+ # See https://github.com/samvera/active_fedora/issues/1340
46
47
  # send("#{reflection.name}=", reflection.klass.find(ids))
47
48
  # send("#{reflection.name}=", ids.collect { |id| reflection.klass.find(id)})
48
49
  end
@@ -171,6 +172,7 @@ module ActiveFedora
171
172
  # See delete for more info.
172
173
  def delete_all
173
174
  # TODO: load_target causes extra loads. Can't we just send delete requests?
175
+ # See https://github.com/samvera/active_fedora/issues/1341
174
176
  delete(load_target).tap do
175
177
  reset
176
178
  loaded!
@@ -301,6 +303,7 @@ module ActiveFedora
301
303
  def find_target
302
304
  # TODO: don't reify, just store the solr results and lazily reify.
303
305
  # For now, we set a hard limit of 1000 results.
306
+ # See https://github.com/samvera/active_fedora/issues/1358
304
307
  records = ActiveFedora::QueryResultBuilder.reify_solr_results(load_from_solr(rows: SolrService::MAX_ROWS))
305
308
  records.each { |record| set_inverse_instance(record) }
306
309
  records
@@ -41,6 +41,8 @@ module ActiveFedora
41
41
  merge! association.scope(nullify: false)
42
42
  end
43
43
 
44
+ delegate :each, to: :to_a
45
+
44
46
  def target
45
47
  @association.target
46
48
  end
@@ -4,6 +4,7 @@ module ActiveFedora
4
4
  class DirectlyContainsOneAssociation < SingularAssociation #:nodoc:
5
5
  # Finds objects contained by the container predicate (either the configured has_member_relation or ldp:contains)
6
6
  # TODO: Refactor this to use solr (for efficiency) instead of parsing the RDF graph. Requires indexing ActiveFedora::File objects into solr, including their RDF.type and, if possible, the id of their container
7
+ # See https://github.com/samvera/active_fedora/issues/1335
7
8
  def find_target
8
9
  # filtered_objects = container_association_proxy.to_a.select { |o| o.metadata_node.type.include?(options[:type]) }
9
10
  query_node = if container_predicate = options[:has_member_relation]
@@ -2,6 +2,7 @@ module ActiveFedora
2
2
  module Associations
3
3
  # TODO: we may want to split this into two subclasses, one for has_member_relation
4
4
  # and the other for is_member_of_relation
5
+ # See https://github.com/samvera/active_fedora/issues/1332
5
6
  class IndirectlyContainsAssociation < ContainsAssociation #:nodoc:
6
7
  # Add +records+ to this association. Returns +self+ so method calls may be chained.
7
8
  # Since << flattens its argument list and inserts each record, +push+ and +concat+ behave identically.
@@ -40,6 +41,7 @@ module ActiveFedora
40
41
  uris.map { |object_uri| klass.find(klass.uri_to_id(object_uri)) }
41
42
  else # is_member_of_relation
42
43
  # TODO this is a lot of reads. Avoid this path
44
+ # See https://github.com/samvera/active_fedora/issues/1345
43
45
  container_predicate = ::RDF::Vocab::LDP.contains
44
46
  proxy_uris = container.resource.query(predicate: container_predicate).map { |r| r.object.to_s }
45
47
  proxy_uris.map { |uri| proxy_class.find(proxy_class.uri_to_id(uri))[options[:foreign_key]] }
@@ -33,6 +33,7 @@ module ActiveFedora
33
33
 
34
34
  def find_target
35
35
  # TODO: this forces a solr query, but I think it's likely we can just lookup from Fedora.
36
+ # See https://github.com/samvera/active_fedora/issues/1330
36
37
  rec = scope.take
37
38
  rec.tap { |record| set_inverse_instance(record) }
38
39
  end
@@ -136,7 +136,7 @@ module ActiveFedora
136
136
  # person.attribute_names
137
137
  # # => ["id", "created_at", "updated_at", "name", "age"]
138
138
  def attribute_names
139
- @attributes.keys
139
+ @local_attributes.keys
140
140
  end
141
141
 
142
142
  # Returns a hash of all the attributes with their names as keys and the values of the attributes as values.
@@ -36,7 +36,7 @@ module ActiveFedora
36
36
  end
37
37
 
38
38
  def _read_attribute(attr_name) # :nodoc:
39
- @attributes.fetch(attr_name.to_s) { |n| yield n if block_given? }
39
+ attributes.fetch(attr_name.to_s) { |n| yield n if block_given? }
40
40
  end
41
41
 
42
42
  alias attribute _read_attribute
@@ -28,7 +28,7 @@ module ActiveFedora
28
28
 
29
29
  def write_attribute(attribute_name, value)
30
30
  if self.class.properties.key?(attribute_name)
31
- @attributes[attribute_name] = value
31
+ attributes[attribute_name] = value
32
32
  else
33
33
  raise ActiveModel::MissingAttributeError, "can't write unknown attribute `#{attribute_name}'"
34
34
  end
@@ -12,7 +12,7 @@ module ActiveFedora
12
12
  after_save :clear_changed_attributes
13
13
  def clear_changed_attributes
14
14
  @previously_changed = changes
15
- @changed_attributes.clear
15
+ clear_attribute_changes(changes.keys)
16
16
  end
17
17
  end
18
18
 
@@ -57,6 +57,7 @@ module ActiveFedora::Attributes
57
57
 
58
58
  def build(&block)
59
59
  # TODO: remove this block stuff
60
+ # See https://github.com/samvera/active_fedora/issues/1336
60
61
  NodeConfig.new(name, options[:predicate], options.except(:predicate)) do |config|
61
62
  config.with_index(&block) if block_given?
62
63
  end
@@ -215,7 +215,8 @@ module ActiveFedora
215
215
  :after_initialize, :after_find, :before_validation, :after_validation,
216
216
  :before_save, :around_save, :after_save, :before_create, :around_create,
217
217
  :after_create, :before_update, :around_update, :after_update,
218
- :before_destroy, :around_destroy, :after_destroy
218
+ :before_destroy, :around_destroy, :after_destroy,
219
+ :before_update_index, :around_update_index, :after_update_index
219
220
  ].freeze
220
221
 
221
222
  included do
@@ -223,13 +224,17 @@ module ActiveFedora
223
224
  include ActiveModel::Validations::Callbacks
224
225
 
225
226
  define_model_callbacks :initialize, :find, only: :after
226
- define_model_callbacks :save, :create, :update, :destroy
227
+ define_model_callbacks :save, :create, :update, :destroy, :update_index
227
228
  end
228
229
 
229
230
  def destroy(*) #:nodoc:
230
231
  _run_destroy_callbacks { super }
231
232
  end
232
233
 
234
+ def update_index(*args)
235
+ _run_update_index_callbacks { super(*args) }
236
+ end
237
+
233
238
  private
234
239
 
235
240
  def create_or_update(*)
@@ -103,5 +103,13 @@ module ActiveFedora
103
103
  ActiveFedora::Base.logger.warn "Fedora URL (#{host}) does not end with /rest. This could be a problem. Check your fedora.yml config"
104
104
  end
105
105
  end
106
+
107
+ def ntriples_connection
108
+ authorized_connection.tap { |conn| conn.headers['Accept'] = 'application/n-triples' }
109
+ end
110
+
111
+ def build_ntriples_connection
112
+ ActiveFedora::InitializingConnection.new(ActiveFedora::CachingConnection.new(ntriples_connection, omit_ldpr_interaction_model: true), root_resource_path)
113
+ end
106
114
  end
107
115
  end
@@ -43,7 +43,7 @@ module ActiveFedora
43
43
  raise "The first argument to #{self} must be a Hash, String or RDF::URI. You provided a #{identifier.class}"
44
44
  end
45
45
 
46
- @attributes = {}.with_indifferent_access
46
+ @local_attributes = {}.with_indifferent_access
47
47
  @readonly = false
48
48
  yield self if block_given?
49
49
  end
@@ -86,7 +86,7 @@ module ActiveFedora
86
86
  @content = nil
87
87
  @metadata = nil
88
88
  @ds_content = nil
89
- changed_attributes.clear
89
+ clear_attribute_changes(changes.keys)
90
90
  end
91
91
 
92
92
  def check_fixity
@@ -94,12 +94,12 @@ module ActiveFedora
94
94
  end
95
95
 
96
96
  def datastream_will_change!
97
- attribute_will_change! :profile
97
+ attribute_will_change! :ldp_source
98
98
  end
99
99
 
100
100
  def attribute_will_change!(attr)
101
101
  return super unless attr == 'content'
102
- changed_attributes['content'] = true
102
+ attributes_changed_by_setter[:content] = true
103
103
  end
104
104
 
105
105
  def remote_content
@@ -196,7 +196,9 @@ module ActiveFedora
196
196
  end
197
197
 
198
198
  def local_or_remote_content(ensure_fetch = true)
199
- @content ||= ensure_fetch ? remote_content : @ds_content unless new_record?
199
+ return @content if new_record?
200
+
201
+ @content ||= ensure_fetch ? remote_content : @ds_content
200
202
  @content.rewind if behaves_like_io?(@content)
201
203
  @content
202
204
  end
@@ -77,7 +77,7 @@ module ActiveFedora
77
77
  protected
78
78
 
79
79
  def rdf_resource
80
- @rdf_resource ||= Ldp::Resource::RdfSource.new(ActiveFedora.fedora.connection, uri)
80
+ @rdf_resource ||= Ldp::Resource::RdfSource.new(ActiveFedora.fedora.build_ntriples_connection, uri)
81
81
  end
82
82
 
83
83
  def rdf_graph
@@ -22,6 +22,7 @@ module ActiveFedora
22
22
  # @api
23
23
  # Given a field name, index_type, etc., returns the corresponding Solr name.
24
24
  # TODO field type is the input format, maybe we could just detect that?
25
+ # See https://github.com/samvera/active_fedora/issues/1338
25
26
  # @param [String] field_name the ruby (term) name which will get a suffix appended to become a Solr field name
26
27
  # @param opts - index_type is only needed if the FieldDescriptor requires it (e.g. :searcahble)
27
28
  # @return [String] name of the solr field, based on the params
@@ -69,6 +70,7 @@ module ActiveFedora
69
70
 
70
71
  # Is there a custom converter?
71
72
  # TODO instead of a custom converter, look for input data type and output data type. Create a few methods that can do that cast.
73
+ # See https://github.com/samvera/active_fedora/issues/1339
72
74
 
73
75
  value = if converter
74
76
  if converter.arity == 1