From 0616fed294d2e893a0e74da91514bdeab33e9207 Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Fri, 20 Jun 2014 16:13:17 +0100
Subject: [PATCH] Issue #2269003 by damiankloip, Berdir: Fixed Unnecessary high
 memory usage in EntityType::getKeys().

---
 .../Core/Config/Entity/ConfigEntityType.php      | 16 +++++-----------
 .../lib/Drupal/Core/Entity/ContentEntityType.php |  5 +++--
 core/lib/Drupal/Core/Entity/EntityType.php       | 15 +++++++++++----
 3 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityType.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityType.php
index 7960edc272da..2b5dfd54342f 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityType.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityType.php
@@ -63,8 +63,11 @@ class ConfigEntityType extends EntityType {
   /**
    * {@inheritdoc}
    */
-  public function getControllerClasses() {
-    return parent::getControllerClasses() + array(
+  public function __construct($definition) {
+    parent::__construct($definition);
+    // Always add a default 'uuid' key.
+    $this->entity_keys['uuid'] = 'uuid';
+    $this->controllers += array(
       'storage' => 'Drupal\Core\Config\Entity\ConfigEntityStorage',
     );
   }
@@ -94,15 +97,6 @@ public function getConfigPrefix() {
     return $config_prefix;
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  public function getKeys() {
-    // Always add a default 'uuid' key.
-    return array('uuid' => 'uuid') + parent::getKeys();
-  }
-
-
   /**
    * {@inheritdoc}
    */
diff --git a/core/lib/Drupal/Core/Entity/ContentEntityType.php b/core/lib/Drupal/Core/Entity/ContentEntityType.php
index f69f9017bc54..4be18fe196e0 100644
--- a/core/lib/Drupal/Core/Entity/ContentEntityType.php
+++ b/core/lib/Drupal/Core/Entity/ContentEntityType.php
@@ -15,8 +15,9 @@ class ContentEntityType extends EntityType implements ContentEntityTypeInterface
   /**
    * {@inheritdoc}
    */
-  public function getControllerClasses() {
-    return parent::getControllerClasses() + array(
+  public function __construct($definition) {
+    parent::__construct($definition);
+    $this->controllers += array(
       'storage' => 'Drupal\Core\Entity\ContentEntityDatabaseStorage',
     );
   }
diff --git a/core/lib/Drupal/Core/Entity/EntityType.php b/core/lib/Drupal/Core/Entity/EntityType.php
index ac49238aeaa7..728b3ec34f05 100644
--- a/core/lib/Drupal/Core/Entity/EntityType.php
+++ b/core/lib/Drupal/Core/Entity/EntityType.php
@@ -217,6 +217,15 @@ public function __construct($definition) {
     foreach ($definition as $property => $value) {
       $this->{$property} = $value;
     }
+
+    // Ensure defaults.
+    $this->entity_keys += array(
+      'revision' => '',
+      'bundle' => ''
+    );
+    $this->controllers += array(
+      'access' => 'Drupal\Core\Entity\EntityAccessController',
+    );
   }
 
   /**
@@ -259,7 +268,7 @@ public function isFieldDataCacheable() {
    * {@inheritdoc}
    */
   public function getKeys() {
-    return $this->entity_keys + array('revision' => '', 'bundle' => '');
+    return $this->entity_keys;
   }
 
   /**
@@ -318,9 +327,7 @@ public function isSubclassOf($class) {
    * {@inheritdoc}
    */
   public function getControllerClasses() {
-    return $this->controllers + array(
-      'access' => 'Drupal\Core\Entity\EntityAccessController',
-    );
+    return $this->controllers;
   }
 
   /**
-- 
GitLab