simplews 1.1.0 → 1.1.1

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.
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 1.1.1 2008-10-28
2
+
3
+ * 1 bug fix:
4
+ * Release was missing a file
5
+
1
6
  == 1.1.0 2008-10-28
2
7
 
3
8
  * 1 major enhancement:
data/Manifest.txt CHANGED
@@ -3,9 +3,12 @@ Manifest.txt
3
3
  PostInstall.txt
4
4
  README.rdoc
5
5
  Rakefile
6
+ TestWS.wsdl
6
7
  config/hoe.rb
7
8
  config/requirements.rb
9
+ lib/helper.rb
8
10
  lib/simplews.rb
11
+ lib/simplews/asynchronous.rb
9
12
  lib/simplews/version.rb
10
13
  script/console
11
14
  script/destroy
@@ -15,6 +18,7 @@ setup.rb
15
18
  tasks/deployment.rake
16
19
  tasks/environment.rake
17
20
  tasks/website.rake
21
+ test/simplews/test_asynchronous.rb
18
22
  test/test_helper.rb
19
23
  test/test_simplews.rb
20
24
  website/index.html
data/TestWS.wsdl ADDED
@@ -0,0 +1,112 @@
1
+ <?xml version="1.0"?>
2
+ <definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:tns="TestWS-NS"
4
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
5
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6
+ xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
7
+ xmlns:si="http://soapinterop.org/xsd"
8
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
9
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
10
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
11
+ targetNamespace="TestWS-NS">
12
+
13
+
14
+ <types>
15
+ <schema xmlns="http://www.w3.org/2001/XMLSchema"
16
+ targetNamespace="TestWS-NS"
17
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
18
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
19
+ <complexType name="ArrayOfString">
20
+ <complexContent>
21
+ <restriction base="soapenc:Array">
22
+ <attribute ref="soapenc:arrayType"
23
+ wsdl:arrayType="string[]"/>
24
+ </restriction>
25
+ </complexContent>
26
+ </complexType>
27
+ </schema>
28
+ </types>
29
+
30
+ <message name="wsdlRequest">
31
+ </message>
32
+
33
+ <message name="wsdlResponse">
34
+ <part type="xsd:string" name="return"/>
35
+ </message>
36
+
37
+ <message name="hiRequest">
38
+ <part type="xsd:string" name="name"/>
39
+ </message>
40
+
41
+ <message name="hiResponse">
42
+ <part type="xsd:string" name="return"/>
43
+ </message>
44
+
45
+ <message name="byeRequest">
46
+ <part type="xsd:string" name="name"/>
47
+ </message>
48
+
49
+ <message name="byeResponse">
50
+ <part type="xsd:string" name="return"/>
51
+ </message>
52
+
53
+ <portType name="TestWS">
54
+ <operation name="wsdl">
55
+ <input message="wsdlRequest"/>
56
+ <output message="wsdlResponse"/>
57
+ </operation>
58
+
59
+ <operation name="hi">
60
+ <input message="hiRequest"/>
61
+ <output message="hiResponse"/>
62
+ </operation>
63
+
64
+ <operation name="bye">
65
+ <input message="byeRequest"/>
66
+ <output message="byeResponse"/>
67
+ </operation>
68
+
69
+ </portType>
70
+
71
+ <binding name="TestWSBinding" type="tns:TestWS">
72
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
73
+ <operation name="wsdl">
74
+ <soap:operation soapAction="urn:TestWS#wsdl" style="rpc"/>
75
+ <input>
76
+ <soap:body namespace="urn:TestWS" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/>
77
+ </input>
78
+ <output>
79
+ <soap:body namespace="urn:TestWS" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/>
80
+ </output>
81
+ </operation>
82
+
83
+ <operation name="hi">
84
+ <soap:operation soapAction="urn:TestWS#hi" style="rpc"/>
85
+ <input>
86
+ <soap:body namespace="urn:TestWS" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/>
87
+ </input>
88
+ <output>
89
+ <soap:body namespace="urn:TestWS" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/>
90
+ </output>
91
+ </operation>
92
+
93
+ <operation name="bye">
94
+ <soap:operation soapAction="urn:TestWS#bye" style="rpc"/>
95
+ <input>
96
+ <soap:body namespace="urn:TestWS" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/>
97
+ </input>
98
+ <output>
99
+ <soap:body namespace="urn:TestWS" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"/>
100
+ </output>
101
+ </operation>
102
+
103
+ </binding>
104
+ <service name="TestWS">
105
+ <documentation>Greeting Services</documentation>
106
+
107
+ <port name="TestWS" binding="tns:TestWSBinding">
108
+ <soap:address location="http://localhost:1984"/>
109
+ </port>
110
+ </service>
111
+
112
+ </definitions>
data/lib/helper.rb ADDED
File without changes
@@ -0,0 +1,171 @@
1
+ class SimpleWS::Asynchronous < SimpleWS
2
+
3
+ class JobNotFound < Exception; end
4
+ class JobAborted < Exception; end
5
+
6
+
7
+ class Job
8
+
9
+ @@jobs = {}
10
+ attr_reader :status, :messages, :name
11
+
12
+ def self.random_name(s="", num=20)
13
+ num.times{
14
+ r = rand
15
+ if r < 0.3
16
+ s << (rand * 10).to_i.to_s
17
+ elsif r < 0.6
18
+ s << (rand * (?z - ?a) + ?a).to_i.chr
19
+ else
20
+ s << (rand * (?Z - ?A) + ?A).to_i.chr
21
+ end
22
+ }
23
+ s.to_s
24
+ end
25
+
26
+ def self.make_name(name)
27
+
28
+ name = Job::random_name("job-") if name == ""
29
+
30
+ taken = @@jobs.keys.select{|n| n =~ /^#{ name }(-\d+)?$/}
31
+ if taken.any?
32
+ last = taken.sort.last
33
+ if last == name
34
+ return name + '-1'
35
+ else
36
+ num = last.match(/-(\d+)$/)[1]
37
+ return name + '-' + (num.to_i + 1).to_s
38
+ end
39
+ else
40
+ return name
41
+ end
42
+ end
43
+
44
+ def self.status(name)
45
+ raise JobNotFound, "Job with name '#{ name }' was not found" if @@jobs[name].nil?
46
+ @@jobs[name].status
47
+ end
48
+ def self.messages(name)
49
+ raise JobNotFound, "Job with name '#{ name }' was not found" if @@jobs[name].nil?
50
+ @@jobs[name].messages
51
+ end
52
+
53
+ def self.done?(name)
54
+ raise JobNotFound, "Job with name '#{ name }' was not found" if @@jobs[name].nil?
55
+ @@jobs[name].done?
56
+ end
57
+
58
+ def self.error?(name)
59
+ raise JobNotFound, "Job with name '#{ name }' was not found" if @@jobs[name].nil?
60
+ @@jobs[name].error?
61
+ end
62
+
63
+ def self.abort(name)
64
+ raise JobNotFound, "Job with name '#{ name }' was not found" if @@jobs[name].nil?
65
+ @@jobs[name].abort
66
+ end
67
+
68
+ def self.aborted?(name)
69
+ raise JobNotFound, "Job with name '#{ name }' was not found" if @@jobs[name].nil?
70
+ @@jobs[name].aborted?
71
+ end
72
+
73
+
74
+ def self.start(name,&block)
75
+ job = Job.new(name, &block)
76
+ @@jobs[job.name] = job
77
+ job.name
78
+ end
79
+
80
+
81
+ def initialize(name, &block)
82
+ @status = ''
83
+ @messages = []
84
+ @name = Job::make_name(name)
85
+
86
+ @thread = Thread.new{
87
+ begin
88
+ instance_eval(&block)
89
+ step(:done)
90
+
91
+ rescue JobAborted
92
+ step(:aborted, $!.message)
93
+ end
94
+ }
95
+
96
+ end
97
+
98
+ def step(status, message="")
99
+ @status = status
100
+ @messages << message if message != ""
101
+ end
102
+
103
+ def status
104
+ @status.to_s
105
+ end
106
+
107
+ def done?
108
+ @status.to_sym == :done || @status.to_sym == :error
109
+ end
110
+
111
+ def error?
112
+ @status.to_sym == :error
113
+ end
114
+
115
+ def error(message)
116
+ step(:error, message)
117
+ end
118
+
119
+ def abort
120
+ @thread.raise(JobAborted.new)
121
+ nil
122
+ end
123
+
124
+ def aborted?
125
+ @status.to_sym == :aborted
126
+ end
127
+
128
+
129
+ end
130
+
131
+ def status(name)
132
+ Job.status(name)
133
+ end
134
+
135
+ def abort(name)
136
+ Job.abort(name)
137
+ end
138
+
139
+
140
+ def done(name)
141
+ Job.done?(name)
142
+ end
143
+
144
+ def aborted(name)
145
+ Job.done?(name)
146
+ end
147
+
148
+ def error(name)
149
+ Job.error?(name)
150
+ end
151
+
152
+ def messages(name)
153
+ Job.messages(name)
154
+ end
155
+
156
+ def initialize(*args)
157
+ super(*args)
158
+
159
+ serve :abort, %(name), :name => :string
160
+
161
+ serve :messages, %(name), :name => :string, :return => :string
162
+
163
+ serve :status, %(name), :name => :string, :return => :string
164
+ serve :done, %(name), :name => :string, :return => :boolean
165
+ serve :error, %(name), :name => :string, :return => :boolean
166
+ serve :aborted, %(name), :name => :string, :return => :boolean
167
+
168
+ end
169
+
170
+
171
+ end
@@ -2,7 +2,7 @@ module Simplews
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
4
  MINOR = 1
5
- TINY = 0
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplews
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
@@ -40,9 +40,12 @@ files:
40
40
  - PostInstall.txt
41
41
  - README.rdoc
42
42
  - Rakefile
43
+ - TestWS.wsdl
43
44
  - config/hoe.rb
44
45
  - config/requirements.rb
46
+ - lib/helper.rb
45
47
  - lib/simplews.rb
48
+ - lib/simplews/asynchronous.rb
46
49
  - lib/simplews/version.rb
47
50
  - script/console
48
51
  - script/destroy
@@ -52,6 +55,7 @@ files:
52
55
  - tasks/deployment.rake
53
56
  - tasks/environment.rake
54
57
  - tasks/website.rake
58
+ - test/simplews/test_asynchronous.rb
55
59
  - test/test_helper.rb
56
60
  - test/test_simplews.rb
57
61
  - website/index.html