jiraSOAP 0.8.6 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,6 +1,16 @@
1
+ Version 0.9.0
2
+
3
+ * Deprecate RemoteAPI#get_projects_without_schemes in favour of #projects
4
+ * Properly deprecate #get_ methods
5
+ * Add RemoteAPI#progress_workflow_action (thanks Lucas Jourdes)
6
+ * Add RemoteAPI#available_action (thanks Lucas Jourdes)
7
+ * Add extra documentation about updating fields (thanks Vincent Beau)
8
+
9
+ * Various small documentation updates and tweaks
10
+
1
11
  Version 0.8.6
2
12
 
3
- * Add extra documentation about updating cascading fields (thanks Lucas)
13
+ * Add extra documentation about updating cascading fields (thanks Lucas Jourdes)
4
14
 
5
15
  Version 0.8.5
6
16
 
data/Rakefile CHANGED
@@ -22,11 +22,8 @@ end
22
22
  ### GEM STUFF
23
23
 
24
24
  require 'rake/gempackagetask'
25
- spec = Gem::Specification.load('jiraSOAP.gemspec')
26
- Rake::GemPackageTask.new(spec) do |pkg|
27
- pkg.need_zip = false
28
- pkg.need_tar = true
29
- end
25
+ spec = Gem::Specification.load 'jiraSOAP.gemspec'
26
+ Rake::GemPackageTask.new(spec) { }
30
27
 
31
28
  require 'rubygems/dependency_installer'
32
29
  desc 'Build the gem and install it'
@@ -41,7 +38,7 @@ require 'rake/testtask'
41
38
  Rake::TestTask.new(:test) do |t|
42
39
  t.libs << 'test'
43
40
  t.pattern = 'test/**/test_*.rb'
44
- t.ruby_opts = ['-rhelper']
41
+ t.ruby_opts = ['-rhelper.rb']
45
42
  t.verbose = true
46
43
  end
47
44
 
@@ -52,3 +49,10 @@ end
52
49
 
53
50
 
54
51
  ### DOCUMENTATION
52
+
53
+ begin
54
+ require 'yard'
55
+ YARD::Rake::YardocTask.new
56
+ rescue LoadError => e
57
+ warn 'yard not available. Install it with: gem install yard'
58
+ end
@@ -86,7 +86,22 @@ documentation as well ({JIRA::RemoteAPI#update_issue}).
86
86
 
87
87
  summary = JIRA::FieldValue.new('summary', 'new summary info from jiraSOAP')
88
88
  jira.update_issue issue.key, summary
89
- puts "Updated issue #{issue.key}'s field #{summary.name}\n"
89
+ puts "Updated issue #{issue.key}'s field #{summary.field_name}\n"
90
+
91
+ One caveat is that some fields cannot be updated without also
92
+ progressing the issue to a new status.
93
+
94
+ action = jira.available_actions('TST-14').find do |action|
95
+ action.name == 'Send To Test'
96
+ end
97
+
98
+ jira.progress_workflow_action 'TST-14', action.id
99
+
100
+ You can also update fields, when progressing an issue to a new
101
+ workflow state.
102
+
103
+ assignee = JIRA::FieldValue.new 'assignee', 'mrada'
104
+ jira.progress_workflow_action 'TST-14', action.id, assignee
90
105
 
91
106
  ## User Information
92
107
 
data/lib/jiraSOAP.rb CHANGED
@@ -13,10 +13,32 @@ require 'jiraSOAP/macruby_extensions' if RUBY_ENGINE == 'macruby'
13
13
 
14
14
  ##
15
15
  # All the remote entities as well as the SOAP service client.
16
- module JIRA
16
+ module JIRA; end
17
+
18
+ ##
19
+ # Inspired by Gem::Deprecate from rubygems. A mixin that exposes a
20
+ # method to declare deprecated methods.
21
+ module JIRA::Deprecate
22
+
23
+ ##
24
+ # Deprecate a method that begins with `get_` by printing out a
25
+ # message and then calling the original method.
26
+ #
27
+ # @param [Symbol] name
28
+ def deprecate name
29
+ define_method "get_#{name}" do |*args|
30
+ $stderr.puts <<-EOM
31
+ RemoteAPI#get_#{name} is deprecated and will be removed in the next release.
32
+ Please use RemoteAPI#{name} instead.
33
+ EOM
34
+ send name, *args
35
+ end
36
+ end
37
+
17
38
  end
18
39
 
19
40
  require 'jiraSOAP/version'
41
+ require 'jiraSOAP/core_extensions'
20
42
  require 'jiraSOAP/entities'
21
43
  require 'jiraSOAP/api'
22
44
  require 'jiraSOAP/jira_service'
data/lib/jiraSOAP/api.rb CHANGED
@@ -1,28 +1,12 @@
1
- require 'jiraSOAP/api/additions'
2
- require 'jiraSOAP/api/attachments'
3
- require 'jiraSOAP/api/avatars'
4
- require 'jiraSOAP/api/comments'
5
- require 'jiraSOAP/api/filters'
6
- require 'jiraSOAP/api/issue_data_types'
7
- require 'jiraSOAP/api/issues'
8
- require 'jiraSOAP/api/project_roles'
9
- require 'jiraSOAP/api/projects'
10
- require 'jiraSOAP/api/schemes'
11
- require 'jiraSOAP/api/server_info'
12
- require 'jiraSOAP/api/users'
13
- require 'jiraSOAP/api/versions'
14
- require 'jiraSOAP/api/worklog'
15
-
16
1
  ##
17
- # @todo progressWorkflowAction and friends
18
- # @todo monkey patch Array to include a #to_soap method
19
- #
20
2
  # Contains the API defined by Atlassian for the [JIRA SOAP service](http://docs.atlassian.com/software/jira/docs/api/rpc-jira-plugin/latest/com/atlassian/jira/rpc/soap/JiraSoapService.html).
21
3
  #
22
4
  # There are several cases where this API diverges from the one defined by
23
5
  # Atlassian; most notably, this API tries to be more idomatically Ruby by using
24
6
  # snake case for method names, default values, varargs, etc..
25
7
  module JIRA::RemoteAPI
8
+ extend JIRA::Deprecate
9
+
26
10
 
27
11
  # @group Logging in/out
28
12
 
@@ -59,7 +43,6 @@ module JIRA::RemoteAPI
59
43
 
60
44
  ##
61
45
  # @todo make this method less ugly
62
- # @todo handle arrays of strings
63
46
  #
64
47
  # A generic method for calling a SOAP method and soapifying all
65
48
  # the arguments.
@@ -72,8 +55,8 @@ module JIRA::RemoteAPI
72
55
  invoke "soap:#{method}" do |msg|
73
56
  for i in 0...args.size
74
57
  case arg = args.shift
75
- when JIRA::Entity
76
- msg.add "soap:in#{i}", do |submsg| arg.soapify_for submsg end
58
+ when JIRA::Entity, Array
59
+ msg.add "soap:in#{i}" do |submsg| arg.soapify_for submsg end
77
60
  else
78
61
  msg.add "soap:in#{i}", arg
79
62
  end
@@ -99,7 +82,7 @@ module JIRA::RemoteAPI
99
82
  end
100
83
 
101
84
  ##
102
- # A more complex form of {#call} that does a little more work for
85
+ # A more complex form of {#jira_call} that does a little more work for
103
86
  # you when you need to build an array of return values.
104
87
  #
105
88
  # @param [String] method name of the JIRA SOAP API method
@@ -108,7 +91,23 @@ module JIRA::RemoteAPI
108
91
  # @return [Nokogiri::XML::NodeSet]
109
92
  def array_jira_call type, method, *args
110
93
  response = soap_call method, self.auth_token, *args
111
- response.xpath("node()").map { |frag| type.new_with_xml(frag) }
94
+ response.xpath('node()').map { |frag| type.new_with_xml(frag) }
112
95
  end
113
96
 
114
97
  end
98
+
99
+
100
+ require 'jiraSOAP/api/additions'
101
+ require 'jiraSOAP/api/attachments'
102
+ require 'jiraSOAP/api/avatars'
103
+ require 'jiraSOAP/api/comments'
104
+ require 'jiraSOAP/api/filters'
105
+ require 'jiraSOAP/api/issue_data_types'
106
+ require 'jiraSOAP/api/issues'
107
+ require 'jiraSOAP/api/project_roles'
108
+ require 'jiraSOAP/api/projects'
109
+ require 'jiraSOAP/api/schemes'
110
+ require 'jiraSOAP/api/server_info'
111
+ require 'jiraSOAP/api/users'
112
+ require 'jiraSOAP/api/versions'
113
+ require 'jiraSOAP/api/worklog'
@@ -3,6 +3,7 @@
3
3
  # SOAP API javadoc. They are generally close to something from the javadoc
4
4
  # but with some extra conveniences.
5
5
  module JIRA::RemoteAPIAdditions
6
+ extend JIRA::Deprecate
6
7
 
7
8
  ##
8
9
  # Returns the first field that exactly matches the given
@@ -11,11 +12,8 @@ module JIRA::RemoteAPIAdditions
11
12
  # @param [String] name
12
13
  # @return [JIRA::Field,nil]
13
14
  def custom_field_with_name name
14
- get_custom_fields.each { |cf|
15
- return cf if cf.name == name
16
- }
17
- nil
15
+ get_custom_fields.find { |cf| cf.name == name }
18
16
  end
19
- alias_method :get_custom_field_with_name, :custom_field_with_name
17
+ deprecate :custom_field_with_name
20
18
 
21
19
  end
@@ -17,7 +17,7 @@ module JIRA::RemoteAPI
17
17
  def attachments_for_issue_with_key issue_key
18
18
  array_jira_call JIRA::AttachmentMetadata, 'getAttachmentsFromIssue', issue_key
19
19
  end
20
- alias_method :get_attachments_for_issue_with_key, :attachments_for_issue_with_key
20
+ deprecate :attachments_for_issue_with_key
21
21
 
22
22
  ##
23
23
  # Expect this method to be slow.
@@ -27,16 +27,7 @@ module JIRA::RemoteAPI
27
27
  # @param [Array<String>] data base64 encoded data
28
28
  # @return [Boolean] true if successful
29
29
  def add_base64_encoded_attachments_to_issue_with_key issue_key, filenames, data
30
- invoke('soap:addBase64EncodedAttachmentsToIssue') { |msg|
31
- msg.add 'soap:in0', self.auth_token
32
- msg.add 'soap:in1', issue_key
33
- msg.add 'soap:in2' do |submsg|
34
- filenames.each { |filename| submsg.add 'filenames', filename }
35
- end
36
- msg.add 'soap:in3' do |submsg|
37
- data.each { |datum| submsg.add 'base64EncodedData', datum }
38
- end
39
- }
30
+ jira_call 'addBase64EncodedAttachmentsToIssue', issue_key, filenames, data
40
31
  true
41
32
  end
42
33
 
@@ -4,18 +4,18 @@ module JIRA::RemoteAPI
4
4
 
5
5
  ##
6
6
  # Gets you the default avatar image for a project; if you want all
7
- # the avatars for a project, use {#get_project_avatars_for_key}.
7
+ # the avatars for a project, use {#project_avatars_for_key}.
8
8
  #
9
9
  # @param [String] project_key
10
10
  # @return [JIRA::Avatar]
11
11
  def project_avatar_for_key project_key
12
- JIRA::Avatar.new_with_xml jira_call( 'getProjectAvatar', project_key )
12
+ JIRA::Avatar.new_with_xml jira_call('getProjectAvatar', project_key)
13
13
  end
14
- alias_method :get_project_avatar_for_key, :project_avatar_for_key
14
+ deprecate :project_avatar_for_key
15
15
 
16
16
  ##
17
17
  # Gets ALL avatars for a given project with this method; if you
18
- # just want the project avatar, use {#get_project_avatar_for_key}.
18
+ # just want the project avatar, use {#project_avatar_for_key}.
19
19
  #
20
20
  # @param [String] project_key
21
21
  # @param [Boolean] include_default_avatars
@@ -23,7 +23,7 @@ module JIRA::RemoteAPI
23
23
  def project_avatars_for_key project_key, include_default_avatars = false
24
24
  array_jira_call JIRA::Avatar, 'getProjectAvatars', project_key, include_default_avatars
25
25
  end
26
- alias_method :get_project_avatars_for_key, :project_avatars_for_key
26
+ deprecate :project_avatars_for_key
27
27
 
28
28
  ##
29
29
  # @note You cannot delete system avatars, and you need project
@@ -15,14 +15,14 @@ module JIRA::RemoteAPI
15
15
  def comment_with_id id
16
16
  JIRA::Comment.new_with_xml jira_call( 'getComment', id )
17
17
  end
18
- alias_method :get_comment_with_id, :comment_with_id
18
+ deprecate :comment_with_id
19
19
 
20
20
  # @param [String] issue_key
21
21
  # @return [Array<JIRA::Comment>]
22
22
  def comments_for_issue_with_key issue_key
23
23
  array_jira_call JIRA::Comment, 'getComments', issue_key
24
24
  end
25
- alias_method :get_comments_for_issue_with_key, :comments_for_issue_with_key
25
+ deprecate :comments_for_issue_with_key
26
26
 
27
27
  # @param [JIRA::Comment] comment
28
28
  # @return [JIRA::Comment]
@@ -9,15 +9,15 @@ module JIRA::RemoteAPI
9
9
  def favourite_filters
10
10
  array_jira_call JIRA::Filter, 'getFavouriteFilters'
11
11
  end
12
- alias_method :get_favourite_filters, :favourite_filters
13
- alias_method :get_favorite_filters, :favourite_filters
14
12
  alias_method :favorite_filters, :favourite_filters
13
+ deprecate :favorite_filters
14
+ deprecate :favourite_filters
15
15
 
16
16
  # @param [String] id
17
17
  # @return [Fixnum]
18
18
  def issue_count_for_filter_with_id id
19
19
  jira_call( 'getIssueCountForFilter', id ).to_i
20
20
  end
21
- alias_method :get_issue_count_for_filter_with_id, :issue_count_for_filter_with_id
21
+ deprecate :issue_count_for_filter_with_id
22
22
 
23
23
  end
@@ -6,51 +6,51 @@ module JIRA::RemoteAPI
6
6
  def priorities
7
7
  array_jira_call JIRA::Priority, 'getPriorities'
8
8
  end
9
- alias_method :get_priorities, :priorities
9
+ deprecate :priorities
10
10
 
11
11
  # @return [Array<JIRA::Resolution>]
12
12
  def resolutions
13
13
  array_jira_call JIRA::Resolution, 'getResolutions'
14
14
  end
15
- alias_method :get_resolutions, :resolutions
15
+ deprecate :resolutions
16
16
 
17
17
  # @return [Array<JIRA::Field>]
18
18
  def custom_fields
19
19
  array_jira_call JIRA::Field, 'getCustomFields'
20
20
  end
21
- alias_method :get_custom_fields, :custom_fields
21
+ deprecate :custom_fields
22
22
 
23
23
  # @return [Array<JIRA::IssueType>]
24
24
  def issue_types
25
25
  array_jira_call JIRA::IssueType, 'getIssueTypes'
26
26
  end
27
- alias_method :get_issue_types, :issue_types
27
+ deprecate :issue_types
28
28
 
29
29
  # @param [String] project_name
30
30
  # @return [Array<JIRA::IssueType>]
31
31
  def issue_types_for_project_with_id project_id
32
32
  array_jira_call JIRA::IssueType, 'getIssueTypesForProject', project_id
33
33
  end
34
- alias_method :get_issue_types_for_project_with_id, :issue_types_for_project_with_id
34
+ deprecate :issue_types_for_project_with_id
35
35
 
36
36
  # @return [Array<JIRA::Status>]
37
37
  def statuses
38
38
  array_jira_call JIRA::Status, 'getStatuses'
39
39
  end
40
- alias_method :get_statuses, :statuses
40
+ deprecate :statuses
41
41
 
42
42
  # @return [Array<JIRA::IssueType>]
43
43
  def subtask_issue_types
44
44
  array_jira_call JIRA::IssueType, 'getSubTaskIssueTypes'
45
45
  end
46
- alias_method :get_subtask_issue_types, :subtask_issue_types
46
+ deprecate :subtask_issue_types
47
47
 
48
48
  # @param [String] project_id
49
49
  # @return [Array<JIRA::IssueType>]
50
50
  def subtask_issue_types_for_project_with_id project_id
51
51
  array_jira_call JIRA::IssueType, 'getSubTaskIssueTypesForProject', project_id
52
52
  end
53
- alias_method :get_subtask_issue_types_for_project_with_id, :subtask_issue_types_for_project_with_id
53
+ deprecate :subtask_issue_types_for_project_with_id
54
54
 
55
55
  ##
56
56
  # @todo find out what this method does
@@ -20,7 +20,7 @@ module JIRA::RemoteAPI
20
20
  def issues_from_jql_search jql_query, max_results = 2000
21
21
  array_jira_call JIRA::Issue, 'getIssuesFromJqlSearch', jql_query, max_results
22
22
  end
23
- alias_method :get_issues_from_jql_search, :issues_from_jql_search
23
+ deprecate :issues_from_jql_search
24
24
 
25
25
  ##
26
26
  # This method can update most, but not all, issue fields. Some limitations
@@ -34,10 +34,21 @@ module JIRA::RemoteAPI
34
34
  # - attachments - use {#add_base64_encoded_attachments_to_issue_with_key}
35
35
  #
36
36
  # Though {JIRA::FieldValue} objects have an id field, they do not expect
37
- # to be given id values. You must use the name of the field you wish to
38
- # update.
37
+ # to be given id values. You must use the camel cased name of the field you
38
+ # wish to update, such as `'fixVersions'` to update the `fix_versions` for
39
+ # an issue.
39
40
  #
40
- # Updating nested fields can be trickyfields
41
+ # However, there is at least one exception to the rule; when you wish to
42
+ # update the affected versions for an issue, you should use `'versions'`
43
+ # instead of `'affectsVersions'`. You need to be careful about these
44
+ # cases as it has been reported that JIRA will silently fail to update
45
+ # fields it does not know about.
46
+ #
47
+ # Updating nested fields can be tricky, see the example on cascading
48
+ # select field's to see how it would be done.
49
+ #
50
+ # A final note, some fields only should be passed the id in order to
51
+ # update them, as shown in the version updating example.
41
52
  #
42
53
  # @example Usage With A Normal Field
43
54
  #
@@ -53,26 +64,25 @@ module JIRA::RemoteAPI
53
64
  #
54
65
  # @example Calling the method to update an issue
55
66
  #
56
- # jira_service_instance.update_issue 'PROJECT-1', description, custom_field
67
+ # jira.update_issue 'PROJECT-1', description, custom_field
57
68
  #
58
69
  # @example Setting the value of a cascading select field
59
70
  #
60
71
  # part1 = JIRA::FieldValue.new 'customfield_10285', 'Main Detail'
61
72
  # part2 = JIRA::FieldValue.new 'customfield_10285:1', 'First Subdetail'
62
- # jira_service_instance.update_issue 'PROJECT-1', part1, part2
73
+ # jira.update_issue 'PROJECT-1', part1, part2
74
+ #
75
+ # @example Changing the affected versions for an issue
76
+ #
77
+ # version = jira.versions_for_project.find { |x| x.name = 'v1.0beta' }
78
+ # field = JIRA::FieldValue.new 'versions', version.id
79
+ # jira.update_issue 'PROJECT-1', field
63
80
  #
64
81
  # @param [String] issue_key
65
82
  # @param [JIRA::FieldValue] *field_values
66
83
  # @return [JIRA::Issue]
67
84
  def update_issue issue_key, *field_values
68
- response = invoke('soap:updateIssue') { |msg|
69
- msg.add 'soap:in0', self.auth_token
70
- msg.add 'soap:in1', issue_key
71
- msg.add 'soap:in2' do |submsg|
72
- field_values.each { |fv| fv.soapify_for submsg }
73
- end
74
- }
75
- JIRA::Issue.new_with_xml response.document.element.xpath('//updateIssueReturn').first
85
+ JIRA::Issue.new_with_xml jira_call('updateIssue', issue_key, field_values)
76
86
  end
77
87
 
78
88
  ##
@@ -97,14 +107,14 @@ module JIRA::RemoteAPI
97
107
  def issue_with_key issue_key
98
108
  JIRA::Issue.new_with_xml jira_call( 'getIssue', issue_key )
99
109
  end
100
- alias_method :get_issue_with_key, :issue_with_key
110
+ deprecate :issue_with_key
101
111
 
102
112
  # @param [String] issue_id
103
113
  # @return [JIRA::Issue]
104
114
  def issue_with_id issue_id
105
115
  JIRA::Issue.new_with_xml jira_call( 'getIssueById', issue_id )
106
116
  end
107
- alias_method :get_issue_with_id, :issue_with_id
117
+ deprecate :issue_with_id
108
118
 
109
119
  # @param [String] id
110
120
  # @param [Fixnum] max_results
@@ -113,20 +123,47 @@ module JIRA::RemoteAPI
113
123
  def issues_from_filter_with_id id, max_results = 500, offset = 0
114
124
  array_jira_call JIRA::Issue, 'getIssuesFromFilterWithLimit', id, offset, max_results
115
125
  end
116
- alias_method :get_issues_from_filter_with_id, :issues_from_filter_with_id
126
+ deprecate :issues_from_filter_with_id
117
127
 
118
128
  # @param [String] issue_id
119
129
  # @return [Time]
120
130
  def resolution_date_for_issue_with_id issue_id
121
131
  jira_call( 'getResolutionDateById', issue_id ).to_iso_date
122
132
  end
123
- alias_method :get_resolution_date_for_issue_with_id, :resolution_date_for_issue_with_id
133
+ deprecate :resolution_date_for_issue_with_id
124
134
 
125
135
  # @param [String] issue_key
126
136
  # @return [Time]
127
137
  def resolution_date_for_issue_with_key issue_key
128
138
  jira_call( 'getResolutionDateByKey', issue_key ).to_iso_date
129
139
  end
130
- alias_method :get_resolution_date_for_issue_with_key, :resolution_date_for_issue_with_key
140
+ deprecate :resolution_date_for_issue_with_key
141
+
142
+ ##
143
+ # This method acts like {#update_issue} except that it also updates
144
+ # the status of the issue.
145
+ #
146
+ # The `action_id` parameter comes from the `id` of an available action.
147
+ # Normally you will use this method in conjunction with
148
+ # {#available_actions} to decide which action to take.
149
+ #
150
+ # @param [String] issue_key
151
+ # @param [String] action_id this is the id of workflow action
152
+ # @param [JIRA::FieldValue] *field_values
153
+ # @return [JIRA::Issue]
154
+ def progress_workflow_action issue_key, action_id, *field_values
155
+ JIRA::Issue.new_with_xml jira_call('progressWorkflowAction',
156
+ issue_key, action_id_string, field_values)
157
+ end
158
+
159
+ ##
160
+ # Returns workflow actions available for an issue.
161
+ #
162
+ # @param [String] issue_key
163
+ # @return [Array<JIRA::NamedEntity>]
164
+ def available_actions issue_key
165
+ array_jira_call JIRA::NamedEntity, 'getAvailableActions', issue_key
166
+ end
167
+ deprecate :available_actions
131
168
 
132
169
  end
@@ -6,14 +6,14 @@ module JIRA::RemoteAPI
6
6
  def project_roles
7
7
  array_jira_call JIRA::ProjectRole, 'getProjectRoles'
8
8
  end
9
- alias_method :get_project_roles, :project_roles
9
+ deprecate :project_roles
10
10
 
11
11
  # @param [String] role_id
12
12
  # @return [JIRA::ProjectRole]
13
13
  def project_role_with_id role_id
14
14
  JIRA::ProjectRole.new_with_xml jira_call( 'getProjectRole', role_id )
15
15
  end
16
- alias_method :get_project_role_with_id, :project_role_with_id
16
+ deprecate :project_role_with_id
17
17
 
18
18
  # @param [JIRA::ProjectRole] project_role
19
19
  # @return [JIRA::ProjectRole] the role that was created
@@ -12,14 +12,14 @@ module JIRA::RemoteAPI
12
12
  def project_with_key project_key
13
13
  JIRA::Project.new_with_xml jira_call( 'getProjectByKey', project_key )
14
14
  end
15
- alias_method :get_project_with_key, :project_with_key
15
+ deprecate :project_with_key
16
16
 
17
17
  # @param [String] project_id
18
18
  # @return [JIRA::Project]
19
19
  def project_with_id project_id
20
20
  JIRA::Project.new_with_xml jira_call( 'getProjectById', project_id )
21
21
  end
22
- alias_method :get_project_with_id, :project_with_id
22
+ deprecate :project_with_id
23
23
 
24
24
  ##
25
25
  # @todo Parse the permission scheme
@@ -30,7 +30,7 @@ module JIRA::RemoteAPI
30
30
  def project_including_schemes_with_id project_id
31
31
  JIRA::Project.new_with_xml jira_call( 'getProjectWithSchemesById', project_id )
32
32
  end
33
- alias_method :get_project_including_schemes_with_id, :project_including_schemes_with_id
33
+ deprecate :project_including_schemes_with_id
34
34
 
35
35
  ##
36
36
  # @note This will not fill in {JIRA::Scheme} data for the projects.
@@ -39,7 +39,9 @@ module JIRA::RemoteAPI
39
39
  def projects
40
40
  array_jira_call JIRA::Project, 'getProjectsNoSchemes'
41
41
  end
42
- alias_method :get_projects, :projects
42
+ alias_method :projects_without_schemes, :projects
43
+ deprecate :projects
44
+ deprecate :projects_without_schemes
43
45
 
44
46
  ##
45
47
  # Requires you to set at least a project name, key, and lead.
@@ -6,12 +6,12 @@ module JIRA::RemoteAPI
6
6
  def notification_schemes
7
7
  array_jira_call JIRA::NotificationScheme, 'getNotificationSchemes'
8
8
  end
9
- alias_method :get_notification_schemes, :notification_schemes
9
+ deprecate :notification_schemes
10
10
 
11
11
  # @return [Array<JIRA::PermissionScheme>]
12
12
  def permission_schemes
13
13
  array_jira_call JIRA::PermissionScheme, 'getPermissionSchemes'
14
14
  end
15
- alias_method :get_permission_schemes, :permission_schemes
15
+ deprecate :permission_schemes
16
16
 
17
17
  end
@@ -9,12 +9,12 @@ module JIRA::RemoteAPI
9
9
  def server_info
10
10
  JIRA::ServerInfo.new_with_xml jira_call( 'getServerInfo' )
11
11
  end
12
- alias_method :get_server_info, :server_info
12
+ deprecate :server_info
13
13
 
14
14
  # @return [JIRA::ServerConfiguration]
15
15
  def server_configuration
16
16
  JIRA::ServerConfiguration.new_with_xml jira_call( 'getConfiguration' )
17
17
  end
18
- alias_method :get_server_configuration, :server_configuration
18
+ deprecate :server_configuration
19
19
 
20
20
  end
@@ -7,7 +7,7 @@ module JIRA::RemoteAPI
7
7
  def user_with_name user_name
8
8
  JIRA::User.new_with_xml jira_call( 'getUser', user_name )
9
9
  end
10
- alias_method :get_user_with_name, :user_with_name
10
+ deprecate :user_with_name
11
11
 
12
12
  ##
13
13
  # It seems that creating a user without any permission groups will trigger
@@ -39,7 +39,7 @@ module JIRA::RemoteAPI
39
39
  frag = jira_call 'getGroup', group_name
40
40
  JIRA::UserGroup.new_with_xml frag
41
41
  end
42
- alias_method :get_group_with_name, :group_with_name
42
+ deprecate :group_with_name
43
43
 
44
44
  # @param [JIRA::UserGroup] group
45
45
  # @param [JIRA::User] user
@@ -7,7 +7,7 @@ module JIRA::RemoteAPI
7
7
  def versions_for_project project_key
8
8
  array_jira_call JIRA::Version, 'getVersions', project_key
9
9
  end
10
- alias_method :get_versions_for_project, :versions_for_project
10
+ deprecate :versions_for_project
11
11
 
12
12
  ##
13
13
  # New versions cannot have the archived bit set and the release date
@@ -2,7 +2,10 @@
2
2
  # Monkey patches to allow the SOAP building method to not need
3
3
  # a special case for dealing with arrays.
4
4
  class Array
5
- def to_soap
6
- raise NotImplementedError
5
+
6
+ # @param [Handsoap::XmlMason::Node] msg message the node to add the object to
7
+ def soapify_for msg
8
+ each { |item| item.soapify_for msg }
7
9
  end
10
+
8
11
  end
@@ -40,7 +40,7 @@ class JIRA::Comment < JIRA::DynamicEntity
40
40
  #
41
41
  # @param [Handsoap::XmlMason::Node] msg
42
42
  # @return [Handsoap::XmlMason::Node]
43
- def soapify_for(msg)
43
+ def soapify_for msg
44
44
  msg.add 'id', @id
45
45
  msg.add 'author', @author
46
46
  msg.add 'body', @body
@@ -21,7 +21,7 @@ class JIRA::CustomFieldValue < JIRA::DynamicEntity
21
21
  # @param [Handsoap::XmlMason::Node] msg SOAP message to add the object to
22
22
  # @param [String] label tag name used in wrapping tags
23
23
  # @return [Handsoap::XmlMason::Element]
24
- def soapify_for(msg, label = 'customFieldValues')
24
+ def soapify_for msg, label = 'customFieldValues'
25
25
  msg.add label do |submsg|
26
26
  submsg.add 'customfieldId', @id
27
27
  submsg.add 'key', @key
@@ -30,7 +30,7 @@ class JIRA::FieldValue
30
30
  # @param [Handsoap::XmlMason::Node] message the node to add the object to
31
31
  # @param [String] label name for the tags that wrap the message
32
32
  # @return [Handsoap::XmlMason::Element]
33
- def soapify_for(message, label = 'fieldValue')
33
+ def soapify_for message, label = 'fieldValue'
34
34
  message.add label do |message|
35
35
  message.add 'id', @field_name
36
36
  message.add_simple_array 'values', @values unless @values.nil?
@@ -1,5 +1,5 @@
1
1
  ##
2
- # A simple structure that is used by {RemoteAPI#get_server_configuration}.
2
+ # A simple structure that is used by {RemoteAPI#server_configuration}.
3
3
  class JIRA::ServerConfiguration < JIRA::Entity
4
4
 
5
5
  # @return [Boolean]
@@ -1,6 +1,6 @@
1
1
  ##
2
2
  # Only contains basic information about the endpoint server and only used
3
- # by {RemoteAPI#get_server_info}.
3
+ # by {RemoteAPI#server_info}.
4
4
  class JIRA::ServerInfo < JIRA::Entity
5
5
 
6
6
  # @return [NSURL,URI::HTTP]
@@ -1,6 +1,6 @@
1
1
  ##
2
2
  # Simple structure for a time and time zone; only used by JIRA::ServerInfo
3
- # objects, which themselves are only created when {RemoteAPI#get_server_info}
3
+ # objects, which themselves are only created when {RemoteAPI#server_info}
4
4
  # is called.
5
5
  class JIRA::TimeInfo < JIRA::Entity
6
6
 
@@ -19,7 +19,7 @@ class JIRA::Version < JIRA::NamedEntity
19
19
 
20
20
  # @param [Handsoap::XmlMason::Node] msg
21
21
  # @return [Handsoap::XmlMason::Node]
22
- def soapify_for(msg)
22
+ def soapify_for msg
23
23
  msg.add 'name', @name
24
24
  msg.add 'archived', @archived if @archived
25
25
  msg.add 'sequence', @sequence if @sequence
@@ -43,18 +43,6 @@ class JIRA::JIRAService < Handsoap::Service
43
43
  })
44
44
  end
45
45
 
46
- ##
47
- # An extra note for users when things break.
48
- #
49
- # @deprecated This will be removed in v1.0 when the API is stable.
50
- # @return [nil]
51
- def method_missing method, *args
52
- message = "#{method} is not a valid method. Check the documentation; the "
53
- message << 'API is not stabale yet and the method name likely changed.'
54
- STDERR.puts message
55
- super method, *args
56
- end
57
-
58
46
 
59
47
  protected
60
48
 
data/lib/jiraSOAP/url.rb CHANGED
@@ -2,6 +2,7 @@ module JIRA
2
2
 
3
3
  class << self
4
4
 
5
+ ##
5
6
  # When running on MacRuby, a URL will be wrapped into an NSURL object;
6
7
  # but on all other Ruby implementations you will get a URI::HTTP object.
7
8
  # The NSURL class is monkey patched just enough to make NSURL and
@@ -12,10 +13,13 @@ module JIRA
12
13
  # JIRA.url_class.send JIRA.url_init_method, 'http://marketcircle.com'
13
14
  #
14
15
  # will be working code.
16
+ #
15
17
  # @return [Class,Module]
16
18
  attr_accessor :url_class
17
19
 
20
+ ##
18
21
  # We also need a variable for the init method for a URL object
22
+ #
19
23
  # @return [Symbol]
20
24
  attr_accessor :url_init_method
21
25
 
@@ -1,3 +1,4 @@
1
1
  module JIRA
2
- VERSION = '0.8.6'
2
+ # @return [String]
3
+ VERSION = '0.9.0'
3
4
  end
@@ -0,0 +1,8 @@
1
+ class TestProgressWorkflowActionTest < MiniTest::Unit::TestCase
2
+ setup_usual
3
+
4
+ def test_some_bullshit
5
+ assert true
6
+ end
7
+
8
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jiraSOAP
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.6
4
+ version: 0.9.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,23 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-20 00:00:00.000000000 -04:00
13
- default_executable:
12
+ date: 2011-08-04 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: nokogiri
17
- requirement: &70183021802840 !ruby/object:Gem::Requirement
16
+ requirement: &70264277917080 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ~>
21
20
  - !ruby/object:Gem::Version
22
- version: 1.4.4
21
+ version: 1.5.0
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *70183021802840
24
+ version_requirements: *70264277917080
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: handsoap
28
- requirement: &70183021802320 !ruby/object:Gem::Requirement
27
+ requirement: &70264277916320 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ~>
@@ -33,40 +32,40 @@ dependencies:
33
32
  version: 1.1.8
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: *70183021802320
35
+ version_requirements: *70264277916320
37
36
  - !ruby/object:Gem::Dependency
38
37
  name: yard
39
- requirement: &70183021801840 !ruby/object:Gem::Requirement
38
+ requirement: &70264277915600 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ~>
43
42
  - !ruby/object:Gem::Version
44
- version: 0.7.1
43
+ version: 0.7.2
45
44
  type: :development
46
45
  prerelease: false
47
- version_requirements: *70183021801840
46
+ version_requirements: *70264277915600
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: redcarpet
50
- requirement: &70183021801360 !ruby/object:Gem::Requirement
49
+ requirement: &70264277915140 !ruby/object:Gem::Requirement
51
50
  none: false
52
51
  requirements:
53
52
  - - ~>
54
53
  - !ruby/object:Gem::Version
55
- version: '1.15'
54
+ version: '1.17'
56
55
  type: :development
57
56
  prerelease: false
58
- version_requirements: *70183021801360
57
+ version_requirements: *70264277915140
59
58
  - !ruby/object:Gem::Dependency
60
59
  name: minitest
61
- requirement: &70183021800880 !ruby/object:Gem::Requirement
60
+ requirement: &70264277914680 !ruby/object:Gem::Requirement
62
61
  none: false
63
62
  requirements:
64
63
  - - ! '>='
65
64
  - !ruby/object:Gem::Version
66
- version: 2.2.2
65
+ version: 2.3.1
67
66
  type: :development
68
67
  prerelease: false
69
- version_requirements: *70183021800880
68
+ version_requirements: *70264277914680
70
69
  description: Written to run fast and work on Ruby 1.9 as well as MacRuby
71
70
  email:
72
71
  - mrada@marketcircle.com
@@ -76,7 +75,6 @@ extra_rdoc_files:
76
75
  - README.markdown
77
76
  - ChangeLog
78
77
  - LICENSE.txt
79
- - .yardopts
80
78
  - docs/GettingStarted.markdown
81
79
  - docs/Examples.markdown
82
80
  files:
@@ -138,16 +136,16 @@ files:
138
136
  - lib/jiraSOAP/url.rb
139
137
  - lib/jiraSOAP/version.rb
140
138
  - lib/jiraSOAP.rb
139
+ - .yardopts
140
+ - Rakefile
141
141
  - test/jiraSOAP_test.rb
142
+ - test/progressWorkflowActionTest.rb
142
143
  - test/test_helper.rb
143
- - Rakefile
144
144
  - README.markdown
145
145
  - ChangeLog
146
146
  - LICENSE.txt
147
- - .yardopts
148
147
  - docs/GettingStarted.markdown
149
148
  - docs/Examples.markdown
150
- has_rdoc: true
151
149
  homepage: http://github.com/Marketcircle/jiraSOAP
152
150
  licenses:
153
151
  - MIT
@@ -169,11 +167,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
167
  version: '0'
170
168
  requirements: []
171
169
  rubyforge_project:
172
- rubygems_version: 1.6.2
170
+ rubygems_version: 1.8.6
173
171
  signing_key:
174
172
  specification_version: 3
175
173
  summary: A Ruby client for the JIRA SOAP API
176
174
  test_files:
177
175
  - test/jiraSOAP_test.rb
176
+ - test/progressWorkflowActionTest.rb
178
177
  - test/test_helper.rb
179
- - Rakefile