jiraSOAP 0.5.3 → 0.6.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.
- data/ChangeLog +22 -0
- data/README.markdown +6 -2
- data/lib/jiraSOAP.rb +6 -2
- data/lib/jiraSOAP/JIRAservice.rb +29 -32
- data/lib/jiraSOAP/api.rb +220 -59
- data/lib/jiraSOAP/entities.rb +29 -19
- data/lib/jiraSOAP/entities/attachment_metadata.rb +27 -0
- data/lib/jiraSOAP/entities/avatar.rb +12 -19
- data/lib/jiraSOAP/entities/comment.rb +17 -26
- data/lib/jiraSOAP/entities/component.rb +5 -0
- data/lib/jiraSOAP/entities/custom_field_value.rb +33 -0
- data/lib/jiraSOAP/entities/described_entity.rb +7 -0
- data/lib/jiraSOAP/entities/dynamic_entity.rb +8 -0
- data/lib/jiraSOAP/entities/entity.rb +43 -0
- data/lib/jiraSOAP/entities/field.rb +4 -0
- data/lib/jiraSOAP/entities/field_value.rb +4 -49
- data/lib/jiraSOAP/entities/filter.rb +7 -16
- data/lib/jiraSOAP/entities/issue.rb +32 -43
- data/lib/jiraSOAP/entities/issue_property.rb +9 -0
- data/lib/jiraSOAP/entities/issue_security_scheme.rb +4 -0
- data/lib/jiraSOAP/entities/issue_type.rb +8 -0
- data/lib/jiraSOAP/entities/named_entity.rb +7 -0
- data/lib/jiraSOAP/entities/notification_scheme.rb +4 -0
- data/lib/jiraSOAP/entities/permission.rb +12 -0
- data/lib/jiraSOAP/entities/permission_mapping.rb +12 -0
- data/lib/jiraSOAP/entities/permission_scheme.rb +8 -0
- data/lib/jiraSOAP/entities/priority.rb +9 -0
- data/lib/jiraSOAP/entities/project.rb +14 -24
- data/lib/jiraSOAP/entities/project_role.rb +11 -0
- data/lib/jiraSOAP/entities/remote_entity.rb +7 -0
- data/lib/jiraSOAP/entities/resolution.rb +4 -0
- data/lib/jiraSOAP/entities/scheme.rb +9 -0
- data/lib/jiraSOAP/entities/server_configuration.rb +56 -0
- data/lib/jiraSOAP/entities/server_info.rb +30 -0
- data/lib/jiraSOAP/entities/status.rb +4 -0
- data/lib/jiraSOAP/entities/time_info.rb +15 -0
- data/lib/jiraSOAP/entities/user.rb +8 -13
- data/lib/jiraSOAP/entities/version.rb +8 -16
- data/lib/jiraSOAP/handsoap_extensions.rb +29 -42
- data/lib/jiraSOAP/url.rb +3 -2
- metadata +193 -33
- data/lib/jiraSOAP/entities/abstract.rb +0 -93
- data/lib/jiraSOAP/entities/attachments.rb +0 -35
- data/lib/jiraSOAP/entities/issue_properties.rb +0 -39
- data/lib/jiraSOAP/entities/read_only.rb +0 -120
- data/lib/jiraSOAP/entities/schemes.rb +0 -25
data/lib/jiraSOAP/entities.rb
CHANGED
@@ -1,26 +1,36 @@
|
|
1
|
-
require 'jiraSOAP/entities/
|
2
|
-
require 'jiraSOAP/entities/
|
3
|
-
require 'jiraSOAP/entities/
|
1
|
+
require 'jiraSOAP/entities/entity'
|
2
|
+
require 'jiraSOAP/entities/dynamic_entity'
|
3
|
+
require 'jiraSOAP/entities/named_entity'
|
4
|
+
require 'jiraSOAP/entities/described_entity'
|
5
|
+
|
6
|
+
require 'jiraSOAP/entities/component'
|
7
|
+
require 'jiraSOAP/entities/field'
|
8
|
+
require 'jiraSOAP/entities/filter'
|
4
9
|
require 'jiraSOAP/entities/user'
|
10
|
+
require 'jiraSOAP/entities/project_role'
|
11
|
+
|
12
|
+
require 'jiraSOAP/entities/field_value'
|
13
|
+
require 'jiraSOAP/entities/custom_field_value'
|
5
14
|
|
6
15
|
require 'jiraSOAP/entities/avatar'
|
7
16
|
require 'jiraSOAP/entities/comment'
|
8
|
-
require 'jiraSOAP/entities/issue'
|
9
|
-
|
10
|
-
require 'jiraSOAP/entities/filter'
|
11
17
|
require 'jiraSOAP/entities/version'
|
12
|
-
require 'jiraSOAP/entities/
|
13
|
-
|
14
|
-
require 'jiraSOAP/entities/
|
15
|
-
require 'jiraSOAP/entities/
|
18
|
+
require 'jiraSOAP/entities/attachment_metadata'
|
19
|
+
|
20
|
+
require 'jiraSOAP/entities/scheme'
|
21
|
+
require 'jiraSOAP/entities/notification_scheme'
|
22
|
+
require 'jiraSOAP/entities/issue_security_scheme'
|
23
|
+
require 'jiraSOAP/entities/permission_scheme'
|
16
24
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
25
|
+
require 'jiraSOAP/entities/issue_property'
|
26
|
+
require 'jiraSOAP/entities/resolution'
|
27
|
+
require 'jiraSOAP/entities/status'
|
28
|
+
require 'jiraSOAP/entities/priority'
|
29
|
+
require 'jiraSOAP/entities/issue_type'
|
30
|
+
|
31
|
+
require 'jiraSOAP/entities/project'
|
32
|
+
require 'jiraSOAP/entities/issue'
|
21
33
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
26
|
-
end
|
34
|
+
require 'jiraSOAP/entities/time_info'
|
35
|
+
require 'jiraSOAP/entities/server_info'
|
36
|
+
require 'jiraSOAP/entities/server_configuration'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# Only contains the metadata for an attachment. The URI for an attachment
|
2
|
+
# appears to be of the form
|
3
|
+
# "{JIRA::JIRAService.endpoint_url}/secure/attachment/{#id}/{#file_name}"
|
4
|
+
class JIRA::AttachmentMetadata < JIRA::NamedEntity
|
5
|
+
add_attributes({
|
6
|
+
'author' => [:author=, :to_s],
|
7
|
+
'filename' => [:file_name=, :to_s],
|
8
|
+
'mimetype' => [:mime_type=, :to_s],
|
9
|
+
'filesize' => [:file_size=, :to_i],
|
10
|
+
'created' => [:create_time=, :to_date],
|
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
|
27
|
+
end
|
@@ -1,12 +1,18 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# @todo find out what the id value of @owner relates to
|
3
2
|
# Contains a base64 encoded avatar image and metadata about the avatar.
|
4
|
-
class Avatar < JIRA::DynamicEntity
|
5
|
-
|
6
|
-
|
3
|
+
class JIRA::Avatar < JIRA::DynamicEntity
|
4
|
+
add_attributes({
|
5
|
+
'owner' => [:owner=, :to_s],
|
6
|
+
'type' => [:type=, :to_s],
|
7
|
+
'contentType' => [:mime_type=, :to_s],
|
8
|
+
'base64Data' => [:base64_data=, :to_s],
|
9
|
+
'system' => [:system=, :to_boolean],
|
10
|
+
})
|
11
|
+
|
12
|
+
# @return [String] this seems to be an id ref to some other object
|
7
13
|
attr_accessor :owner
|
8
14
|
|
9
|
-
# @return [String] the place where the avatar is used
|
15
|
+
# @return [String] the place where the avatar is used (e.g. 'project')
|
10
16
|
attr_accessor :type
|
11
17
|
|
12
18
|
# @return [String]
|
@@ -18,17 +24,4 @@ class Avatar < JIRA::DynamicEntity
|
|
18
24
|
# @return [boolean] indicates if the image is the system default
|
19
25
|
attr_accessor :system
|
20
26
|
alias_method :system?, :system
|
21
|
-
|
22
|
-
# @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
|
23
|
-
def initialize_with_xml_fragment(frag)
|
24
|
-
super frag
|
25
|
-
@owner, @type, @mime_type, @base64_data, @system =
|
26
|
-
frag.nodes( ['owner', :to_s],
|
27
|
-
['type', :to_s],
|
28
|
-
['contentType', :to_s],
|
29
|
-
['base64Data', :to_s],
|
30
|
-
['system', :to_boolean] )
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
27
|
end
|
@@ -1,10 +1,17 @@
|
|
1
|
-
module JIRA
|
2
|
-
|
3
1
|
# Contains a comments body and its metadata.
|
4
|
-
class Comment < JIRA::DynamicEntity
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
class JIRA::Comment < JIRA::DynamicEntity
|
3
|
+
add_attributes({
|
4
|
+
'author' => [:author=, :to_s],
|
5
|
+
'body' => [:body=, :to_s],
|
6
|
+
'groupLevel' => [:group_level=, :to_s],
|
7
|
+
'roleLevel' => [:role_level=, :to_s],
|
8
|
+
'updateAuthor' => [:update_author=, :to_s],
|
9
|
+
'created' => [:create_time=, :to_date],
|
10
|
+
'updated' => [:last_updated_time=, :to_date]
|
11
|
+
})
|
12
|
+
|
13
|
+
# @return [String] a username
|
14
|
+
attr_accessor :author
|
8
15
|
|
9
16
|
# @return [String]
|
10
17
|
attr_accessor :role_level
|
@@ -16,39 +23,23 @@ class Comment < JIRA::DynamicEntity
|
|
16
23
|
attr_accessor :body
|
17
24
|
|
18
25
|
# @return [Time]
|
19
|
-
attr_accessor :
|
26
|
+
attr_accessor :create_time
|
20
27
|
|
21
28
|
# @return [Time]
|
22
|
-
attr_accessor :
|
29
|
+
attr_accessor :last_updated_time
|
23
30
|
|
24
|
-
# @return [String]
|
31
|
+
# @return [String] a username
|
25
32
|
attr_accessor :update_author
|
26
33
|
|
27
|
-
# @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
|
28
|
-
def initialize_with_xml_fragment(frag)
|
29
|
-
super frag
|
30
|
-
@original_author, @body, @group_level, @role_level,
|
31
|
-
@update_author, @create_date, @last_updated =
|
32
|
-
frag.nodes( ['author', :to_s],
|
33
|
-
['body', :to_s],
|
34
|
-
['groupLevel', :to_s],
|
35
|
-
['roleLevel', :to_s],
|
36
|
-
['updateAuthor', :to_s],
|
37
|
-
['created', :to_date],
|
38
|
-
['updated', :to_date] )
|
39
|
-
end
|
40
|
-
|
41
34
|
# @todo make this method shorter
|
42
35
|
# @param [Handsoap::XmlMason::Node] msg
|
43
36
|
# @return [Handsoap::XmlMason::Node]
|
44
37
|
def soapify_for(msg)
|
45
38
|
msg.add 'id', @id
|
46
|
-
msg.add 'author', @
|
39
|
+
msg.add 'author', @author
|
47
40
|
msg.add 'body', @body
|
48
41
|
msg.add 'groupLevel', @group_level
|
49
42
|
msg.add 'roleLevel', @role_level
|
50
43
|
msg.add 'updateAuthor', @update_author
|
51
44
|
end
|
52
45
|
end
|
53
|
-
|
54
|
-
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# @todo see if @key is always nil from the server, maybe we can remove it
|
2
|
+
# Represents an instance of a custom field (with values). This object is used
|
3
|
+
# as a member of {JIRA::Issue} objects.
|
4
|
+
#
|
5
|
+
# The structure of this class resembles JIRA::FieldValue, it is different
|
6
|
+
# in that @values will always be stored as an Array of String objects for
|
7
|
+
# custom fields and a field value is more flexible. You can expect the classes
|
8
|
+
# to merge in the near future.
|
9
|
+
class JIRA::CustomFieldValue < JIRA::DynamicEntity
|
10
|
+
@attributes = {
|
11
|
+
'customfieldId' => [:id=, :to_s],
|
12
|
+
'key' => [:key=, :to_s],
|
13
|
+
'values' => [:values=, :to_ss]
|
14
|
+
}
|
15
|
+
|
16
|
+
# @return [String]
|
17
|
+
attr_accessor :key
|
18
|
+
|
19
|
+
# @return [[String]]
|
20
|
+
attr_accessor :values
|
21
|
+
|
22
|
+
# Generate a SOAP message fragment for the object.
|
23
|
+
# @param [Handsoap::XmlMason::Node] msg SOAP message to add the object to
|
24
|
+
# @param [String] label tag name used in wrapping tags
|
25
|
+
# @return [Handsoap::XmlMason::Element]
|
26
|
+
def soapify_for(msg, label = 'customFieldValues')
|
27
|
+
msg.add label do |submsg|
|
28
|
+
submsg.add 'customfieldId', @id
|
29
|
+
submsg.add 'key', @key
|
30
|
+
submsg.add_simple_array 'values', @values
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# @abstract Anything that can be configured has an id field.
|
2
|
+
class JIRA::DynamicEntity < JIRA::Entity
|
3
|
+
add_attributes({ 'id' => [:id=, :to_s] })
|
4
|
+
|
5
|
+
# @return [String] usually a numerical value, but sometimes
|
6
|
+
# prefixed with a string (e.g. '12450' or 'customfield_10000')
|
7
|
+
attr_accessor :id
|
8
|
+
end
|
@@ -0,0 +1,43 @@
|
|
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
|
+
class JIRA::Entity
|
6
|
+
|
7
|
+
class << self
|
8
|
+
# @return [Hash{String => Array}] used by the metaclass
|
9
|
+
attr_accessor :attributes
|
10
|
+
|
11
|
+
# @param [Hash] attributes
|
12
|
+
# @return [Hash]
|
13
|
+
def add_attributes attributes
|
14
|
+
@attributes = ancestors[1].attributes.dup
|
15
|
+
@attributes.update attributes
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
@attributes = {} # needs to be initialized
|
20
|
+
|
21
|
+
# @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
|
22
|
+
# @return [JIRA::Entity]
|
23
|
+
def self.new_with_xml frag
|
24
|
+
entity = allocate
|
25
|
+
entity.initialize_with_xml frag
|
26
|
+
entity
|
27
|
+
end
|
28
|
+
|
29
|
+
# @todo put debug message through the logger
|
30
|
+
# @todo make this faster by cutting out NokogiriDriver,
|
31
|
+
# but I will need to add an accessor for @element of the
|
32
|
+
# driver object and then need to inject the marshaling
|
33
|
+
# methods into Nokogiri classes
|
34
|
+
# @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
|
35
|
+
def initialize_with_xml frag
|
36
|
+
attributes = self.class.attributes
|
37
|
+
frag.children.each { |node|
|
38
|
+
action = attributes[node.node_name]
|
39
|
+
self.send action[0], (node.send *action[1..-1]) if action
|
40
|
+
#puts "Action is #{action.inspect} for #{node.node_name}"
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
@@ -1,14 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
# that is used by {RemoteAPI#update_issue}.
|
5
|
-
class FieldValue
|
1
|
+
# A structure that is a bit of a hack; it is just a key-value pair that
|
2
|
+
# is used by {RemoteAPI#update_issue}.
|
3
|
+
class JIRA::FieldValue
|
6
4
|
|
7
5
|
# @return [String] the name for regular fields, and the id for custom fields
|
8
6
|
attr_accessor :field_name
|
9
7
|
|
10
|
-
# @return [
|
11
|
-
# wrapped in an array.
|
8
|
+
# @return [Array(#to_s)] an array for the values, usually a single
|
12
9
|
attr_accessor :values
|
13
10
|
|
14
11
|
# @param [String] field_name
|
@@ -29,45 +26,3 @@ class FieldValue
|
|
29
26
|
end
|
30
27
|
end
|
31
28
|
end
|
32
|
-
|
33
|
-
|
34
|
-
# Represents an instance of a custom field (with values). This object is used
|
35
|
-
# as a member of {JIRA::Issue} objects.
|
36
|
-
#
|
37
|
-
# The structure of this class resembles JIRA::FieldValue, it is different
|
38
|
-
# in that @values will always be stored as an Array of String objects for
|
39
|
-
# custom fields and a field value is more flexible. You can expect the classes
|
40
|
-
# to merge in the near future.
|
41
|
-
# @todo see if @key is always nil from the server, maybe we can remove it
|
42
|
-
# @todo merge this class with JIRA::FieldValue
|
43
|
-
class CustomFieldValue < JIRA::DynamicEntity
|
44
|
-
|
45
|
-
# @return [String]
|
46
|
-
attr_accessor :key
|
47
|
-
|
48
|
-
# @return [[String]]
|
49
|
-
attr_accessor :values
|
50
|
-
|
51
|
-
# @note careful, value of id is actually customfieldId
|
52
|
-
# @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
|
53
|
-
def initialize_with_xml_fragment(frag)
|
54
|
-
@id, @key, @values =
|
55
|
-
frag.nodes( ['customfieldId', :to_s],
|
56
|
-
['key', :to_s],
|
57
|
-
['values/*', :to_ss] )
|
58
|
-
end
|
59
|
-
|
60
|
-
# Generate a SOAP message fragment for the object.
|
61
|
-
# @param [Handsoap::XmlMason::Node] msg SOAP message to add the object to
|
62
|
-
# @param [String] label tag name used in wrapping tags
|
63
|
-
# @return [Handsoap::XmlMason::Element]
|
64
|
-
def soapify_for(msg, label = 'customFieldValues')
|
65
|
-
msg.add label do |submsg|
|
66
|
-
submsg.add 'customfieldId', @id
|
67
|
-
submsg.add 'key', @key
|
68
|
-
submsg.add_simple_array 'values', @values
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
@@ -1,26 +1,17 @@
|
|
1
|
-
module JIRA
|
2
|
-
|
3
1
|
# Represents a filter, but does not seem to include the filters JQL query.
|
4
|
-
|
5
|
-
|
2
|
+
class JIRA::Filter < JIRA::DescribedEntity
|
3
|
+
add_attributes({
|
4
|
+
'author' => [:author=, :to_s],
|
5
|
+
'project' => [:project_name=, :to_s],
|
6
|
+
'xml' => [:xml=, :to_s]
|
7
|
+
})
|
6
8
|
|
7
9
|
# @return [String]
|
8
10
|
attr_accessor :author
|
9
11
|
|
10
12
|
# @return [String]
|
11
|
-
attr_accessor :
|
13
|
+
attr_accessor :project_name
|
12
14
|
|
13
15
|
# @return [nil]
|
14
16
|
attr_accessor :xml
|
15
|
-
|
16
|
-
# @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
|
17
|
-
def initialize_with_xml_fragment(frag)
|
18
|
-
super frag
|
19
|
-
@author, @project, @xml =
|
20
|
-
frag.nodes( ['author', :to_s],
|
21
|
-
['project', :to_s],
|
22
|
-
['xml', :to_s] )
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
17
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
module JIRA
|
2
|
-
|
3
1
|
# Contains most of the data and metadata for a JIRA issue, but does
|
4
2
|
# not contain the {JIRA::Comment}'s or {JIRA::AttachmentMetadata}.
|
5
3
|
#
|
@@ -7,8 +5,31 @@ module JIRA
|
|
7
5
|
# likely be the greatest source of bugs. The irony of the situation is that
|
8
6
|
# this structure is also the most critical to have in working order.
|
9
7
|
#
|
10
|
-
# Issues with an UNRESOLVED status will have nil for the value of
|
11
|
-
|
8
|
+
# @note Issues with an UNRESOLVED status will have nil for the value of
|
9
|
+
# #resolution.
|
10
|
+
class JIRA::Issue < JIRA::DynamicEntity
|
11
|
+
add_attributes({
|
12
|
+
'key' => [:key=, :to_s],
|
13
|
+
'summary' => [:summary=, :to_s],
|
14
|
+
'description' => [:description=, :to_s],
|
15
|
+
'type' => [:type_id=, :to_s],
|
16
|
+
'status' => [:status_id=, :to_s],
|
17
|
+
'assignee' => [:assignee_username=, :to_s],
|
18
|
+
'reporter' => [:reporter_username=, :to_s],
|
19
|
+
'priority' => [:priority_id=, :to_s],
|
20
|
+
'project' => [:project_name=, :to_s],
|
21
|
+
'resolution' => [:resolution_id=, :to_s],
|
22
|
+
'environment' => [:environment=, :to_s],
|
23
|
+
'votes' => [:votes=, :to_i],
|
24
|
+
'updated' => [:last_updated_time=, :to_date],
|
25
|
+
'created' => [:create_time=, :to_date],
|
26
|
+
'duedate' => [:due_date=, :to_date],
|
27
|
+
'affectsVersions' => [:affects_versions=, :to_objects, JIRA::Version],
|
28
|
+
'fixVersions' => [:fix_versions=, :to_objects, JIRA::Version],
|
29
|
+
'components' => [:components=, :to_objects, JIRA::Component],
|
30
|
+
'customFieldValues' => [:custom_field_values=, :to_objects, JIRA::CustomFieldValue],
|
31
|
+
'attachmentNames' => [:attachment_names=, :to_ss]
|
32
|
+
})
|
12
33
|
|
13
34
|
# @return [String]
|
14
35
|
attr_accessor :key
|
@@ -23,7 +44,7 @@ class Issue < JIRA::DynamicEntity
|
|
23
44
|
attr_accessor :type_id
|
24
45
|
|
25
46
|
# @return [Time]
|
26
|
-
attr_accessor :
|
47
|
+
attr_accessor :last_updated_time
|
27
48
|
|
28
49
|
# @return [Fixnum]
|
29
50
|
attr_accessor :votes
|
@@ -32,10 +53,10 @@ class Issue < JIRA::DynamicEntity
|
|
32
53
|
attr_accessor :status_id
|
33
54
|
|
34
55
|
# @return [String]
|
35
|
-
attr_accessor :
|
56
|
+
attr_accessor :assignee_username
|
36
57
|
|
37
58
|
# @return [String]
|
38
|
-
attr_accessor :
|
59
|
+
attr_accessor :reporter_username
|
39
60
|
|
40
61
|
# @return [String]
|
41
62
|
attr_accessor :priority_id
|
@@ -47,9 +68,9 @@ class Issue < JIRA::DynamicEntity
|
|
47
68
|
attr_accessor :affects_versions
|
48
69
|
|
49
70
|
# @return [Time]
|
50
|
-
attr_accessor :
|
71
|
+
attr_accessor :create_time
|
51
72
|
|
52
|
-
# @return [Time]
|
73
|
+
# @return [Time] this is actually a Time object with no time resolution
|
53
74
|
attr_accessor :due_date
|
54
75
|
|
55
76
|
# @return [[JIRA::Version]]
|
@@ -70,36 +91,8 @@ class Issue < JIRA::DynamicEntity
|
|
70
91
|
# @return [[JIRA::CustomFieldValue]]
|
71
92
|
attr_accessor :custom_field_values
|
72
93
|
|
73
|
-
# @
|
74
|
-
|
75
|
-
super frag
|
76
|
-
@key, @summary, @description, @type_id, @status_id,
|
77
|
-
@assignee_name, @reporter_name, @priority_id, @project_name,
|
78
|
-
@resolution_id, @environment, @votes, @last_updated, @create_date,
|
79
|
-
@due_date, @affects_versions, @fix_versions, @components,
|
80
|
-
@custom_field_values, @attachment_names =
|
81
|
-
frag.nodes( ['key', :to_s],
|
82
|
-
['summary', :to_s],
|
83
|
-
['description', :to_s],
|
84
|
-
['type', :to_s],
|
85
|
-
['status', :to_s],
|
86
|
-
['assignee', :to_s],
|
87
|
-
['reporter', :to_s],
|
88
|
-
['priority', :to_s],
|
89
|
-
['project', :to_s],
|
90
|
-
['resolution', :to_s],
|
91
|
-
['environment', :to_s],
|
92
|
-
['votes', :to_i],
|
93
|
-
['updated', :to_date],
|
94
|
-
['created', :to_date],
|
95
|
-
['duedate', :to_date],
|
96
|
-
['affectsVersions/*', :to_objects, JIRA::Version],
|
97
|
-
['fixVersions/*', :to_objects, JIRA::Version],
|
98
|
-
['components/*', :to_objects, JIRA::Component],
|
99
|
-
['customFieldValues/*', :to_objects, JIRA::CustomFieldValue],
|
100
|
-
['attachmentNames/*', :to_ss] )
|
101
|
-
end
|
102
|
-
|
94
|
+
# @todo see if we can use the simple and complex array builders
|
95
|
+
# @todo make this method shorter
|
103
96
|
# Generate the SOAP message fragment for an issue. Can you spot the oddities
|
104
97
|
# and inconsistencies? (hint: there are many).
|
105
98
|
#
|
@@ -120,8 +113,6 @@ class Issue < JIRA::DynamicEntity
|
|
120
113
|
#
|
121
114
|
# Passing an environment/due date field with a value of nil causes the
|
122
115
|
# server to complain about the formatting of the message.
|
123
|
-
# @todo see if we can use the simple and complex array builders
|
124
|
-
# @todo make this method shorter
|
125
116
|
# @param [Handsoap::XmlMason::Node] msg message the node to add the object to
|
126
117
|
def soapify_for(msg)
|
127
118
|
#might be going away, since it appears to have no effect at creation time
|
@@ -162,5 +153,3 @@ class Issue < JIRA::DynamicEntity
|
|
162
153
|
msg.add 'duedate', @due_date.xmlschema unless @due_date.nil?
|
163
154
|
end
|
164
155
|
end
|
165
|
-
|
166
|
-
end
|