module Logical 
  class CachedObject < ActionWebService::Struct 

    def self.rebuild(*params) 
      key = cache_key(params) 
      with lock(key) do 
        CACHE[key] = self.uncached_class.get(params) 
      end 
      eval("#{self.name}::Invalidation").create(:object_id => params) 
    end 

    def self.clear(*params) 
      key = cache_key(params) 
      CACHE[key] = nil 
      eval("#{self.name}::Invalidation").create(:object_id => params) 
    end 
  end 
end 


