Changeset 1140
- Timestamp:
- 12/13/07 15:38:37 (1 year ago)
- Files:
-
- trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisAbstractExtension.php (modified) (1 diff)
- trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisExtension.php (modified) (1 diff)
- trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisLoadExtensionPageElement.php (modified) (1 diff)
- trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisProcessor.php (modified) (6 diffs)
- trunk/src/main/php/net/stubbles/websites/stubAbstractPageElement.php (modified) (1 diff)
- trunk/src/main/php/net/stubbles/websites/stubPageElement.php (modified) (1 diff)
- trunk/src/main/php/net/stubbles/websites/xml/stubXMLPageElementDecorator.php (modified) (1 diff)
- trunk/src/test/php/net/stubbles/websites/memphis/stubMemphisProcessorTestCase.php (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisAbstractExtension.php
r1113 r1140 69 69 70 70 /** 71 * checks whether extension is cachable or not 72 * 73 * @return bool 74 */ 75 public function isCachable() 76 { 77 return true; 78 } 79 80 /** 71 81 * returns a list of variables that have an influence on caching 72 82 * trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisExtension.php
r1113 r1140 36 36 37 37 /** 38 * checks whether extension is cachable or not 39 * 40 * @return bool 41 */ 42 public function isCachable(); 43 44 /** 38 45 * returns a list of variables that have an influence on caching 39 46 * trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisLoadExtensionPageElement.php
r1127 r1140 85 85 86 86 /** 87 * checks whether page element is cachable or not 88 * 89 * @return bool 90 */ 91 public function isCachable() 92 { 93 return $this->extension->isCachable(); 94 } 95 96 /** 87 97 * returns a list of variables that have an influence on caching 88 98 * trunk/src/main/php/net/stubbles/websites/memphis/stubMemphisProcessor.php
r1138 r1140 109 109 $frameId = $this->getFrameId($page); 110 110 if (null !== $this->cache) { 111 $ this->processCacheVars($prefixRequest, $elements, $pageName, $frameId, $context);112 if ( $this->cache->retrieve($this->request, $this->session, $this->response, $pageName) === true) {111 $cachable = $this->processCacheVars($prefixRequest, $elements, $pageName, $frameId, $context); 112 if (true === $cachable && $this->cache->retrieve($this->request, $this->session, $this->response, $pageName) === true) { 113 113 return; 114 114 } … … 121 121 $this->processPageElements($prefixRequest, $elements, $context); 122 122 if (null !== $this->cache) { 123 $this->cache->store($this->request, $this->response, $pageName); 123 if (true === $cachable) { 124 $this->cache->store($this->request, $this->response, $pageName); 125 } 126 124 127 $contents = str_replace('$SID', $this->session->getName() . '=' . $this->session->getId(), $this->response->getData()); 125 128 $contents = str_replace('$SESSION_NAME', $this->session->getName(), $contents); … … 159 162 * helper method to set the cache variables 160 163 * 161 * @param stubRequest $prefixRequest 162 * @param array $elements 163 * @param string $pageName 164 * @param string $frameId 165 * @param array $context 164 * @param stubRequest $prefixRequest 165 * @param array $elements 166 * @param string $pageName 167 * @param string $frameId 168 * @param array $context 169 * @return bool true if page is cachable, else false 166 170 */ 167 171 protected function processCacheVars(stubRequest $prefixRequest, array $elements, $pageName, $frameId, array $context) … … 183 187 if ($defaultElement->isAvailable() === false) { 184 188 continue; 189 } elseif ($defaultElement->isCachable() === false) { 190 return false; 185 191 } 186 192 … … 194 200 if ($element->isAvailable() === false) { 195 201 continue; 202 } elseif ($element->isCachable() === false) { 203 return false; 196 204 } 197 205 … … 200 208 } 201 209 } 210 211 return true; 202 212 } 203 213 trunk/src/main/php/net/stubbles/websites/stubAbstractPageElement.php
r1113 r1140 104 104 105 105 /** 106 * checks whether page element is cachable or not 107 * 108 * @return bool 109 */ 110 public function isCachable() 111 { 112 return true; 113 } 114 115 /** 106 116 * returns a list of variables that have an influence on caching 107 117 * trunk/src/main/php/net/stubbles/websites/stubPageElement.php
r1113 r1140 59 59 60 60 /** 61 * checks whether page element is cachable or not 62 * 63 * @return bool 64 */ 65 public function isCachable(); 66 67 /** 61 68 * returns a list of variables that have an influence on caching 62 69 * trunk/src/main/php/net/stubbles/websites/xml/stubXMLPageElementDecorator.php
r1113 r1140 115 115 116 116 /** 117 * checks whether page element is cachable or not 118 * 119 * @return bool 120 */ 121 public function isCachable() 122 { 123 return $this->element->isCachable(); 124 } 125 126 /** 117 127 * returns a list of variables that have an influence on caching 118 128 * trunk/src/test/php/net/stubbles/websites/memphis/stubMemphisProcessorTestCase.php
r1138 r1140 132 132 * helper method to access protected method processCacheVars() 133 133 * 134 * @param stubRequest $prefixRequest 135 * @param array $elements 136 * @param string $pageName 137 * @param string $frameId 138 * @param array $context 134 * @param stubRequest $prefixRequest 135 * @param array $elements 136 * @param string $pageName 137 * @param string $frameId 138 * @param array $context 139 * @return bool 139 140 */ 140 141 public function callProcessCacheVars(stubRequest $prefixRequest, array $elements, $pageName, $frameId, array $context) 141 142 { 142 $this->processCacheVars($prefixRequest, $elements, $pageName, $frameId, $context);143 return $this->processCacheVars($prefixRequest, $elements, $pageName, $frameId, $context); 143 144 } 144 145 … … 351 352 $this->mockPage->setReturnValue('getElements', array('baz' => $mockPageElement)); 352 353 $memphisProcessor->expectOnce('processCacheVars', array('*', array('baz' => $mockPageElement), 'foo', 'bar', '*')); 354 $memphisProcessor->setReturnValue('processCacheVars', true); 353 355 $this->mockMemphisConfig->expectOnce('getFrame', array('bar')); 354 356 $this->mockMemphisConfig->setReturnValue('getFrame', 'frame/default.tmpl'); … … 372 374 * test the processing algorithm using a cache 373 375 */ 376 public function testDoProcessWithCacheButUncachableElement() 377 { 378 $memphisProcessor = new TestPartialMockstubMemphisProcessor($this->mockRequest, $this->mockSession, $this->mockResponse, $this->mockPageFactory); 379 $memphisProcessor->setConfig($this->mockMemphisConfig); 380 $memphisProcessor->setReturnValue('createTemplate', $this->mockMemphisTemplate); 381 $memphisProcessor->setReturnValue('getPageName', 'foo'); 382 $memphisProcessor->setReturnValue('getFrameId', 'bar'); 383 $memphisProcessor->setReturnValue('getPage', $this->mockPage); 384 $mockPageElement = new MockstubPageElement(); 385 $this->mockPage->setReturnValue('getElements', array('baz' => $mockPageElement)); 386 $memphisProcessor->expectOnce('processCacheVars', array('*', array('baz' => $mockPageElement), 'foo', 'bar', '*')); 387 $memphisProcessor->setReturnValue('processCacheVars', false); 388 $this->mockMemphisConfig->expectOnce('getFrame', array('bar')); 389 $this->mockMemphisConfig->setReturnValue('getFrame', 'frame/default.tmpl'); 390 $this->mockMemphisTemplate->expectOnce('readTemplatesFromInput', array('frame/default.tmpl')); 391 $memphisProcessor->expectOnce('setTemplateVars', array('*', 'foo', 'bar')); 392 $memphisProcessor->expectOnce('processPageElements', array('*', array('baz' => $mockPageElement), '*')); 393 $mockCache = new MockstubWebsiteCache(); 394 $mockCache->expectNever('retrieve'); 395 $mockCache->expectNever('store'); 396 $memphisProcessor->setWebsiteCache($mockCache); 397 $this->mockResponse->expectOnce('getData'); 398 $this->mockResponse->setReturnValue('getData', '$SID$SESSION_NAME$SESSION_ID'); 399 $this->mockSession->setReturnValue('getId', 'id'); 400 $this->mockSession->setReturnValue('getName', 'name'); 401 $this->mockResponse->expectOnce('replaceData', array('name=idnameid')); 402 $memphisProcessor->callDoProcess(); 403 } 404 405 /** 406 * test the processing algorithm using a cache 407 */ 374 408 public function testDoProcessWithCacheAndCached() 375 409 { … … 383 417 $this->mockPage->setReturnValue('getElements', array('baz' => $mockPageElement)); 384 418 $memphisProcessor->expectOnce('processCacheVars', array('*', array('baz' => $mockPageElement), 'foo', 'bar', '*')); 419 $memphisProcessor->setReturnValue('processCacheVars', true); 385 420 $this->mockMemphisConfig->expectNever('getFrame'); 386 421 $this->mockMemphisTemplate->expectNever('readTemplatesFromInput'); … … 445 480 $mockDefaultPageElement1->expectAt(1, 'init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'teaser'))); 446 481 $mockDefaultPageElement1->setReturnValue('isAvailable', false); 482 $mockDefaultPageElement1->expectNever('isCachable'); 447 483 $mockDefaultPageElement1->expectNever('getCacheVars'); 448 484 $mockDefaultPageElement1->expectNever('getUsedFiles'); … … 453 489 $mockDefaultPageElement2->expectAt(1, 'init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'teaser'))); 454 490 $mockDefaultPageElement2->setReturnValue('isAvailable', true); 491 $mockDefaultPageElement2->setReturnValue('isCachable', true); 455 492 $mockDefaultPageElement2->expectCallCount('getCacheVars', 2); 456 493 $mockDefaultPageElement2->setReturnValue('getCacheVars', array('one' => 'defaultMock2')); … … 464 501 $mockPageElement1->expectAt(1, 'init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'teaser'))); 465 502 $mockPageElement1->setReturnValue('isAvailable', false); 503 $mockPageElement1->expectNever('isCachable'); 466 504 $mockPageElement1->expectNever('getCacheVars'); 467 505 $mockPageElement1->expectNever('getUsedFiles'); … … 472 510 $mockPageElement2->expectAt(1, 'init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'teaser'))); 473 511 $mockPageElement2->setReturnValue('isAvailable', true); 512 $mockPageElement2->setReturnValue('isCachable', true); 474 513 $mockPageElement2->expectCallCount('getCacheVars', 2); 475 514 $mockPageElement2->setReturnValue('getCacheVars', array('two' => 'Mock2')); … … 493 532 $mockCache->expectCallcount('addUsedFiles', 4); 494 533 $this->memphisProcessor->setWebsiteCache($mockCache); 495 $this->memphisProcessor->callProcessCacheVars($prefixRequest, array('mock1' => $mockPageElement1, 'mock2' => $mockPageElement2), 'foo', 'bar', array()); 534 $this->assertTrue($this->memphisProcessor->callProcessCacheVars($prefixRequest, array('mock1' => $mockPageElement1, 'mock2' => $mockPageElement2), 'foo', 'bar', array())); 535 } 536 537 /** 538 * test that collecting the cache variables works as expected 539 */ 540 public function testProcessCacheVarsWithUncachableElement() 541 { 542 $prefixRequest = new stubRequestPrefixDecorator($this->mockRequest, ''); 543 $this->mockMemphisConfig->setReturnValue('getParts', array('content', 'teaser')); 544 $mockDefaultPageElement1 = new MockstubPageElement(); 545 $mockDefaultPageElement1->setReturnValue('getName', 'defaultMock1'); 546 $mockDefaultPageElement1->expectOnce('init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'content'))); 547 $mockDefaultPageElement1->setReturnValue('isAvailable', false); 548 $mockDefaultPageElement1->expectNever('isCachable'); 549 $mockDefaultPageElement1->expectNever('getCacheVars'); 550 $mockDefaultPageElement1->expectNever('getUsedFiles'); 551 $mockDefaultPageElement2 = new MockstubPageElement(); 552 $mockDefaultPageElement2->setReturnValue('getName', 'defaultMock2'); 553 $mockDefaultPageElement2->expectOnce('init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'content'))); 554 $mockDefaultPageElement2->setReturnValue('isAvailable', true); 555 $mockDefaultPageElement2->setReturnValue('isCachable', true); 556 $mockDefaultPageElement2->expectOnce('getCacheVars'); 557 $mockDefaultPageElement2->setReturnValue('getCacheVars', array('one' => 'defaultMock2')); 558 $mockDefaultPageElement2->expectOnce('getUsedFiles'); 559 $mockDefaultPageElement2->setReturnValue('getUsedFiles', array('defaultMock2.tmpl')); 560 $this->mockMemphisConfig->setReturnValue('getDefaultElements', array($mockDefaultPageElement1, $mockDefaultPageElement2)); 561 $mockPageElement1 = new MockstubPageElement(); 562 $mockPageElement1->setReturnValue('getName', 'Mock1'); 563 $mockPageElement1->expectOnce('init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'content'))); 564 $mockPageElement1->setReturnValue('isAvailable', false); 565 $mockPageElement1->expectNever('isCachable'); 566 $mockPageElement1->expectNever('getCacheVars'); 567 $mockPageElement1->expectNever('getUsedFiles'); 568 $mockPageElement2 = new MockstubPageElement(); 569 $mockPageElement2->setReturnValue('getName', 'Mock2'); 570 $mockPageElement2->expectOnce('init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'content'))); 571 $mockPageElement2->setReturnValue('isAvailable', true); 572 $mockPageElement2->setReturnValue('isCachable', false); 573 $mockPageElement2->expectNever('getCacheVars'); 574 $mockPageElement2->expectNever('getUsedFiles'); 575 $mockCache = new MockstubWebsiteCache(); 576 $mockCache->expectAt(0, 'addCacheVar', array('page', 'foo')); 577 $mockCache->expectAt(1, 'addCacheVar', array('frame', 'bar')); 578 $mockCache->expectAt(2, 'addCacheVar', array('variant', null)); 579 $mockCache->expectAt(3, 'addCacheVar', array('ssl', 'no')); 580 $mockCache->expectOnce('addCacheVars', array(array('one' => 'defaultMock2'))); 581 $mockCache->expectCallcount('addCacheVar', 4); 582 $mockCache->expectOnce('addUsedFiles', array(array('defaultMock2.tmpl'))); 583 $this->memphisProcessor->setWebsiteCache($mockCache); 584 $this->assertFalse($this->memphisProcessor->callProcessCacheVars($prefixRequest, array('mock1' => $mockPageElement1, 'mock2' => $mockPageElement2), 'foo', 'bar', array())); 585 } 586 587 /** 588 * test that collecting the cache variables works as expected 589 */ 590 public function testProcessCacheVarsWithUncachableDefaultElement() 591 { 592 $prefixRequest = new stubRequestPrefixDecorator($this->mockRequest, ''); 593 $this->mockMemphisConfig->setReturnValue('getParts', array('content', 'teaser')); 594 $mockDefaultPageElement1 = new MockstubPageElement(); 595 $mockDefaultPageElement1->setReturnValue('getName', 'defaultMock1'); 596 $mockDefaultPageElement1->expectOnce('init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'content'))); 597 $mockDefaultPageElement1->setReturnValue('isAvailable', false); 598 $mockDefaultPageElement1->expectNever('isCachable'); 599 $mockDefaultPageElement1->expectNever('getCacheVars'); 600 $mockDefaultPageElement1->expectNever('getUsedFiles'); 601 $mockDefaultPageElement2 = new MockstubPageElement(); 602 $mockDefaultPageElement2->setReturnValue('getName', 'defaultMock2'); 603 $mockDefaultPageElement2->expectOnce('init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'content'))); 604 $mockDefaultPageElement2->setReturnValue('isAvailable', true); 605 $mockDefaultPageElement2->setReturnValue('isCachable', false); 606 $mockDefaultPageElement2->expectNever('getCacheVars'); 607 $mockDefaultPageElement2->expectNever('getUsedFiles'); 608 $this->mockMemphisConfig->setReturnValue('getDefaultElements', array($mockDefaultPageElement1, $mockDefaultPageElement2)); 609 $mockPageElement1 = new MockstubPageElement(); 610 $mockPageElement1->setReturnValue('getName', 'Mock1'); 611 $mockPageElement1->expectNever('init'); 612 $mockPageElement1->expectNever('isAvailable'); 613 $mockPageElement1->expectNever('isCachable'); 614 $mockPageElement1->expectNever('getCacheVars'); 615 $mockPageElement1->expectNever('getUsedFiles'); 616 $mockPageElement2 = new MockstubPageElement(); 617 $mockPageElement2->setReturnValue('getName', 'Mock2'); 618 $mockPageElement2->expectNever('init', array($prefixRequest, $this->mockSession, $this->mockResponse, array('part' => 'content'))); 619 $mockPageElement2->expectNever('isAvailable'); 620 $mockPageElement2->expectNever('isCachable'); 621 $mockPageElement2->expectNever('getCacheVars'); 622 $mockPageElement2->expectNever('getUsedFiles'); 623 $mockCache = new MockstubWebsiteCache(); 624 $mockCache->expectAt(0, 'addCacheVar', array('page', 'foo')); 625 $mockCache->expectAt(1, 'addCacheVar', array('frame', 'bar')); 626 $mockCache->expectAt(2, 'addCacheVar', array('variant', null)); 627 $mockCache->expectAt(3, 'addCacheVar', array('ssl', 'no')); 628 $mockCache->expectNever('addCacheVars'); 629 $mockCache->expectNever('addUsedFiles'); 630 $this->memphisProcessor->setWebsiteCache($mockCache); 631 $this->assertFalse($this->memphisProcessor->callProcessCacheVars($prefixRequest, array('mock1' => $mockPageElement1, 'mock2' => $mockPageElement2), 'foo', 'bar', array())); 496 632 } 497 633
