def self.from_xml(xml, create=false)
begin
- p = XML::Parser.new
- p.string = xml
+ p = XML::Parser.string(xml)
doc = p.parse
doc.find('//osm/relation').each do |pt|
return Relation.from_xml_node(pt, create)
end
- rescue LibXML::XML::Error => ex
+ rescue LibXML::XML::Error, ArgumentError => ex
raise OSM::APIBadXMLError.new("relation", xml, ex.message)
end
end
# The follow block does not need to be executed because they are dealt with
# in create_with_history, update_from and delete_with_history
if create
- relation.timestamp = Time.now
+ relation.timestamp = Time.now.getutc
relation.visible = true
relation.version = 0
else
raise OSM::APIPreconditionFailedError.new
end
self.changeset_id = new_relation.changeset_id
+ self.changeset = new_relation.changeset
self.tags = new_relation.tags
self.members = new_relation.members
self.visible = true
# changed then we have to monitor their before and after state.
tags_changed = false
- t = Time.now
+ t = Time.now.getutc
self.version += 1
self.timestamp = t
self.save!
tag.id = self.id
tag.save!
end
+
+ # reload, so that all of the members are accessible in their
+ # new state.
+ self.reload
# same pattern as before, but this time we're collecting the
# changed members in an array, as the bounding box updates for