]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/way.rb
Made XML parsing routines raise an exception if the document is valid XML, but not...
[rails.git] / app / models / way.rb
index f9d36be93811cf32c071c5d1af518333ab54fb2c..639f4e69a770ad94e1d2ccda8884d90cabffa459 100644 (file)
@@ -34,6 +34,7 @@ class Way < ActiveRecord::Base
       doc.find('//osm/way').each do |pt|
         return Way.from_xml_node(pt, create)
       end
+      raise OSM::APIBadXMLError.new("node", xml, "XML doesn't contain an osm/way element.")
     rescue LibXML::XML::Error, ArgumentError => ex
       raise OSM::APIBadXMLError.new("way", xml, ex.message)
     end
@@ -61,6 +62,8 @@ class Way < ActiveRecord::Base
     way.visible = true
 
     pt.find('tag').each do |tag|
+      raise OSM::APIBadXMLError.new("way", pt, "tag is missing key") if tag['k'].nil?
+      raise OSM::APIBadXMLError.new("way", pt, "tag is missing value") if tag['v'].nil?
       way.add_tag_keyval(tag['k'], tag['v'])
     end
 
@@ -232,7 +235,7 @@ class Way < ActiveRecord::Base
   def preconditions_ok?(old_nodes = [])
     return false if self.nds.empty?
     if self.nds.length > APP_CONFIG['max_number_of_way_nodes']
-      raise OSM::APITooManyWayNodesError.new(self.nds.length, APP_CONFIG['max_number_of_way_nodes'])
+      raise OSM::APITooManyWayNodesError.new(self.id, self.nds.length, APP_CONFIG['max_number_of_way_nodes'])
     end
 
     # check only the new nodes, for efficiency - old nodes having been checked last time and can't