Merge branch '15028-cwl-v1.1' refs #15028
[arvados.git] / services / api / app / models / jsonb_type.rb
index 2011dcec8672438d6b52ef810677e7d18c5ef921..02746f64d4cc56bafe1ee429a2ecf4d4ec0049c6 100644 (file)
@@ -7,13 +7,22 @@ class JsonbType
   # some other default value.
   class WithDefault < ActiveModel::Type::Value
     include ActiveModel::Type::Helpers::Mutable
-    @@default_value = nil
+
+    def default_value
+      nil
+    end
+
+    def changed_in_place?(raw_old_value, value)
+      # Compare deserialized values for correctness, checking serialized values
+      # may include changes in ordering, inline whitespaces, etc.
+      deserialize(raw_old_value) != value
+    end
 
     def deserialize(value)
       if value.nil?
-        @@default_value
+        self.default_value
       elsif value.is_a?(::String)
-        SafeJSON.load(value) rescue @@default_value
+        SafeJSON.load(value) rescue self.default_value
       else
         value
       end
@@ -21,7 +30,7 @@ class JsonbType
 
     def serialize(value)
       if value.nil?
-        @@default_value
+        self.default_value
       else
         SafeJSON.dump(value)
       end
@@ -29,10 +38,14 @@ class JsonbType
   end
 
   class Hash < JsonbType::WithDefault
-    @@default_value = {}
+    def default_value
+      {}
+    end
   end
 
   class Array < JsonbType::WithDefault
-    @@default_value = []
+    def default_value
+      []
+    end
   end
 end
\ No newline at end of file