1   /*
2    * Copyright 2005-2010 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springframework.ws.server.endpoint;
18  
19  import java.util.Collections;
20  import javax.xml.namespace.QName;
21  import javax.xml.stream.XMLEventFactory;
22  import javax.xml.stream.XMLEventReader;
23  import javax.xml.stream.XMLStreamException;
24  import javax.xml.stream.events.Namespace;
25  import javax.xml.stream.events.XMLEvent;
26  import javax.xml.stream.util.XMLEventConsumer;
27  
28  import static org.junit.Assert.*;
29  
30  /**
31   * Test case for AbstractStaxEventPayloadEndpoint.
32   *
33   * @see AbstractStaxEventPayloadEndpoint
34   */
35  @SuppressWarnings("Since15")
36  public class StaxEventPayloadEndpointTest extends AbstractMessageEndpointTestCase {
37  
38      @Override
39      protected MessageEndpoint createNoResponseEndpoint() {
40          return new AbstractStaxEventPayloadEndpoint() {
41              @Override
42              protected void invokeInternal(XMLEventReader eventReader,
43                                            XMLEventConsumer eventWriter,
44                                            XMLEventFactory eventFactory) throws Exception {
45                  assertNotNull("No EventReader passed", eventReader);
46              }
47          };
48      }
49  
50      @Override
51      protected MessageEndpoint createNoRequestPayloadEndpoint() {
52          return new AbstractStaxEventPayloadEndpoint() {
53  
54              @Override
55              protected void invokeInternal(XMLEventReader eventReader,
56                                            XMLEventConsumer eventWriter,
57                                            XMLEventFactory eventFactory) throws Exception {
58                  assertNull("EventReader passed", eventReader);
59              }
60          };
61      }
62  
63      @Override
64      protected MessageEndpoint createResponseEndpoint() {
65          return new AbstractStaxEventPayloadEndpoint() {
66  
67              @Override
68              protected void invokeInternal(XMLEventReader eventReader,
69                                            XMLEventConsumer eventWriter,
70                                            XMLEventFactory eventFactory) throws XMLStreamException {
71                  assertNotNull("eventReader not given", eventReader);
72                  assertNotNull("eventWriter not given", eventWriter);
73                  assertNotNull("eventFactory not given", eventFactory);
74                  assertTrue("eventReader has not next element", eventReader.hasNext());
75                  XMLEvent event = eventReader.nextEvent();
76                  assertTrue("Not a start document", event.isStartDocument());
77                  event = eventReader.nextEvent();
78                  assertTrue("Not a start element", event.isStartElement());
79                  assertEquals("Invalid start event local name", REQUEST_ELEMENT,
80                          event.asStartElement().getName().getLocalPart());
81                  assertEquals("Invalid start event namespace", NAMESPACE_URI,
82                          event.asStartElement().getName().getNamespaceURI());
83                  assertTrue("eventReader has not next element", eventReader.hasNext());
84                  event = eventReader.nextEvent();
85                  assertTrue("Not a end element", event.isEndElement());
86                  assertEquals("Invalid end event local name", REQUEST_ELEMENT,
87                          event.asEndElement().getName().getLocalPart());
88                  assertEquals("Invalid end event namespace", NAMESPACE_URI,
89                          event.asEndElement().getName().getNamespaceURI());
90                  Namespace namespace = eventFactory.createNamespace(NAMESPACE_URI);
91                  QName name = new QName(NAMESPACE_URI, RESPONSE_ELEMENT);
92                  eventWriter
93                          .add(eventFactory.createStartElement(name, null, Collections.singleton(namespace).iterator()));
94                  eventWriter.add(eventFactory.createEndElement(name, Collections.singleton(namespace).iterator()));
95                  eventWriter.add(eventFactory.createEndDocument());
96              }
97          };
98      }
99  
100 
101 }