indexing description: "Endpoint message element" license: "MIT license (see ../../license.txt)" author: "Beat Strasser " date: "$Date$" revision: "$Revision$" class P2P_MESSAGE_ELEMENT inherit ANY redefine out end create make_required, make, make_string, make_xml feature {NONE} -- Initialization make_required (a_namespace: like namespace; a_content: like content) is -- Create element with required attributes require Info_valid: a_namespace /= Void and a_content /= Void do set_namespace (a_namespace) set_content (a_content) ensure Info_set: namespace = a_namespace and content = a_content end make (a_namespace: like namespace; a_name: like name; a_type: like type; a_signature: like signature; a_content: like content) is -- Create element with all attributes require Info_valid: a_namespace /= Void and a_content /= Void do set_namespace (a_namespace) if a_name /= Void then set_name (a_name) end if a_type /= Void then set_type (a_type) end if a_signature /= Void then set_signature (a_signature) end set_content (a_content) ensure Info_set: namespace = a_namespace and name = a_name and type = a_type and signature = a_signature and content = a_content end make_string (a_namespace: like namespace; a_name: like name; a_signature: like signature; a_content: like content) is -- Create element with text/plain type, see `Type_textplain_utf8' require Info_valid: a_namespace /= Void and a_content /= Void do make (a_namespace, a_name, type_textplain_utf8, a_signature, a_content) ensure Info_set: namespace = a_namespace and name = a_name and type = type_textplain_utf8 and signature = a_signature and content = a_content end make_xml (a_namespace: like namespace; a_name: like name; a_signature: like signature; a_content: like content) is -- Create element with text/xml type, see `Type_textxml_utf8' require Info_valid: a_namespace /= Void and a_content /= Void do make (a_namespace, a_name, type_textxml_utf8, a_signature, a_content) ensure Info_set: namespace = a_namespace and name = a_name and type = type_textxml_utf8 and signature = a_signature and content = a_content end feature -- Access namespace: STRING assign set_namespace name: STRING assign set_name type: STRING assign set_type signature: P2P_MESSAGE_ELEMENT assign set_signature content: STRING assign set_content Type_textplain_utf8: STRING is "text/plain;charset=UTF-8" -- MIME-Type text/plain;charset=UTF-8 Type_textxml_utf8: STRING is "text/xml;charset=UTF-8" -- MIME-Type text/xml;charset=UTF-8 feature -- Status setting set_namespace (a_namespace: like namespace) is -- Set content require Namespace_valid: a_namespace /= Void do namespace := a_namespace ensure Namespace_set: namespace = a_namespace end set_name (a_name: like name) is -- Set name require Name_valid: a_name /= Void do name := a_name ensure Name_set: name = a_name end set_type (a_type: like type) is -- Set type require Type_valid: a_type /= Void do type := a_type ensure Type_set: type = a_type end set_signature (a_signature: like signature) is -- Set signature require Signature_valid: a_signature /= Void do signature := a_signature ensure Signature_set: signature = a_signature end set_content (a_content: like content) is -- Set content require Content_valid: a_content /= Void do content := a_content ensure Content_set: content = a_content end feature -- Output out: STRING is -- Nice string representation do Result := "namespace=" + namespace if name /= Void then Result.append (", name=" + name) end if type /= Void then Result.append (", type=" + type) end if signature /= Void then Result.append (", signature=[" + signature.out + "]") end if content /= Void then Result.append (", content=" + content) end end end