lib/wasabi/document.rb in wasabi-2.0.0 vs lib/wasabi/document.rb in wasabi-2.1.0
- old
+ new
@@ -6,10 +6,21 @@
# = Wasabi::Document
#
# Represents a WSDL document.
class Document
+ ELEMENT_FORM_DEFAULTS = [:unqualified, :qualified]
+
+ # Validates if a given +value+ is a valid elementFormDefault value.
+ # Raises an +ArgumentError+ if the value is not valid.
+ def self.validate_element_form_default!(value)
+ return if ELEMENT_FORM_DEFAULTS.include?(value)
+
+ raise ArgumentError, "Invalid value for elementFormDefault: #{value}\n" +
+ "Must be one of: #{ELEMENT_FORM_DEFAULTS.inspect}"
+ end
+
# Accepts a WSDL +document+ to parse.
def initialize(document = nil)
self.document = document
end
@@ -36,13 +47,19 @@
# Sets the target namespace.
attr_writer :namespace
# Returns the value of elementFormDefault.
def element_form_default
- @element_form_default ||= parser.element_form_default
+ @element_form_default ||= xml? ? parser.element_form_default : :unqualified
end
+ # Sets the elementFormDefault value.
+ def element_form_default=(value)
+ self.class.validate_element_form_default!(value)
+ @element_form_default = value
+ end
+
# Returns a list of available SOAP actions.
def soap_actions
@soap_actions ||= parser.operations.keys
end
@@ -96,19 +113,24 @@
# Can be used as a hook to extend the library.
def xml
@xml ||= document
end
+ # Returns whether there is a WSDL document to parse.
+ def xml?
+ xml.kind_of?(String)
+ end
+
# Parses the WSDL document and returns the <tt>Wasabi::Parser</tt>.
def parser
@parser ||= guard_parse && parse
end
private
# Raises an error if the WSDL document is missing.
def guard_parse
- return true if xml.kind_of?(String)
+ return true if xml?
raise ArgumentError, "Wasabi needs a WSDL document"
end
# Parses the WSDL document and returns <tt>Wasabi::Parser</tt>.
def parse