active-fedora 9.0.3 → 9.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.txt +5 -0
- data/lib/active_fedora/core.rb +12 -22
- data/lib/active_fedora/fedora_attributes.rb +6 -0
- data/lib/active_fedora/version.rb +1 -1
- data/spec/unit/base_spec.rb +24 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8399fafb48e7230ac7b01d1902b7f5c08cbbd32c
|
4
|
+
data.tar.gz: a7bba75db0807336e62720997ccc30465b492356
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25eaf5eacaacbe1c4889f3c2cc2381a06a38a7aced2c5dd06b9ea6d5497b512b24f923fca57b8b3b1a49ace425841463a71c8d2e036dd3db6e2d46006bb09810
|
7
|
+
data.tar.gz: 8e5a5556ad3acd780f352feb6043053a41b1ae9be13446d269676748d46ce0830a4beae2550621b14af1ee897145eb7a6151d3a98d0a81ee60e49337ecd60527
|
data/History.txt
CHANGED
data/lib/active_fedora/core.rb
CHANGED
@@ -33,13 +33,14 @@ module ActiveFedora
|
|
33
33
|
# Also, if +attrs+ does not contain +:id+ but does contain +:namespace+ it will pass the
|
34
34
|
# +:namespace+ value to Fedora::Repository.nextid to generate the next id available within
|
35
35
|
# the given namespace.
|
36
|
-
def initialize(
|
36
|
+
def initialize(attributes_or_id = nil, &block)
|
37
37
|
init_internals
|
38
|
-
attributes =
|
38
|
+
attributes = initialize_attributes(attributes_or_id)
|
39
|
+
@ldp_source = build_ldp_resource(attributes.delete(:id))
|
39
40
|
raise IllegalOperation, "Attempting to recreate existing ldp_source: `#{ldp_source.subject}'" unless ldp_source.new?
|
40
41
|
assert_content_model
|
41
42
|
load_attached_files
|
42
|
-
self.attributes = attributes
|
43
|
+
self.attributes = attributes
|
43
44
|
|
44
45
|
yield self if block_given?
|
45
46
|
run_callbacks :initialize
|
@@ -138,7 +139,7 @@ module ActiveFedora
|
|
138
139
|
else
|
139
140
|
id = "/#{id}" unless id.start_with? SLASH
|
140
141
|
unless ActiveFedora.fedora.base_path == SLASH || id.start_with?("#{ActiveFedora.fedora.base_path}/")
|
141
|
-
id = ActiveFedora.fedora.base_path + id
|
142
|
+
id = ActiveFedora.fedora.base_path + id
|
142
143
|
end
|
143
144
|
ActiveFedora.fedora.host + id
|
144
145
|
end
|
@@ -193,33 +194,22 @@ module ActiveFedora
|
|
193
194
|
end
|
194
195
|
end
|
195
196
|
|
196
|
-
def
|
197
|
-
case
|
197
|
+
def initialize_attributes attributes_or_id
|
198
|
+
case attributes_or_id
|
198
199
|
when String
|
199
|
-
|
200
|
-
@attributes = {}.with_indifferent_access
|
200
|
+
attributes = {id: attributes_or_id}.with_indifferent_access
|
201
201
|
when Hash
|
202
|
-
attributes =
|
203
|
-
|
204
|
-
id = attributes.delete(:id)
|
205
|
-
|
202
|
+
attributes = attributes_or_id.with_indifferent_access
|
206
203
|
# TODO: Remove when we decide using 'pid' is no longer supported.
|
207
|
-
if !id && attributes.
|
204
|
+
if !attributes.key?(:id) && attributes.key?(:pid)
|
208
205
|
Deprecation.warn Core, 'Initializing with :pid is deprecated and will be removed in active-fedora 10.0. Use :id instead'
|
209
|
-
id = attributes.delete(:pid)
|
206
|
+
attributes[:id] = attributes.delete(:pid)
|
210
207
|
end
|
211
208
|
|
212
|
-
attributes = attributes.with_indifferent_access if attributes
|
213
|
-
@ldp_source = if id
|
214
|
-
build_ldp_resource(id)
|
215
|
-
else
|
216
|
-
build_ldp_resource
|
217
|
-
end
|
218
209
|
when NilClass
|
219
|
-
@ldp_source = build_ldp_resource
|
220
210
|
attributes = {}.with_indifferent_access
|
221
211
|
else
|
222
|
-
raise ArgumentError, "#{
|
212
|
+
raise ArgumentError, "#{attributes_or_id.class} is not acceptable"
|
223
213
|
end
|
224
214
|
return attributes
|
225
215
|
end
|
@@ -34,6 +34,12 @@ module ActiveFedora
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
def id=(id)
|
38
|
+
raise "ID has already been set to #{self.id}" if self.id
|
39
|
+
@ldp_source = build_ldp_resource(id.to_s)
|
40
|
+
end
|
41
|
+
|
42
|
+
|
37
43
|
# TODO: Remove after we no longer support #pid.
|
38
44
|
def pid
|
39
45
|
Deprecation.warn FedoraAttributes, "#{self.class}#pid is deprecated and will be removed in active-fedora 10.0. Use #{self.class}#id instead."
|
data/spec/unit/base_spec.rb
CHANGED
@@ -4,6 +4,30 @@ require 'spec_helper'
|
|
4
4
|
describe ActiveFedora::Base do
|
5
5
|
it_behaves_like "An ActiveModel"
|
6
6
|
|
7
|
+
describe "id=" do
|
8
|
+
before do
|
9
|
+
class FooHistory < ActiveFedora::Base
|
10
|
+
property :title, predicate: ::RDF::DC.title
|
11
|
+
end
|
12
|
+
end
|
13
|
+
after do
|
14
|
+
Object.send(:remove_const, :FooHistory)
|
15
|
+
end
|
16
|
+
|
17
|
+
subject { FooHistory.new(title: ["A good title"]) }
|
18
|
+
before { subject.id = 9 }
|
19
|
+
|
20
|
+
it "is settable" do
|
21
|
+
expect(subject.id).to eq '9'
|
22
|
+
expect(subject.title).to eq ["A good title"]
|
23
|
+
end
|
24
|
+
|
25
|
+
it "is only settable once" do
|
26
|
+
expect { subject.id = 10 }.to raise_error "ID has already been set to 9"
|
27
|
+
expect(subject.id).to eq '9'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
7
31
|
describe 'descendants' do
|
8
32
|
it "should record the decendants" do
|
9
33
|
expect(ActiveFedora::Base.descendants).to include(ModsArticle, SpecialThing)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.0.
|
4
|
+
version: 9.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-03-
|
13
|
+
date: 2015-03-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|
@@ -565,3 +565,4 @@ signing_key:
|
|
565
565
|
specification_version: 4
|
566
566
|
summary: A convenience libary for manipulating documents in the Fedora Repository.
|
567
567
|
test_files: []
|
568
|
+
has_rdoc:
|