note description: "Objects that provide instances of {SED_ERROR}." legal: "See notice at end of class." status: "See notice at end of class." author: "Julian Rogers" last_editor: "$Author: alexk $" date: "$Date: 2020-05-19 14:32:38 +0000 (Tue, 19 May 2020) $" revision: "$Revision: 104260 $" class SED_ERROR_FACTORY create default_create feature -- Access new_internal_error (a_msg: STRING_8): SED_ERROR -- Generic error message when something fails internally require a_msg_not_void: a_msg /= Void do create Result.make_with_string (a_msg) ensure result_not_void: Result /= Void end new_exception_error (a_exception: EXCEPTION): SED_ERROR -- Generic error message when something fails internally require a_exception_not_void: a_exception /= Void local l_msg: STRING_32 do create l_msg.make_from_string_general ("An exception of type {"); l_msg.append (a_exception.generating_type.name_32) if attached a_exception.description as l_message then l_msg.append_string_general ("} with message %""); l_msg.append_string_general (l_message); l_msg.append_string_general ("%" occurred.") else l_msg.append_string_general ("} occurred.") end create Result.make_with_string (l_msg) ensure result_not_void: Result /= Void end new_unknown_storable_type: SED_ERROR -- Storable format could be read but is unknown. do create Result.make_with_string ("Unknown storable type.") end new_obsolete_storable_type: SED_ERROR -- Obsolete storable format is used. do create Result.make_with_string ("Obsolete storable type, it might be possible to retrieve the data with the obsolete deserializer.") end new_invalid_object_error (a_obj: ANY): SED_ERROR -- Object a_obj was retrieved but is not valid. do create Result.make_with_string ({STRING_32}"Invalid retrieved object of type " + a_obj.generating_type.name_32) ensure result_not_void: Result /= Void end new_object_mismatch_error (a_obj: ANY): SED_ERROR -- Object a_obj was retrieved but its content is still mismatched. do create Result.make_with_string ({STRING_32}"Unfixable object of type " + a_obj.generating_type.name_32) ensure result_not_void: Result /= Void end new_format_mismatch (a_old_version, a_new_version: NATURAL_32): SED_ERROR -- Return an error when the format is different from what we expected upon retrieval do create Result.make_with_string ({STRING_8}"Storable format mismatch, got " + a_old_version.out + " but expected " + a_new_version.out + ".") ensure result_not_void: Result /= Void end new_format_mismatch_66: SED_ERROR -- Return an error when the format is not using is_for_fast_retrieval setting. do create Result.make_with_string ("Storable created with 6.6 or earlier not using `is_for_fast_retrieval' cannot be retrieved anymore. Contact EiffelSoftware if you need this functionality.") ensure result_not_void: Result /= Void end new_missing_type_error (a_stored_type, a_adapted_type: READABLE_STRING_8): SED_ERROR -- Return a error representing a missing type a_stored_type possibly adapted to a_adapted_type. require a_stored_type_not_void: a_stored_type /= Void a_adapted_type_not_void: a_adapted_type /= Void do if a_stored_type ~ a_adapted_type then create Result.make_with_string ("Unknown class type " + a_stored_type) else create Result.make_with_string ("Unknown class type " + a_stored_type + " and unknown adapted class type " + a_adapted_type) end ensure result_not_void: Result /= Void end new_missing_attribute_error (a_type_id: INTEGER_32; a_attribute_name: READABLE_STRING_8): SED_ERROR -- Return a error representing a missing attribute named a_attribute_name in type a_type. require a_type_id_non_negative: a_type_id >= 0 a_attribute_name_not_void: a_attribute_name /= Void local l_type: STRING_8 do l_type := Internal.class_name_of_type (a_type_id) create Result.make_with_string ({STRING_32}"No attribute named '" + a_attribute_name.to_string_32 + "' in type ".as_string_32 + l_type.as_string_32) ensure result_not_void: Result /= Void end new_unknown_attribute_type_error (a_type_id: INTEGER_32; a_attribute_name: READABLE_STRING_8): SED_ERROR -- Return a error representing an attribute whose type is unknown. require a_type_id_non_negative: a_type_id >= 0 a_attribute_name_not_void: a_attribute_name /= Void local l_type: STRING_8 do l_type := Internal.class_name_of_type (a_type_id) create Result.make_with_string ({STRING_32}"Attribute named '" + a_attribute_name.to_string_32 + "' in type ".as_string_32 + l_type.as_string_32 + " has an unknown type".as_string_32) ensure result_not_void: Result /= Void end new_storable_version_mismatch_error (a_type_id: INTEGER_32; a_old_version_str: detachable STRING_8): SED_ERROR -- Return an error representing a mismatch in the storable_version attribute in type a_type. require a_type_id_non_negative: a_type_id >= 0 local l_type: STRING_8 l_error_msg: STRING_32 l_new_version: detachable IMMUTABLE_STRING_8 do l_type := Internal.class_name_of_type (a_type_id) l_new_version := Internal.storable_version_of_type (a_type_id) create l_error_msg.make (256); l_error_msg.append ({STRING_32}"Different version in class " + l_type.as_string_32 + ".%N".as_string_32); l_error_msg.append ("Old version: ".as_string_32) if a_old_version_str = Void then l_error_msg.append ("None".as_string_32) else l_error_msg.append (a_old_version_str.as_string_32) end; l_error_msg.append ("New version: ".as_string_32) if l_new_version = Void then l_error_msg.append ("None".as_string_32) else l_error_msg.append_string_general (l_new_version) end create Result.make_with_string (l_error_msg) ensure result_not_void: Result /= Void end new_attribute_count_mismatch (a_type_id: INTEGER_32; a_received_attribute_count: INTEGER_32): SED_ERROR -- Return an error representing an attribute count mismatch for type a_type with a received attribute count of a_received_attribute_count. require a_type_id_non_negative: a_type_id >= 0 local l_type: STRING_8 do l_type := Internal.class_name_of_type (a_type_id) create Result.make_with_string ({STRING_32}"Attribute count mismatch in class " + l_type.as_string_32 + " Expected ".as_string_32 + Internal.persistent_field_count_of_type (a_type_id).out.as_string_32 + ", Received ".as_string_32 + a_received_attribute_count.out.as_string_32) ensure result_not_void: Result /= Void end new_attribute_mismatch (a_type_id: INTEGER_32; a_attribute_name: STRING_8; a_attribute_type_id, a_received_attribute_type_id: INTEGER_32): SED_ERROR -- Return an error representing an attribute mismatch for attribute a_attribute_name of type a_type with require a_type_id_non_negative: a_type_id >= 0 a_attribute_name_not_void: a_attribute_name /= Void a_attribute_type_id_non_negative: a_attribute_type_id >= 0 a_received_attribute_type_id_non_negative: a_received_attribute_type_id >= 0 do create Result.make_with_string ({STRING_32}"Attribute mismatch in class " + Internal.class_name_of_type (a_type_id).as_string_32 + " for attribute '".as_string_32 + a_attribute_name.as_string_32 + "'. Expected ".as_string_32 + Internal.class_name_of_type (a_attribute_type_id).as_string_32 + ", Received ".as_string_32 + Internal.class_name_of_type (a_received_attribute_type_id).as_string_32) ensure result_not_void: Result /= Void end feature {NONE} -- Implementation Internal: REFLECTOR -- Once access to internal. once create Result ensure result_not_void: Result /= Void end note library: "EiffelBase: Library of reusable components for Eiffel." copyright: "Copyright (c) 1984-2020, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 5949 Hollister Ave., Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end -- class SED_ERROR_FACTORY
Generated by ISE EiffelStudio