# File lib/tapkit/access/attribute.rb, line 119
                def new_value( value, encoding = nil )
                        if value.nil? then return value end

                        if @class_name and @factory_method then
                                klass = eval @class_name
                                converted = klass.__send__(@factory_method, value)
                                return converted
                        end

                        begin
                                converted = value

                                case @class_name
                                when 'String'
                                        converted = value.to_s.dup

                                        if encoding then
                                                converted = Utilities.encode(converted, encoding)
                                        end
                                when 'Integer'
                                        converted = value.to_i
                                when 'Float'
                                        converted = value.to_f
                                when 'BigDecimal'
                                        converted = value.to_s.dup
                                when 'Date'
                                        unless Date === value then
                                                converted = Date.new(value.year, value.mon, value.mday)
                                        end
                                when 'Time'
                                        unless Time === value then
                                                converted = Time.new(value.hour, value.min, value.sec)
                                        end
                                when 'Timestamp'
                                        if String === value then
                                                value = DateTime.parse value
                                        end

                                        unless Timestamp === value then
                                                converted = Timestamp.new(value.year, value.mon, value.mday, \
                                                        value.hour, value.min, value.sec)
                                        end
                                when 'Boolean'
                                        if (value == 1) or (value == true) then
                                                converted = true
                                        elsif (value == 0) or (value == false) then
                                                converted = false
                                        else
                                                converted = nil
                                        end
                                else
                                        # (not yet implemented) custom class
                                        raise ArgumentError, "uninitialized constant #@class_name"
                                end
                                value = converted
                        rescue
                                raise ArgumentError, "can't cast to #@class_name - #{value.class}:#{value}"
                        end

                        value
                end