Sha256: 8dafb493f9c50b7f976a94a8322d7e53c2c6f38f0a440a0ecd5fb0fab7d068c8
Contents?: true
Size: 1.56 KB
Versions: 3
Compression:
Stored size: 1.56 KB
Contents
require 'hashie' module Duracloud class AbstractEntity < Hashie::Dash def save raise Error, "Cannot save deleted #{self.class}." if deleted? do_save persisted! reset_properties end def delete raise Error, "Cannot delete, already deleted." if deleted? reset_properties do_delete deleted! freeze end def persisted? !!@persisted end def deleted? !!@deleted end # Return the properties associated with this resource, # loading from Duracloud if necessary. # @return [Duracloud::Properties] the properties # @raise [Duracloud::NotFoundError] if the resource is marked persisted # but does not exist in Duracloud def properties load_properties if persisted? && @properties.nil? @properties ||= Properties.new end def load_properties do_load_properties persisted! end private def do_load_properties raise NotImplementedError, "Subclasses must implement `#do_load_properties` private method." end def persisted! @persisted = true end def deleted! @deleted = true @persisted = false end def do_delete raise NotImplementedError, "Subclasses must implement `do_delete`." end def do_save raise NotImplementedError, "Subclasses must implement `do_save`." end def properties=(props) @properties = Properties.new(props) end def reset_properties @properties = nil end def properties_class Properties end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
duracloud-client-0.10.2 | lib/duracloud/abstract_entity.rb |
duracloud-client-0.10.1 | lib/duracloud/abstract_entity.rb |
duracloud-client-0.10.0 | lib/duracloud/abstract_entity.rb |