lib/rdf/ldp/container.rb in rdf-ldp-0.5.1 vs lib/rdf/ldp/container.rb in rdf-ldp-0.6.0
- old
+ new
@@ -118,11 +118,11 @@
# @param resource [RDF::Term] a new member for this container
# @param transaction [RDF::Transaction]
# @return [Container] self
def add_containment_triple(resource, transaction = nil)
target = transaction || graph
- target << make_containment_triple(resource)
+ target.insert make_containment_triple(resource)
set_last_modified(transaction)
self
end
##
@@ -199,31 +199,21 @@
end
def validate_triples!(transaction)
existing_triples = containment_triples.to_a
- inserts = transaction.inserts.select do |st|
- st.subject == subject_uri && st.predicate == RDF::Vocab::LDP.contains
- end
+ tx_containment = transaction.query(subject: subject_uri,
+ predicate: RDF::Vocab::LDP.contains)
- inserts.each do |statement|
- existing_triples.delete(statement) do
- raise Conflict.new('Attempted to write unacceptable LDP ' \
- "containment-triple: #{statement}")
- end
+ tx_containment.each do |statement|
+ raise Conflict.new('Attempted to write unacceptable LDP ' \
+ "containment-triple: #{statement}") unless
+ existing_triples.include?(statement)
end
- deletes = transaction.deletes.select do |st|
- st.subject == subject_uri &&
- predicate == RDF::Vocab::LDP.contains &&
- !inserts.include?(st)
- end
-
- deletes = deletes + existing_triples
-
+ deletes = existing_triples.reject { |st| tx_containment.include?(st) }
raise Conflict.new('Cannot remove containment triples in updates. ' \
- "Attepted to remove #{deletes}") unless
- deletes.empty?
+ "Attepted to remove #{deletes}") unless deletes.empty?
end
##
# supports Patch.
def validate_statements!(statements)