/**
  * @param array $serialization
  *
  * @TODO FIXME duplicated / similar code in Repo ResultBuilder
  *
  * @return array
  */
 private function injectEntitySerializationWithDataTypes(array $serialization)
 {
     $serialization = $this->modifier->modifyUsingCallback($serialization, 'claims/*/*/mainsnak', $this->callbackFactory->getCallbackToAddDataTypeToSnak($this->dataTypeLookup));
     $serialization = $this->getArrayWithDataTypesInGroupedSnakListAtPath($serialization, 'claims/*/*/qualifiers');
     $serialization = $this->getArrayWithDataTypesInGroupedSnakListAtPath($serialization, 'claims/*/*/references/*/snaks');
     return $serialization;
 }
示例#2
0
 /**
  * @param array $array
  * @param string $claimPath to the claim array/arrays with trailing /
  *
  * @return array
  */
 private function getClaimsArrayWithMetaData(array $array, $claimPath = '')
 {
     $metaDataModifications = array('references/*/snaks/*' => array($this->callbackFactory->getCallbackToIndexTags('snak')), 'references/*/snaks' => array($this->callbackFactory->getCallbackToSetArrayType('kvp', 'id'), $this->callbackFactory->getCallbackToIndexTags('property')), 'references/*/snaks-order' => array($this->callbackFactory->getCallbackToIndexTags('property')), 'references' => array($this->callbackFactory->getCallbackToIndexTags('reference')), 'qualifiers/*' => array($this->callbackFactory->getCallbackToIndexTags('qualifiers')), 'qualifiers' => array($this->callbackFactory->getCallbackToSetArrayType('kvp', 'id'), $this->callbackFactory->getCallbackToIndexTags('property')), 'qualifiers-order' => array($this->callbackFactory->getCallbackToIndexTags('property')), 'mainsnak' => array($this->callbackFactory->getCallbackToAddDataTypeToSnak($this->dataTypeLookup)));
     foreach ($metaDataModifications as $path => $callbacks) {
         foreach ($callbacks as $callback) {
             $array = $this->modifier->modifyUsingCallback($array, $claimPath . $path, $callback);
         }
     }
     return $array;
 }
 public function testGetCallbackToAddDataTypeToSnak()
 {
     $instance = new CallbackFactory();
     $dataTypeLookup = $this->getPropertyDataTypeLookup();
     $callback = $instance->getCallbackToAddDataTypeToSnak($dataTypeLookup);
     $this->assertInternalType('callable', $callback);
     $array = array('property' => 'P1');
     $array = $callback($array);
     $this->assertSame(array('property' => 'P1', 'datatype' => 'propertyDataType'), $array);
 }