Do not autoload built in typestags/v17.0.0beta1
@@ -192,7 +192,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription | |||
ISecureRandom $random, | |||
ILogger $logger, | |||
EventDispatcherInterface $dispatcher, | |||
$legacyEndpoint = false) { | |||
bool $legacyEndpoint = false) { | |||
$this->db = $db; | |||
$this->principalBackend = $principalBackend; | |||
$this->userManager = $userManager; |
@@ -91,7 +91,7 @@ class Principal implements BackendInterface { | |||
IUserSession $userSession, | |||
IConfig $config, | |||
IAppManager $appManager, | |||
$principalPrefix = 'principals/users/') { | |||
string $principalPrefix = 'principals/users/') { | |||
$this->userManager = $userManager; | |||
$this->groupManager = $groupManager; | |||
$this->shareManager = $shareManager; |
@@ -80,12 +80,12 @@ class PluginManagerTest extends TestCase { | |||
$server->method('query') | |||
->will($this->returnValueMap([ | |||
['\OCA\DAV\ADavApp\PluginOne', 'dummyplugin1'], | |||
['\OCA\DAV\ADavApp\PluginTwo', 'dummyplugin2'], | |||
['\OCA\DAV\ADavApp\CollectionOne', 'dummycollection1'], | |||
['\OCA\DAV\ADavApp\CollectionTwo', 'dummycollection2'], | |||
['\OCA\DAV\ADavApp2\PluginOne', 'dummy2plugin1'], | |||
['\OCA\DAV\ADavApp2\CollectionOne', 'dummy2collection1'], | |||
['\OCA\DAV\ADavApp\PluginOne', true, 'dummyplugin1'], | |||
['\OCA\DAV\ADavApp\PluginTwo', true, 'dummyplugin2'], | |||
['\OCA\DAV\ADavApp\CollectionOne', true, 'dummycollection1'], | |||
['\OCA\DAV\ADavApp\CollectionTwo', true, 'dummycollection2'], | |||
['\OCA\DAV\ADavApp2\PluginOne', true, 'dummy2plugin1'], | |||
['\OCA\DAV\ADavApp2\CollectionOne', true, 'dummy2collection1'], | |||
])); | |||
$expectedPlugins = [ |
@@ -374,17 +374,12 @@ class DIContainer extends SimpleContainer implements IAppContainer { | |||
}); | |||
} | |||
/** | |||
* @param string $name | |||
* @return mixed | |||
* @throws QueryException if the query could not be resolved | |||
*/ | |||
public function query($name) { | |||
public function query(string $name, bool $autoload = true) { | |||
try { | |||
return $this->queryNoFallback($name); | |||
} catch (QueryException $firstException) { | |||
try { | |||
return $this->getServer()->query($name); | |||
return $this->getServer()->query($name, $autoload); | |||
} catch (QueryException $secondException) { | |||
if ($firstException->getCode() === 1) { | |||
throw $secondException; |
@@ -65,7 +65,8 @@ class SimpleContainer extends Container implements IContainer { | |||
} | |||
try { | |||
$parameters[] = $this->query($resolveName); | |||
$builtIn = $parameter->hasType() && $parameter->getType()->isBuiltin(); | |||
$parameters[] = $this->query($resolveName, !$builtIn); | |||
} catch (QueryException $e) { | |||
// Service not found, use the default value when available | |||
if ($parameter->isDefaultValueAvailable()) { | |||
@@ -105,23 +106,18 @@ class SimpleContainer extends Container implements IContainer { | |||
} | |||
} | |||
/** | |||
* @param string $name name of the service to query for | |||
* @return mixed registered service for the given $name | |||
* @throws QueryException if the query could not be resolved | |||
*/ | |||
public function query($name) { | |||
public function query(string $name, bool $autoload = true) { | |||
$name = $this->sanitizeName($name); | |||
if ($this->offsetExists($name)) { | |||
return $this->offsetGet($name); | |||
} else { | |||
} else if ($autoload) { | |||
$object = $this->resolve($name); | |||
$this->registerService($name, function () use ($object) { | |||
return $object; | |||
}); | |||
return $object; | |||
} | |||
throw new QueryException('Could not resolve ' . $name . '!'); | |||
} | |||
/** |
@@ -113,12 +113,7 @@ class ServerContainer extends SimpleContainer { | |||
throw new QueryException(); | |||
} | |||
/** | |||
* @param string $name name of the service to query for | |||
* @return mixed registered service for the given $name | |||
* @throws QueryException if the query could not be resolved | |||
*/ | |||
public function query($name) { | |||
public function query(string $name, bool $autoload = true) { | |||
$name = $this->sanitizeName($name); | |||
if (isset($this[$name])) { | |||
@@ -147,6 +142,6 @@ class ServerContainer extends SimpleContainer { | |||
} | |||
} | |||
return parent::query($name); | |||
return parent::query($name, $autoload); | |||
} | |||
} |
@@ -61,11 +61,12 @@ interface IContainer { | |||
* Look up a service for a given name in the container. | |||
* | |||
* @param string $name | |||
* @param bool $autoload Should we try to autoload the service. If we are trying to resolve built in types this makes no sense for example | |||
* @return mixed | |||
* @throws QueryException if the query could not be resolved | |||
* @since 6.0.0 | |||
*/ | |||
public function query($name); | |||
public function query(string $name, bool $autoload = true); | |||
/** | |||
* A value is stored in the container with it's corresponding name |
@@ -81,8 +81,8 @@ class ActionProviderStoreTest extends TestCase { | |||
$this->serverContainer->expects($this->exactly(2)) | |||
->method('query') | |||
->will($this->returnValueMap([ | |||
[EMailProvider::class, $provider1], | |||
['OCA\Contacts\Provider1', $provider2] | |||
[EMailProvider::class, true, $provider1], | |||
['OCA\Contacts\Provider1', true, $provider2] | |||
])); | |||
$providers = $this->actionProviderStore->getProviders($user); | |||
@@ -106,7 +106,7 @@ class ActionProviderStoreTest extends TestCase { | |||
$this->serverContainer->expects($this->once()) | |||
->method('query') | |||
->will($this->returnValueMap([ | |||
[EMailProvider::class, $provider1], | |||
[EMailProvider::class, true, $provider1], | |||
])); | |||
$providers = $this->actionProviderStore->getProviders($user); |