Example #1
0
 public function testAddSchema()
 {
     $schema100 = new SchemaDescriptor('pbj:vendor:package:category:message:1-0-0');
     $schema101 = new SchemaDescriptor('pbj:vendor:package:category:message:1-0-1');
     $schema200 = new SchemaDescriptor('pbj:vendor:package:category:message:2-0-0');
     SchemaStore::addSchema($schema100->getId(), $schema100);
     SchemaStore::addSchema($schema101->getId(), $schema101);
     SchemaStore::addSchema($schema200->getId(), $schema200);
     $this->assertEquals(SchemaStore::getSchemaById('pbj:vendor:package:category:message:1-0-0'), $schema100);
     $this->assertEquals(SchemaStore::getPreviousSchema($schema101->getId()), $schema100);
     $this->assertTrue(SchemaStore::hasOtherSchemaMajorRev($schema100->getId()));
     $this->assertEquals(SchemaStore::getOtherSchemaMajorRev($schema101->getId()), [$schema101, $schema200]);
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function generateManifest(array $schemas)
 {
     $messages = [];
     if (!($filename = $this->compileOptions->getManifest())) {
         return;
     }
     // extract previous schemas
     if (file_exists($filename)) {
         $content = file_get_contents($filename);
         if (preg_match_all('/\'([a-z0-9-]+:[a-z0-9\\.-]+:[a-z0-9-]+?:[a-z0-9-]+(:v[0-9]+)?)\' => \'(.*)\'/', $content, $matches) !== false) {
             foreach ($matches[1] as $key => $value) {
                 $messages[$value] = $matches[3][$key];
             }
         }
     }
     // merge with selected schemas (only non-mixin schema's)
     /** @var SchemaDescriptor $schema */
     foreach ($schemas as $schema) {
         if ($schema->isMixinSchema()) {
             continue;
         }
         if (!array_key_exists($schema->getId()->getCurie(), $messages)) {
             $messages[$schema->getId()->getCurie()] = sprintf('%s\\%sV%d', $schema->getLanguage('php')->get('namespace'), StringUtils::toCamelFromSlug($schema->getId()->getMessage()), $schema->getId()->getVersion()->getMajor());
         }
         if (SchemaStore::hasOtherSchemaMajorRev($schema->getId())) {
             /** @var SchemaDescriptor $s */
             foreach (SchemaStore::getOtherSchemaMajorRev($schema->getId()) as $s) {
                 if (!array_key_exists($s->getId()->getCurieWithMajorRev(), $messages)) {
                     $messages[$s->getId()->getCurieWithMajorRev()] = sprintf('%s\\%sV%d', $s->getLanguage('php')->get('namespace'), StringUtils::toCamelFromSlug($s->getId()->getMessage()), $s->getId()->getVersion()->getMajor());
                 }
             }
         }
     }
     // delete invalid schemas
     foreach ($messages as $key => $value) {
         if (!SchemaStore::getSchemaById($key, true)) {
             unset($messages[$key]);
         }
     }
     $response = new GeneratorResponse();
     $response->addFile($this->renderFile('manifest.twig', $filename, ['messages' => $messages]));
     return $response;
 }
Example #3
0
 /**
  * @param SchemaDescriptor $schema
  *
  * @return bool
  */
 public function hasOtherMajorRev(SchemaDescriptor $schema)
 {
     return SchemaStore::hasOtherSchemaMajorRev($schema->getId());
 }