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: 2017-04-12 13:15:47 +0000 (Wed, 12 Apr 2017) $" revision: "$Revision: 100150 $" 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 ("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: 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: 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 ("No attribute named '" + a_attribute_name + "' in type " + l_type) ensure result_not_void: Result /= Void end new_unknown_attribute_type_error (a_type_id: INTEGER_32; a_attribute_name: 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 ("Attribute named '" + a_attribute_name + "' in type " + l_type + " has an unknown type") 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, l_error_msg: STRING_8 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 ("Different version in class " + l_type + ".%N") l_error_msg.append ("Old version: ") if a_old_version_str = Void then l_error_msg.append ("None") else l_error_msg.append (a_old_version_str) end l_error_msg.append ("New version: ") if l_new_version = Void then l_error_msg.append ("None") else l_error_msg.append (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 ("Attribute count mismatch in class " + l_type + " Expected " + Internal.persistent_field_count_of_type (a_type_id).out + ", Received " + a_received_attribute_count.out) 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 ("Attribute mismatch in class " + Internal.class_name_of_type (a_type_id) + " for attribute '" + a_attribute_name + "'. Expected " + Internal.class_name_of_type (a_attribute_type_id) + ", Received " + Internal.class_name_of_type (a_received_attribute_type_id)) 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-2017, 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