lib/dynflow/serializers/abstract.rb in dynflow-0.8.35 vs lib/dynflow/serializers/abstract.rb in dynflow-0.8.36

- old
+ new

@@ -1,38 +1,67 @@ module Dynflow module Serializers + # @abstract + # Used to serialize and deserialize arguments for storage in a database. + # Used by {DelayedPlan} to store arguments which should be passed into + # the {Dynflow::Action}'s #plan method when the plan is executed. class Abstract attr_reader :args, :serialized_args + # @param args [Array] arguments to be serialized + # @param serialized_args [nil, Array] arguments in their serialized form def initialize(args, serialized_args = nil) @args = args @serialized_args = serialized_args end - def args + # Retrieves the arguments + # + # @raise [RuntimeError] if the deserialized arguments are not available + # @return [Array] the arguments + def args! raise "@args not set" if @args.nil? return @args end - def serialized_args + # Retrieves the arguments in the serialized form + # + # @raise [RuntimeError] if the serialized arguments are not available + # @return [Array] the serialized arguments + def serialized_args! raise "@serialized_args not set" if @serialized_args.nil? return @serialized_args end + # Converts arguments into their serialized form, iterates over deserialized + # arguments, applying {#serialize} to each of them + # + # @raise [RuntimeError] if the deserialized arguments are not available + # @return [Array] the serialized arguments def perform_serialization! - @serialized_args = args.map { |arg| serialize arg } + @serialized_args = args!.map { |arg| serialize arg } end + # Converts arguments into their deserialized form, iterates over serialized + # arguments, applying {#deserialize} to each of them + # + # @raise [RuntimeError] if the serialized arguments are not available + # @return [Array] the deserialized arguments def perform_deserialization! - raise "@serialized_args not set" if @serialized_args.nil? - @args = serialized_args.map { |arg| deserialize arg } + @args = serialized_args!.map { |arg| deserialize arg } end + # Converts an argument into it serialized form + # + # @param arg the argument to be serialized def serialize(arg) raise NotImplementedError end + # Converts a serialized argument into its deserialized form + # + # @param arg the argument to be deserialized def deserialize(arg) raise NotImplementedError end end