Changeset 295
- Timestamp:
- 02/23/07 18:51:01 (2 years ago)
- Files:
-
- trunk/docroot/xml.php (modified) (2 diffs)
- trunk/src/main/php/net/stubbles/ipo/request/stubRequestValueError.php (modified) (7 diffs)
- trunk/src/main/php/net/stubbles/websites/xml/stubXMLPreInterceptor.php (added)
- trunk/src/main/php/net/stubbles/websites/xml/stubXMLProcessor.php (modified) (2 diffs)
- trunk/src/test/php/net/stubbles/websites/xml/stubXMLProcessorTestCase.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/docroot/xml.php
r292 r295 4 4 stubClassLoader::load('net.stubbles.websites.xml.stubXMLProcessor', 5 5 'net.stubbles.websites.xml.stubXMLPagePostInterceptor', 6 'net.stubbles.websites.xml.stubXMLPreInterceptor', 6 7 'net.stubbles.websites.stubXJConfPageFactory', 7 8 'net.stubbles.ipo.request.stubWebRequest', 9 'net.stubbles.ipo.request.filters.stubAbstractFilter', 10 'net.stubbles.ipo.request.stubRequestValueError', 8 11 'net.stubbles.ipo.session.stubPHPSession' 9 12 ); 13 class TestFilter extends stubAbstractFilter 14 { 15 public function execute($value) 16 { 17 throw new stubFilterException(new stubRequestValueError('foo', array('de_DE' => 'Dies ist eine deutsche Fehlermeldung', 'en_EN' => 'This is an english error message'))); 18 } 19 } 10 20 class Bootstrap 11 21 { … … 22 32 $request = new stubWebRequest(); 23 33 $session = new stubPHPSession('stubSID'); 34 $preInterceptor = new stubXMLPreInterceptor(); 35 $preInterceptor->setRequest($request); 36 $preInterceptor->setSession($session); 37 $preInterceptor->preProcess(); 38 if ($request->isCancelled() == true) { 39 return; 40 } 41 $request->getFilteredValue(new TestFilter(), 'bar'); 24 42 $pageFactory = new stubXJConfPageFactory(stubXJConfLoader::getInstance()); 25 43 $processor = new stubXMLProcessor($request, $session, $pageFactory); trunk/src/main/php/net/stubbles/ipo/request/stubRequestValueError.php
r142 r295 18 18 * @package stubbles 19 19 * @subpackage ipo_request 20 * @XMLTag(tagName=error) 21 * @XMLMethods[XMLMatcher](pattern=/getId|getMessages/) 20 22 */ 21 23 class stubRequestValueError extends stubBaseObject … … 60 62 * 61 63 * @return string 64 * @XMLAttribute(attributeName=id) 62 65 */ 63 66 public function getId() … … 71 74 * @param string $locale 72 75 * @return bool 76 * @XMLIgnore 73 77 */ 74 78 public function hasMessage($locale) … … 82 86 * @param string $locale 83 87 * @return string 88 * @XMLIgnore 84 89 */ 85 90 public function getMessage($locale) … … 101 106 * 102 107 * @return array<string,string> 108 * @XMLTag(tagName=messages) 103 109 */ 104 110 public function getMessages() … … 146 152 * @return stubRequestValueError 147 153 * @throws stubRequestValueErrorException 154 * @XMLIgnore 148 155 */ 149 156 public function setValues(array $values) … … 164 171 * 165 172 * @return array<string> 173 * @XMLIgnore 166 174 */ 167 175 public function getValueKeys() trunk/src/main/php/net/stubbles/websites/xml/stubXMLProcessor.php
r294 r295 38 38 * does the real processing 39 39 * 40 * @todo think about putting default values into the result document40 * @todo use request prefix decorator for page elements 41 41 */ 42 42 protected function doProcess() … … 58 58 $elements = $page->getElements(); 59 59 $xmlStreamWriter->writeStartElement('document'); 60 $this->writeSessionValues($xmlStreamWriter); 60 61 foreach ($elements as $name => $element) { 61 62 $data = $element->process($this->request, $this->session, $this->response); 62 63 $xmlSerializer->serialize($data, $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => $name)); 63 64 } 65 $this->writeRequestValues($xmlStreamWriter, $xmlSerializer); 64 66 65 67 $xmlStreamWriter->writeEndElement(); // end document 66 68 $this->response->replaceData($xmlStreamWriter->asXML()); 69 $this->session->putValue('net.stubbles.websites.lastRequestResponseData', $this->response->getData()); 70 } 71 72 /** 73 * writes the session values into the result document 74 * 75 * Default values are whether the session is new or not, the current and 76 * the next token of the request: 77 * <code> 78 * <document> 79 * <session> 80 * <isNew>true</isNew> 81 * <token> 82 * <current>foo</current> 83 * <next>bar</next> 84 * </token> 85 * </session> 86 * [...] 87 * </document> 88 * </code> 89 * Concrete session data will not be written into the result document. 90 * 91 * @param stubXMLStreamWriter $xmlStreamWriter 92 */ 93 protected function writeSessionValues(stubXMLStreamWriter $xmlStreamWriter) 94 { 95 $xmlStreamWriter->writeStartElement('session'); 96 $xmlStreamWriter->writeElement('isNew', array(), (($this->session->isNew() == true) ? ('true') : ('false'))); 97 $xmlStreamWriter->writeStartElement('token'); 98 $xmlStreamWriter->writeElement('current', array(), $this->session->getCurrentToken()); 99 $xmlStreamWriter->writeElement('next', array(), $this->session->getNextToken()); 100 $xmlStreamWriter->writeEndElement(); // end token 101 $xmlStreamWriter->writeEndElement(); // end session 102 } 103 104 /** 105 * writes the request values into the result document 106 * 107 * Currently this are only the request errors created during processing of the page elements: 108 * <code> 109 * [...] 110 * <request> 111 * <errors> 112 * <error id="foo"> 113 * <messages> 114 * <de_DE>Dies ist eine deutsche Fehlermeldung.</de_DE> 115 * <en_EN>This is an english error message.</en_EN> 116 * </messages> 117 * </error> 118 * [...] 119 * </errors> 120 * </request> 121 * </code> 122 * Concrete request values will not be written into the result document. 123 * 124 * @param stubXMLStreamWriter $xmlStreamWriter 125 * @param stubXMLSerializer $xmlSerializer 126 */ 127 protected function writeRequestValues(stubXMLStreamWriter $xmlStreamWriter, $xmlSerializer) 128 { 129 $xmlStreamWriter->writeStartElement('request'); 130 $errors = $this->request->getValueErrors(); 131 $xmlSerializer->serialize($errors, $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => 'errors')); 132 $xmlStreamWriter->writeEndElement(); // end request 67 133 } 68 134 trunk/src/test/php/net/stubbles/websites/xml/stubXMLProcessorTestCase.php
r292 r295 114 114 $this->mockRequest->setReturnValue('hasValue', false); 115 115 $this->mockPageFactory->expectOnce('getPage', array('conf/index')); 116 $this->mockXMLStreamWriter->expect Once('writeStartElement', array('document'));117 $this->mockXMLStreamWriter->expect Once('writeEndElement');116 $this->mockXMLStreamWriter->expectCallcount('writeStartElement', 4); 117 $this->mockXMLStreamWriter->expectCallcount('writeEndElement', 4); 118 118 $this->mockXMLStreamWriter->setReturnValue('asXML', '<document />'); 119 $this->mockXMLSerializer->expect Never('serialize');119 $this->mockXMLSerializer->expectOnce('serialize'); 120 120 $return = $this->xmlProcessor->process(); 121 121 $this->assertReference($this->xmlProcessor, $return); … … 144 144 $this->page->addElement($pageElement1); 145 145 $this->page->addElement($pageElement2); 146 $this->mockXMLStreamWriter->expect Once('writeStartElement', array('document'));147 $this->mockXMLStreamWriter->expect Once('writeEndElement');146 $this->mockXMLStreamWriter->expectCallcount('writeStartElement', 4); 147 $this->mockXMLStreamWriter->expectCallcount('writeEndElement', 4); 148 148 $this->mockXMLStreamWriter->setReturnValue('asXML', '<document><foo>foo</foo><bar>bar</bar></document>'); 149 149 $this->mockXMLSerializer->expectAt(0, 'serialize', array('foo', $this->mockXMLStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => 'foo')));
