Example #1
0
 /**
  * @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);
 }
Example #2
0
 /**
  * @expectedException \Gdbots\Pbj\Exception\NoMessageForQName
  */
 public function testResolveInvalidQName()
 {
     $curie = MessageResolver::resolveQName(SchemaQName::fromString('acme:video'));
 }
Example #3
0
 /**
  * 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);
 }
Example #4
0
 /**
  * @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()));
 }