/**
  * @since 2.1
  *
  * @return ShowParserFunction
  */
 public function newShowParserFunction()
 {
     $circularReferenceGuard = new CircularReferenceGuard('show-parser');
     $circularReferenceGuard->setMaxRecursionDepth(2);
     $parserData = ApplicationFactory::getInstance()->newParserData($this->parser->getTitle(), $this->parser->getOutput());
     $messageFormatter = new MessageFormatter($this->parser->getTargetLanguage());
     $instance = new ShowParserFunction($parserData, $messageFormatter, $circularReferenceGuard);
     return $instance;
 }
 /**
  * @since 2.2
  *
  * @return QueryEngine
  */
 public function newMasterQueryEngine()
 {
     $circularReferenceGuard = new CircularReferenceGuard('sparql-query');
     $circularReferenceGuard->setMaxRecursionDepth(2);
     $compoundConditionBuilder = new CompoundConditionBuilder();
     $compoundConditionBuilder->setCircularReferenceGuard($circularReferenceGuard);
     $queryEngine = new QueryEngine($this->store->getConnection('sparql'), $compoundConditionBuilder, new QueryResultFactory($this->store), new EngineOptions());
     return $queryEngine;
 }
 /**
  * @since 2.2
  *
  * @return QueryEngine
  */
 public function newMasterQueryEngine()
 {
     $engineOptions = new EngineOptions();
     $hierarchyFinder = new HierarchyFinder($this->store, ApplicationFactory::getInstance()->newCacheFactory()->newFixedInMemoryCache(500));
     $circularReferenceGuard = new CircularReferenceGuard('sparql-query');
     $circularReferenceGuard->setMaxRecursionDepth(2);
     $compoundConditionBuilder = new CompoundConditionBuilder($engineOptions);
     $compoundConditionBuilder->setCircularReferenceGuard($circularReferenceGuard);
     $compoundConditionBuilder->setHierarchyFinder($hierarchyFinder);
     $queryEngine = new QueryEngine($this->store->getConnection('sparql'), $compoundConditionBuilder, new QueryResultFactory($this->store), $engineOptions);
     return $queryEngine;
 }
 /**
  * @since 2.2
  *
  * @return QueryEngine
  */
 public function newMasterQueryEngine()
 {
     $engineOptions = new EngineOptions();
     $circularReferenceGuard = new CircularReferenceGuard('sparql-queryengine');
     $circularReferenceGuard->setMaxRecursionDepth(2);
     $compoundConditionBuilder = new CompoundConditionBuilder(new DescriptionInterpreterFactory(), $engineOptions);
     $compoundConditionBuilder->setCircularReferenceGuard($circularReferenceGuard);
     $compoundConditionBuilder->setPropertyHierarchyLookup($this->applicationFactory->newPropertyHierarchyLookup());
     $queryEngine = new QueryEngine($this->store->getConnection('sparql'), $compoundConditionBuilder, new QueryResultFactory($this->store), $engineOptions);
     $cachedQueryResultPrefetcher = ApplicationFactory::getInstance()->singleton('CachedQueryResultPrefetcher');
     $cachedQueryResultPrefetcher->setQueryEngine($queryEngine);
     return $cachedQueryResultPrefetcher;
 }
 public function testRoundtripForRegisteredNamespace()
 {
     $instance = new CircularReferenceGuard('bar');
     $instance->setMaxRecursionDepth(1);
     $this->assertEquals(0, $instance->get('Foo'));
     $instance->mark('Foo');
     $instance->mark('Foo');
     $this->assertEquals(2, $instance->get('Foo'));
     $this->assertTrue($instance->isCircularByRecursionFor('Foo'));
     $instance->unmark('Foo');
     $this->assertEquals(1, $instance->get('Foo'));
     $this->assertFalse($instance->isCircularByRecursionFor('Foo'));
     $instance->unmark('notBeenMarkedBefore');
 }
 /**
  * @since 2.2
  *
  * @return QueryEngine
  */
 public function newMasterQueryEngine()
 {
     $engineOptions = new EngineOptions();
     $propertyHierarchyLookup = new PropertyHierarchyLookup($this->store, $this->applicationFactory->newCacheFactory()->newFixedInMemoryCache(500));
     $propertyHierarchyLookup->setSubcategoryDepth($this->applicationFactory->getSettings()->get('smwgQSubcategoryDepth'));
     $propertyHierarchyLookup->setSubpropertyDepth($this->applicationFactory->getSettings()->get('smwgQSubpropertyDepth'));
     $circularReferenceGuard = new CircularReferenceGuard('sparql-query');
     $circularReferenceGuard->setMaxRecursionDepth(2);
     $compoundConditionBuilder = new CompoundConditionBuilder($engineOptions);
     $compoundConditionBuilder->setCircularReferenceGuard($circularReferenceGuard);
     $compoundConditionBuilder->setPropertyHierarchyLookup($propertyHierarchyLookup);
     $queryEngine = new QueryEngine($this->store->getConnection('sparql'), $compoundConditionBuilder, new QueryResultFactory($this->store), $engineOptions);
     return $queryEngine;
 }
 /**
  * @since 2.3
  *
  * @return CachedValueLookupStore
  */
 public function newCachedValueLookupStore()
 {
     $circularReferenceGuard = new CircularReferenceGuard('vl:store');
     $circularReferenceGuard->setMaxRecursionDepth(2);
     $cacheFactory = ApplicationFactory::getInstance()->newCacheFactory();
     $blobStore = new BlobStore('smw:vl:store', $cacheFactory->newMediaWikiCompositeCache($GLOBALS['smwgValueLookupCacheType']));
     // If CACHE_NONE is selected, disable the usage
     $blobStore->setUsageState($GLOBALS['smwgValueLookupCacheType'] !== CACHE_NONE);
     $blobStore->setExpiryInSeconds($GLOBALS['smwgValueLookupCacheLifetime']);
     $blobStore->setNamespacePrefix($cacheFactory->getCachePrefix());
     $cachedValueLookupStore = new CachedValueLookupStore($this->store, $blobStore);
     $cachedValueLookupStore->setValueLookupFeatures($GLOBALS['smwgValueLookupFeatures']);
     $cachedValueLookupStore->setCircularReferenceGuard($circularReferenceGuard);
     return $cachedValueLookupStore;
 }
 /**
  * @since 2.5
  *
  * @return EntityLookup
  */
 public function newEntityLookup()
 {
     $settings = $this->applicationFactory->getSettings();
     $directEntityLookup = new DirectEntityLookup($this->store);
     if ($settings->get('smwgValueLookupCacheType') === CACHE_NONE) {
         return $directEntityLookup;
     }
     $circularReferenceGuard = new CircularReferenceGuard('vl:store');
     $circularReferenceGuard->setMaxRecursionDepth(2);
     $cacheFactory = $this->applicationFactory->newCacheFactory();
     $blobStore = $cacheFactory->newBlobStore('smw:vl:store', $settings->get('smwgValueLookupCacheType'), $settings->get('smwgValueLookupCacheLifetime'));
     $cachedEntityLookup = new CachedEntityLookup($directEntityLookup, new RedirectTargetLookup($this->store, $circularReferenceGuard), $blobStore);
     $cachedEntityLookup->setCachedLookupFeatures($settings->get('smwgValueLookupFeatures'));
     return $cachedEntityLookup;
 }