Module OpenWFE::XmlCodec
In: lib/openwfe/orest/xmlcodec.rb

Ugly XML codec for OpenWFE workitems

(one of the first things I wrote in Ruby…)

Methods

Public Class methods

Takes as input some XML element and returns is decoded (as an instance)

[Source]

     # File lib/openwfe/orest/xmlcodec.rb, line 61
 61:         def XmlCodec.decode (xmlElt)
 62: 
 63:             return nil unless xmlElt
 64: 
 65:             if xmlElt.kind_of? String
 66: 
 67:                 xmlElt = REXML::Document.new(
 68:                     xmlElt, 
 69:                     :compress_whitespace => :all,
 70:                     :ignore_whitespace_nodes => :all)
 71: 
 72:                 xmlElt = xmlElt.root
 73:             end
 74: 
 75:             #puts "decode() xmlElt.name is >#{xmlElt.name}<"
 76: 
 77:             return decode_session_id(xmlElt) if xmlElt.name == 'session'
 78:             return decode_list(xmlElt) if xmlElt.name == STORES
 79:             return decode_store(xmlElt) if xmlElt.name == STORE
 80:             return decode_list(xmlElt) if xmlElt.name == HEADERS
 81:             return decode_header(xmlElt) if xmlElt.name == HEADER
 82: 
 83:             return decode_launch_ok(xmlElt) if xmlElt.name == OK
 84: 
 85:             return decode_list(xmlElt) if xmlElt.name == HISTORY
 86:             return decode_historyitem(xmlElt) if xmlElt.name == HISTORY_ITEM
 87: 
 88:             return decode_list(xmlElt) if xmlElt.name == FLOW_EXPRESSION_IDS
 89:             return decode_fei(xmlElt) if xmlElt.name == FLOW_EXPRESSION_ID
 90: 
 91:             return decode_inflowworkitem(xmlElt) \
 92:                 if xmlElt.name == IN_FLOW_WORKITEM
 93:             return decode_launchitem(xmlElt) \
 94:                 if xmlElt.name == LAUNCHITEM
 95: 
 96:             return decode_list(xmlElt) if xmlElt.name == LAUNCHABLES
 97:             return decode_launchable(xmlElt) if xmlElt.name == LAUNCHABLE
 98: 
 99:             return decode_list(xmlElt) if xmlElt.name == EXPRESSIONS
100:             return decode_expression(xmlElt) if xmlElt.name == EXPRESSION
101: 
102:             return decode_attribute(xmlElt.elements[1]) if xmlElt.name == ATTRIBUTES
103: 
104:             #
105:             # default
106: 
107:             decode_attribute(xmlElt)
108: 
109:             #raise              #    ArgumentError,              #    "Cannot decode : '"+xmlElt.name+"' "+xmlElt.to_s()
110:         end

Takes some OpenWFE Ruby instance and returns it as XML

[Source]

     # File lib/openwfe/orest/xmlcodec.rb, line 117
117:         def XmlCodec.encode (owfeData)
118: 
119:             #puts "encode() #{owfeData.inspect}"
120: 
121:             return encode_launchitem(owfeData) \
122:                 if owfeData.kind_of? LaunchItem
123: 
124:             return encode_fei(owfeData) \
125:                 if owfeData.kind_of? FlowExpressionId
126: 
127:             return encode_inflowworkitem(owfeData) \
128:                 if owfeData.kind_of? InFlowWorkItem
129: 
130:             raise \
131:                 ArgumentError, \
132:                 "Cannot encode : "+owfeData.inspect()
133:         end

[Source]

     # File lib/openwfe/orest/xmlcodec.rb, line 135
135:         def XmlCodec.encode_workitem_as_header (in_flow_workitem, locked)
136: 
137:             e = REXML::Element.new HEADER
138: 
139:             e.add_attribute A_LAST_MODIFIED, "#{in_flow_workitem.last_modified}"
140:             e.add_attribute A_LOCKED, locked
141: 
142:             e << XmlCodec::encode_fei(in_flow_workitem.fei)
143:             e << XmlCodec::encode_attributes(in_flow_workitem)
144: 
145:             e
146:         end

[Validate]