X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/660a6143ecf1e777f33bd84183ba9e821e1d7a8e..454ee2b8f0385c542b6f1165a3baf2820425e1a3:/services/api/lib/serializers.rb diff --git a/services/api/lib/serializers.rb b/services/api/lib/serializers.rb index 41379f308f..37734e0bb4 100644 --- a/services/api/lib/serializers.rb +++ b/services/api/lib/serializers.rb @@ -1,7 +1,17 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'safe_json' class Serializer + class TypeMismatch < ArgumentError + end + def self.dump(val) + if !val.is_a?(object_class) + raise TypeMismatch.new("cannot serialize #{val.class} as #{object_class}") + end SafeJSON.dump(val) end @@ -22,7 +32,10 @@ class Serializer end def self.load(s) - if s.nil? + if s.is_a?(object_class) + # Rails already deserialized for us + s + elsif s.nil? object_class.new() elsif s[0] == first_json_char SafeJSON.load(s)