/** * @param string $vendor * @param string $package * @param string $category * @param string $message */ private function __construct($vendor, $package, $category, $message) { $this->vendor = $vendor; $this->package = $package; $this->category = $category ?: null; $this->message = $message; $this->curie = sprintf('%s:%s:%s:%s', $this->vendor, $this->package, $this->category, $this->message); $this->isMixin = 'mixin' === $this->category; $this->qname = SchemaQName::fromCurie($this); }
/** * @expectedException \Gdbots\Pbj\Exception\NoMessageForQName */ public function testResolveInvalidQName() { $curie = MessageResolver::resolveQName(SchemaQName::fromString('acme:video')); }
/** * Returns the SchemaCurie for the given SchemaQName. * * @param SchemaQName $qname * @return SchemaCurie * * @throws NoMessageForQName */ public static function resolveQName(SchemaQName $qname) { $key = $qname->toString(); if (isset(self::$resolvedQnames[$key])) { return self::$resolvedQnames[$key]; } $qvendor = $qname->getVendor(); $qmessage = $qname->getMessage(); foreach (self::$messages as $id => $class) { list($vendor, $package, $category, $message) = explode(':', $id); if ($qvendor === $vendor && $qmessage === $message) { return self::$resolvedQnames[$key] = SchemaCurie::fromString($vendor . ':' . $package . ':' . $category . ':' . $message); } } throw new NoMessageForQName($qname); }
/** * @param SchemaQName $qname */ public function __construct(SchemaQName $qname) { $this->qname = $qname; parent::__construct(sprintf('MessageResolver is unable to resolve [%s] to a SchemaCurie.', $qname->toString())); }