/**
  * @since 2.3
  *
  * @param array $idList
  *
  * @return DIWikiPage[]
  */
 public function getDataItemPoolHashListFor(array $idList)
 {
     $rows = $this->connection->select(\SMWSQLStore3::ID_TABLE, array('smw_title', 'smw_namespace', 'smw_iw', 'smw_subobject'), array('smw_id' => $idList), __METHOD__);
     $resultIterator = $this->iteratorFactory->newResultIterator($rows);
     $mappingIterator = $this->iteratorFactory->newMappingIterator($resultIterator, function ($row) {
         return HashBuilder::createHashIdFromSegments($row->smw_title, $row->smw_namespace, $row->smw_iw, $row->smw_subobject);
     });
     return $mappingIterator;
 }
 public function testCanConstructMappingIterator()
 {
     $instance = new IteratorFactory();
     $iterator = $this->getMockBuilder('\\Iterator')->disableOriginalConstructor()->getMock();
     $this->assertInstanceOf('\\SMW\\Iterators\\MappingIterator', $instance->newMappingIterator($iterator, function () {
     }));
 }
 /**
  * Fetch all subobjects for a given subject using a lazy-mapping iterator
  * in order to only resolve one subobject per iteration step.
  *
  * @since 2.5
  *
  * @param DIWikiPage $subject
  *
  * @return MappingIterator
  */
 private function newMappingIterator(DIWikiPage $subject)
 {
     $callback = function ($row) use($subject) {
         // #1955
         if ($subject->getNamespace() === SMW_NS_PROPERTY) {
             $property = new DIProperty($subject->getDBkey());
             $subobject = $property->getCanonicalDiWikiPage($row->smw_subobject);
         } else {
             $subobject = new DIWikiPage($subject->getDBkey(), $subject->getNamespace(), $subject->getInterwiki(), $row->smw_subobject);
         }
         $subobject->setSortKey($row->smw_sortkey);
         $subobject->setId($row->smw_id);
         return $subobject;
     };
     return $this->iteratorFactory->newMappingIterator($this->newResultIterator($subject), $callback);
 }