]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1508201 - Create a role that allows Bugzilla::Object-based classes to be stored...
authorDylan William Hardison <dylan@hardison.net>
Mon, 19 Nov 2018 04:39:05 +0000 (23:39 -0500)
committerGitHub <noreply@github.com>
Mon, 19 Nov 2018 04:39:05 +0000 (23:39 -0500)
Bugzilla/Role/Storable.pm [new file with mode: 0644]
Bugzilla/User.pm

diff --git a/Bugzilla/Role/Storable.pm b/Bugzilla/Role/Storable.pm
new file mode 100644 (file)
index 0000000..4e52017
--- /dev/null
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+package Bugzilla::Role::Storable;
+
+use 5.10.1;
+use strict;
+use warnings;
+use Role::Tiny;
+
+requires 'flatten_to_hash';
+
+sub STORABLE_freeze {
+  my ($self, $cloning) = @_;
+  return if $cloning;    # Regular default serialization
+  return '', $self->flatten_to_hash;
+}
+
+sub STORABLE_thaw {
+  my ($self, $cloning, $serialized, $frozen) = @_;
+  return if $cloning;
+  %$self = %$frozen;
+}
+
+1;
index afd310eb0a2d180123daaf9c94ca2f71233da914..b15cad3968e90cc6717110e448641a097ec9cc1c 100644 (file)
@@ -129,7 +129,7 @@ use constant VALIDATOR_DEPENDENCIES => {
 
 use constant EXTRA_REQUIRED_FIELDS => qw(is_enabled);
 
-with 'Bugzilla::Elastic::Role::Object';
+with 'Bugzilla::Elastic::Role::Object', 'Bugzilla::Role::Storable';
 
 sub ES_INDEX {
     my ($class) = @_;
@@ -232,6 +232,7 @@ sub es_document {
 
     return $doc;
 }
+
 ################################################################################
 # Functions
 ################################################################################