Skip to content

Commit 8cda3cc

Browse files
committed
Stop wrapping messages in envelopes during deserialization
1 parent 0c9c1fd commit 8cda3cc

2 files changed

Lines changed: 5 additions & 29 deletions

File tree

src/Message/JsonMessageSerializer.php

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,6 @@ public function unserialize(string $value): MessageInterface
5454
throw new InvalidArgumentException('Metadata must be an array. Got ' . get_debug_type($meta) . '.');
5555
}
5656

57-
$envelopes = [];
58-
if (isset($meta[Envelope::ENVELOPE_STACK_KEY]) && is_array($meta[Envelope::ENVELOPE_STACK_KEY])) {
59-
$envelopes = $meta[Envelope::ENVELOPE_STACK_KEY];
60-
}
61-
$meta[Envelope::ENVELOPE_STACK_KEY] = [];
62-
6357
$class = $meta['message-class'] ?? Message::class;
6458
// Don't check subclasses when it's a default class: that's faster
6559
if ($class !== Message::class && !is_subclass_of($class, MessageInterface::class)) {
@@ -69,14 +63,6 @@ public function unserialize(string $value): MessageInterface
6963
/**
7064
* @var class-string<MessageInterface> $class
7165
*/
72-
$message = $class::fromData($type, $payload['data'] ?? null, $meta);
73-
74-
foreach ($envelopes as $envelope) {
75-
if (is_string($envelope) && class_exists($envelope) && is_subclass_of($envelope, Envelope::class)) {
76-
$message = $envelope::fromMessage($message);
77-
}
78-
}
79-
80-
return $message;
66+
return $class::fromData($type, $payload['data'] ?? null, $meta);
8167
}
8268
}

tests/Unit/Message/JsonMessageSerializerTest.php

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public function testUnserializeFromData(): void
115115
$message = $serializer->unserialize(json_encode($payload, JSON_THROW_ON_ERROR));
116116

117117
$this->assertEquals($payload['data'], $message->getData());
118-
$this->assertEquals([Envelope::ENVELOPE_STACK_KEY => []], $message->getMetadata());
118+
$this->assertEquals([], $message->getMetadata());
119119
}
120120

121121
public function testUnserializeWithMetadata(): void
@@ -126,7 +126,7 @@ public function testUnserializeWithMetadata(): void
126126
$message = $serializer->unserialize(json_encode($payload, JSON_THROW_ON_ERROR));
127127

128128
$this->assertEquals($payload['data'], $message->getData());
129-
$this->assertEquals(['int' => 1, 'str' => 'string', 'bool' => true, Envelope::ENVELOPE_STACK_KEY => []], $message->getMetadata());
129+
$this->assertEquals(['int' => 1, 'str' => 'string', 'bool' => true], $message->getMetadata());
130130
}
131131

132132
public function testUnserializeEnvelopeStack(): void
@@ -148,9 +148,7 @@ public function testUnserializeEnvelopeStack(): void
148148
$this->assertEquals($payload['data'], $message->getData());
149149
$this->assertEquals([IdEnvelope::class], $message->getMetadata()[Envelope::ENVELOPE_STACK_KEY]);
150150

151-
$this->assertInstanceOf(IdEnvelope::class, $message);
152-
$this->assertNull($message->getId());
153-
$this->assertInstanceOf(Message::class, $message->getMessage());
151+
$this->assertInstanceOf(Message::class, $message);
154152
}
155153

156154
public function testSerialize(): void
@@ -186,24 +184,16 @@ public function testSerializeEnvelopeStack(): void
186184
$json,
187185
);
188186

189-
/** @var IdEnvelope $message */
190187
$message = $serializer->unserialize($json);
191188

192-
$this->assertInstanceOf(IdEnvelope::class, $message);
193-
$this->assertEquals('test-id', $message->getId());
189+
$this->assertInstanceOf(Message::class, $message);
194190
$this->assertEquals([
195191
Envelope::ENVELOPE_STACK_KEY => [
196192
IdEnvelope::class,
197193
],
198194
IdEnvelope::MESSAGE_ID_KEY => 'test-id',
199195
'message-class' => Message::class,
200196
], $message->getMetadata());
201-
202-
$this->assertEquals([
203-
Envelope::ENVELOPE_STACK_KEY => [],
204-
IdEnvelope::MESSAGE_ID_KEY => 'test-id',
205-
'message-class' => Message::class,
206-
], $message->getMessage()->getMetadata());
207197
}
208198

209199
public function testRestoreOriginalMessageClass(): void

0 commit comments

Comments
 (0)