# This will throw an exception if there is an inconsistency
def check_consistency(old, new, user)
if new.version != old.version
- raise OSM::APIVersionMismatchError.new(new.version, old.version)
+ raise OSM::APIVersionMismatchError.new(new.id, new.class.to_s, new.version, old.version)
elsif new.changeset.nil?
raise OSM::APIChangesetMissingError.new
elsif new.changeset.user_id != user.id
# Raised when the provided version is not equal to the latest in the db.
class APIVersionMismatchError < APIError
- def initialize(provided, latest)
- @provided, @latest = provided, latest
+ def initialize(id, type, provided, latest)
+ @id, @type, @provided, @latest = id, type, provided, latest
end
- attr_reader :provided, :latest
+ attr_reader :provided, :latest, :id, :type
def render_opts
{ :text => "Version mismatch: Provided " + provided.to_s +
- ", server had: " + latest.to_s, :status => :conflict }
+ ", server had: " + latest.to_s + " of " + type + " " + id.to_s,
+ :status => :conflict }
end
end