Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 36
0.00% covered (danger)
0.00%
0 / 12
CRAP
0.00% covered (danger)
0.00%
0 / 1
PersistentJsonDeserializer
0.00% covered (danger)
0.00%
0 / 36
0.00% covered (danger)
0.00%
0 / 12
210
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
 visitLanguage
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitManuscript
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitManuscriptDomain
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitManuscriptPrompt
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitRecording
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitRecordingAnnotations
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitRecordingReview
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitSkippedManuscriptPrompt
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 visitUser
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitUserDialect
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 visitUserLanguageProficiencyLevel
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\WikispeechSpeechDataCollector\Domain;
4
5/**
6 * @file
7 * @ingroup Extensions
8 * @license GPL-2.0-or-later
9 */
10
11use FormatJson;
12use MWException;
13
14/**
15 * Loads a persistent instance from a JSON string representation.
16 *
17 * @since 0.1.0
18 */
19class PersistentJsonDeserializer implements PersistentVisitor {
20
21    /** @var array|null JSON string representation decoded to an associative array */
22    private $array;
23
24    /**
25     * @param string|null $json JSON string representation
26     * @throws MWException If unable to parse JSON string.
27     * @since 0.1.0
28     */
29    public function __construct( ?string $json ) {
30        if ( $json !== null ) {
31            $status = FormatJson::parse( $json, FormatJson::FORCE_ASSOC );
32            if ( !$status->isOK() ) {
33                throw new MWException( "Failed to parse JSON string: $status" );
34            }
35            $this->array = $status->getValue();
36        }
37    }
38
39    /**
40     * @param Language $language
41     * @return Language|null Same instance, or null if serialized value is null.
42     * @since 0.1.0
43     */
44    public function visitLanguage(
45        Language $language
46    ) {
47        return $language->accept(
48            new PersistentMWAssociateArrayDeserializer( $this->array )
49        );
50    }
51
52    /**
53     * @param Manuscript $manuscript
54     * @return Manuscript|null Same instance, or null if serialized value is null.
55     * @since 0.1.0
56     */
57    public function visitManuscript(
58        Manuscript $manuscript
59    ) {
60        return $manuscript->accept(
61            new PersistentMWAssociateArrayDeserializer( $this->array )
62        );
63    }
64
65    /**
66     * @param ManuscriptDomain $manuscriptDomain
67     * @return ManuscriptDomain|null Same instance, or null if serialized value is null.
68     * @since 0.1.0
69     */
70    public function visitManuscriptDomain(
71        ManuscriptDomain $manuscriptDomain
72    ) {
73        return $manuscriptDomain->accept(
74            new PersistentMWAssociateArrayDeserializer( $this->array )
75        );
76    }
77
78    /**
79     * @param ManuscriptPrompt $manuscriptPrompt
80     * @return ManuscriptPrompt|null Same instance, or null if serialized value is null.
81     * @since 0.1.0
82     */
83    public function visitManuscriptPrompt(
84        ManuscriptPrompt $manuscriptPrompt
85    ) {
86        return $manuscriptPrompt->accept(
87            new PersistentMWAssociateArrayDeserializer( $this->array )
88        );
89    }
90
91    /**
92     * @param Recording $recording
93     * @return Recording|null Same instance, or null if serialized value is null.
94     * @since 0.1.0
95     */
96    public function visitRecording(
97        Recording $recording
98    ) {
99        return $recording->accept(
100            new PersistentMWAssociateArrayDeserializer( $this->array )
101        );
102    }
103
104    /**
105     * @param RecordingAnnotations $recordingAnnotations
106     * @return RecordingAnnotations|null Same instance, or null if serialized value is null.
107     * @since 0.1.0
108     */
109    public function visitRecordingAnnotations(
110        RecordingAnnotations $recordingAnnotations
111    ) {
112        return $recordingAnnotations->accept(
113            new PersistentMWAssociateArrayDeserializer( $this->array )
114        );
115    }
116
117    /**
118     * @param RecordingReview $recordingReview
119     * @return RecordingReview|null Same instance, or null if serialized value is null.
120     * @since 0.1.0
121     */
122    public function visitRecordingReview(
123        RecordingReview $recordingReview
124    ) {
125        return $recordingReview->accept(
126            new PersistentMWAssociateArrayDeserializer( $this->array )
127        );
128    }
129
130    /**
131     * @param SkippedManuscriptPrompt $skippedManuscriptPrompt
132     * @return SkippedManuscriptPrompt|null Same instance, or null if serialized value is null.
133     * @since 0.1.0
134     */
135    public function visitSkippedManuscriptPrompt(
136        SkippedManuscriptPrompt $skippedManuscriptPrompt
137    ) {
138        return $skippedManuscriptPrompt->accept(
139            new PersistentMWAssociateArrayDeserializer( $this->array ) );
140    }
141
142    /**
143     * @param User $user
144     * @return User|null Same instance, or null if serialized value is null.
145     * @since 0.1.0
146     */
147    public function visitUser(
148        User $user
149    ) {
150        return $user->accept(
151            new PersistentMWAssociateArrayDeserializer( $this->array )
152        );
153    }
154
155    /**
156     * @param UserDialect $userDialect
157     * @return UserDialect|null Same instance, or null if serialized value is null.
158     * @since 0.1.0
159     */
160    public function visitUserDialect(
161        UserDialect $userDialect
162    ) {
163        return $userDialect->accept(
164            new PersistentMWAssociateArrayDeserializer( $this->array )
165        );
166    }
167
168    /**
169     * @param UserLanguageProficiencyLevel $languageProficiencyLevel
170     * @return UserLanguageProficiencyLevel|null Same instance, or null if serialized value is null.
171     * @since 0.1.0
172     */
173    public function visitUserLanguageProficiencyLevel(
174        UserLanguageProficiencyLevel $languageProficiencyLevel
175    ) {
176        return $languageProficiencyLevel->accept(
177            new PersistentMWAssociateArrayDeserializer( $this->array ) );
178    }
179
180}