/** * @param Serializable $payload * * @return Command */ public function createFromPayload(Serializable $payload) { $contract = $this->contractFactory->createFromObject($payload); $commandName = $contract->className(); $messageIdentifier = $this->messageIdentifierFactory->generate(); return new GenericCommand($commandName, $messageIdentifier, $payload, new Metadata(), $this->contractFactory); }
/** * @return Contract */ public function metadataType() { return $this->contractFactory->createFromObject($this->metadata); }