Problem/Motivation

Currently \Drupal\Core\Config\StorageInterface::read() returns FALSE when the configuration object does not exist.

Proposed resolution

Loading entities return NULL when the entity does not exist. Change \Drupal\Core\Config\StorageInterface::read() to match.

Remaining tasks

Write patch and fix tests

User interface changes

None

API changes

Change return type of \Drupal\Core\Config\StorageInterface::read()

Files: 
CommentFileSizeAuthor
#14 storage-interface-return-null-2260961-14.patch7.96 KBnico.pinos
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 76,182 pass(es), 1 fail(s), and 0 exception(s). View
#12 storage-interface-return-null-2260961-12.patch6.6 KBnico.pinos
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 76,169 pass(es), 4 fail(s), and 0 exception(s). View

Comments

alexpott’s picture

mtift’s picture

Status: Active » Needs review
FileSize
2.25 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 71,226 pass(es), 2 fail(s), and 0 exception(s). View

So like this?

Status: Needs review » Needs work

The last submitted patch, 2: 2260961-2-storageinterface-return-false.patch, failed testing.

nico.pinos’s picture

Version: 8.x-dev » 8.0-alpha12
Assigned: Unassigned » nico.pinos
Status: Needs work » Needs review
FileSize
735 bytes
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 71,625 pass(es), 3 fail(s), and 12 exception(s). View

I think CachedStorage is decoupled from this.
Something like this would be enough?

Status: Needs review » Needs work

The last submitted patch, 4: storage_interface_return_null-2260961-4.patch, failed testing.

nico.pinos’s picture

Version: 8.0-alpha12 » 8.0.x-dev
Status: Needs work » Needs review
FileSize
2.99 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 75,859 pass(es), 4 fail(s), and 48 exception(s). View

Status: Needs review » Needs work

The last submitted patch, 6: storage-interface-return-null-2260961-6.patch, failed testing.

Berdir’s picture

+++ b/core/lib/Drupal/Core/Config/StorageInterface.php
@@ -37,9 +37,9 @@ public function exists($name);
-   * @return array|bool
+   * @return array
    *   The configuration data stored for the configuration object name. If no
-   *   configuration data exists for the given name, FALSE is returned.
+   *   configuration data exists for the given name, NULL is returned.

That would be array|null then?

nico.pinos’s picture

Yes, that's an easy fix. I'm getting some errors during the tests though. I'm working on some updates.

nico.pinos’s picture

Status: Needs work » Needs review
FileSize
4.97 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 76,097 pass(es), 3 fail(s), and 0 exception(s). View

Updating tests.

Status: Needs review » Needs work

The last submitted patch, 10: storage-interface-return-null-2260961-10.patch, failed testing.

nico.pinos’s picture

Status: Needs work » Needs review
FileSize
6.6 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 76,169 pass(es), 4 fail(s), and 0 exception(s). View

Status: Needs review » Needs work

The last submitted patch, 12: storage-interface-return-null-2260961-12.patch, failed testing.

nico.pinos’s picture

Status: Needs work » Needs review
FileSize
7.96 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 76,182 pass(es), 1 fail(s), and 0 exception(s). View

Status: Needs review » Needs work

The last submitted patch, 14: storage-interface-return-null-2260961-14.patch, failed testing.

andypost’s picture

Version: 8.0.x-dev » 8.1.x-dev
Assigned: nico.pinos » alexpott

Is this still valid?

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.0-beta1 was released on March 2, 2016, which means new developments and disruptive changes should now be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.