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)