Author: ts
Date: Mon Jan  7 19:23:51 2008
New Revision: 7094

Log:
- Fixed issue #12108: ezcPersistentStateTransformer::rowToStateArray() relying
  on definitions with reverse properties set, but it's not automatic.

Modified:
    stable/PersistentObject/1.3/ChangeLog
    stable/PersistentObject/1.3/src/internal/state_transformer.php
    stable/PersistentObject/1.3/tests/persistent_session_test.php

Modified: stable/PersistentObject/1.3/ChangeLog
==============================================================================
--- stable/PersistentObject/1.3/ChangeLog [iso-8859-1] (original)
+++ stable/PersistentObject/1.3/ChangeLog [iso-8859-1] Mon Jan  7 19:23:51 2008
@@ -1,3 +1,10 @@
+1.3.4 - [RELEASEDATE]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Fixed issue #12108: ezcPersistentStateTransformer::rowToStateArray() relying
+  on definitions with reverse properties set, but it's not automatic.
+
+
 1.3.3 - Monday 17 December 2007
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 

Modified: stable/PersistentObject/1.3/src/internal/state_transformer.php
==============================================================================
--- stable/PersistentObject/1.3/src/internal/state_transformer.php [iso-8859-1] 
(original)
+++ stable/PersistentObject/1.3/src/internal/state_transformer.php [iso-8859-1] 
Mon Jan  7 19:23:51 2008
@@ -35,11 +35,19 @@
      */
     public static function rowToStateArray( array $row, 
ezcPersistentObjectDefinition $def )
     {
+        // Sanity check for reverse-lookup
+        // Issue #12108
+        if ( count( $def->columns ) === 0 )
+        {
+            throw new ezcPersistentObjectException(
+                "The PersistentObject defitnion for class {$def->class} was 
not initialized correctly.",
+                'Missing reverse lookup for columns. Check the definition 
manager.'
+            );
+        }
+
         $result = array();
         foreach ( $row as $key => $value )
         {
-            // todo: everything in $row is of type string
-            // should we convert to the correct PHP type?
             if ( $key == $def->idProperty->columnName )
             {
                 $result[$def->idProperty->propertyName] = $value;

Modified: stable/PersistentObject/1.3/tests/persistent_session_test.php
==============================================================================
--- stable/PersistentObject/1.3/tests/persistent_session_test.php [iso-8859-1] 
(original)
+++ stable/PersistentObject/1.3/tests/persistent_session_test.php [iso-8859-1] 
Mon Jan  7 19:23:51 2008
@@ -788,6 +788,22 @@
 
         $this->removeTempDir();
     }
+
+    /**
+     * Test case for issue #12108.
+     */
+    public function testMissingReverseColumnLookup()
+    {
+        // Load def without def manager
+        $def = require dirname( __FILE__ ) . '/data/persistenttestobject.php';
+        
+        try
+        {
+            ezcPersistentStateTransformer::rowToStateArray( array(), $def );
+            $this->fail( 'Exception not thrown on state transformation without 
proper reverse-lookup.' );
+        }
+        catch ( ezcPersistentObjectException $e ) {}
+    }
 }
 
 ?>


-- 
svn-components mailing list
svn-components@lists.ez.no
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to