jiraSOAP 0.6.1 → 0.7.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/.yardopts +10 -0
- data/ChangeLog +18 -0
- data/{LICENSE → LICENSE.txt} +0 -0
- data/README.markdown +4 -6
- data/lib/jiraSOAP.rb +0 -2
- data/lib/jiraSOAP/JIRAservice.rb +5 -5
- data/lib/jiraSOAP/api.rb +77 -696
- data/lib/jiraSOAP/api/additions.rb +22 -0
- data/lib/jiraSOAP/api/attachments.rb +33 -0
- data/lib/jiraSOAP/api/avatars.rb +64 -0
- data/lib/jiraSOAP/api/comments.rb +33 -0
- data/lib/jiraSOAP/api/filters.rb +20 -0
- data/lib/jiraSOAP/api/issue_data_types.rb +51 -0
- data/lib/jiraSOAP/api/issues.rb +102 -0
- data/lib/jiraSOAP/api/project_roles.rb +49 -0
- data/lib/jiraSOAP/api/projects.rb +67 -0
- data/lib/jiraSOAP/api/schemes.rb +17 -0
- data/lib/jiraSOAP/api/server_info.rb +18 -0
- data/lib/jiraSOAP/api/users.rb +35 -0
- data/lib/jiraSOAP/api/versions.rb +50 -0
- data/lib/jiraSOAP/entities.rb +5 -1
- data/lib/jiraSOAP/entities/attachment_metadata.rb +9 -22
- data/lib/jiraSOAP/entities/avatar.rb +10 -23
- data/lib/jiraSOAP/entities/comment.rb +12 -31
- data/lib/jiraSOAP/entities/component.rb +1 -1
- data/lib/jiraSOAP/entities/custom_field_value.rb +5 -11
- data/lib/jiraSOAP/entities/described_entity.rb +4 -4
- data/lib/jiraSOAP/entities/dynamic_entity.rb +5 -5
- data/lib/jiraSOAP/entities/entity.rb +28 -13
- data/lib/jiraSOAP/entities/field.rb +1 -1
- data/lib/jiraSOAP/entities/filter.rb +5 -14
- data/lib/jiraSOAP/entities/issue.rb +29 -88
- data/lib/jiraSOAP/entities/issue_property.rb +4 -4
- data/lib/jiraSOAP/entities/issue_security_scheme.rb +1 -1
- data/lib/jiraSOAP/entities/issue_type.rb +4 -5
- data/lib/jiraSOAP/entities/named_entity.rb +4 -4
- data/lib/jiraSOAP/entities/notification_scheme.rb +1 -1
- data/lib/jiraSOAP/entities/permission.rb +7 -10
- data/lib/jiraSOAP/entities/permission_mapping.rb +5 -10
- data/lib/jiraSOAP/entities/permission_scheme.rb +3 -4
- data/lib/jiraSOAP/entities/priority.rb +4 -3
- data/lib/jiraSOAP/entities/project.rb +9 -30
- data/lib/jiraSOAP/entities/project_role.rb +1 -1
- data/lib/jiraSOAP/entities/resolution.rb +1 -1
- data/lib/jiraSOAP/entities/scheme.rb +1 -1
- data/lib/jiraSOAP/entities/server_configuration.rb +14 -53
- data/lib/jiraSOAP/entities/server_info.rb +8 -26
- data/lib/jiraSOAP/entities/status.rb +1 -1
- data/lib/jiraSOAP/entities/time_info.rb +5 -10
- data/lib/jiraSOAP/entities/user.rb +5 -15
- data/lib/jiraSOAP/entities/username.rb +4 -0
- data/lib/jiraSOAP/entities/version.rb +6 -20
- data/lib/jiraSOAP/handsoap_extensions.rb +4 -2
- data/lib/jiraSOAP/macruby_bonuses.rb +12 -5
- data/lib/jiraSOAP/url.rb +13 -24
- data/yard-jiraSOAP.rb +65 -0
- metadata +52 -92
- data/lib/jiraSOAP/api/convenience.rb +0 -12
- data/lib/jiraSOAP/entities/remote_entity.rb +0 -7
@@ -0,0 +1,17 @@
|
|
1
|
+
module JIRA
|
2
|
+
module RemoteAPI
|
3
|
+
# @group Working with Schemes
|
4
|
+
|
5
|
+
# @return [Array<JIRA::NotificationScheme>]
|
6
|
+
def get_notification_schemes
|
7
|
+
jira_call JIRA::NotificationScheme, 'getNotificationSchemes'
|
8
|
+
end
|
9
|
+
|
10
|
+
# @return [Array<JIRA::PermissionScheme>]
|
11
|
+
def get_permission_schemes
|
12
|
+
jira_call JIRA::PermissionScheme, 'getPermissionSchemes'
|
13
|
+
end
|
14
|
+
|
15
|
+
# @endgroup
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module JIRA
|
2
|
+
module RemoteAPI
|
3
|
+
# @group Getting information about the server
|
4
|
+
|
5
|
+
# The @build_date attribute is a Time value, but does not include a time.
|
6
|
+
# @return [JIRA::ServerInfo]
|
7
|
+
def get_server_info
|
8
|
+
JIRA::ServerInfo.new_with_xml call( 'getServerInfo' ).first
|
9
|
+
end
|
10
|
+
|
11
|
+
# @return [JIRA::ServerConfiguration]
|
12
|
+
def get_server_configuration
|
13
|
+
JIRA::ServerConfiguration.new_with_xml call( 'getConfiguration' ).first
|
14
|
+
end
|
15
|
+
|
16
|
+
# @endgroup
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module JIRA
|
2
|
+
module RemoteAPI
|
3
|
+
# @group Working with User data
|
4
|
+
|
5
|
+
# @param [String] user_name
|
6
|
+
# @return [JIRA::User]
|
7
|
+
def get_user_with_name user_name
|
8
|
+
JIRA::User.new_with_xml call( 'getUser', user_name ).first
|
9
|
+
end
|
10
|
+
|
11
|
+
# It seems that creating a user without any permission groups will trigger
|
12
|
+
# an exception on some versions of JIRA. The irony is that this method provides
|
13
|
+
# no way to add groups. The good news though, is that the creation will still
|
14
|
+
# happen; but the user will have no permissions.
|
15
|
+
# @param [String] username
|
16
|
+
# @param [String] password
|
17
|
+
# @param [String] full_name
|
18
|
+
# @param [String] email
|
19
|
+
# @return [JIRA::User,nil] depending on your JIRA version, this method may
|
20
|
+
# always raise an exception instead of actually returning anything
|
21
|
+
def create_user username, password, full_name, email
|
22
|
+
fragment = call( 'createUser', username, password, full_name, email ).first
|
23
|
+
JIRA::User.new_with_xml fragment
|
24
|
+
end
|
25
|
+
|
26
|
+
# @param [String] username
|
27
|
+
# @return [Boolean] true if successful
|
28
|
+
def delete_user_with_name username
|
29
|
+
call 'deleteUser', username
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
# @endgroup
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module JIRA
|
2
|
+
module RemoteAPI
|
3
|
+
# @group Working with Versions
|
4
|
+
|
5
|
+
# @param [String] project_key
|
6
|
+
# @return [Array<JIRA::Version>]
|
7
|
+
def get_versions_for_project project_key
|
8
|
+
jira_call JIRA::Version, 'getVersions', project_key
|
9
|
+
end
|
10
|
+
|
11
|
+
# New versions cannot have the archived bit set and the release date
|
12
|
+
# field will ignore the time of day you give it and instead insert
|
13
|
+
# the time zone offset as the time of day.
|
14
|
+
#
|
15
|
+
# Remember that the @release_date field is the tentative release date,
|
16
|
+
# so its value is independant of the @released flag.
|
17
|
+
#
|
18
|
+
# Descriptions do not appear to be included with JIRA::Version objects
|
19
|
+
# that SOAP API provides.
|
20
|
+
# @param [String] project_key
|
21
|
+
# @param [JIRA::Version] version
|
22
|
+
# @return [JIRA::Version]
|
23
|
+
def add_version_to_project_with_key project_key, version
|
24
|
+
JIRA::Version.new_with_xml call( 'addVersion', project_key, version ).first
|
25
|
+
end
|
26
|
+
|
27
|
+
# The archive state can only be set to true for versions that have not been
|
28
|
+
# released. However, this is not reflected by the return value of this method.
|
29
|
+
# @param [String] project_key
|
30
|
+
# @param [String] version_name
|
31
|
+
# @param [Boolean] state
|
32
|
+
# @return [Boolean] true if successful
|
33
|
+
def set_archive_state_for_version_for_project project_key, version_name, state
|
34
|
+
call 'archiveVersion', project_key, version_name, state
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
38
|
+
# You can set the release state for a project with this method.
|
39
|
+
# @param [String] project_name
|
40
|
+
# @param [JIRA::Version] version
|
41
|
+
# @return [Boolean] true if successful
|
42
|
+
def release_state_for_version_for_project project_name, version
|
43
|
+
call 'releaseVersion', project_name, version
|
44
|
+
true
|
45
|
+
end
|
46
|
+
|
47
|
+
# @endgroup
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
data/lib/jiraSOAP/entities.rb
CHANGED
@@ -6,9 +6,11 @@ require 'jiraSOAP/entities/described_entity'
|
|
6
6
|
require 'jiraSOAP/entities/component'
|
7
7
|
require 'jiraSOAP/entities/field'
|
8
8
|
require 'jiraSOAP/entities/filter'
|
9
|
-
require 'jiraSOAP/entities/user'
|
10
9
|
require 'jiraSOAP/entities/project_role'
|
11
10
|
|
11
|
+
require 'jiraSOAP/entities/username'
|
12
|
+
require 'jiraSOAP/entities/user'
|
13
|
+
|
12
14
|
require 'jiraSOAP/entities/field_value'
|
13
15
|
require 'jiraSOAP/entities/custom_field_value'
|
14
16
|
|
@@ -20,6 +22,8 @@ require 'jiraSOAP/entities/attachment_metadata'
|
|
20
22
|
require 'jiraSOAP/entities/scheme'
|
21
23
|
require 'jiraSOAP/entities/notification_scheme'
|
22
24
|
require 'jiraSOAP/entities/issue_security_scheme'
|
25
|
+
require 'jiraSOAP/entities/permission'
|
26
|
+
require 'jiraSOAP/entities/permission_mapping'
|
23
27
|
require 'jiraSOAP/entities/permission_scheme'
|
24
28
|
|
25
29
|
require 'jiraSOAP/entities/issue_property'
|
@@ -1,27 +1,14 @@
|
|
1
|
+
# @todo add an attribute to fetch the attachment
|
1
2
|
# Only contains the metadata for an attachment. The URI for an attachment
|
2
3
|
# appears to be of the form
|
3
4
|
# "{JIRA::JIRAService.endpoint_url}/secure/attachment/{#id}/{#file_name}"
|
4
5
|
class JIRA::AttachmentMetadata < JIRA::NamedEntity
|
5
|
-
add_attributes(
|
6
|
-
'author'
|
7
|
-
'filename'
|
8
|
-
'mimetype'
|
9
|
-
|
10
|
-
'
|
11
|
-
|
12
|
-
|
13
|
-
# @return [String]
|
14
|
-
attr_accessor :author
|
15
|
-
|
16
|
-
# @return [Time]
|
17
|
-
attr_accessor :create_time
|
18
|
-
|
19
|
-
# @return [String]
|
20
|
-
attr_accessor :file_name
|
21
|
-
|
22
|
-
# @return [Fixnum] measured in bytes
|
23
|
-
attr_accessor :file_size
|
24
|
-
|
25
|
-
# @return [String]
|
26
|
-
attr_accessor :mime_type
|
6
|
+
add_attributes(
|
7
|
+
['author', :author, :to_s],
|
8
|
+
['filename', :file_name, :to_s],
|
9
|
+
['mimetype', :mime_type, :to_s],
|
10
|
+
# Measured in bytes
|
11
|
+
['filesize', :file_size, :to_i],
|
12
|
+
['created', :create_time, :to_date]
|
13
|
+
)
|
27
14
|
end
|
@@ -1,27 +1,14 @@
|
|
1
1
|
# @todo find out what the id value of @owner relates to
|
2
2
|
# Contains a base64 encoded avatar image and metadata about the avatar.
|
3
3
|
class JIRA::Avatar < JIRA::DynamicEntity
|
4
|
-
add_attributes(
|
5
|
-
|
6
|
-
'
|
7
|
-
'
|
8
|
-
'
|
9
|
-
'
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
# @return [String] the place where the avatar is used (e.g. 'project')
|
16
|
-
attr_accessor :type
|
17
|
-
|
18
|
-
# @return [String]
|
19
|
-
attr_accessor :mime_type
|
20
|
-
|
21
|
-
# @return [String]
|
22
|
-
attr_accessor :base64_data
|
23
|
-
|
24
|
-
# @return [boolean] indicates if the image is the system default
|
25
|
-
attr_accessor :system
|
26
|
-
alias_method :system?, :system
|
4
|
+
add_attributes(
|
5
|
+
# This seems to be an id ref to some other object
|
6
|
+
['owner', :owner, :to_s],
|
7
|
+
# The place where the avatar is used (e.g. 'project')
|
8
|
+
['type', :type, :to_s],
|
9
|
+
['contentType', :mime_type, :to_s],
|
10
|
+
['base64Data', :base64_data, :to_s],
|
11
|
+
# Indicates if the image is the system default
|
12
|
+
['system', :system, :to_boolean]
|
13
|
+
)
|
27
14
|
end
|
@@ -1,35 +1,16 @@
|
|
1
|
-
# Contains a
|
1
|
+
# Contains a comment's body and metadata.
|
2
2
|
class JIRA::Comment < JIRA::DynamicEntity
|
3
|
-
add_attributes(
|
4
|
-
|
5
|
-
'
|
6
|
-
'
|
7
|
-
'
|
8
|
-
'
|
9
|
-
|
10
|
-
'
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
attr_accessor :author
|
15
|
-
|
16
|
-
# @return [String]
|
17
|
-
attr_accessor :role_level
|
18
|
-
|
19
|
-
# @return [String]
|
20
|
-
attr_accessor :group_level
|
21
|
-
|
22
|
-
# @return [String]
|
23
|
-
attr_accessor :body
|
24
|
-
|
25
|
-
# @return [Time]
|
26
|
-
attr_accessor :create_time
|
27
|
-
|
28
|
-
# @return [Time]
|
29
|
-
attr_accessor :last_updated_time
|
30
|
-
|
31
|
-
# @return [String] a username
|
32
|
-
attr_accessor :update_author
|
3
|
+
add_attributes(
|
4
|
+
# A username
|
5
|
+
['author', :author, :to_s],
|
6
|
+
['body', :body, :to_s],
|
7
|
+
['groupLevel', :group_level, :to_s],
|
8
|
+
['roleLevel', :role_level, :to_s],
|
9
|
+
# A username
|
10
|
+
['updateAuthor', :update_author, :to_s],
|
11
|
+
['created', :create_time, :to_date],
|
12
|
+
['updated', :last_updated_time, :to_date]
|
13
|
+
)
|
33
14
|
|
34
15
|
# @todo make this method shorter
|
35
16
|
# @param [Handsoap::XmlMason::Node] msg
|
@@ -7,17 +7,11 @@
|
|
7
7
|
# custom fields and a field value is more flexible. You can expect the classes
|
8
8
|
# to merge in the near future.
|
9
9
|
class JIRA::CustomFieldValue < JIRA::DynamicEntity
|
10
|
-
|
11
|
-
'customfieldId'
|
12
|
-
'key'
|
13
|
-
'values'
|
14
|
-
|
15
|
-
|
16
|
-
# @return [String]
|
17
|
-
attr_accessor :key
|
18
|
-
|
19
|
-
# @return [[String]]
|
20
|
-
attr_accessor :values
|
10
|
+
add_attributes(
|
11
|
+
['customfieldId', :id, :to_s],
|
12
|
+
['key', :key, :to_s],
|
13
|
+
['values', :values, :to_ss]
|
14
|
+
)
|
21
15
|
|
22
16
|
# Generate a SOAP message fragment for the object.
|
23
17
|
# @param [Handsoap::XmlMason::Node] msg SOAP message to add the object to
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# @abstract Some named entities have a short description
|
2
2
|
class JIRA::DescribedEntity < JIRA::NamedEntity
|
3
|
-
add_attributes(
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
add_attributes(
|
4
|
+
# A short blurb.
|
5
|
+
['description', :description, :to_s]
|
6
|
+
)
|
7
7
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# @abstract Anything that can be configured has an id field.
|
2
2
|
class JIRA::DynamicEntity < JIRA::Entity
|
3
|
-
add_attributes(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
add_attributes(
|
4
|
+
# Usually a numerical value, but sometimes prefixed with a
|
5
|
+
# string (e.g. '12450' or 'customfield_10000')
|
6
|
+
['id', :id, :to_s]
|
7
|
+
)
|
8
8
|
end
|
@@ -1,22 +1,29 @@
|
|
1
1
|
# @abstract The base class for all JIRA objects that can given by the server.
|
2
|
-
# @todo remove the need for attr_accessor by having add_attributes make the
|
3
|
-
# call for me, but I will need to make a YARD plugin to fix the gap in the
|
4
|
-
# documentation when that happens
|
5
2
|
class JIRA::Entity
|
6
3
|
|
7
4
|
class << self
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
5
|
+
|
6
|
+
# @return [Hash{String=>Array<Symbol,Symbol,Class*>}] used by the
|
7
|
+
# metaclass for parsing XML
|
8
|
+
attr_accessor :parse
|
9
|
+
|
10
|
+
# @param [Array<String,Symbol,Class>] attributes
|
11
|
+
# @return [nil]
|
12
|
+
def add_attributes *attributes
|
13
|
+
superclass = ancestors[1]
|
14
|
+
@parse = superclass.parse.dup
|
15
|
+
|
16
|
+
attributes.each { |attribute|
|
17
|
+
attr_accessor attribute[1]
|
18
|
+
@parse[attribute[0]] = [:"#{attribute[1]}=", *attribute[2,2]]
|
19
|
+
alias_method :"#{attribute[1]}?", attribute[1] if attribute[2] == :to_boolean
|
20
|
+
#" ruby-mode parse fail
|
21
|
+
}
|
16
22
|
end
|
23
|
+
|
17
24
|
end
|
18
25
|
|
19
|
-
@
|
26
|
+
@parse = {} # needs to be initialized
|
20
27
|
|
21
28
|
# @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
|
22
29
|
# @return [JIRA::Entity]
|
@@ -33,11 +40,19 @@ class JIRA::Entity
|
|
33
40
|
# methods into Nokogiri classes
|
34
41
|
# @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
|
35
42
|
def initialize_with_xml frag
|
36
|
-
attributes = self.class.
|
43
|
+
attributes = self.class.parse
|
37
44
|
frag.children.each { |node|
|
38
45
|
action = attributes[node.node_name]
|
39
46
|
self.send action[0], (node.send *action[1..-1]) if action
|
40
47
|
#puts "Action is #{action.inspect} for #{node.node_name}"
|
41
48
|
}
|
42
49
|
end
|
50
|
+
|
51
|
+
# @todo #soapify_for should become #to_soap and should take only the
|
52
|
+
# optional argument for wrapper name, otherwise just makes its own
|
53
|
+
# own node with appropriate subnodes and returns that as a Handsoap
|
54
|
+
# document
|
55
|
+
def to_soap node_name = nil
|
56
|
+
raise NotImplementedError
|
57
|
+
end
|
43
58
|
end
|
@@ -1,17 +1,8 @@
|
|
1
1
|
# Represents a filter, but does not seem to include the filters JQL query.
|
2
2
|
class JIRA::Filter < JIRA::DescribedEntity
|
3
|
-
add_attributes(
|
4
|
-
'author'
|
5
|
-
'project'
|
6
|
-
'xml'
|
7
|
-
|
8
|
-
|
9
|
-
# @return [String]
|
10
|
-
attr_accessor :author
|
11
|
-
|
12
|
-
# @return [String]
|
13
|
-
attr_accessor :project_name
|
14
|
-
|
15
|
-
# @return [nil]
|
16
|
-
attr_accessor :xml
|
3
|
+
add_attributes(
|
4
|
+
['author', :author, :to_s],
|
5
|
+
['project', :project_name, :to_s],
|
6
|
+
['xml', :xml, :to_s]
|
7
|
+
)
|
17
8
|
end
|
@@ -1,98 +1,39 @@
|
|
1
|
+
# @todo add attributes for the comments and the attachment metadata
|
1
2
|
# Contains most of the data and metadata for a JIRA issue, but does
|
2
|
-
# not contain the {JIRA::Comment}
|
3
|
+
# not contain the {JIRA::Comment}s or {JIRA::AttachmentMetadata}.
|
3
4
|
#
|
4
5
|
# This class is easily the most convoluted structure in the API, and will
|
5
6
|
# likely be the greatest source of bugs. The irony of the situation is that
|
6
7
|
# this structure is also the most critical to have in working order.
|
7
8
|
#
|
8
|
-
# @note Issues with an UNRESOLVED status will have nil for the value
|
9
|
-
# #
|
9
|
+
# @note Issues with an UNRESOLVED status will have nil for the value for
|
10
|
+
# {#resolution_id}.
|
10
11
|
class JIRA::Issue < JIRA::DynamicEntity
|
11
|
-
add_attributes(
|
12
|
-
'key'
|
13
|
-
'summary'
|
14
|
-
'description'
|
15
|
-
'type'
|
16
|
-
'status'
|
17
|
-
'assignee'
|
18
|
-
'reporter'
|
19
|
-
'priority'
|
20
|
-
'project'
|
21
|
-
'resolution'
|
22
|
-
'environment'
|
23
|
-
'votes'
|
24
|
-
'updated'
|
25
|
-
'created'
|
26
|
-
|
27
|
-
'
|
28
|
-
'
|
29
|
-
'
|
30
|
-
'
|
31
|
-
'
|
32
|
-
|
33
|
-
|
34
|
-
# @return [String]
|
35
|
-
attr_accessor :key
|
36
|
-
|
37
|
-
# @return [String]
|
38
|
-
attr_accessor :summary
|
39
|
-
|
40
|
-
# @return [String]
|
41
|
-
attr_accessor :description
|
42
|
-
|
43
|
-
# @return [String]
|
44
|
-
attr_accessor :type_id
|
45
|
-
|
46
|
-
# @return [Time]
|
47
|
-
attr_accessor :last_updated_time
|
48
|
-
|
49
|
-
# @return [Fixnum]
|
50
|
-
attr_accessor :votes
|
51
|
-
|
52
|
-
# @return [String]
|
53
|
-
attr_accessor :status_id
|
54
|
-
|
55
|
-
# @return [String]
|
56
|
-
attr_accessor :assignee_username
|
57
|
-
|
58
|
-
# @return [String]
|
59
|
-
attr_accessor :reporter_username
|
60
|
-
|
61
|
-
# @return [String]
|
62
|
-
attr_accessor :priority_id
|
63
|
-
|
64
|
-
# @return [String]
|
65
|
-
attr_accessor :project_name
|
66
|
-
|
67
|
-
# @return [[JIRA::Version]]
|
68
|
-
attr_accessor :affects_versions
|
69
|
-
|
70
|
-
# @return [Time]
|
71
|
-
attr_accessor :create_time
|
72
|
-
|
73
|
-
# @return [Time] this is actually a Time object with no time resolution
|
74
|
-
attr_accessor :due_date
|
75
|
-
|
76
|
-
# @return [[JIRA::Version]]
|
77
|
-
attr_accessor :fix_versions
|
78
|
-
|
79
|
-
# @return [String]
|
80
|
-
attr_accessor :resolution_id
|
81
|
-
|
82
|
-
# @return [String]
|
83
|
-
attr_accessor :environment
|
84
|
-
|
85
|
-
# @return [[JIRA::Component]]
|
86
|
-
attr_accessor :components
|
87
|
-
|
88
|
-
# @return [[String]]
|
89
|
-
attr_accessor :attachment_names
|
90
|
-
|
91
|
-
# @return [[JIRA::CustomFieldValue]]
|
92
|
-
attr_accessor :custom_field_values
|
12
|
+
add_attributes(
|
13
|
+
['key', :key, :to_s],
|
14
|
+
['summary', :summary, :to_s],
|
15
|
+
['description', :description, :to_s],
|
16
|
+
['type', :type_id, :to_s],
|
17
|
+
['status', :status_id, :to_s],
|
18
|
+
['assignee', :assignee_username, :to_s],
|
19
|
+
['reporter', :reporter_username, :to_s],
|
20
|
+
['priority', :priority_id, :to_s],
|
21
|
+
['project', :project_name, :to_s],
|
22
|
+
['resolution', :resolution_id, :to_s],
|
23
|
+
['environment', :environment, :to_s],
|
24
|
+
['votes', :votes, :to_i],
|
25
|
+
['updated', :last_updated_time, :to_date],
|
26
|
+
['created', :create_time, :to_date],
|
27
|
+
# This is actually a Time object with no time resolution.
|
28
|
+
['duedate', :due_date, :to_date],
|
29
|
+
['affectsVersions', :affects_versions, :to_objects, JIRA::Version],
|
30
|
+
['fixVersions', :fix_versions, :to_objects, JIRA::Version],
|
31
|
+
['components', :components, :to_objects, JIRA::Component],
|
32
|
+
['customFieldValues', :custom_field_values, :to_objects, JIRA::CustomFieldValue],
|
33
|
+
['attachmentNames', :attachment_names, :to_ss]
|
34
|
+
)
|
93
35
|
|
94
36
|
# @todo see if we can use the simple and complex array builders
|
95
|
-
# @todo make this method shorter
|
96
37
|
# Generate the SOAP message fragment for an issue. Can you spot the oddities
|
97
38
|
# and inconsistencies? (hint: there are many).
|
98
39
|
#
|
@@ -109,13 +50,13 @@ class JIRA::Issue < JIRA::DynamicEntity
|
|
109
50
|
# and do not contain the rest of the {JIRA::Component}/{JIRA::Version}
|
110
51
|
# structure.
|
111
52
|
#
|
112
|
-
# To get the automatic assignee we pass '-1' as the value for @assignee.
|
53
|
+
# To get the automatic assignee we pass `'-1'` as the value for @assignee.
|
113
54
|
#
|
114
55
|
# Passing an environment/due date field with a value of nil causes the
|
115
56
|
# server to complain about the formatting of the message.
|
116
57
|
# @param [Handsoap::XmlMason::Node] msg message the node to add the object to
|
117
58
|
def soapify_for(msg)
|
118
|
-
#might be going away, since it appears to have no effect at creation time
|
59
|
+
# might be going away, since it appears to have no effect at creation time
|
119
60
|
msg.add 'reporter', @reporter_name unless @reporter.nil?
|
120
61
|
|
121
62
|
msg.add 'priority', @priority_id
|