indexing description: "Represents a resolver SRDI message" license: "MIT license (see ../../license.txt)" author: "Beat Strasser " date: "$Date$" revision: "$Revision$" class P2P_RESOLVER_SRDI inherit P2P_XML_CACHE redefine document, validate end create make, make_from_element, parse_from_string feature {NONE} -- Initialization make (a_handler_name: like handler_name; a_payload: like payload) is -- Create new resolver srdi message require Handler_name_valid: a_handler_name /= Void Payload_valid: a_payload /= Void do initialize set_handler_name (a_handler_name) set_payload (a_payload) is_valid := True ensure Handler_name_set: handler_name.is_equal (a_handler_name) Payload_set: payload = a_payload end feature -- Access handler_name: STRING payload: STRING match (an_element_name, an_element_value: STRING): BOOLEAN is -- Is given element's value equal with `an_element_value'? do if element_handler_name.is_equal (an_element_name) then Result := does_element_match (handler_name, an_element_value) end end feature -- Element change set_handler_name (a_name: like handler_name) is -- Set handler name require Handler_name_valid: a_name /= Void do handler_name := a_name renew_document ensure Handler_name_set: handler_name.is_equal (a_name) end set_payload (a_payload: like payload) is -- Set payload require Payload_valid: a_payload /= Void do payload := a_payload renew_document ensure Payload_set: payload.is_equal (a_payload) end feature -- Output document: P2P_XML_DOCUMENT is -- Create XML document local cached: BOOLEAN do cached := cached_document /= Void -- create document Result := Precursor if not cached then -- Element HandlerName Result.create_root_child_element (element_handler_name, Result.namespace_empty) Result.create_content (Result.last_element, handler_name) -- Element Payload Result.create_root_child_element (element_payload, Result.namespace_empty) Result.create_content (Result.last_element, payload) end end feature {NONE} -- Implementation Element_handler_name: STRING is "HandlerName" Element_payload: STRING is "Payload" Element_credential: STRING is "Cred" root_element_name: STRING is "ResolverSRDI" attribute_handler (root_attribute: XM_ATTRIBUTE) is -- No attributes do end element_handler (element: XM_ELEMENT) is -- Handle root child element of parsed document do if element_handler_name.is_equal (element.name) then handler_name := trimmed (element.text) elseif element_payload.is_equal (element.name) then payload := trimmed (element.text) end end validate is -- Validate message and set `is_valid' do is_valid := is_valid and handler_name /= Void and payload /= Void end end