Changeset 1414
- Timestamp:
- 03/13/08 14:46:18 (6 months ago)
- Files:
-
- trunk/src/main/php/net/stubbles/websites/xml/global (added)
- trunk/src/main/php/net/stubbles/websites/xml/global/stubGlobalXMLElement.php (added)
- trunk/src/main/php/net/stubbles/websites/xml/global/stubRequestXMLElement.php (added)
- trunk/src/main/php/net/stubbles/websites/xml/global/stubSessionXMLElement.php (added)
- trunk/src/main/php/net/stubbles/websites/xml/stubXMLProcessor.php (modified) (4 diffs)
- trunk/src/test/php/net/stubbles/websites/WebsitesTestSuite.php (modified) (1 diff)
- trunk/src/test/php/net/stubbles/websites/xml/global (added)
- trunk/src/test/php/net/stubbles/websites/xml/global/stubRequestXMLElementTestCase.php (added)
- trunk/src/test/php/net/stubbles/websites/xml/global/stubSessionXMLElementTestCase.php (added)
- trunk/src/test/php/net/stubbles/websites/xml/stubXMLProcessorTestCase.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/main/php/net/stubbles/websites/xml/stubXMLProcessor.php
r1393 r1414 27 27 { 28 28 /** 29 * list of global elements to be serialized into result xml 30 * 31 * @var array<string> 32 */ 33 protected $globalElements = array('net::stubbles::websites::xml::global::stubSessionXMLElement', 34 'net::stubbles::websites::xml::global::stubRequestXMLElement' 35 ); 36 37 /** 29 38 * constructor 30 39 * … … 52 61 $xmlStreamWriter = $this->createXMLStreamWriter(); 53 62 $this->response->setPage($page); 54 $elements = $page->getElements();55 63 $xmlStreamWriter->writeStartElement('document'); 56 64 $xmlStreamWriter->writeAttribute('page', $pageName); 57 $this->writeSessionValues($xmlStreamWriter);58 65 $prefixRequest = new stubRequestPrefixDecorator($this->request, ''); 59 66 $formValues = array(); 60 61 if (stubRegistry::has(stubBinder::REGISTRY_KEY) ) {67 $injector = null; 68 if (stubRegistry::has(stubBinder::REGISTRY_KEY) === true) { 62 69 $injector = stubRegistry::get(stubBinder::REGISTRY_KEY)->getInjector(); 63 } else {64 $injector = null;65 70 } 66 71 67 foreach ($ elementsas $name => $element) {72 foreach ($page->getElements() as $name => $element) { 68 73 $prefixRequest->setPrefix($name); 69 74 if (null !== $injector) { … … 72 77 73 78 $element->init($prefixRequest, $this->session, $this->response); 74 if ($element->isAvailable() == false) {79 if ($element->isAvailable() === false) { 75 80 continue; 76 81 } … … 88 93 89 94 $xmlSerializer->serialize($formValues, $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => 'forms')); 90 $this->writeRequestValues($xmlStreamWriter, $xmlSerializer);91 92 // write resources93 95 if (null !== $injector) { 96 // write resources 94 97 $xmlStreamWriter->writeStartElement('resources'); 95 98 foreach ($page->getResources() as $name => $interface) { 96 $resource = $injector->getInstance($interface); 97 $xmlSerializer->serialize($resource, $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => $name)); 99 $xmlSerializer->serialize($injector->getInstance($interface), $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => $name)); 98 100 } 99 101 100 102 $xmlStreamWriter->writeEndElement(); 101 } 102 103 $this->response->setXMLStreamWriter($xmlStreamWriter); 104 } 105 106 /** 107 * writes the session values into the result document 108 * 109 * Default values are whether the session is new or not, the current and 110 * the next token of the request: 111 * <code> 112 * <document> 113 * <session> 114 * <acceptsCookies>true</acceptsCookies> 115 * <id>abc123</id> 116 * <name>PHPSESSID</name> 117 * <isNew>true</isNew> 118 * <variant> 119 * <name>foo</name> 120 * <alias>bar</alias> 121 * </variant> 122 * <token> 123 * <current>foo</current> 124 * <next>bar</next> 125 * </token> 126 * </session> 127 * [...] 128 * </document> 129 * </code> 130 * Concrete session data will not be written into the result document. 131 * 132 * @param stubXMLStreamWriter $xmlStreamWriter 133 */ 134 protected function writeSessionValues(stubXMLStreamWriter $xmlStreamWriter) 135 { 136 $xmlStreamWriter->writeStartElement('session'); 137 if ($this->request->acceptsCookies() === true) { 138 $xmlStreamWriter->writeElement('acceptsCookies', array(), 'true'); 139 } else { 140 $xmlStreamWriter->writeElement('acceptsCookies', array(), 'false'); 141 } 142 143 $xmlStreamWriter->writeElement('id', array(), $this->session->getId()); 144 $xmlStreamWriter->writeElement('name', array(), stubRegistry::getConfig(stubSession::NAME_REGISTRY_KEY, stubSession::DEFAULT_SESSION_NAME)); 145 $xmlStreamWriter->writeElement('isNew', array(), (($this->session->isNew() === true) ? ('true') : ('false'))); 146 $xmlStreamWriter->writeStartElement('variant'); 147 $xmlStreamWriter->writeElement('name', array(), (string) $this->session->getValue('net.stubbles.websites.variantmanager.variant.name')); 148 $xmlStreamWriter->writeElement('alias', array(), (string) $this->session->getValue('net.stubbles.websites.variantmanager.variant.alias')); 149 $xmlStreamWriter->writeEndElement(); // end variant 150 $xmlStreamWriter->writeStartElement('token'); 151 $xmlStreamWriter->writeElement('current', array(), $this->session->getCurrentToken()); 152 $xmlStreamWriter->writeElement('next', array(), $this->session->getNextToken()); 153 $xmlStreamWriter->writeEndElement(); // end token 154 $xmlStreamWriter->writeEndElement(); // end session 155 } 156 157 /** 158 * writes the request values into the result document 159 * 160 * Currently this are only the request errors created during processing of the page elements: 161 * <code> 162 * [...] 163 * <request> 164 * <errors> 165 * <error id="foo"> 166 * <messages> 167 * <de_DE>Dies ist eine deutsche Fehlermeldung.</de_DE> 168 * <en_EN>This is an english error message.</en_EN> 169 * </messages> 170 * </error> 171 * [...] 172 * </errors> 173 * </request> 174 * </code> 175 * Concrete request values will not be written into the result document. 176 * 177 * @param stubXMLStreamWriter $xmlStreamWriter 178 * @param stubXMLSerializer $xmlSerializer 179 */ 180 protected function writeRequestValues(stubXMLStreamWriter $xmlStreamWriter, $xmlSerializer) 181 { 182 $xmlStreamWriter->writeStartElement('request'); 183 $errors = $this->request->getValueErrors(); 184 foreach ($errors as $requestValueName => $requestErrorValues) { 185 $xmlStreamWriter->writeStartElement('value'); 186 $xmlStreamWriter->writeAttribute('name', $requestValueName); 187 $xmlSerializer->serialize(array_values($requestErrorValues), $xmlStreamWriter, array(stubXMLSerializer::OPT_ROOT_TAG => 'errors')); 188 $xmlStreamWriter->writeEndElement(); 103 // write global elements 104 foreach ($this->globalElements as $globalElementClassName) { 105 $globalElement = $injector->getInstance($globalElementClassName); 106 $globalElement->append($xmlStreamWriter, $xmlSerializer); 107 } 189 108 } 190 109 191 $ xmlStreamWriter->writeEndElement(); // end request110 $this->response->setXMLStreamWriter($xmlStreamWriter); 192 111 } 193 112 trunk/src/test/php/net/stubbles/websites/WebsitesTestSuite.php
r1413 r1414 53 53 $suite->addTestFile($dir . '/xml/stubXMLProcessorTestCase.php'); 54 54 $suite->addTestFile($dir . '/xml/stubXMLResponseTestCase.php'); 55 56 // xml global elements 57 $suite->addTestFile($dir . '/xml/global/stubRequestXMLElementTestCase.php'); 58 $suite->addTestFile($dir . '/xml/global/stubSessionXMLElementTestCase.php'); 55 59 return $suite; 56 60 } trunk/src/test/php/net/stubbles/websites/xml/stubXMLProcessorTestCase.php
r1360 r1414 154 154 $this->mockRequest->expects($this->once())->method('hasValue')->will($this->returnValue(false)); 155 155 $this->mockPageFactory->expects($this->once())->method('getPage')->with($this->equalTo('conf/index')); 156 $this->mockXMLStreamWriter->expects($this-> exactly(5))->method('writeStartElement');157 $this->mockXMLStreamWriter->expects($this-> exactly(4))->method('writeEndElement');156 $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 157 $this->mockXMLStreamWriter->expects($this->never())->method('writeEndElement'); 158 158 $this->mockXMLSerializer->expects($this->once())->method('serialize'); 159 159 $return = $this->xmlProcessor->process(); … … 188 188 $this->page->addElement($pageElement2); 189 189 $this->page->addElement($pageElement3); 190 $this->mockXMLStreamWriter->expects($this-> exactly(5))->method('writeStartElement');191 $this->mockXMLStreamWriter->expects($this-> exactly(4))->method('writeEndElement');190 $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 191 $this->mockXMLStreamWriter->expects($this->never())->method('writeEndElement'); 192 192 $this->mockXMLSerializer->expects($this->at(0)) 193 193 ->method('serialize')
