Changeset 1584

Show
Ignore:
Timestamp:
05/24/08 02:50:30 (3 months ago)
Author:
mikey
Message:

fix broken serialization of request value errors

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/main/php/net/stubbles/ipo/request/stubRequestValueError.php

    r1326 r1584  
    77 * @subpackage  ipo_request 
    88 */ 
    9 stubClassLoader::load('net::stubbles::lang::stubClonable', 
     9stubClassLoader::load('net::stubbles::ipo::request::stubRequestValueErrorMessage', 
     10                      'net::stubbles::lang::stubClonable', 
    1011                      'net::stubbles::lang::exceptions::stubIllegalArgumentException' 
    1112); 
     
    107108     * returns all messages 
    108109     * 
    109      * @return  array<string,string
     110     * @return  array<stubRequestValueErrorMessage
    110111     * @XMLTag(tagName='messages') 
    111112     */ 
     
    118119            } 
    119120 
    120             $messages[$locale] = $message
     121            $messages[] = new stubRequestValueErrorMessage($locale, $message)
    121122        } 
    122123 
  • trunk/src/main/resources/xsl/stub.xsl

    r1583 r1584  
    442442            <xsl:text>']/errors/error</xsl:text> 
    443443          </xsl:attribute> 
    444           <br /><span class="form_error"> 
    445             <ixsl:value-of> 
    446               <xsl:attribute name="select"> 
    447                 <xsl:text>/document/request/value[@name = '</xsl:text> 
    448                 <xsl:value-of select="$id"/> 
    449                 <xsl:text>_</xsl:text> 
    450                 <xsl:value-of select="@name"/> 
    451                 <xsl:text>']/errors/error/messages/</xsl:text> 
    452                 <xsl:choose> 
    453                   <xsl:when test="$lang"> 
     444          <br/><span class="form_error"> 
     445            <ixsl:choose> 
     446              <ixsl:when> 
     447                <xsl:attribute name="test"> 
     448                  <xsl:text>messages/message[@locale = '</xsl:text> 
     449                  <xsl:value-of select="$lang"/> 
     450                  <xsl:text>']</xsl:text> 
     451                </xsl:attribute> 
     452                <ixsl:value-of> 
     453                  <xsl:attribute name="select"> 
     454                    <xsl:text>messages/message[@locale = '</xsl:text> 
    454455                    <xsl:value-of select="$lang"/> 
    455                   </xsl:when> 
    456                   <xsl:when test="$lang_base"> 
     456                    <xsl:text>']/content</xsl:text> 
     457                  </xsl:attribute> 
     458                </ixsl:value-of> 
     459              </ixsl:when> 
     460              <ixsl:when> 
     461                <xsl:attribute name="test"> 
     462                  <xsl:text>messages/message[@locale = '</xsl:text> 
     463                  <xsl:value-of select="$lang_base"/> 
     464                  <xsl:text>']</xsl:text> 
     465                </xsl:attribute> 
     466                <ixsl:value-of> 
     467                  <xsl:attribute name="select"> 
     468                    <xsl:text>messages/message[@locale = '</xsl:text> 
    457469                    <xsl:value-of select="$lang_base"/> 
    458                   </xsl:when> 
    459                   <xsl:otherwise> 
    460                     <xsl:text>default</xsl:text> 
    461                   </xsl:otherwise> 
    462                 </xsl:choose> 
    463               </xsl:attribute> 
    464             </ixsl:value-of> 
     470                    <xsl:text>']/content</xsl:text> 
     471                  </xsl:attribute> 
     472                </ixsl:value-of> 
     473              </ixsl:when> 
     474              <ixsl:otherwise> 
     475                <ixsl:value-of select="messages/message[@locale = 'default']/content"/> 
     476              </ixsl:otherwise> 
     477            </ixsl:choose> 
    465478          </span> 
    466479        </ixsl:for-each> 
  • trunk/src/test/php/net/stubbles/ipo/request/stubRequestValueErrorTestCase.php

    r1326 r1584  
    4141    public function setUp() 
    4242    { 
    43         $messages = array('en_EN' => 'This is an error with criteria {foo} regarding {bar}.', 
     43        $messages = array('en_*' => 'This is an error with criteria {foo} regarding {bar}.', 
    4444                          'de_DE' => 'Dies ist ein Fehler des Kriteriums {foo} betreffend {bar}.' 
    4545                    ); 
    4646        $this->withValueKeys    = new stubRequestValueError('foo', $messages, array('foo', 'bar')); 
    47         $this->withoutValueKeys = new stubRequestValueError('bar', array('en_EN' => 'This is an error message.')); 
     47        $this->withoutValueKeys = new stubRequestValueError('bar', array('en_*' => 'This is an error message.')); 
    4848    } 
    4949 
     
    6666    public function hasMessages() 
    6767    { 
    68         $this->assertTrue($this->withValueKeys->hasMessage('en_EN')); 
     68        $this->assertTrue($this->withValueKeys->hasMessage('en_*')); 
    6969        $this->assertTrue($this->withValueKeys->hasMessage('de_DE')); 
    7070        $this->assertFalse($this->withValueKeys->hasMessage('fr_FR')); 
    7171         
    72         $this->assertTrue($this->withoutValueKeys->hasMessage('en_EN')); 
     72        $this->assertTrue($this->withoutValueKeys->hasMessage('en_*')); 
    7373        $this->assertFalse($this->withoutValueKeys->hasMessage('de_DE')); 
    7474        $this->assertFalse($this->withoutValueKeys->hasMessage('fr_FR')); 
     
    8282    public function getMessage() 
    8383    { 
    84         $this->assertEquals('This is an error with criteria  regarding .', $this->withValueKeys->getMessage('en_EN')); 
     84        $this->assertEquals('This is an error with criteria  regarding .', $this->withValueKeys->getMessage('en_*')); 
    8585        $this->assertEquals('Dies ist ein Fehler des Kriteriums  betreffend .', $this->withValueKeys->getMessage('de_DE')); 
    8686        $this->assertNull($this->withValueKeys->getMessage('fr_FR')); 
    8787         
    8888        $this->withValueKeys->setValues(array('foo' => 'dummy1', 'bar' => 'dummy2')); 
    89         $this->assertEquals('This is an error with criteria dummy1 regarding dummy2.', $this->withValueKeys->getMessage('en_EN')); 
     89        $this->assertEquals('This is an error with criteria dummy1 regarding dummy2.', $this->withValueKeys->getMessage('en_*')); 
    9090        $this->assertEquals('Dies ist ein Fehler des Kriteriums dummy1 betreffend dummy2.', $this->withValueKeys->getMessage('de_DE')); 
    9191        $this->assertNull($this->withValueKeys->getMessage('fr_FR')); 
    9292         
    9393        $this->withValueKeys->setValues(array('foo' => array('dummy3', 'dummy4'), 'bar' => 'dummy2')); 
    94         $this->assertEquals('This is an error with criteria dummy3, dummy4 regarding dummy2.', $this->withValueKeys->getMessage('en_EN')); 
     94        $this->assertEquals('This is an error with criteria dummy3, dummy4 regarding dummy2.', $this->withValueKeys->getMessage('en_*')); 
    9595        $this->assertEquals('Dies ist ein Fehler des Kriteriums dummy3, dummy4 betreffend dummy2.', $this->withValueKeys->getMessage('de_DE')); 
    9696        $this->assertNull($this->withValueKeys->getMessage('fr_FR')); 
    9797         
    9898        $this->withValueKeys->setValues(array('foo' => new stdClass(), 'bar' => new TestRequestValueErrorCriteria())); 
    99         $this->assertEquals('This is an error with criteria stdClass regarding very hypercritical stuff.', $this->withValueKeys->getMessage('en_EN')); 
     99        $this->assertEquals('This is an error with criteria stdClass regarding very hypercritical stuff.', $this->withValueKeys->getMessage('en_*')); 
    100100        $this->assertEquals('Dies ist ein Fehler des Kriteriums stdClass betreffend very hypercritical stuff.', $this->withValueKeys->getMessage('de_DE')); 
    101101        $this->assertNull($this->withValueKeys->getMessage('fr_FR')); 
    102102         
    103         $this->assertEquals('This is an error message.', $this->withoutValueKeys->getMessage('en_EN')); 
     103        $this->assertEquals('This is an error message.', $this->withoutValueKeys->getMessage('en_*')); 
    104104        $this->assertNull($this->withoutValueKeys->getMessage('de_DE')); 
    105105        $this->assertNull($this->withoutValueKeys->getMessage('fr_FR')); 
     
    113113    public function getMessages() 
    114114    { 
    115         $result = $this->withValueKeys->setValues(array('foo' => 'dummy1', 'bar' => 'dummy2')); 
    116         $messages = array('en_EN' => 'This is an error with criteria dummy1 regarding dummy2.', 
    117                           'de_DE' => 'Dies ist ein Fehler des Kriteriums dummy1 betreffend dummy2.' 
    118                     ); 
    119         $this->assertEquals($messages, $this->withValueKeys->getMessages()); 
     115        $result   = $this->withValueKeys->setValues(array('foo' => 'dummy1', 'bar' => 'dummy2')); 
     116        $messages = $this->withValueKeys->getMessages(); 
     117        $this->assertEquals(2, count($messages)); 
     118        $this->assertEquals('en_*', $messages[0]->getLocale()); 
     119        $this->assertEquals('This is an error with criteria dummy1 regarding dummy2.', $messages[0]->getMessage()); 
     120        $this->assertEquals('de_DE', $messages[1]->getLocale()); 
     121        $this->assertEquals('Dies ist ein Fehler des Kriteriums dummy1 betreffend dummy2.', $messages[1]->getMessage()); 
    120122        $this->assertSame($this->withValueKeys, $result); 
    121123 
    122         $result = $this->withoutValueKeys->setValues(array('foo' => 'dummy1', 'bar' => 'dummy2')); 
    123         $this->assertEquals(array('en_EN' => 'This is an error message.'), $this->withoutValueKeys->getMessages()); 
     124        $result  = $this->withoutValueKeys->setValues(array('foo' => 'dummy1', 'bar' => 'dummy2')); 
     125        $messages = $this->withoutValueKeys->getMessages(); 
     126        $this->assertEquals(1, count($messages)); 
     127        $this->assertEquals('en_*', $messages[0]->getLocale()); 
     128        $this->assertEquals('This is an error message.', $messages[0]->getMessage()); 
    124129        $this->assertSame($this->withoutValueKeys, $result); 
    125130    }