sshaw / jaxb2ruby

Generate pure Ruby objects from an XML schema (XSD) using JAXB and JRuby. Use your favorite XML to object mapper or a custom ERB template.
12 stars 9 forks source link

Class generation failed: undefined method `split' for nil:NilClass #3

Closed mlyashenko closed 8 years ago

mlyashenko commented 8 years ago

Error appears while running generator with schema files taken from OpenTravel site:

http://opentravelmodel.net/pubs/content/specifications/downloads/2007A/OTA_1_0/2007A_10_Publication.zip

(this link requires accepting license agreement and some form filling to access)

$ unzip 2007A_10_Publication.zip
$ jaxb2ruby -t roxml _OTA2007A_XML/OTA_VehAvailRateRQ.xsd
outputting classes to ruby
generating: org/opentravel/ota/v2003/v05/acceptable_payment_cards_info_type/acceptable_payment_cards/acceptable_payment_card.rb
generating: org/opentravel/ota/v2003/v05/acceptable_payment_cards_info_type/acceptable_payment_cards.rb
generating: org/opentravel/ota/v2003/v05/acceptable_payment_cards_info_type.rb
generating: org/opentravel/ota/v2003/v05/accepted_payments_type.rb
generating: org/opentravel/ota/v2003/v05/address_info_type.rb
generating: org/opentravel/ota/v2003/v05/address_pref_type.rb
generating: org/opentravel/ota/v2003/v05/address_type/bldg_room.rb
generating: org/opentravel/ota/v2003/v05/address_type/street_nmbr.rb
generating: org/opentravel/ota/v2003/v05/address_type.rb
generating: org/opentravel/ota/v2003/v05/bank_acct_type.rb
generating: org/opentravel/ota/v2003/v05/blackout_date_type.rb
generating: org/opentravel/ota/v2003/v05/cancel_info_rq_type.rb
generating: org/opentravel/ota/v2003/v05/cancel_info_rs_type/cancel_rules.rb
generating: org/opentravel/ota/v2003/v05/cancel_info_rs_type.rb
generating: org/opentravel/ota/v2003/v05/cancel_rule_type.rb
generating: org/opentravel/ota/v2003/v05/comment_type/comment.rb
generating: org/opentravel/ota/v2003/v05/comment_type.rb
generating: org/opentravel/ota/v2003/v05/commission_type/commission_payable_amount.rb
generating: org/opentravel/ota/v2003/v05/commission_type/commissionable_amount.rb
generating: org/opentravel/ota/v2003/v05/commission_type/flat_commission.rb
generating: org/opentravel/ota/v2003/v05/commission_type/prepaid_amount.rb
generating: org/opentravel/ota/v2003/v05/commission_type.rb
generating: org/opentravel/ota/v2003/v05/common_pref_type.rb
class generation failed: undefined method `split' for nil:NilClass
backtrace: 
/home/dev/.rvm/gems/jruby-1.7.16@jaxb/gems/jaxb2ruby-0.0.1-java/lib/jaxb2ruby/classes.rb:171:in `requires'
org/jruby/RubyArray.java:2412:in `map'
/home/dev/.rvm/gems/jruby-1.7.16@jaxb/gems/jaxb2ruby-0.0.1-java/lib/jaxb2ruby/classes.rb:171:in `requires'
(erb):8:in `result'
org/jruby/RubyKernel.java:1101:in `eval'
/home/dev/.rvm/rubies/jruby-1.7.16/lib/ruby/1.9/erb.rb:838:in `result'
/home/dev/.rvm/gems/jruby-1.7.16@jaxb/gems/jaxb2ruby-0.0.1-java/lib/jaxb2ruby/template.rb:30:in `build'
/home/dev/.rvm/gems/jruby-1.7.16@jaxb/gems/jaxb2ruby-0.0.1-java/bin/jaxb2ruby:81:in `(root)'
org/jruby/RubyIO.java:1181:in `open'
/home/dev/.rvm/gems/jruby-1.7.16@jaxb/gems/jaxb2ruby-0.0.1-java/bin/jaxb2ruby:81:in `(root)'
org/jruby/RubyArray.java:1613:in `each'
/home/dev/.rvm/gems/jruby-1.7.16@jaxb/gems/jaxb2ruby-0.0.1-java/bin/jaxb2ruby:78:in `(root)'
org/jruby/RubyKernel.java:1081:in `load'
/home/dev/.rvm/gems/jruby-1.7.16@jaxb/bin/jaxb2ruby:1:in `(root)'
org/jruby/RubyKernel.java:1101:in `eval'
/home/dev/.rvm/gems/jruby-1.7.16@jaxb/bin/jruby_executable_hooks:15:in `(root)'
sshaw commented 8 years ago

Hi, check my latest commit, seems to be working.

The problem was the XSD "language" type was missing from the set of mapped types. Maybe I should make "String" the hash's default value. What do you think?

mlyashenko commented 8 years ago

Looks good. Maybe you should add some extra option like "Map unknown XSD types to "String".