[+BUGFIX] Extbase (Object): The Object Container now properly uses the TYPO3 caching...
authorBastian Waidelich <bastian@typo3.org>
Tue, 16 Nov 2010 11:07:09 +0000 (11:07 +0000)
committerBastian Waidelich <bastian@typo3.org>
Tue, 16 Nov 2010 11:07:09 +0000 (11:07 +0000)
typo3/sysext/extbase/Classes/Object/Container/ClassInfoCache.php
typo3/sysext/extbase/ext_localconf.php
typo3/sysext/extbase/ext_tables.php
typo3/sysext/extbase/ext_tables.sql

index 6ed7cf3..e621cf6 100644 (file)
 
 /**
  * Simple Cache for classInfos
- * 
+ *
  * @author Daniel Pötzinger
  */
 class Tx_Extbase_Object_Container_ClassInfoCache {
-       
+
        /**
-        * 
+        *
         * @var array
         */
        private $level1Cache=array();
-       
+
        /**
-        * 
+        *
         * @var t3lib_cache_frontend_VariableFrontend
         */
        private $level2Cache;
-       
+
        /**
         * constructor
         */
        public function __construct() {
                $this->initializeLevel2Cache();
        }
-       
+
        /**
         * checks if cacheentry exists for id
         * @param string $id
@@ -58,7 +58,7 @@ class Tx_Extbase_Object_Container_ClassInfoCache {
        public function has($id) {
                return isset($this->level1Cache[$id]) || $this->level2Cache->has($id);
        }
-       
+
        /**
         * Gets the cache for the id
         * @param string $id
@@ -69,10 +69,10 @@ class Tx_Extbase_Object_Container_ClassInfoCache {
                }
                return $this->level1Cache[$id];
        }
-       
+
        /**
         * sets the cache for the id
-        * 
+        *
         * @param $id
         * @param $value
         */
@@ -80,24 +80,22 @@ class Tx_Extbase_Object_Container_ClassInfoCache {
                $this->level1Cache[$id]=$value;
                $this->level2Cache->set($id,$value);
        }
-       
-       
+
+
        /**
         * Initialize the TYPO3 second level cache
         */
        private function initializeLevel2Cache() {
                t3lib_cache::initializeCachingFramework();
-               $backend = 't3lib_cache_backend_FileBackend';
-               $frontend = 't3lib_cache_frontend_VariableFrontend';
-               $config = array('defaultLifetime' => 3600);
-               if ($GLOBALS['typo3CacheManager']->hasCache('Tx_Extbase_Object_Container_ClassInfoCache')) {
-                       $this->level2Cache = $GLOBALS['typo3CacheManager']->getCache('Tx_Extbase_Object_Container_ClassInfoCache') ;
-               } else {
-                       try {
-                               $this->level2Cache = $GLOBALS['typo3CacheFactory']->create('Tx_Extbase_Object_Container_ClassInfoCache', $frontend, $backend, $config);
-                       } catch (Exception $e) {
-                               throw new Tx_Extbase_Object_Container_Exception_CannotInitializeCacheException('cache init [Tx_Extbase_Object_Container_ClassInfoCache/' . $frontend . '/' . $backend . '] failed:' . get_class($e) . ' - ' . $e->getMessage(), 1289386629);
-                       }
+               try {
+                       $this->level2Cache = $GLOBALS['typo3CacheManager']->getCache('cache_extbase_object');
+               } catch (t3lib_cache_exception_NoSuchCache $exception) {
+                       $this->level2Cache = $GLOBALS['typo3CacheFactory']->create(
+                               'cache_extbase_object',
+                               $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_object']['frontend'],
+                               $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_object']['backend'],
+                               $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_object']['options']
+                       );
                }
        }
 }
\ No newline at end of file
index be4ecaa..a4fa1b5 100644 (file)
@@ -4,7 +4,8 @@ if (!defined ('TYPO3_MODE'))    die ('Access denied.');
 require_once(t3lib_extMgm::extPath('extbase') . 'Classes/Dispatcher.php');
 require_once(t3lib_extMgm::extPath('extbase') . 'Classes/Utility/Extension.php');
 
-// use own cache table
+// use own cache tables
+// Reflection cache:
 $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_reflection'] = array(
        'frontend' => 't3lib_cache_frontend_VariableFrontend',
        'backend' => 't3lib_cache_backend_DbBackend',
@@ -13,6 +14,15 @@ $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extb
                'tagsTable' => 'tx_extbase_cache_reflection_tags',
        ),
 );
+// Object container cache:
+$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_object'] = array(
+       'frontend' => 't3lib_cache_frontend_VariableFrontend',
+       'backend' => 't3lib_cache_backend_DbBackend',
+       'options' => array(
+               'cacheTable' => 'tx_extbase_cache_object',
+               'tagsTable' => 'tx_extbase_cache_object_tags',
+       ),
+);
 
 # $GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:extbase/Classes/Persistence/Hook/TCEMainValueObjectUpdater.php:tx_Extbase_Persistence_Hook_TCEMainValueObjectUpdater';
 ?>
\ No newline at end of file
index 0999c51..2515f1e 100644 (file)
@@ -6,18 +6,26 @@ if (TYPO3_MODE == 'BE') {
        // register the cache in BE so it will be cleared with "clear all caches"
        try {
                t3lib_cache::initializeCachingFramework();
+                       // Reflection cache
                $GLOBALS['typo3CacheFactory']->create(
                        'tx_extbase_cache_reflection',
                        $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_reflection']['frontend'],
                        $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_reflection']['backend'],
                        $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_reflection']['options']
                );
+                       // Object container cache
+               $GLOBALS['typo3CacheFactory']->create(
+                       'tx_extbase_cache_object',
+                       $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_object']['frontend'],
+                       $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_object']['backend'],
+                       $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_extbase_object']['options']
+               );
        } catch(t3lib_cache_exception_NoSuchCache $exception) {
 
        }
 
        $TBE_MODULES['_dispatcher'][] = 'Tx_Extbase_Core_Bootstrap->callModule';
-       
+
 }
 
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['reports']['tx_reports']['status']['providers']['extbase'][] = 'tx_extbase_utility_extbaserequirementscheck';
index 4e3abcb..8cedb0b 100644 (file)
@@ -2,33 +2,64 @@
 # Table structure for table 'tx_extbase_cache_reflection'
 #
 CREATE TABLE tx_extbase_cache_reflection (
-  id int(11) unsigned NOT NULL auto_increment,
-  identifier varchar(250) DEFAULT '' NOT NULL,
-  crdate int(11) unsigned DEFAULT '0' NOT NULL,
-  content mediumtext,
-  tags mediumtext,
-  lifetime int(11) unsigned DEFAULT '0' NOT NULL,
-  PRIMARY KEY (id),
-  KEY cache_id (identifier)
+       id int(11) unsigned NOT NULL auto_increment,
+       identifier varchar(250) DEFAULT '' NOT NULL,
+       crdate int(11) unsigned DEFAULT '0' NOT NULL,
+       content mediumtext,
+       tags mediumtext,
+       lifetime int(11) unsigned DEFAULT '0' NOT NULL,
+       PRIMARY KEY (id),
+       KEY cache_id (identifier)
 ) ENGINE=InnoDB;
 
-
 #
 # Table structure for table 'tx_extbase_cache_reflection_tags'
 #
 CREATE TABLE tx_extbase_cache_reflection_tags (
-  id int(11) unsigned NOT NULL auto_increment,
-  identifier varchar(128) DEFAULT '' NOT NULL,
-  tag varchar(128) DEFAULT '' NOT NULL,
-  PRIMARY KEY (id),
-  KEY cache_id (identifier),
-  KEY cache_tag (tag)
+       id int(11) unsigned NOT NULL auto_increment,
+       identifier varchar(128) DEFAULT '' NOT NULL,
+       tag varchar(128) DEFAULT '' NOT NULL,
+       PRIMARY KEY (id),
+       KEY cache_id (identifier),
+       KEY cache_tag (tag)
 ) ENGINE=InnoDB;
 
+#
+# Table structure for table 'tx_extbase_cache_object'
+#
+CREATE TABLE tx_extbase_cache_object (
+       id int(11) unsigned NOT NULL auto_increment,
+       identifier varchar(250) DEFAULT '' NOT NULL,
+       crdate int(11) unsigned DEFAULT '0' NOT NULL,
+       content mediumtext,
+       tags mediumtext,
+       lifetime int(11) unsigned DEFAULT '0' NOT NULL,
+       PRIMARY KEY (id),
+       KEY cache_id (identifier)
+) ENGINE=InnoDB;
+
+#
+# Table structure for table 'tx_extbase_cache_object_tags'
+#
+CREATE TABLE tx_extbase_cache_object_tags (
+       id int(11) unsigned NOT NULL auto_increment,
+       identifier varchar(128) DEFAULT '' NOT NULL,
+       tag varchar(128) DEFAULT '' NOT NULL,
+       PRIMARY KEY (id),
+       KEY cache_id (identifier),
+       KEY cache_tag (tag)
+) ENGINE=InnoDB;
+
+#
+# Add field 'tx_extbase_type' to table 'fe_users'
+#
 CREATE TABLE fe_users (
        tx_extbase_type varchar(255) DEFAULT '' NOT NULL,
 );
 
+#
+# Add field 'tx_extbase_type' to table 'fe_groups'
+#
 CREATE TABLE fe_groups (
        tx_extbase_type varchar(255) DEFAULT '' NOT NULL,
 );
\ No newline at end of file