wasabi 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,9 @@
1
1
  rvm:
2
2
  - 1.8.7
3
3
  - 1.9.2
4
- - ruby-head
4
+ - 1.9.3
5
+ - jruby-18mode
6
+ - jruby-19mode
7
+ - rbx-18mode
8
+ - rbx-19mode
5
9
  - ree
6
- - rbx
7
- - rbx-2.0
8
- - jruby
@@ -1,3 +1,10 @@
1
+ ## 2.1.0 (2012-02-17)
2
+
3
+ * Improvement: The value of elementFormDefault can now be manually specified/overwritten.
4
+
5
+ * Improvement: [issue 2](https://github.com/rubiii/wasabi/issues/2) - Allow symbolic endpoints
6
+ like "http://server:port".
7
+
1
8
  ## 2.0.0 (2011-07-07)
2
9
 
3
10
  * Feature: Wasabi can now parse type definitions and namespaces.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Wasabi [![Build Status](http://travis-ci.org/rubiii/wasabi.png)](http://travis-ci.org/rubiii/wasabi)
1
+ Wasabi [![Build Status](https://secure.travis-ci.org/rubiii/wasabi.png)](http://travis-ci.org/rubiii/wasabi)
2
2
  =====
3
3
 
4
4
  A simple WSDL parser.
data/Rakefile CHANGED
@@ -1,11 +1,7 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
3
-
1
+ require "bundler/gem_tasks"
4
2
  require "rspec/core/rake_task"
5
3
 
6
- RSpec::Core::RakeTask.new do |t|
7
- t.rspec_opts = %w(-c)
8
- end
4
+ RSpec::Core::RakeTask.new
9
5
 
10
6
  task :default => :spec
11
7
  task :test => :spec
@@ -8,6 +8,17 @@ module Wasabi
8
8
  # Represents a WSDL document.
9
9
  class Document
10
10
 
11
+ ELEMENT_FORM_DEFAULTS = [:unqualified, :qualified]
12
+
13
+ # Validates if a given +value+ is a valid elementFormDefault value.
14
+ # Raises an +ArgumentError+ if the value is not valid.
15
+ def self.validate_element_form_default!(value)
16
+ return if ELEMENT_FORM_DEFAULTS.include?(value)
17
+
18
+ raise ArgumentError, "Invalid value for elementFormDefault: #{value}\n" +
19
+ "Must be one of: #{ELEMENT_FORM_DEFAULTS.inspect}"
20
+ end
21
+
11
22
  # Accepts a WSDL +document+ to parse.
12
23
  def initialize(document = nil)
13
24
  self.document = document
@@ -38,7 +49,13 @@ module Wasabi
38
49
 
39
50
  # Returns the value of elementFormDefault.
40
51
  def element_form_default
41
- @element_form_default ||= parser.element_form_default
52
+ @element_form_default ||= xml? ? parser.element_form_default : :unqualified
53
+ end
54
+
55
+ # Sets the elementFormDefault value.
56
+ def element_form_default=(value)
57
+ self.class.validate_element_form_default!(value)
58
+ @element_form_default = value
42
59
  end
43
60
 
44
61
  # Returns a list of available SOAP actions.
@@ -98,6 +115,11 @@ module Wasabi
98
115
  @xml ||= document
99
116
  end
100
117
 
118
+ # Returns whether there is a WSDL document to parse.
119
+ def xml?
120
+ xml.kind_of?(String)
121
+ end
122
+
101
123
  # Parses the WSDL document and returns the <tt>Wasabi::Parser</tt>.
102
124
  def parser
103
125
  @parser ||= guard_parse && parse
@@ -107,7 +129,7 @@ module Wasabi
107
129
 
108
130
  # Raises an error if the WSDL document is missing.
109
131
  def guard_parse
110
- return true if xml.kind_of?(String)
132
+ return true if xml?
111
133
  raise ArgumentError, "Wasabi needs a WSDL document"
112
134
  end
113
135
 
@@ -1,4 +1,5 @@
1
1
  require "uri"
2
+ require "wasabi/xpath_helper"
2
3
  require "wasabi/core_ext/object"
3
4
  require "wasabi/core_ext/string"
4
5
 
@@ -8,32 +9,36 @@ module Wasabi
8
9
  #
9
10
  # Parses WSDL documents and remembers their important parts.
10
11
  class Parser
11
-
12
- def initialize(nokogiri_document)
13
- @document = nokogiri_document
14
- @operations = {}
15
- @namespaces = {}
16
- @types = {}
17
- @element_form_default = :unqualified
12
+ include XPathHelper
13
+
14
+ def initialize(document)
15
+ self.document = document
16
+ self.operations = {}
17
+ self.namespaces = {}
18
+ self.types = {}
19
+ self.element_form_default = :unqualified
18
20
  end
19
21
 
22
+ # Returns the Nokogiri document.
23
+ attr_accessor :document
24
+
20
25
  # Returns the target namespace.
21
- attr_reader :namespace
26
+ attr_accessor :namespace
22
27
 
23
28
  # Returns a map from namespace identifier to namespace URI.
24
- attr_reader :namespaces
29
+ attr_accessor :namespaces
25
30
 
26
31
  # Returns the SOAP operations.
27
- attr_reader :operations
32
+ attr_accessor :operations
28
33
 
29
34
  # Returns a map from a type name to a Hash with type information.
30
- attr_reader :types
35
+ attr_accessor :types
31
36
 
32
37
  # Returns the SOAP endpoint.
33
- attr_reader :endpoint
38
+ attr_accessor :endpoint
34
39
 
35
40
  # Returns the elementFormDefault value.
36
- attr_reader :element_form_default
41
+ attr_accessor :element_form_default
37
42
 
38
43
  def parse
39
44
  parse_namespaces
@@ -43,101 +48,64 @@ module Wasabi
43
48
  end
44
49
 
45
50
  def parse_namespaces
46
- element_form_default = @document.at_xpath(
47
- "s0:definitions/s0:types/xs:schema/@elementFormDefault",
48
- "s0" => "http://schemas.xmlsoap.org/wsdl/",
49
- "xs" => "http://www.w3.org/2001/XMLSchema")
51
+ element_form_default = at_xpath("wsdl:definitions/wsdl:types/xs:schema/@elementFormDefault")
50
52
  @element_form_default = element_form_default.to_s.to_sym if element_form_default
51
53
 
52
- namespace = @document.at_xpath(
53
- "s0:definitions/@targetNamespace",
54
- "s0" => "http://schemas.xmlsoap.org/wsdl/")
54
+ namespace = at_xpath("wsdl:definitions/@targetNamespace")
55
55
  @namespace = namespace.to_s if namespace
56
56
 
57
- @namespaces = @document.collect_namespaces.inject({}) do |result, (key, value)|
58
- result.merge(key.gsub(/xmlns:/, '') => value)
59
- end
57
+ @namespaces = @document.collect_namespaces.
58
+ inject({}) { |result, (key, value)| result.merge(key.gsub(/xmlns:/, "") => value) }
60
59
  end
61
60
 
62
61
  def parse_endpoint
63
- endpoint = @document.at_xpath(
64
- "s0:definitions/s0:service//soap11:address/@location",
65
- "s0" => "http://schemas.xmlsoap.org/wsdl/",
66
- "soap11" => "http://schemas.xmlsoap.org/wsdl/soap/")
67
- endpoint ||= @document.at_xpath(
68
- "s0:definitions/s0:service//soap12:address/@location",
69
- "s0" => "http://schemas.xmlsoap.org/wsdl/",
70
- "soap12" => "http://schemas.xmlsoap.org/wsdl/soap12/")
71
-
72
- @endpoint = URI(URI.escape(endpoint.to_s)) if endpoint
62
+ endpoint = at_xpath("wsdl:definitions/wsdl:service//soap11:address/@location")
63
+ endpoint ||= at_xpath("wsdl:definitions/wsdl:service//soap12:address/@location")
64
+
65
+ begin
66
+ @endpoint = URI(URI.escape(endpoint.to_s)) if endpoint
67
+ rescue URI::InvalidURIError
68
+ @endpoint = nil
69
+ end
73
70
  end
74
71
 
75
72
  def parse_operations
76
- operations = @document.xpath(
77
- "s0:definitions/s0:binding/s0:operation",
78
- "s0" => "http://schemas.xmlsoap.org/wsdl/")
73
+ operations = xpath("wsdl:definitions/wsdl:binding/wsdl:operation")
79
74
  operations.each do |operation|
80
75
  name = operation.attribute("name").to_s
81
76
 
82
- soap_action = operation.at_xpath(".//soap11:operation/@soapAction",
83
- "soap11" => "http://schemas.xmlsoap.org/wsdl/soap/"
84
- )
85
- soap_action ||= operation.at_xpath(".//soap12:operation/@soapAction",
86
- "soap12" => "http://schemas.xmlsoap.org/wsdl/soap12/"
87
- )
77
+ soap_action = at_xpath(operation, ".//soap11:operation/@soapAction")
78
+ soap_action ||= at_xpath(operation, ".//soap12:operation/@soapAction")
88
79
 
89
80
  if soap_action
90
81
  soap_action = soap_action.to_s
91
-
92
82
  action = soap_action.blank? ? name : soap_action
93
83
  input = name.blank? ? action.split("/").last : name
94
-
95
- @operations[input.snakecase.to_sym] =
96
- { :action => action, :input => input }
84
+ @operations[input.snakecase.to_sym] = { :action => action, :input => input }
97
85
  elsif !@operations[name.snakecase.to_sym]
98
- @operations[name.snakecase.to_sym] =
99
- { :action => name, :input => name }
86
+ @operations[name.snakecase.to_sym] = { :action => name, :input => name }
100
87
  end
101
88
  end
102
89
  end
103
90
 
104
91
  def parse_types
105
- @document.xpath(
106
- "s0:definitions/s0:types/xs:schema/xs:element[@name]",
107
- "s0" => "http://schemas.xmlsoap.org/wsdl/",
108
- "xs" => "http://www.w3.org/2001/XMLSchema"
109
- ).each do |type|
110
- process_type(type.at_xpath('./xs:complexType',
111
- "xs" => "http://www.w3.org/2001/XMLSchema"
112
- ), type.attribute('name').to_s)
113
- end
92
+ xpath("wsdl:definitions/wsdl:types/xs:schema/xs:element[@name]").
93
+ each { |type| process_type(at_xpath(type, "./xs:complexType"), type.attribute("name").to_s) }
114
94
 
115
- @document.xpath(
116
- "s0:definitions/s0:types/xs:schema/xs:complexType[@name]",
117
- "s0" => "http://schemas.xmlsoap.org/wsdl/",
118
- "xs" => "http://www.w3.org/2001/XMLSchema"
119
- ).each do |type|
120
- process_type(type, type.attribute('name').to_s)
121
- end
95
+ xpath("wsdl:definitions/wsdl:types/xs:schema/xs:complexType[@name]").
96
+ each { |type| process_type(type, type.attribute("name").to_s) }
122
97
  end
123
98
 
124
99
  def process_type(type, name)
125
100
  return unless type
126
101
  @types[name] ||= { :namespace => find_namespace(type) }
127
102
 
128
- type.xpath("./xs:sequence/xs:element",
129
- "xs" => "http://www.w3.org/2001/XMLSchema"
130
- ).each do |inner_element|
131
- @types[name][inner_element.attribute('name').to_s] = {
132
- :type => inner_element.attribute('type').to_s
133
- }
134
- end
103
+ xpath(type, "./xs:sequence/xs:element").
104
+ each { |inner| @types[name][inner.attribute("name").to_s] = { :type => inner.attribute("type").to_s } }
135
105
  end
136
106
 
137
107
  def find_namespace(type)
138
- schema_namespace = type.at_xpath("ancestor::xs:schema/@targetNamespace",
139
- "xs" => "http://www.w3.org/2001/XMLSchema"
140
- )
108
+ schema_namespace = at_xpath(type, "ancestor::xs:schema/@targetNamespace")
141
109
  schema_namespace ? schema_namespace.to_s : @namespace
142
110
  end
143
111
 
@@ -1,5 +1,5 @@
1
1
  module Wasabi
2
2
 
3
- VERSION = "2.0.0"
3
+ VERSION = "2.1.0"
4
4
 
5
5
  end
@@ -0,0 +1,30 @@
1
+ module Wasabi
2
+ module XPathHelper
3
+
4
+ NAMESPACES = {
5
+ "xs" => "http://www.w3.org/2001/XMLSchema",
6
+ "wsdl" => "http://schemas.xmlsoap.org/wsdl/",
7
+ "soap11" => "http://schemas.xmlsoap.org/wsdl/soap/",
8
+ "soap12" => "http://schemas.xmlsoap.org/wsdl/soap12/"
9
+ }
10
+
11
+ def xpath(*args)
12
+ node, xpath = extract_xpath_args(args)
13
+ node.xpath(xpath, NAMESPACES)
14
+ end
15
+
16
+ def at_xpath(*args)
17
+ node, xpath = extract_xpath_args(args)
18
+ node.at_xpath(xpath, NAMESPACES)
19
+ end
20
+
21
+ private
22
+
23
+ def extract_xpath_args(args)
24
+ xpath, target = args.reverse
25
+ target ||= document if respond_to?(:document)
26
+ [target, xpath]
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,190 @@
1
+ <!--This WSDL was generated by the webservice framework generator Version 1.8.14 on 2011-08-10T13:34:02.156+0200-->
2
+ <wsdl:definitions targetNamespace="http://webservices.partner.example.de" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://webservices.partner.example.de" xmlns:intf="http://webservices.partner.example.de" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns2="http://model.webservices.partner.example.de" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3
+ <wsdl:types>
4
+ <schema targetNamespace="http://model.webservices.partner.example.de" xmlns="http://www.w3.org/2001/XMLSchema">
5
+ <complexType name="DtTqEbUser">
6
+ <sequence>
7
+ <element name="simulate" nillable="true" type="xsd:boolean"/>
8
+ <element name="mandant" nillable="true">
9
+ <simpleType>
10
+ <restriction base="xsd:string">
11
+ <maxLength value="5"/>
12
+ </restriction>
13
+ </simpleType>
14
+ </element>
15
+ <element name="racfUser" nillable="true">
16
+ <simpleType>
17
+ <restriction base="xsd:string">
18
+ <maxLength value="8"/>
19
+ </restriction>
20
+ </simpleType>
21
+ </element>
22
+ <element name="caller" nillable="true">
23
+ <simpleType>
24
+ <restriction base="xsd:string">
25
+ <maxLength value="32"/>
26
+ </restriction>
27
+ </simpleType>
28
+ </element>
29
+ <element name="realUser" nillable="true">
30
+ <simpleType>
31
+ <restriction base="xsd:string">
32
+ <maxLength value="32"/>
33
+ </restriction>
34
+ </simpleType>
35
+ </element>
36
+ <element fixed="PA8526" name="module" type="xsd:string"/>
37
+ </sequence>
38
+ </complexType>
39
+ <complexType name="Message">
40
+ <sequence>
41
+ <element name="fehlerklasse" nillable="true">
42
+ <simpleType>
43
+ <restriction base="xsd:string">
44
+ <maxLength value="2"/>
45
+ </restriction>
46
+ </simpleType>
47
+ </element>
48
+ <element name="fehlerart" nillable="true">
49
+ <simpleType>
50
+ <restriction base="xsd:string">
51
+ <maxLength value="7"/>
52
+ </restriction>
53
+ </simpleType>
54
+ </element>
55
+ <element name="fehlermeldung" nillable="true">
56
+ <simpleType>
57
+ <restriction base="xsd:string">
58
+ <maxLength value="200"/>
59
+ </restriction>
60
+ </simpleType>
61
+ </element>
62
+ <element name="extraFehlertext" nillable="true">
63
+ <simpleType>
64
+ <restriction base="xsd:string">
65
+ <maxLength value="200"/>
66
+ </restriction>
67
+ </simpleType>
68
+ </element>
69
+ </sequence>
70
+ </complexType>
71
+ <complexType name="ArrayOfMessage">
72
+ <sequence>
73
+ <element maxOccurs="unbounded" minOccurs="0" name="message" nillable="true" type="tns2:Message"/>
74
+ </sequence>
75
+ </complexType>
76
+ <complexType name="Returnobject">
77
+ <sequence>
78
+ <element name="messages" nillable="true" type="tns2:ArrayOfMessage"/>
79
+ <element name="returncode" nillable="true">
80
+ <simpleType>
81
+ <restriction base="xsd:string">
82
+ <maxLength value="30"/>
83
+ </restriction>
84
+ </simpleType>
85
+ </element>
86
+ </sequence>
87
+ </complexType>
88
+ <complexType name="ArrayOfDtPaStBezRollenStruktur">
89
+ <sequence>
90
+ <element maxOccurs="unbounded" minOccurs="0" name="DtPaStBezRollenStrukturArray" nillable="true" type="tns2:DtPaStBezRollenStruktur"/>
91
+ </sequence>
92
+ </complexType>
93
+ <complexType name="DtPaStBezRollenStruktur">
94
+ <sequence>
95
+ <element name="paCode" nillable="true">
96
+ <simpleType>
97
+ <restriction base="xsd:int">
98
+ <xsd:minInclusive value="0000"/>
99
+ <xsd:maxExclusive value="32767"/>
100
+ </restriction>
101
+ </simpleType>
102
+ </element>
103
+ <element name="kurzbezeichnung" nillable="true">
104
+ <simpleType>
105
+ <restriction base="xsd:string">
106
+ <maxLength value="15"/>
107
+ </restriction>
108
+ </simpleType>
109
+ </element>
110
+ <element name="bezeichnung" nillable="true">
111
+ <simpleType>
112
+ <restriction base="xsd:string">
113
+ <maxLength value="60"/>
114
+ </restriction>
115
+ </simpleType>
116
+ </element>
117
+ <element name="codeInvers" nillable="true">
118
+ <simpleType>
119
+ <restriction base="xsd:int">
120
+ <xsd:minInclusive value="0000"/>
121
+ <xsd:maxExclusive value="32767"/>
122
+ </restriction>
123
+ </simpleType>
124
+ </element>
125
+ <element name="partnertypCd" nillable="true">
126
+ <simpleType>
127
+ <restriction base="xsd:int">
128
+ <xsd:minInclusive value="0000"/>
129
+ <xsd:maxExclusive value="32767"/>
130
+ </restriction>
131
+ </simpleType>
132
+ </element>
133
+ <element name="sortierfolge" nillable="true">
134
+ <simpleType>
135
+ <restriction base="xsd:int">
136
+ <xsd:minInclusive value="0000"/>
137
+ <xsd:maxExclusive value="32767"/>
138
+ </restriction>
139
+ </simpleType>
140
+ </element>
141
+ <element name="verwendbarkeit" nillable="true">
142
+ <simpleType>
143
+ <restriction base="xsd:string">
144
+ <maxLength value="1"/>
145
+ </restriction>
146
+ </simpleType>
147
+ </element>
148
+ </sequence>
149
+ </complexType>
150
+ <complexType name="ROPtsLiesListe">
151
+ <complexContent>
152
+ <extension base="tns2:Returnobject">
153
+ <sequence>
154
+ <element name="listenteil" nillable="true" type="tns2:ArrayOfDtPaStBezRollenStruktur"/>
155
+ </sequence>
156
+ </extension>
157
+ </complexContent>
158
+ </complexType>
159
+ </schema>
160
+ </wsdl:types>
161
+ <wsdl:message name="ptsLiesListeResponse">
162
+ <wsdl:part name="ROPtsLiesListe" type="tns2:ROPtsLiesListe"/>
163
+ </wsdl:message>
164
+ <wsdl:message name="ptsLiesListeRequest">
165
+ <wsdl:part name="user" type="tns2:DtTqEbUser"/>
166
+ </wsdl:message>
167
+ <wsdl:portType name="PaPtsStBezRollen">
168
+ <wsdl:operation name="ptsLiesListe" parameterOrder="user">
169
+ <wsdl:input message="intf:ptsLiesListeRequest" name="ptsLiesListeRequest"/>
170
+ <wsdl:output message="intf:ptsLiesListeResponse" name="ptsLiesListeResponse"/>
171
+ </wsdl:operation>
172
+ </wsdl:portType>
173
+ <wsdl:binding name="webservices.partner.example.deSoapBinding" type="intf:PaPtsStBezRollen">
174
+ <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
175
+ <wsdl:operation name="ptsLiesListe">
176
+ <wsdlsoap:operation soapAction=""/>
177
+ <wsdl:input name="ptsLiesListeRequest">
178
+ <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal"/>
179
+ </wsdl:input>
180
+ <wsdl:output name="ptsLiesListeResponse">
181
+ <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal"/>
182
+ </wsdl:output>
183
+ </wsdl:operation>
184
+ </wsdl:binding>
185
+ <wsdl:service name="PaPtsStBezRollenService">
186
+ <wsdl:port binding="intf:webservices.partner.example.deSoapBinding" name="de.example.partner.webservices">
187
+ <wsdlsoap:address location="http://server:port/CICS/CWBA/DFHWSDSH/DQ5006"/>
188
+ </wsdl:port>
189
+ </wsdl:service>
190
+ </wsdl:definitions>
@@ -0,0 +1,41 @@
1
+ require "spec_helper"
2
+
3
+ describe Wasabi::Document do
4
+
5
+ subject { Wasabi::Document.new }
6
+
7
+ describe ".validate_element_form_default!" do
8
+ [:unqualified, :qualified].each do |value|
9
+ it "does not raise for :#{value}" do
10
+ expect { Wasabi::Document.validate_element_form_default!(value) }.to_not raise_error
11
+ end
12
+ end
13
+
14
+ it "raises if given an invalid value" do
15
+ error_msg = "Invalid value for elementFormDefault: invalid\n" +
16
+ "Must be one of: [:unqualified, :qualified]"
17
+
18
+ expect { Wasabi::Document.validate_element_form_default!(:invalid) }.
19
+ to raise_error(ArgumentError, error_msg)
20
+ end
21
+ end
22
+
23
+ describe "#element_form_default" do
24
+ it "defaults to :unqualified" do
25
+ subject.element_form_default.should == :unqualified
26
+ end
27
+
28
+ [:unqualified, :qualified].each do |value|
29
+ it "accepts :#{value}" do
30
+ subject.element_form_default = value
31
+ subject.element_form_default.should == value
32
+ end
33
+ end
34
+
35
+ it "raises if set to an invalid value" do
36
+ expect { subject.element_form_default = :invalid }.
37
+ to raise_error(ArgumentError, /Invalid value for elementFormDefault/)
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+
3
+ describe Wasabi::Parser do
4
+ context "with: symbolic_endpoint.xml" do
5
+
6
+ subject do
7
+ parser = Wasabi::Parser.new Nokogiri::XML(xml)
8
+ parser.parse
9
+ parser
10
+ end
11
+
12
+ let(:xml) { fixture(:symbolic_endpoint) }
13
+
14
+ it "allows symbolic endpoints" do
15
+ subject.endpoint.should be_nil
16
+ end
17
+
18
+ end
19
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wasabi
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
+ - 1
8
9
  - 0
9
- - 0
10
- version: 2.0.0
10
+ version: 2.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel Harrington
@@ -15,11 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-07 00:00:00 Z
18
+ date: 2012-02-17 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: nokogiri
22
21
  prerelease: false
22
+ type: :runtime
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
@@ -31,11 +31,11 @@ dependencies:
31
31
  - 4
32
32
  - 0
33
33
  version: 1.4.0
34
- type: :runtime
35
34
  version_requirements: *id001
35
+ name: nokogiri
36
36
  - !ruby/object:Gem::Dependency
37
- name: rake
38
37
  prerelease: false
38
+ type: :development
39
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
@@ -47,11 +47,11 @@ dependencies:
47
47
  - 8
48
48
  - 7
49
49
  version: 0.8.7
50
- type: :development
51
50
  version_requirements: *id002
51
+ name: rake
52
52
  - !ruby/object:Gem::Dependency
53
- name: rspec
54
53
  prerelease: false
54
+ type: :development
55
55
  requirement: &id003 !ruby/object:Gem::Requirement
56
56
  none: false
57
57
  requirements:
@@ -63,11 +63,11 @@ dependencies:
63
63
  - 5
64
64
  - 0
65
65
  version: 2.5.0
66
- type: :development
67
66
  version_requirements: *id003
67
+ name: rspec
68
68
  - !ruby/object:Gem::Dependency
69
- name: mocha
70
69
  prerelease: false
70
+ type: :development
71
71
  requirement: &id004 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
@@ -79,11 +79,11 @@ dependencies:
79
79
  - 9
80
80
  - 8
81
81
  version: 0.9.8
82
- type: :development
83
82
  version_requirements: *id004
83
+ name: mocha
84
84
  - !ruby/object:Gem::Dependency
85
- name: autotest
86
85
  prerelease: false
86
+ type: :development
87
87
  requirement: &id005 !ruby/object:Gem::Requirement
88
88
  none: false
89
89
  requirements:
@@ -93,8 +93,8 @@ dependencies:
93
93
  segments:
94
94
  - 0
95
95
  version: "0"
96
- type: :development
97
96
  version_requirements: *id005
97
+ name: autotest
98
98
  description: A simple WSDL parser
99
99
  email:
100
100
  - me@rubiii.com
@@ -119,6 +119,7 @@ files:
119
119
  - lib/wasabi/document.rb
120
120
  - lib/wasabi/parser.rb
121
121
  - lib/wasabi/version.rb
122
+ - lib/wasabi/xpath_helper.rb
122
123
  - spec/fixtures/authentication.xml
123
124
  - spec/fixtures/geotrust.xml
124
125
  - spec/fixtures/lower_camel.xml
@@ -127,6 +128,7 @@ files:
127
128
  - spec/fixtures/namespaced_actions.xml
128
129
  - spec/fixtures/no_namespace.xml
129
130
  - spec/fixtures/soap12.xml
131
+ - spec/fixtures/symbolic_endpoint.xml
130
132
  - spec/fixtures/two_bindings.xml
131
133
  - spec/spec_helper.rb
132
134
  - spec/support/fixture.rb
@@ -139,9 +141,11 @@ files:
139
141
  - spec/wasabi/document/no_namespace_spec.rb
140
142
  - spec/wasabi/document/soap12_spec.rb
141
143
  - spec/wasabi/document/two_bindings_spec.rb
144
+ - spec/wasabi/document_spec.rb
142
145
  - spec/wasabi/parser/multiple_namespaces_spec.rb
143
146
  - spec/wasabi/parser/no_namespace_spec.rb
144
147
  - spec/wasabi/parser/no_target_namespace_spec.rb
148
+ - spec/wasabi/parser/symbolic_endpoint_spec.rb
145
149
  - spec/wasabi/wasabi_spec.rb
146
150
  - wasabi.gemspec
147
151
  homepage: https://github.com/rubiii/wasabi
@@ -173,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
177
  requirements: []
174
178
 
175
179
  rubyforge_project: wasabi
176
- rubygems_version: 1.8.5
180
+ rubygems_version: 1.8.10
177
181
  signing_key:
178
182
  specification_version: 3
179
183
  summary: A simple WSDL parser
@@ -186,6 +190,7 @@ test_files:
186
190
  - spec/fixtures/namespaced_actions.xml
187
191
  - spec/fixtures/no_namespace.xml
188
192
  - spec/fixtures/soap12.xml
193
+ - spec/fixtures/symbolic_endpoint.xml
189
194
  - spec/fixtures/two_bindings.xml
190
195
  - spec/spec_helper.rb
191
196
  - spec/support/fixture.rb
@@ -198,7 +203,9 @@ test_files:
198
203
  - spec/wasabi/document/no_namespace_spec.rb
199
204
  - spec/wasabi/document/soap12_spec.rb
200
205
  - spec/wasabi/document/two_bindings_spec.rb
206
+ - spec/wasabi/document_spec.rb
201
207
  - spec/wasabi/parser/multiple_namespaces_spec.rb
202
208
  - spec/wasabi/parser/no_namespace_spec.rb
203
209
  - spec/wasabi/parser/no_target_namespace_spec.rb
210
+ - spec/wasabi/parser/symbolic_endpoint_spec.rb
204
211
  - spec/wasabi/wasabi_spec.rb