diff --git a/sandbox/.gitignore b/sandbox/.gitignore deleted file mode 100644 index 27399402..00000000 --- a/sandbox/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -target -*.iml -.classpath -.project -.settings - diff --git a/sandbox/src/main/java/org/springframework/ws/client/object/MarshallingInvocation.java b/sandbox/src/main/java/org/springframework/ws/client/object/MarshallingInvocation.java deleted file mode 100644 index 1a24411e..00000000 --- a/sandbox/src/main/java/org/springframework/ws/client/object/MarshallingInvocation.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.client.object; - -/** @author Arjen Poutsma */ -public abstract class MarshallingInvocation extends WebServiceInvocation { - -} diff --git a/sandbox/src/main/java/org/springframework/ws/client/object/WebServiceInvocation.java b/sandbox/src/main/java/org/springframework/ws/client/object/WebServiceInvocation.java deleted file mode 100644 index 2a05a97c..00000000 --- a/sandbox/src/main/java/org/springframework/ws/client/object/WebServiceInvocation.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.client.object; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.ws.client.core.WebServiceTemplate; - -/** @author Arjen Poutsma */ -public abstract class WebServiceInvocation { - - /** Logger available to subclasses. */ - protected final Log logger = LogFactory.getLog(getClass()); - - /** Lower-level class used to invoke Web service. */ - private WebServiceTemplate webServiceTemplate = new WebServiceTemplate(); - - /** Returns the {@link WebServiceTemplate} used by this object. */ - public WebServiceTemplate getWebServiceTemplate() { - return webServiceTemplate; - } - - public void setWebServiceTemplate(WebServiceTemplate webServiceTemplate) { - this.webServiceTemplate = webServiceTemplate; - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/client/object/package.html b/sandbox/src/main/java/org/springframework/ws/client/object/package.html deleted file mode 100644 index 2e76509b..00000000 --- a/sandbox/src/main/java/org/springframework/ws/client/object/package.html +++ /dev/null @@ -1,12 +0,0 @@ - - -Contains classes that represent Web service invocations as threadsafe, reusable objects. This approach is similar to -the JDBC Object support in the Spring framework (see the org.springframework.jdbc.object package). -

- This higher level of Web service abstraction depends on the lower-level - abstraction in the org.springframework.jdbc.core package. - Exceptions thrown are as in the org.springframework.dao package, - meaning that code using this package does not need to implement JDBC or - RDBMS-specific error handling. - - diff --git a/sandbox/src/main/java/org/springframework/ws/jaxws/JaxWsProviderEndpointAdapter.java b/sandbox/src/main/java/org/springframework/ws/jaxws/JaxWsProviderEndpointAdapter.java deleted file mode 100644 index 7de7350e..00000000 --- a/sandbox/src/main/java/org/springframework/ws/jaxws/JaxWsProviderEndpointAdapter.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.jaxws; - -import javax.xml.soap.SOAPMessage; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.ws.Provider; -import javax.xml.ws.Service; -import javax.xml.ws.ServiceMode; -import javax.xml.ws.WebServiceProvider; - -import org.springframework.ws.WebServiceMessage; -import org.springframework.ws.context.MessageContext; -import org.springframework.ws.server.EndpointAdapter; -import org.springframework.ws.soap.saaj.SaajSoapMessage; -import org.springframework.xml.transform.TransformerObjectSupport; - -/** - * Adapter to use a JAX-WS {@link Provider} as the endpoint for a EndpointInvocationChain. Supports both - * message and payload providers. - * - * @author Arjen Poutsma - */ -public class JaxWsProviderEndpointAdapter extends TransformerObjectSupport implements EndpointAdapter { - - public boolean supports(Object endpoint) { - return endpoint.getClass().getAnnotation(WebServiceProvider.class) != null && endpoint instanceof Provider; - } - - public void invoke(MessageContext messageContext, Object endpoint) throws Exception { - ServiceMode serviceMode = endpoint.getClass().getAnnotation(ServiceMode.class); - if (serviceMode == null || Service.Mode.PAYLOAD.equals(serviceMode.value())) { - invokeSourceProvider(messageContext, (Provider) endpoint); - } - else if (Service.Mode.MESSAGE.equals(serviceMode.value())) { - Provider provider = (Provider) endpoint; - invokeMessageProvider(messageContext, provider); - } - } - - private void invokeSourceProvider(MessageContext messageContext, Provider provider) - throws TransformerException { - Source requestSource = messageContext.getRequest().getPayloadSource(); - Source responseSource = provider.invoke(requestSource); - if (responseSource != null) { - WebServiceMessage response = messageContext.getResponse(); - Transformer transformer = createTransformer(); - transformer.transform(responseSource, response.getPayloadResult()); - } - } - - private void invokeMessageProvider(MessageContext messageContext, Provider provider) { - if (!(messageContext.getRequest() instanceof SaajSoapMessage)) { - throw new IllegalArgumentException("JaxWsProviderEndpointAdapter requires a SaajSoapMessage. " + - "Use a SaajSoapMessageFactory to create the SOAP messages."); - } - SaajSoapMessage request = (SaajSoapMessage) messageContext.getRequest(); - SOAPMessage saajRequest = request.getSaajMessage(); - SOAPMessage saajResponse = provider.invoke(saajRequest); - if (saajResponse != null) { - SaajSoapMessage response = (SaajSoapMessage) messageContext.getResponse(); - response.setSaajMessage(saajResponse); - } - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/PerformanceTest.java b/sandbox/src/main/java/org/springframework/ws/soap/PerformanceTest.java deleted file mode 100644 index d97c41d4..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/PerformanceTest.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.stream.StreamResult; - -import org.springframework.beans.factory.InitializingBean; -import org.springframework.util.StopWatch; -import org.springframework.ws.soap.axiom.AxiomSoapMessageFactory; -import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; -import org.springframework.ws.soap.stroap.StroapMessageFactory; -import org.springframework.ws.stream.StreamingPayload; -import org.springframework.ws.stream.StreamingWebServiceMessage; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class PerformanceTest { - - private static final Log logger = LogFactory.getLog(PerformanceTest.class); - - private static final int ITERATIONS = 1000; - - private static final int ELEMENTS = 500; - - private SoapMessageFactory messageFactory; - - private Marshaller marshaller; - - private StopWatch stopWatch; - - private MyRootElement jaxbElement; - - private OutputStream os; - - private boolean streaming = false; - - private static final QName NAME = new QName("http://springframework.org", "root"); - - private Transformer transformer; - - public PerformanceTest(SoapMessageFactory messageFactory, StopWatch stopWatch) throws Exception { - if (messageFactory instanceof InitializingBean) { - ((InitializingBean) messageFactory).afterPropertiesSet(); - } - this.messageFactory = messageFactory; - JAXBContext jaxbContext = JAXBContext.newInstance(MyRootElement.class); - marshaller = jaxbContext.createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); - - jaxbElement = new MyRootElement(); - for (int i = 0; i < ELEMENTS; i++) { - jaxbElement.getStrings().add(String.valueOf(i)); - } - - os = new NullOutputSteam(); - - this.stopWatch = stopWatch; - - this.transformer = TransformerFactory.newInstance().newTransformer(); - } - - public void test(boolean streaming) throws Exception { - String s = messageFactory.toString() + " streaming " + (streaming ? "enabled" : "disabled"); - stopWatch.start(s); - logger.info(s); - for (int i = 0; i < ITERATIONS; i++) { - SoapMessage message = (SoapMessage) messageFactory.createWebServiceMessage(); - - marshal(message, streaming); - - transformer.transform(message.getPayloadSource(), new StreamResult(os)); - - message.writeTo(os); - - - } - stopWatch.stop(); - } - - private void marshal(SoapMessage message, boolean streaming) throws JAXBException { - if (streaming && message instanceof StreamingWebServiceMessage) { - StreamingWebServiceMessage streamingMessage = (StreamingWebServiceMessage) message; - StreamingPayload payload = new JaxbStreamingPayload(jaxbElement, NAME, marshaller); - - streamingMessage.setStreamingPayload(payload); - } - else { - marshaller.marshal(jaxbElement, message.getPayloadResult()); - } - } - - public static void main(String[] args) throws Exception { - StopWatch stopWatch = new StopWatch(); - - try { - saaj(stopWatch); - axiom(stopWatch, false, false); - axiom(stopWatch, true, false); - axiom(stopWatch, false, true); - axiom(stopWatch, true, true); - stroap(stopWatch, false, false); - stroap(stopWatch, true, false); - stroap(stopWatch, false, true); - stroap(stopWatch, true, true); - - } - finally { - System.out.println(stopWatch.prettyPrint()); - } - } - - private static void saaj(StopWatch stopWatch) throws Exception { - SaajSoapMessageFactory ssmf = new SaajSoapMessageFactory(); - PerformanceTest performanceTest = new PerformanceTest(ssmf, stopWatch); - performanceTest.test(false); - } - - private static void axiom(StopWatch stopWatch, boolean caching, boolean streaming) throws Exception { - AxiomSoapMessageFactory axmf = new AxiomSoapMessageFactory(); - axmf.setPayloadCaching(caching); - PerformanceTest performanceTest = new PerformanceTest(axmf, stopWatch); - performanceTest.test(streaming); - } - - private static void stroap(StopWatch stopWatch, boolean caching, boolean streaming) throws Exception { - StroapMessageFactory smf = new StroapMessageFactory(); - smf.setPayloadCaching(caching); - PerformanceTest performanceTest = new PerformanceTest(smf, stopWatch); - performanceTest.test(streaming); - } - - @XmlRootElement(name = "root", namespace = "http://springframework.org") - public static class MyRootElement { - - private List strings; - - @XmlElement(name = "string", namespace = "http://springframework.org") - public List getStrings() { - if (strings == null) { - strings = new ArrayList(); - } - return strings; - } - - } - - private static class NullOutputSteam extends OutputStream { - - @Override - public void write(int b) throws IOException { - } - - @Override - public void write(byte[] b) throws IOException { - } - - @Override - public void write(byte[] b, int off, int len) throws IOException { - } - - @Override - public void flush() throws IOException { - } - - @Override - public void close() throws IOException { - } - } - - private static class JaxbStreamingPayload implements StreamingPayload { - - private final Object jaxbElement; - - private final QName name; - - private final Marshaller marshaller; - - private JaxbStreamingPayload(Object jaxbElement, QName name, Marshaller marshaller) { - this.jaxbElement = jaxbElement; - this.name = name; - this.marshaller = marshaller; - } - - public QName getName() { - return name; - } - - public void writeTo(XMLStreamWriter streamWriter) throws XMLStreamException { - try { - marshaller.marshal(jaxbElement, streamWriter); - } - catch (JAXBException ex) { - throw new XMLStreamException(ex); - } - } - } - - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingStroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingStroapPayload.java deleted file mode 100644 index 51d3f441..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingStroapPayload.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.LinkedList; -import java.util.List; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLEventWriter; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.XMLEvent; - -import org.springframework.util.Assert; -import org.springframework.xml.stream.ListBasedXMLEventReader; - -/** - * @author Arjen Poutsma - */ -class CachingStroapPayload extends StroapPayload { - - private final List events = new LinkedList(); - - CachingStroapPayload() { - } - - CachingStroapPayload(XMLEventReader eventReader) throws XMLStreamException { - Assert.notNull(eventReader, "'eventReader' must not be null"); - XMLEventWriter eventWriter = getEventWriter(); - eventWriter.add(eventReader); - } - - @Override - public QName getName() { - if (!events.isEmpty()) { - XMLEvent event = events.get(0); - if (event.isStartElement()) { - return event.asStartElement().getName(); - } - } - return null; - } - - @Override - public XMLEventReader getEventReader() { - return new ListBasedXMLEventReader(events); - } - - public XMLEventWriter getEventWriter() { - events.clear(); - return new CachingXMLEventWriter(events); - } - -} \ No newline at end of file diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingXMLEventWriter.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingXMLEventWriter.java deleted file mode 100644 index 75e3191f..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/CachingXMLEventWriter.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.List; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.XMLEvent; - -import org.springframework.util.Assert; -import org.springframework.xml.stream.AbstractXMLEventWriter; - -/** - * @author Arjen Poutsma - */ -class CachingXMLEventWriter extends AbstractXMLEventWriter { - - private int elementDepth = 0; - - boolean startElementSeen = false; - - private final List events; - - CachingXMLEventWriter(List events) { - Assert.notNull(events, "'events' must not be null"); - this.events = events; - } - - public void add(XMLEvent event) throws XMLStreamException { - if (event.isStartElement()) { - startElementSeen = true; - elementDepth++; - } - else if (event.isEndElement()) { - elementDepth--; - } - else if (event.isStartDocument() || event.isEndDocument()) { - return; - } - if (elementDepth >= 0 && startElementSeen) { - events.add(event); - } - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/FaultStroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/FaultStroapPayload.java deleted file mode 100644 index 1121cbf6..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/FaultStroapPayload.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; - -import org.springframework.util.Assert; -import org.springframework.ws.soap.SoapFault; - -/** - * @author Arjen Poutsma - */ -class FaultStroapPayload extends StroapPayload { - - private final StroapFault fault; - - FaultStroapPayload(StroapFault fault) { - Assert.notNull(fault, "'fault' must not be null"); - this.fault = fault; - } - - SoapFault getFault() { - return fault; - } - - @Override - public QName getName() { - return fault.getName(); - } - - @Override - public XMLEventReader getEventReader() { - return fault.getEventReader(false); - } - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/NonCachingStroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/NonCachingStroapPayload.java deleted file mode 100644 index 6bba3d2b..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/NonCachingStroapPayload.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.NoSuchElementException; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.XMLEvent; - -import org.springframework.util.Assert; -import org.springframework.xml.stream.AbstractXMLEventReader; - -/** - * @author Arjen Poutsma - */ -class NonCachingStroapPayload extends StroapPayload { - - private final XMLEventReader eventReader; - - private int elementDepth = 0; - - NonCachingStroapPayload(XMLEventReader eventReader) throws XMLStreamException { - Assert.notNull(eventReader, "'eventReader' must not be null"); - this.eventReader = eventReader; - } - - @Override - public QName getName() { - try { - XMLEvent event = eventReader.peek(); - if (event != null && event.isStartElement()) { - return event.asStartElement().getName(); - } - - } - catch (XMLStreamException ex) { - // ignore - } - return null; - } - - @Override - public XMLEventReader getEventReader() { - return new NonCachingXMLEventReader(); - } - - private class NonCachingXMLEventReader extends AbstractXMLEventReader { - - public boolean hasNext() { - return elementDepth >= 0 && eventReader.hasNext(); - } - - public XMLEvent nextEvent() throws XMLStreamException { - if (elementDepth < 0) { - throw new NoSuchElementException(); - } - XMLEvent event = eventReader.nextEvent(); - if (event.isStartElement()) { - elementDepth++; - } - else if (event.isEndElement()) { - elementDepth--; - } - return event; - } - - public XMLEvent peek() throws XMLStreamException { - if (elementDepth < 0) { - return null; - } - else { - return eventReader.peek(); - } - } - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StreamingStroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StreamingStroapPayload.java deleted file mode 100644 index 2e86c79f..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StreamingStroapPayload.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLEventWriter; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; - -import org.springframework.util.Assert; -import org.springframework.util.xml.StaxUtils; -import org.springframework.ws.stream.StreamingPayload; - -/** - * @author Arjen Poutsma - */ -class StreamingStroapPayload extends StroapPayload { - - private final StreamingPayload payload; - - private final StroapMessageFactory messageFactory; - - StreamingStroapPayload(StreamingPayload payload, StroapMessageFactory messageFactory) { - Assert.notNull(payload, "'payload' must not be null"); - Assert.notNull(messageFactory, "'messageFactory' must not be null"); - - this.payload = payload; - this.messageFactory = messageFactory; - } - - @Override - public QName getName() { - return payload.getName(); - } - - @Override - public XMLEventReader getEventReader() { - try { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - XMLStreamWriter streamWriter = messageFactory.getOutputFactory().createXMLStreamWriter(bos); - payload.writeTo(streamWriter); - streamWriter.flush(); - ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); - return messageFactory.getInputFactory().createXMLEventReader(bis); - } - catch (XMLStreamException ex) { - throw new StroapBodyException(ex); - } - } - - @Override - public void writeTo(XMLEventWriter eventWriter) throws XMLStreamException { - XMLStreamWriter streamWriter = StaxUtils.createEventStreamWriter(eventWriter, messageFactory.getEventFactory()); - payload.writeTo(streamWriter); - } - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Body.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Body.java deleted file mode 100644 index c5016ec3..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Body.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.Locale; -import javax.xml.namespace.QName; -import javax.xml.stream.events.StartElement; - -import org.springframework.util.Assert; -import org.springframework.ws.soap.SoapFaultException; -import org.springframework.ws.soap.soap11.Soap11Body; -import org.springframework.ws.soap.soap11.Soap11Fault; - -/** - * @author Arjen Poutsma - */ -class Stroap11Body extends StroapBody implements Soap11Body { - - private static final String ENVELOPE_NAMESPACE_URI = "http://schemas.xmlsoap.org/soap/envelope/"; - - private QName CLIENT_FAULT_NAME = new QName(ENVELOPE_NAMESPACE_URI, "Client", DEFAULT_PREFIX); - - private QName SERVER_FAULT_NAME = new QName(ENVELOPE_NAMESPACE_URI, "Server", DEFAULT_PREFIX); - - private QName MUST_UNDERSTAND_FAULT_NAME = new QName(ENVELOPE_NAMESPACE_URI, "MustUnderstand", DEFAULT_PREFIX); - - private QName VERSION_MISMATCH_FAULT_NAME = new QName(ENVELOPE_NAMESPACE_URI, "VersionMismatch", DEFAULT_PREFIX); - - Stroap11Body(StroapMessageFactory messageFactory) { - super(messageFactory); - } - - Stroap11Body(StartElement startElement, StroapPayload payload, StroapMessageFactory messageFactory) { - super(startElement, payload, messageFactory); - } - - @Override - public Soap11Fault getFault() { - return (Soap11Fault) super.getFault(); - } - - public Soap11Fault addMustUnderstandFault(String faultStringOrReason, Locale locale) throws SoapFaultException { - Stroap11Fault fault = - new Stroap11Fault(MUST_UNDERSTAND_FAULT_NAME, "SOAP Must Understand Error", null, getMessageFactory()); - setFault(fault); - return fault; - } - - public Soap11Fault addClientOrSenderFault(String faultStringOrReason, Locale locale) throws SoapFaultException { - Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty"); - Stroap11Fault fault = new Stroap11Fault(CLIENT_FAULT_NAME, faultStringOrReason, null, getMessageFactory()); - setFault(fault); - return fault; - } - - public Soap11Fault addServerOrReceiverFault(String faultStringOrReason, Locale locale) throws SoapFaultException { - Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty"); - Stroap11Fault fault = new Stroap11Fault(SERVER_FAULT_NAME, faultStringOrReason, null, getMessageFactory()); - setFault(fault); - return fault; - } - - public Soap11Fault addVersionMismatchFault(String faultStringOrReason, Locale locale) throws SoapFaultException { - Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty"); - Stroap11Fault fault = - new Stroap11Fault(VERSION_MISMATCH_FAULT_NAME, faultStringOrReason, null, getMessageFactory()); - setFault(fault); - return fault; - } - - public Soap11Fault addFault(QName faultCode, String faultString, Locale faultStringLocale) - throws SoapFaultException { - Assert.notNull(faultCode, "'faultCode' must not be null"); - Assert.hasLength(faultCode.getLocalPart(), "faultCode's localPart cannot be empty"); - Assert.hasLength(faultCode.getNamespaceURI(), "faultCode's namespaceUri cannot be empty"); - Assert.hasLength(faultString, "'faultString' must not be empty"); - - Stroap11Fault fault = new Stroap11Fault(faultCode, faultString, faultStringLocale, getMessageFactory()); - setFault(fault); - return fault; - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Fault.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Fault.java deleted file mode 100644 index 2230b5d3..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Fault.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.Locale; -import javax.xml.XMLConstants; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.events.Characters; - -import org.springframework.util.Assert; -import org.springframework.util.StringUtils; -import org.springframework.ws.soap.SoapFaultDetail; -import org.springframework.ws.soap.soap11.Soap11Fault; -import org.springframework.xml.stream.CompositeXMLEventReader; -import org.springframework.xml.stream.ListBasedXMLEventReader; - -/** - * @author Arjen Poutsma - */ -class Stroap11Fault extends StroapFault implements Soap11Fault { - - private static final QName XML_LANG_NAME = new QName(XMLConstants.XML_NS_URI, "lang", XMLConstants.XML_NS_PREFIX); - - private final FaultElement faultCode; - - private final FaultElement faultString; - - private FaultElement faultActor; - - Stroap11Fault(QName faultCode, String faultString, Locale faultStringLocale, StroapMessageFactory messageFactory) { - super(messageFactory); - - this.faultCode = FaultElement.createFaultCode(faultCode, messageFactory); - this.faultString = FaultElement.createFaultString(faultString, faultStringLocale, messageFactory); - addNamespaceDeclaration(faultCode.getPrefix(), faultCode.getNamespaceURI()); - } - - public QName getFaultCode() { - return parseFaultCodeString(faultCode.getCharacterData()); - } - - private QName parseFaultCodeString(String faultCodeString) { - if (faultCodeString == null) { - return null; - } - int idx = faultCodeString.indexOf(':'); - if (idx == -1) { - return new QName(faultCodeString); - } - else { - String prefix = faultCodeString.substring(0, idx); - String localPart = faultCodeString.substring(idx + 1, faultCodeString.length()); - String namespaceUri = getStartElement().getNamespaceURI(prefix); - return new QName(namespaceUri, localPart, prefix); - } - } - - public String getFaultStringOrReason() { - return faultString.getCharacterData(); - } - - public Locale getFaultStringLocale() { - String xmlLangString = faultString.getAttributeValue(XML_LANG_NAME); - if (xmlLangString != null) { - String localeString = xmlLangString.replace('-', '_'); - return StringUtils.parseLocaleString(localeString); - } - return null; - } - - public String getFaultActorOrRole() { - return faultActor != null ? faultActor.getCharacterData() : null; - } - - public void setFaultActorOrRole(String faultActor) { - this.faultActor = FaultElement.createFaultActor(faultActor, getMessageFactory()); - } - - public SoapFaultDetail getFaultDetail() { - return null; //To change body of implemented methods use File | Settings | File Templates. - } - - public SoapFaultDetail addFaultDetail() { - return null; //To change body of implemented methods use File | Settings | File Templates. - } - - @Override - protected XMLEventReader getChildEventReader() { - XMLEventReader[] eventReaders = (faultActor == null) ? new XMLEventReader[2] : new XMLEventReader[3]; - eventReaders[0] = faultCode.getEventReader(false); - eventReaders[1] = faultString.getEventReader(false); - if (faultActor != null) { - eventReaders[2] = faultActor.getEventReader(false); - } - return new CompositeXMLEventReader(eventReaders); - } - - private static class FaultElement extends StroapElement { - - private final Characters characters; - - private FaultElement(String localName, String value, StroapMessageFactory messageFactory) { - super(messageFactory.getEventFactory().createStartElement(new QName(localName), null, null), - messageFactory); - this.characters = getEventFactory().createCharacters(value); - } - - public static FaultElement createFaultCode(QName faultCode, StroapMessageFactory messageFactory) { - Assert.notNull(faultCode, "'faultCode' must not be null"); - Assert.hasLength(faultCode.getLocalPart(), "faultCode's localPart cannot be empty"); - Assert.hasLength(faultCode.getNamespaceURI(), "faultCode's namespaceUri cannot be empty"); - String value = faultCode.getPrefix() + ":" + faultCode.getLocalPart(); - return new FaultElement("faultcode", value, messageFactory); - } - - public static FaultElement createFaultString(String faultString, - Locale faultStringLocale, - StroapMessageFactory messageFactory) { - Assert.hasLength(faultString, "'faultString' must not be empty"); - FaultElement element = new FaultElement("faultstring", faultString, messageFactory); - if (faultStringLocale != null) { - String xmlLangString = faultStringLocale.toString().replace('_', '-'); - element.addAttribute(XML_LANG_NAME, xmlLangString); - } - return element; - } - - public static FaultElement createFaultActor(String actor, StroapMessageFactory messageFactory) { - Assert.hasLength(actor, "'actor' must not be empty"); - return new FaultElement("faultactor", actor, messageFactory); - } - - public String getCharacterData() { - return characters.getData(); - } - - @Override - protected XMLEventReader getChildEventReader() { - return new ListBasedXMLEventReader(characters); - } - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Header.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Header.java deleted file mode 100644 index 63fc88b1..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/Stroap11Header.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import javax.xml.soap.SOAPConstants; -import javax.xml.stream.events.StartElement; - -import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; -import org.springframework.ws.soap.SoapHeaderElement; -import org.springframework.ws.soap.soap11.Soap11Header; - -/** - * @author Arjen Poutsma - */ -class Stroap11Header extends StroapHeader implements Soap11Header { - - Stroap11Header(StroapMessageFactory messageFactory) { - super(messageFactory); - } - - Stroap11Header(StartElement startElement, StroapMessageFactory messageFactory) { - super(startElement, messageFactory); - } - - public Iterator examineHeaderElementsToProcess(String[] actors) { - List result = new LinkedList(); - Iterator iterator = examineAllHeaderElements(); - while (iterator.hasNext()) { - SoapHeaderElement headerElement = iterator.next(); - String actor = headerElement.getActorOrRole(); - if (shouldProcess(actor, actors)) { - result.add(headerElement); - } - } - return result.iterator(); - } - - private boolean shouldProcess(String headerActor, String[] actors) { - if (!StringUtils.hasLength(headerActor)) { - return true; - } - if (SOAPConstants.URI_SOAP_ACTOR_NEXT.equals(headerActor)) { - return true; - } - if (!ObjectUtils.isEmpty(actors)) { - for (String actor : actors) { - if (actor.equals(headerActor)) { - return true; - } - } - } - return false; - } - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBody.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBody.java deleted file mode 100644 index 3cde853b..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBody.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLEventWriter; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.StartElement; -import javax.xml.stream.events.XMLEvent; -import javax.xml.transform.Result; -import javax.xml.transform.Source; - -import org.springframework.util.xml.StaxUtils; -import org.springframework.ws.soap.SoapBody; -import org.springframework.ws.soap.SoapFault; -import org.springframework.ws.soap.SoapVersion; -import org.springframework.ws.stream.StreamingPayload; - -/** - * @author Arjen Poutsma - */ -abstract class StroapBody extends StroapElement implements SoapBody { - - private StroapPayload payload; - - protected StroapBody(StroapMessageFactory messageFactory) { - super(messageFactory.getSoapVersion().getBodyName(), messageFactory); - this.payload = new CachingStroapPayload(); - } - - protected StroapBody(StartElement startElement, StroapPayload payload, StroapMessageFactory messageFactory) { - super(startElement, messageFactory); - this.payload = payload; - } - - static StroapBody build(XMLEventReader eventReader, StroapMessageFactory messageFactory) throws XMLStreamException { - XMLEvent event = eventReader.nextTag(); - if (!event.isStartElement()) { - throw new StroapMessageCreationException("Unexpected event: " + event + ", expected StartElement"); - } - StartElement startElement = event.asStartElement(); - SoapVersion soapVersion = messageFactory.getSoapVersion(); - if (!soapVersion.getBodyName().equals(startElement.getName())) { - throw new StroapMessageCreationException( - "Unexpected name: " + startElement.getName() + ", expected " + soapVersion.getBodyName()); - } - StroapPayload payload; - if (messageFactory.isPayloadCaching()) { - payload = new CachingStroapPayload(eventReader); - } - else { - payload = new NonCachingStroapPayload(eventReader); - } - - if (SoapVersion.SOAP_11.equals(soapVersion)) { - return new Stroap11Body(startElement, payload, messageFactory); - } - else { - return null; - } - } - - public Source getPayloadSource() { - XMLEventReader eventReader = payload.getEventReader(); - return StaxUtils.createCustomStaxSource(eventReader); - } - - public Result getPayloadResult() { - CachingStroapPayload cachingPayload; - if (payload instanceof CachingStroapPayload) { - cachingPayload = (CachingStroapPayload) payload; - } - else { - cachingPayload = new CachingStroapPayload(); - this.payload = cachingPayload; - } - XMLEventWriter eventWriter = cachingPayload.getEventWriter(); - return StaxUtils.createCustomStaxResult(eventWriter); - } - - public boolean hasFault() { - return payload instanceof FaultStroapPayload; - } - - public SoapFault getFault() { - return payload instanceof FaultStroapPayload ? ((FaultStroapPayload) payload).getFault() : null; - } - - protected void setFault(StroapFault fault) { - this.payload = new FaultStroapPayload(fault); - } - - @Override - protected final XMLEventReader getChildEventReader() { - return payload.getEventReader(); - } - - @Override - public void writeTo(XMLEventWriter eventWriter) throws XMLStreamException { - eventWriter.add(getStartElement()); - payload.writeTo(eventWriter); - eventWriter.add(getEndElement()); - } - - public void setStreamingPayload(StreamingPayload payload) { - this.payload = new StreamingStroapPayload(payload, getMessageFactory()); - } - - public QName getPayloadName() { - return payload.getName(); - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBodyException.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBodyException.java deleted file mode 100644 index d017262d..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapBodyException.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapBodyException; - -/** - * @author Arjen Poutsma - */ -public class StroapBodyException extends SoapBodyException { - - public StroapBodyException(String msg) { - super(msg); - } - - public StroapBodyException(String msg, Throwable ex) { - super(msg, ex); - } - - public StroapBodyException(Throwable ex) { - super(ex); - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapElement.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapElement.java deleted file mode 100644 index 19a00a41..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapElement.java +++ /dev/null @@ -1,260 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.NoSuchElementException; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventFactory; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLEventWriter; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.Attribute; -import javax.xml.stream.events.EndElement; -import javax.xml.stream.events.Namespace; -import javax.xml.stream.events.StartElement; -import javax.xml.stream.events.XMLEvent; -import javax.xml.transform.Source; - -import org.springframework.util.Assert; -import org.springframework.util.StringUtils; -import org.springframework.util.xml.StaxUtils; -import org.springframework.ws.soap.SoapElement; -import org.springframework.ws.soap.SoapVersion; -import org.springframework.xml.stream.AbstractXMLEventReader; - -/** - * @author Arjen Poutsma - */ -abstract class StroapElement implements SoapElement { - - protected static final String DEFAULT_PREFIX = "SOAP-ENV"; - - private final StroapMessageFactory messageFactory; - - private StartElement startElement; - - private EndElement endElement; - - protected StroapElement(QName name, StroapMessageFactory messageFactory) { - this(createStartElement(name, messageFactory), messageFactory); - } - - private static StartElement createStartElement(QName name, StroapMessageFactory messageFactory) { - if (!StringUtils.hasLength(name.getPrefix())) { - name = new QName(name.getNamespaceURI(), name.getLocalPart(), DEFAULT_PREFIX); - } - return messageFactory.getEventFactory().createStartElement(name, null, null); - } - - protected StroapElement(StartElement startElement, StroapMessageFactory messageFactory) { - Assert.notNull(startElement, "'startElement' must not be null"); - Assert.notNull(messageFactory, "'messageFactory' must not be null"); - this.messageFactory = messageFactory; - this.startElement = startElement; - this.endElement = getEventFactory().createEndElement(startElement.getName(), startElement.getNamespaces()); - } - - public final Source getSource() { - return StaxUtils.createCustomStaxSource(getEventReader(true)); - } - - protected XMLEventReader getEventReader(boolean documentEvents) { - return new StroapElementEventReader(documentEvents); - } - - public void writeTo(XMLEventWriter eventWriter) throws XMLStreamException { - eventWriter.add(getEventReader(false)); - } - - protected StroapMessageFactory getMessageFactory() { - return messageFactory; - } - - protected final XMLEventFactory getEventFactory() { - return getMessageFactory().getEventFactory(); - } - - protected SoapVersion getSoapVersion() { - return getMessageFactory().getSoapVersion(); - } - - public final QName getName() { - return getStartElement().getName(); - } - - protected abstract XMLEventReader getChildEventReader(); - - public final Iterator getAllAttributes() { - List result = new LinkedList(); - for (Iterator iterator = getStartElement().getAttributes(); iterator.hasNext();) { - Attribute attribute = (Attribute) iterator.next(); - result.add(attribute.getName()); - } - return result.iterator(); - } - - public final String getAttributeValue(QName name) { - Attribute attribute = getStartElement().getAttributeByName(name); - return attribute != null ? attribute.getValue() : null; - } - - public final void removeAttribute(QName name) { - List newAttributes = new LinkedList(); - for (Iterator iterator = getStartElement().getAttributes(); iterator.hasNext();) { - Attribute attribute = (Attribute) iterator.next(); - if (!name.equals(attribute.getName())) { - newAttributes.add(attribute); - } - } - StartElement oldStartElement = getStartElement(); - this.startElement = getEventFactory().createStartElement(oldStartElement.getName(), newAttributes.iterator(), - oldStartElement.getNamespaces()); - } - - public final void addAttribute(QName name, String value) { - List newAttributes = new LinkedList(); - for (Iterator iterator = getStartElement().getAttributes(); iterator.hasNext();) { - Attribute attribute = (Attribute) iterator.next(); - newAttributes.add(attribute); - } - Attribute newAttribute = getEventFactory().createAttribute(name, value); - newAttributes.add(newAttribute); - StartElement oldStartElement = getStartElement(); - this.startElement = getEventFactory().createStartElement(oldStartElement.getName(), newAttributes.iterator(), - oldStartElement.getNamespaces()); - } - - public final void addNamespaceDeclaration(String prefix, String namespaceUri) { - List newNamespaces = new LinkedList(); - for (Iterator iterator = getStartElement().getNamespaces(); iterator.hasNext();) { - Namespace namespace = (Namespace) iterator.next(); - newNamespaces.add(namespace); - } - Namespace newNamespace; - if (StringUtils.hasLength(prefix)) { - newNamespace = getEventFactory().createNamespace(prefix, namespaceUri); - } - else { - newNamespace = getEventFactory().createNamespace(namespaceUri); - } - newNamespaces.add(newNamespace); - StartElement oldStartElement = getStartElement(); - this.startElement = getEventFactory() - .createStartElement(oldStartElement.getName(), oldStartElement.getAttributes(), - newNamespaces.iterator()); - } - - protected final StartElement getStartElement() { - return startElement; - } - - protected final EndElement getEndElement() { - return endElement; - } - - private enum EVENT_READER_STATE { - - START_DOCUMENT, - START_ELEMENT, - CHILDREN, - END_ELEMENT, - END_DOCUMENT, - DONE - } - - private class StroapElementEventReader extends AbstractXMLEventReader { - - private EVENT_READER_STATE state; - - private boolean documentEvents; - - private final XMLEventReader childEventReader; - - private StroapElementEventReader(boolean documentEvents) { - this.documentEvents = documentEvents; - state = documentEvents ? EVENT_READER_STATE.START_DOCUMENT : EVENT_READER_STATE.START_ELEMENT; - this.childEventReader = getChildEventReader(); - } - - public boolean hasNext() { - if (documentEvents && state == EVENT_READER_STATE.DONE) { - return false; - } - else if (!documentEvents && state == EVENT_READER_STATE.END_DOCUMENT) { - return false; - } - else { - return true; - } - } - - public XMLEvent nextEvent() throws XMLStreamException { - switch (state) { - case START_DOCUMENT: - state = EVENT_READER_STATE.START_ELEMENT; - return getEventFactory().createStartDocument(); - case START_ELEMENT: - state = EVENT_READER_STATE.CHILDREN; - return getStartElement(); - case CHILDREN: - if (!childEventReader.hasNext()) { - state = EVENT_READER_STATE.END_ELEMENT; - return nextEvent(); - } - return childEventReader.nextEvent(); - case END_ELEMENT: - state = EVENT_READER_STATE.END_DOCUMENT; - return getEndElement(); - case END_DOCUMENT: - state = EVENT_READER_STATE.DONE; - return getEventFactory().createEndDocument(); - case DONE: - throw new NoSuchElementException(); - default: - throw new IllegalStateException(); - } - } - - public XMLEvent peek() throws XMLStreamException { - switch (state) { - case START_DOCUMENT: - return getEventFactory().createStartDocument(); - case START_ELEMENT: - return getStartElement(); - case CHILDREN: - XMLEvent event = childEventReader.peek(); - if (event == null) { - state = EVENT_READER_STATE.END_ELEMENT; - event = getEndElement(); - } - return event; - case END_ELEMENT: - return getEndElement(); - case END_DOCUMENT: - return getEventFactory().createEndDocument(); - case DONE: - return null; - default: - throw new IllegalStateException(); - } - - } - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapEnvelope.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapEnvelope.java deleted file mode 100644 index 66d0471a..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapEnvelope.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.StartElement; -import javax.xml.stream.events.XMLEvent; - -import org.springframework.ws.soap.SoapBody; -import org.springframework.ws.soap.SoapBodyException; -import org.springframework.ws.soap.SoapEnvelope; -import org.springframework.ws.soap.SoapHeader; -import org.springframework.ws.soap.SoapHeaderException; -import org.springframework.ws.soap.SoapVersion; -import org.springframework.xml.stream.CompositeXMLEventReader; - -/** - * @author Arjen Poutsma - */ -class StroapEnvelope extends StroapElement implements SoapEnvelope { - - private static final String LOCAL_NAME = "Envelope"; - - private StroapHeader header; - - private StroapBody body; - - StroapEnvelope(StroapMessageFactory messageFactory) { - super(messageFactory.getSoapVersion().getEnvelopeName(), messageFactory); - this.header = null; - this.body = new Stroap11Body(messageFactory); - } - - private StroapEnvelope(StartElement startElement, - StroapHeader header, - StroapBody body, - StroapMessageFactory messageFactory) { - super(startElement, messageFactory); - this.header = header; - this.body = body; - } - - static StroapEnvelope build(XMLEventReader eventReader, StroapMessageFactory messageFactory) - throws XMLStreamException { - XMLEvent event = eventReader.nextTag(); - if (!event.isStartElement()) { - throw new StroapMessageCreationException("Unexpected event: " + event + ", expected StartElement"); - } - StartElement startElement = event.asStartElement(); - SoapVersion soapVersion = messageFactory.getSoapVersion(); - if (!soapVersion.getEnvelopeName().equals(startElement.getName())) { - throw new StroapMessageCreationException( - "Unexpected name: " + startElement.getName() + ", expected " + soapVersion.getEnvelopeName()); - } - StroapHeader header = null; - StroapBody body = null; - XMLEvent peekedEvent = eventReader.peek(); - while (peekedEvent != null) { - if (peekedEvent.isStartElement()) { - QName headerOrBodyName = peekedEvent.asStartElement().getName(); - if (soapVersion.getHeaderName().equals(headerOrBodyName)) { - header = StroapHeader.build(eventReader, messageFactory); - } - else if (soapVersion.getBodyName().equals(headerOrBodyName)) { - body = StroapBody.build(eventReader, messageFactory); - break; - } - else { - throw new StroapMessageCreationException( - "Unexpected start element name [" + headerOrBodyName + "]"); - } - } - else { - eventReader.nextEvent(); - } - peekedEvent = eventReader.peek(); - } - if (body == null) { - throw new StroapMessageCreationException("No SOAP body found"); - } - - return new StroapEnvelope(startElement, header, body, messageFactory); - } - - public SoapHeader getHeader() throws SoapHeaderException { - if (header == null) { - header = new Stroap11Header(getMessageFactory()); - } - return header; - } - - public SoapBody getBody() throws SoapBodyException { - if (body == null) { - body = new Stroap11Body(getMessageFactory()); - } - return body; - } - - @Override - protected XMLEventReader getChildEventReader() { - if (header != null) { - return new CompositeXMLEventReader(header.getEventReader(false), body.getEventReader(false)); - } - else { - return body.getEventReader(false); - } - } - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapFault.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapFault.java deleted file mode 100644 index a74737ab..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapFault.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapFault; - -/** - * @author Arjen Poutsma - */ -abstract class StroapFault extends StroapElement implements SoapFault { - - protected StroapFault(StroapMessageFactory messageFactory) { - super(messageFactory.getSoapVersion().getFaultName(), messageFactory); - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeader.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeader.java deleted file mode 100644 index 04daf8f3..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeader.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2005-2011 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.StartElement; -import javax.xml.stream.events.XMLEvent; -import javax.xml.transform.Result; - -import org.springframework.util.Assert; -import org.springframework.util.xml.StaxUtils; -import org.springframework.ws.soap.SoapHeader; -import org.springframework.ws.soap.SoapHeaderElement; -import org.springframework.ws.soap.SoapHeaderException; -import org.springframework.ws.soap.SoapVersion; -import org.springframework.xml.stream.AbstractXMLEventWriter; -import org.springframework.xml.stream.CompositeXMLEventReader; - -/** - * @author Arjen Poutsma - */ -abstract class StroapHeader extends StroapElement implements SoapHeader { - - private List headerElements = new LinkedList(); - - protected StroapHeader(StroapMessageFactory messageFactory) { - super(messageFactory.getSoapVersion().getHeaderName(), messageFactory); - } - - protected StroapHeader(StartElement startElement, StroapMessageFactory messageFactory) { - super(startElement, messageFactory); - } - - static StroapHeader build(XMLEventReader eventReader, StroapMessageFactory messageFactory) - throws XMLStreamException { - XMLEvent event = eventReader.nextTag(); - if (!event.isStartElement()) { - throw new StroapMessageCreationException("Unexpected event: " + event + ", expected StartElement"); - } - StartElement startElement = event.asStartElement(); - SoapVersion soapVersion = messageFactory.getSoapVersion(); - if (!soapVersion.getHeaderName().equals(startElement.getName())) { - throw new StroapMessageCreationException( - "Unexpected name: " + startElement.getName() + ", expected " + soapVersion.getHeaderName()); - } - - if (SoapVersion.SOAP_11.equals(soapVersion)) { - return new Stroap11Header(startElement, messageFactory); - } - else { - return null; - } - - } - - public SoapHeaderElement addHeaderElement(QName name) throws SoapHeaderException { - StroapHeaderElement headerElement = new StroapHeaderElement(name, getMessageFactory()); - headerElements.add(headerElement); - return headerElement; - } - - public Iterator examineAllHeaderElements() throws SoapHeaderException { - List headerElements = Collections.unmodifiableList(this.headerElements); - return headerElements.iterator(); - } - - public Iterator examineHeaderElements(QName name) throws SoapHeaderException { - List result = new LinkedList(); - for (StroapHeaderElement headerElement : this.headerElements) { - if (headerElement.getName().equals(name)) { - result.add(headerElement); - } - } - return result.iterator(); - } - - public Iterator examineMustUnderstandHeaderElements(String actorOrRole) - throws SoapHeaderException { - List result = new LinkedList(); - for (StroapHeaderElement headerElement : this.headerElements) { - if (headerElement.getMustUnderstand() && headerElement.getActorOrRole().equals(actorOrRole)) { - result.add(headerElement); - } - } - return result.iterator(); - } - - public void removeHeaderElement(QName name) throws SoapHeaderException { - Assert.notNull(name, "'name' must not be null"); - - for (Iterator iterator = headerElements.iterator(); iterator.hasNext();) { - StroapHeaderElement headerElement = iterator.next(); - if (name.equals(headerElement.getName())) { - iterator.remove(); - break; - } - } - } - - @Override - protected XMLEventReader getChildEventReader() { - XMLEventReader[] eventReaders = new XMLEventReader[headerElements.size()]; - for (int i = 0; i < headerElements.size(); i++) { - StroapHeaderElement headerElement = headerElements.get(i); - eventReaders[i] = headerElement.getEventReader(false); - } - return new CompositeXMLEventReader(eventReaders); - } - - public Result getResult() { - headerElements.clear(); - return StaxUtils.createCustomStaxResult(new StroapHeaderXMLEventWriter()); - } - - class StroapHeaderXMLEventWriter extends AbstractXMLEventWriter { - - private int elementDepth = 0; - - boolean startElementSeen = false; - - private final List events = new LinkedList(); - - public void add(XMLEvent event) throws XMLStreamException { - if (event.isStartElement()) { - startElementSeen = true; - elementDepth++; - } - else if (event.isEndElement()) { - elementDepth--; - } - else if (event.isStartDocument() || event.isEndDocument()) { - return; - } - if (elementDepth >= 0 && startElementSeen) { - events.add(event); - } - if (elementDepth == 0 && (event.isEndElement() || event.isEndDocument())) { - StroapHeaderElement headerElement = StroapHeaderElement.build(events, getMessageFactory()); - headerElements.add(headerElement); - events.clear(); - } - } - } - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeaderElement.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeaderElement.java deleted file mode 100644 index cc6b86ee..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeaderElement.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.util.LinkedList; -import java.util.List; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.StartElement; -import javax.xml.stream.events.XMLEvent; -import javax.xml.transform.Result; - -import org.springframework.util.Assert; -import org.springframework.util.xml.StaxUtils; -import org.springframework.ws.soap.SoapHeaderElement; -import org.springframework.ws.soap.SoapHeaderException; -import org.springframework.xml.stream.ListBasedXMLEventReader; - -/** - * @author Arjen Poutsma - */ -class StroapHeaderElement extends StroapElement implements SoapHeaderElement { - - private final List events = new LinkedList(); - - StroapHeaderElement(QName name, StroapMessageFactory messageFactory) { - super(name, messageFactory); - } - - private StroapHeaderElement(StartElement startElement, List events, StroapMessageFactory messageFactory) { - super(startElement, messageFactory); - Assert.notNull(events, "'events' must not be null"); - this.events.addAll(events); - } - - static StroapHeaderElement build(List events, StroapMessageFactory messageFactory) - throws XMLStreamException { - Assert.notNull(events, "'events' must not be null"); - Assert.isTrue(events.size() >= 2, "not enough events"); - XMLEvent event = events.get(0); - if (!event.isStartElement()) { - throw new StroapHeaderException("Unexpected event: " + event + ", expected StartElement"); - } - StartElement startElement = event.asStartElement(); - event = events.get(events.size() - 1); - if (!event.isEndElement()) { - throw new StroapHeaderException("Unexpected event: " + event + ", expected EndElement"); - } - List childEvents = events.subList(1, events.size() - 1); - return new StroapHeaderElement(startElement, childEvents, messageFactory); - } - - public final String getActorOrRole() throws SoapHeaderException { - return getAttributeValue(getSoapVersion().getActorOrRoleName()); - } - - public final void setActorOrRole(String actorOrRole) throws SoapHeaderException { - addAttribute(getSoapVersion().getActorOrRoleName(), actorOrRole); - } - - public final boolean getMustUnderstand() throws SoapHeaderException { - String mustUnderstandAttribute = getAttributeValue(getSoapVersion().getMustUnderstandAttributeName()); - return "1".equals(mustUnderstandAttribute); - } - - public void setMustUnderstand(boolean mustUnderstand) throws SoapHeaderException { - String mustUnderstandAttribute = mustUnderstand ? "1" : "0"; - addAttribute(getSoapVersion().getMustUnderstandAttributeName(), mustUnderstandAttribute); - } - - public Result getResult() throws SoapHeaderException { - events.clear(); - return StaxUtils.createCustomStaxResult(new CachingXMLEventWriter(events)); - } - - public String getText() { - StringBuilder builder = new StringBuilder(); - for (XMLEvent event : events) { - if (event.isCharacters()) { - builder.append(event.asCharacters().getData()); - } - } - return builder.toString(); - } - - public void setText(String content) { - events.clear(); - events.add(getEventFactory().createCharacters(content)); - } - - @Override - protected XMLEventReader getChildEventReader() { - return new ListBasedXMLEventReader(events); - } - - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeaderException.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeaderException.java deleted file mode 100644 index 362a681e..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapHeaderException.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapHeaderException; - -/** - * @author Arjen Poutsma - * @since 1.0.0 - */ -public class StroapHeaderException extends SoapHeaderException { - - public StroapHeaderException(String msg) { - super(msg); - } - - public StroapHeaderException(String msg, Throwable ex) { - super(msg, ex); - } - - public StroapHeaderException(Throwable ex) { - super(ex); - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessage.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessage.java deleted file mode 100644 index ccd13ade..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessage.java +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; -import javax.activation.DataHandler; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLEventWriter; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.EndDocument; -import javax.xml.stream.events.StartDocument; -import javax.xml.stream.events.XMLEvent; -import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.dom.DOMSource; - -import org.springframework.util.Assert; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.util.StringUtils; -import org.springframework.ws.mime.Attachment; -import org.springframework.ws.mime.AttachmentException; -import org.springframework.ws.soap.AbstractSoapMessage; -import org.springframework.ws.soap.SoapEnvelope; -import org.springframework.ws.soap.SoapEnvelopeException; -import org.springframework.ws.soap.SoapVersion; -import org.springframework.ws.soap.support.SoapUtils; -import org.springframework.ws.stream.StreamingPayload; -import org.springframework.ws.stream.StreamingWebServiceMessage; -import org.springframework.ws.transport.TransportConstants; -import org.springframework.ws.transport.TransportInputStream; -import org.springframework.ws.transport.TransportOutputStream; -import org.springframework.xml.stream.AbstractXMLEventWriter; - -import org.w3c.dom.DOMImplementation; -import org.w3c.dom.Document; -import org.w3c.dom.ls.DOMImplementationLS; -import org.w3c.dom.ls.LSOutput; -import org.w3c.dom.ls.LSSerializer; -import org.xml.sax.SAXException; - -/** - * @author Arjen Poutsma - */ -public class StroapMessage extends AbstractSoapMessage implements StreamingWebServiceMessage { - - private final MultiValueMap mimeHeaders = new LinkedMultiValueMap(); - - private StroapEnvelope envelope; - - private final StroapMessageFactory messageFactory; - - private final StartDocument startDocument; - - private final EndDocument endDocument; - - public StroapMessage(StroapMessageFactory messageFactory) { - this(null, null, messageFactory); - } - - public StroapMessage(MultiValueMap mimeHeaders, - StroapEnvelope envelope, - StroapMessageFactory messageFactory) { - Assert.notNull(messageFactory, "'messageFactory' must not be null"); - this.messageFactory = messageFactory; - if (mimeHeaders != null) { - this.mimeHeaders.putAll(mimeHeaders); - } - this.envelope = envelope != null ? envelope : new StroapEnvelope(messageFactory); - if (!this.mimeHeaders.containsKey(TransportConstants.HEADER_CONTENT_TYPE)) { - this.mimeHeaders - .set(TransportConstants.HEADER_CONTENT_TYPE, messageFactory.getSoapVersion().getContentType()); - } - if (!this.mimeHeaders.containsKey(TransportConstants.HEADER_ACCEPT)) { - this.mimeHeaders.set(TransportConstants.HEADER_ACCEPT, messageFactory.getSoapVersion().getContentType()); - } - this.startDocument = messageFactory.getEventFactory().createStartDocument(); - this.endDocument = messageFactory.getEventFactory().createEndDocument(); - } - - static StroapMessage build(InputStream inputStream, StroapMessageFactory messageFactory) - throws XMLStreamException, IOException { - MultiValueMap mimeHeaders = parseMimeHeaders(inputStream); - XMLEventReader eventReader = messageFactory.getInputFactory().createXMLEventReader(inputStream); - StroapEnvelope envelope = StroapEnvelope.build(eventReader, messageFactory); - return new StroapMessage(mimeHeaders, envelope, messageFactory); - } - - private static MultiValueMap parseMimeHeaders(InputStream inputStream) throws IOException { - MultiValueMap mimeHeaders = new LinkedMultiValueMap(); - if (inputStream instanceof TransportInputStream) { - TransportInputStream transportInputStream = (TransportInputStream) inputStream; - for (Iterator headerNames = transportInputStream.getHeaderNames(); headerNames.hasNext();) { - String headerName = headerNames.next(); - for (Iterator headerValues = transportInputStream.getHeaders(headerName); - headerValues.hasNext();) { - String headerValue = headerValues.next(); - StringTokenizer tokenizer = new StringTokenizer(headerValue, ","); - while (tokenizer.hasMoreTokens()) { - mimeHeaders.add(headerName, tokenizer.nextToken().trim()); - } - } - } - } - return mimeHeaders; - } - - public SoapEnvelope getEnvelope() throws SoapEnvelopeException { - return envelope; - } - - public void setStreamingPayload(StreamingPayload payload) { - StroapBody soapBody = (StroapBody) getSoapBody(); - soapBody.setStreamingPayload(payload); - } - - public String getSoapAction() { - String soapAction = mimeHeaders.getFirst(TransportConstants.HEADER_SOAP_ACTION); - return StringUtils.hasLength(soapAction) ? soapAction : TransportConstants.EMPTY_SOAP_ACTION; - } - - public void setSoapAction(String soapAction) { - soapAction = SoapUtils.escapeAction(soapAction); - mimeHeaders.set(TransportConstants.HEADER_SOAP_ACTION, soapAction); - } - - @Override - public SoapVersion getVersion() { - return messageFactory.getSoapVersion(); - } - - public Document getDocument() { - try { - DocumentBuilder documentBuilder = messageFactory.getDocumentBuilderFactory().newDocumentBuilder(); - try { - Document result = documentBuilder.newDocument(); - DOMResult domResult = new DOMResult(result); - XMLEventWriter eventWriter = messageFactory.getOutputFactory().createXMLEventWriter(domResult); - eventWriter.add(startDocument); - envelope.writeTo(new NoStartEndDocumentWriter(eventWriter)); - eventWriter.add(endDocument); - eventWriter.flush(); - return result; - } - catch (XMLStreamException ignored) { - // ignored - } - catch (UnsupportedOperationException ignored) { - // ignored - } - - // XMLOutputFactory does not support DOMResults, so let's do it the hard way - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - writeTo(bos); - - ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); - return documentBuilder.parse(bis); - } - catch (ParserConfigurationException ex) { - throw new StroapMessageException("Could not create DocumentBuilderFactory", ex); - } - catch (SAXException ex) { - throw new StroapMessageException("Could not save message as Document", ex); - } - catch (IOException ex) { - throw new StroapMessageException("Could not save message as Document", ex); - } - } - - public void setDocument(Document document) { - try { - try { - DOMSource domSource = new DOMSource(document); - XMLEventReader eventReader = messageFactory.getInputFactory().createXMLEventReader(domSource); - this.envelope = StroapEnvelope.build(eventReader, messageFactory); - return; - } - catch (XMLStreamException ignored) { - // ignored - } - catch (UnsupportedOperationException ignored) { - // ignored - } - // XMLInputFactory does not support DOMSources, so let's do it the hard way - DOMImplementation implementation = document.getImplementation(); - Assert.isInstanceOf(DOMImplementationLS.class, implementation); - - DOMImplementationLS loadSaveImplementation = (DOMImplementationLS) implementation; - LSOutput output = loadSaveImplementation.createLSOutput(); - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - output.setByteStream(bos); - - LSSerializer serializer = loadSaveImplementation.createLSSerializer(); - serializer.write(document, output); - - ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); - XMLEventReader eventReader = messageFactory.getInputFactory().createXMLEventReader(bis); - this.envelope = StroapEnvelope.build(eventReader, messageFactory); - } - catch (XMLStreamException ex) { - throw new StroapMessageException("Could not read Document", ex); - } - } - - public void writeTo(OutputStream outputStream) throws IOException { - if (outputStream instanceof TransportOutputStream) { - TransportOutputStream tos = (TransportOutputStream) outputStream; - for (Map.Entry> entry : mimeHeaders.entrySet()) { - String name = entry.getKey(); - for (String value : entry.getValue()) { - tos.addHeader(name, value); - } - } - } - try { - XMLEventWriter eventWriter = messageFactory.getOutputFactory().createXMLEventWriter(outputStream); - eventWriter.add(startDocument); - envelope.writeTo(new NoStartEndDocumentWriter(eventWriter)); - eventWriter.add(endDocument); - eventWriter.flush(); - } - catch (XMLStreamException ex) { - throw new StroapMessageException("Could not write message to OutputStream: " + ex.getMessage(), ex); - } - } - - public boolean isXopPackage() { - return false; - } - - public boolean convertToXopPackage() { - return false; - } - - public Attachment getAttachment(String contentId) throws AttachmentException { - throw new UnsupportedOperationException(); - } - - public Iterator getAttachments() throws AttachmentException { - return Collections.emptyList().iterator(); - } - - public Attachment addAttachment(String contentId, DataHandler dataHandler) { - throw new UnsupportedOperationException(); - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder("StroapMessage"); - StroapBody body = (StroapBody) envelope.getBody(); - if (body != null) { - builder.append(' '); - builder.append(body.getPayloadName()); - } - return builder.toString(); - } - - private static class NoStartEndDocumentWriter extends AbstractXMLEventWriter { - - private final XMLEventWriter delegate; - - private NoStartEndDocumentWriter(XMLEventWriter delegate) { - this.delegate = delegate; - } - - public void add(XMLEvent event) throws XMLStreamException { - if (!event.isStartDocument() && !event.isEndDocument()) { - delegate.add(event); - } - } - } - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageCreationException.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageCreationException.java deleted file mode 100644 index 3f696ecd..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageCreationException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapMessageCreationException; - -/** - * @author Arjen Poutsma - */ -public class StroapMessageCreationException extends SoapMessageCreationException { - - public StroapMessageCreationException(String msg) { - super(msg); - } - - public StroapMessageCreationException(String msg, Throwable ex) { - super(msg, ex); - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageException.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageException.java deleted file mode 100644 index e8cc4d68..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageException.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapMessageException; - -/** - * @author Arjen Poutsma - */ -public class StroapMessageException extends SoapMessageException { - - public StroapMessageException(String msg) { - super(msg); - } - - public StroapMessageException(String msg, Throwable ex) { - super(msg, ex); - } - - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageFactory.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageFactory.java deleted file mode 100644 index 05e4d4c4..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapMessageFactory.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import java.io.IOException; -import java.io.InputStream; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.stream.XMLEventFactory; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLOutputFactory; -import javax.xml.stream.XMLStreamException; - -import org.springframework.ws.soap.SoapMessageFactory; -import org.springframework.ws.soap.SoapVersion; - -/** - * @author Arjen Poutsma - */ -public class StroapMessageFactory implements SoapMessageFactory { - - private final XMLInputFactory inputFactory = createXmlInputFactory(); - - private final XMLOutputFactory outputFactory = createXmlOutputFactory(); - - private final XMLEventFactory eventFactory = createXmlEventFactory(); - - private final DocumentBuilderFactory documentBuilderFactory = createDocumentBuilderFactory(); - - private boolean payloadCaching = true; - - public boolean isPayloadCaching() { - return payloadCaching; - } - - public void setPayloadCaching(boolean payloadCaching) { - this.payloadCaching = payloadCaching; - } - - public SoapVersion getSoapVersion() { - return SoapVersion.SOAP_11; - } - - public void setSoapVersion(SoapVersion version) { - if (version != SoapVersion.SOAP_11) { - throw new UnsupportedOperationException(); - } - } - - public StroapMessage createWebServiceMessage() { - return new StroapMessage(this); - } - - public StroapMessage createWebServiceMessage(InputStream inputStream) throws IOException { - try { - return StroapMessage.build(inputStream, this); - } - catch (XMLStreamException ex) { - throw new StroapMessageCreationException("Could not create message from InputStream: " + ex.getMessage(), - ex); - } - } - - XMLInputFactory getInputFactory() { - return inputFactory; - } - - XMLOutputFactory getOutputFactory() { - return outputFactory; - } - - XMLEventFactory getEventFactory() { - return eventFactory; - } - - DocumentBuilderFactory getDocumentBuilderFactory() { - return documentBuilderFactory; - } - - /** - * Create a {@code XMLInputFactory} that this message factory will use to create {@link - * javax.xml.stream.XMLEventReader} objects. - * - *

Can be overridden in subclasses, adding further initialization of the factory. The resulting factory is cached, - * so this method will only be called once. - * - * @return the created factory - */ - protected XMLInputFactory createXmlInputFactory() { - return XMLInputFactory.newInstance(); - } - - /** - * Create a {@code XMLOutputFactory} that this message factory will use to create {@link - * javax.xml.stream.XMLEventWriter} objects. - * - *

Can be overridden in subclasses, adding further initialization of the factory. The resulting factory is cached, - * so this method will only be called once. - * - * @return the created factory - */ - protected XMLOutputFactory createXmlOutputFactory() { - XMLOutputFactory outputFactory = XMLOutputFactory.newFactory(); - outputFactory.setProperty("javax.xml.stream.isRepairingNamespaces", true); - return outputFactory; - } - - /** - * Create a {@code XMLEventFactory} that this message factory will use to create {@link - * javax.xml.stream.events.XMLEvent} objects. - * - *

Can be overridden in subclasses, adding further initialization of the factory. The resulting factory is cached, - * so this method will only be called once. - * - * @return the created factory - */ - protected XMLEventFactory createXmlEventFactory() { - return XMLEventFactory.newFactory(); - } - - /** - * Create a {@code DocumentBuilderFactory} that this message factory will use to create {@link org.w3c.dom.Document} objects. - * - *

Can be overridden in subclasses, adding further initialization of the factory. The resulting factory is cached, - * so this method will only be called once. - * - * @return the created factory - */ - protected DocumentBuilderFactory createDocumentBuilderFactory() { - DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); - documentBuilderFactory.setNamespaceAware(true); - return documentBuilderFactory; - } - - public String toString() { - StringBuilder builder = new StringBuilder("StroapMessageFactory["); - if (getSoapVersion() == SoapVersion.SOAP_11) { - builder.append("SOAP 1.1"); - } - else if (getSoapVersion() == SoapVersion.SOAP_12) { - builder.append("SOAP 1.2"); - } - builder.append(','); - if (payloadCaching) { - builder.append("PayloadCaching enabled"); - } - else { - builder.append("PayloadCaching disabled"); - } - builder.append(']'); - return builder.toString(); - } - - -} diff --git a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapPayload.java b/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapPayload.java deleted file mode 100644 index 89c1a0ed..00000000 --- a/sandbox/src/main/java/org/springframework/ws/soap/stroap/StroapPayload.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLEventWriter; -import javax.xml.stream.XMLStreamException; - -/** - * @author Arjen Poutsma - */ -abstract class StroapPayload { - - public abstract QName getName(); - - public abstract XMLEventReader getEventReader(); - - public void writeTo(XMLEventWriter eventWriter) throws XMLStreamException { - eventWriter.add(getEventReader()); - } - -} \ No newline at end of file diff --git a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpMessageReceiver.java b/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpMessageReceiver.java deleted file mode 100644 index 506c1771..00000000 --- a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpMessageReceiver.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright 2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -import java.io.IOException; -import java.io.InterruptedIOException; -import java.net.InetAddress; -import java.net.ServerSocket; -import java.net.Socket; -import java.net.UnknownHostException; - -import org.springframework.scheduling.SchedulingAwareRunnable; -import org.springframework.ws.transport.WebServiceConnection; -import org.springframework.ws.transport.support.AbstractAsyncStandaloneMessageReceiver; - -/** @author Arjen Poutsma */ -public class TcpMessageReceiver extends AbstractAsyncStandaloneMessageReceiver { - - public static final int DEFAULT_PORT = 8081; - - private ServerSocket serverSocket; - - private InetAddress bindAddress; - - private int backlog = -1; - - private int port = DEFAULT_PORT; - - /** Sets the port the server will bind to. */ - public void setPort(int port) { - this.port = port; - } - - /** Sets the server back log. */ - public void setBacklog(int backlog) { - this.backlog = backlog; - } - - /** - * Sets the local internet address the server will bind to. By default, it will accept connections on any/all local - * addresses. - * - * @throws UnknownHostException when the given address is not known - * @see ServerSocket#ServerSocket(int,int,java.net.InetAddress) - */ - public void setBindAddress(String bindAddress) throws UnknownHostException { - this.bindAddress = InetAddress.getByName(bindAddress); - } - - protected void onActivate() throws IOException { - openServerSocket(); - } - - protected void onStart() { - if (logger.isInfoEnabled()) { - logger.info("Starting tcp receiver [" + serverSocket.getLocalSocketAddress() + "]"); - } - execute(new SocketAcceptingRunnable()); - } - - protected void onStop() { - if (logger.isInfoEnabled()) { - logger.info("Stopping tcp receiver [" + serverSocket.getLocalSocketAddress() + "]"); - } - } - - protected void onShutdown() { - if (logger.isInfoEnabled()) { - logger.info("Shutting down tcp receiver [" + serverSocket.getLocalSocketAddress() + "]"); - } - closeServerSocket(); - } - - /** Establish a ServerSocket for this receiver. */ - protected void openServerSocket() throws IOException { - closeServerSocket(); - serverSocket = new ServerSocket(port, backlog, bindAddress); - } - - protected void closeServerSocket() { - if (serverSocket == null) { - return; - } - try { - serverSocket.close(); - } - catch (IOException ex) { - logger.debug("Could not close ServerSocket", ex); - } - } - - private class SocketAcceptingRunnable implements SchedulingAwareRunnable { - - public void run() { - while (isRunning()) { - try { - Socket socket = serverSocket.accept(); - TcpRequestHandler handler = new TcpRequestHandler(socket); - execute(handler); - } - catch (InterruptedIOException ex) { - logger.warn(ex); - } - catch (IOException ex) { - logger.warn("Could not accept incoming connection: " + ex.getMessage()); - } - } - } - - public boolean isLongLived() { - return true; - } - } - - private class TcpRequestHandler implements SchedulingAwareRunnable { - - private final Socket socket; - - public TcpRequestHandler(Socket socket) { - this.socket = socket; - } - - public void run() { - WebServiceConnection connection = new TcpReceiverConnection(socket); - try { - handleConnection(connection); - } - catch (Exception ex) { - logger.warn("Could not handle request", ex); - } - } - - public boolean isLongLived() { - return false; - } - } - -} diff --git a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpMessageSender.java b/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpMessageSender.java deleted file mode 100644 index a423ca44..00000000 --- a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpMessageSender.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketAddress; -import java.net.URI; - -import org.springframework.util.Assert; -import org.springframework.util.StringUtils; -import org.springframework.ws.transport.WebServiceConnection; -import org.springframework.ws.transport.WebServiceMessageSender; - -/** @author Arjen Poutsma */ -public class TcpMessageSender implements WebServiceMessageSender { - - public static final int DEFAULT_PORT = 8081; - - private int timeOut = 1000; - - /** Sets the amount of milliseconds before the tcp connection will timeout. */ - public void setTimeOut(int timeOut) { - this.timeOut = timeOut; - } - - public WebServiceConnection createConnection(URI theUri) throws IOException { - int port = theUri.getPort(); - if (port == -1) { - port = DEFAULT_PORT; - } - Socket socket = new Socket(); - SocketAddress socketAddress = new InetSocketAddress(theUri.getHost(), port); - socket.connect(socketAddress, timeOut); - return new TcpSenderConnection(socket); - } - - public boolean supports(URI uri) { - return uri.getScheme().equals(TcpTransportConstants.TCP_URI_SCHEME); - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpReceiverConnection.java b/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpReceiverConnection.java deleted file mode 100644 index de1d55b5..00000000 --- a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpReceiverConnection.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -import java.io.FilterInputStream; -import java.io.FilterOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.Socket; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Collections; -import java.util.Iterator; - -import org.springframework.util.Assert; -import org.springframework.ws.transport.AbstractReceiverConnection; -import org.springframework.ws.transport.tcp.support.TcpTransportUtils; - -/** @author Arjen Poutsma */ -public class TcpReceiverConnection extends AbstractReceiverConnection { - - private final Socket socket; - - protected TcpReceiverConnection(Socket socket) { - Assert.notNull(socket, "socket must not be null"); - this.socket = socket; - } - - public URI getUri() throws URISyntaxException { - return TcpTransportUtils.toUri(socket); - } - - public boolean hasError() throws IOException { - return false; - } - - public String getErrorMessage() throws IOException { - return null; - } - - public void onClose() throws IOException { - socket.close(); - } - - protected Iterator getRequestHeaderNames() throws IOException { - return Collections.EMPTY_LIST.iterator(); - } - - protected Iterator getRequestHeaders(String name) throws IOException { - return Collections.EMPTY_LIST.iterator(); - } - - protected InputStream getRequestInputStream() throws IOException { - return new FilterInputStream(socket.getInputStream()) { - - @Override - public void close() throws IOException { - // don't close the socket - socket.shutdownInput(); - } - }; - } - - protected void addResponseHeader(String name, String value) throws IOException { - } - - protected OutputStream getResponseOutputStream() throws IOException { - return new FilterOutputStream(socket.getOutputStream()) { - - @Override - public void close() throws IOException { - // don't close the socket - socket.shutdownOutput(); - } - }; - } - - protected void sendResponse(boolean sentFault) throws IOException { - } - -} diff --git a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpSenderConnection.java b/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpSenderConnection.java deleted file mode 100644 index a702dec9..00000000 --- a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpSenderConnection.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -import java.io.FilterInputStream; -import java.io.FilterOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.Socket; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Collections; -import java.util.Iterator; - -import org.springframework.util.Assert; -import org.springframework.ws.transport.AbstractSenderConnection; -import org.springframework.ws.transport.WebServiceConnection; -import org.springframework.ws.transport.tcp.support.TcpTransportUtils; - -/** - * Implementation of {@link WebServiceConnection} that is used for client-side TCP/IP access. Exposes a {@link Socket}. - * - * @author Arjen Poutsma - */ -public class TcpSenderConnection extends AbstractSenderConnection { - - private final Socket socket; - - /** Constructs a new TCP/IP connection with the given socket. */ - protected TcpSenderConnection(Socket socket) { - Assert.notNull(socket, "socket must not be null"); - this.socket = socket; - } - - /** Returns the socket for this connection. */ - public Socket getSocket() { - return socket; - } - - public URI getUri() throws URISyntaxException { - return TcpTransportUtils.toUri(socket); - } - - public void onClose() throws IOException { - socket.close(); - } - - /* - * Errors - */ - - public boolean hasError() throws IOException { - return false; - } - - public String getErrorMessage() throws IOException { - return null; - } - - protected void addRequestHeader(String name, String value) throws IOException { - } - - protected OutputStream getRequestOutputStream() throws IOException { - return new FilterOutputStream(socket.getOutputStream()) { - - @Override - public void close() throws IOException { - // don't close the socket - socket.shutdownOutput(); - } - }; - } - - protected void sendRequest() throws IOException { - } - - protected boolean hasResponse() throws IOException { - return true; - } - - protected Iterator getResponseHeaderNames() throws IOException { - return Collections.EMPTY_LIST.iterator(); - } - - protected Iterator getResponseHeaders(String name) throws IOException { - return Collections.EMPTY_LIST.iterator(); - } - - protected InputStream getResponseInputStream() throws IOException { - return new FilterInputStream(socket.getInputStream()) { - - @Override - public void close() throws IOException { - // don't close the socket - socket.shutdownInput(); - } - }; - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpTransportConstants.java b/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpTransportConstants.java deleted file mode 100644 index 31f85087..00000000 --- a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpTransportConstants.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -/** - * Declares TCP/IP-specific transport constants. - * - * @author Arjen Poutsma - */ -public interface TcpTransportConstants { - - /** The "tcp" URI scheme. */ - String TCP_URI_SCHEME = "tcp"; - -} diff --git a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpTransportException.java b/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpTransportException.java deleted file mode 100644 index a2e5480b..00000000 --- a/sandbox/src/main/java/org/springframework/ws/transport/tcp/TcpTransportException.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -import java.io.IOException; - -import org.springframework.ws.transport.TransportException; - -/** @author Arjen Poutsma */ -public class TcpTransportException extends TransportException { - - public TcpTransportException(String msg) { - super(msg); - } - - public TcpTransportException(String msg, IOException ex) { - super(msg + ": " + ex.getMessage()); - } - - public TcpTransportException(IOException ex) { - super(ex.getMessage()); - } -} diff --git a/sandbox/src/main/java/org/springframework/ws/transport/tcp/support/TcpTransportUtils.java b/sandbox/src/main/java/org/springframework/ws/transport/tcp/support/TcpTransportUtils.java deleted file mode 100644 index 40193071..00000000 --- a/sandbox/src/main/java/org/springframework/ws/transport/tcp/support/TcpTransportUtils.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2008 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp.support; - -import java.net.Socket; -import java.net.URI; -import java.net.URISyntaxException; - -import org.springframework.ws.transport.tcp.TcpTransportConstants; - -/** - * Collection of utility methods to work with TCP/IP transports. - * - * @author Arjen Poutsma - */ -public abstract class TcpTransportUtils { - - /** - * Converts the given Socket into a tcp URI. - * - * @param socket the socket - * @return a tcp URI - */ - public static URI toUri(Socket socket) throws URISyntaxException { - String host = socket.getInetAddress().getHostName(); - return new URI(TcpTransportConstants.TCP_URI_SCHEME, null, host, socket.getPort(), null, null, null); - - } - -} diff --git a/sandbox/src/main/java/org/springframework/xml/stream/AbstractXMLEventReader.java b/sandbox/src/main/java/org/springframework/xml/stream/AbstractXMLEventReader.java deleted file mode 100644 index 223e08bf..00000000 --- a/sandbox/src/main/java/org/springframework/xml/stream/AbstractXMLEventReader.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.xml.stream; - -import java.util.NoSuchElementException; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLStreamConstants; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.Characters; -import javax.xml.stream.events.XMLEvent; - -import org.springframework.util.ClassUtils; - -/** - * Abstract base class for XMLEventReaders. - * - * @author Arjen Poutsma - */ -public abstract class AbstractXMLEventReader implements XMLEventReader { - - private boolean closed; - - public Object next() { - try { - return nextEvent(); - } - catch (XMLStreamException ex) { - throw new NoSuchElementException(); - } - } - - /** - * Throws an UnsupportedOperationException when called. - * - * @throws UnsupportedOperationException when called - */ - public void remove() { - throw new UnsupportedOperationException("remove not supported on " + ClassUtils.getShortName(getClass())); - } - - public String getElementText() throws XMLStreamException { - checkIfClosed(); - if (!peek().isStartElement()) { - throw new XMLStreamException("Not at START_ELEMENT"); - } - - StringBuilder builder = new StringBuilder(); - while (true) { - XMLEvent event = nextEvent(); - if (event.isEndElement()) { - break; - } - else if (!event.isCharacters()) { - throw new XMLStreamException("Unexpected event [" + event + "] in getElementText()"); - } - Characters characters = event.asCharacters(); - if (!characters.isIgnorableWhiteSpace()) { - builder.append(event.asCharacters().getData()); - } - } - return builder.toString(); - } - - public XMLEvent nextTag() throws XMLStreamException { - checkIfClosed(); - while (true) { - XMLEvent event = nextEvent(); - switch (event.getEventType()) { - case XMLStreamConstants.START_ELEMENT: - case XMLStreamConstants.END_ELEMENT: - return event; - case XMLStreamConstants.END_DOCUMENT: - return null; - case XMLStreamConstants.SPACE: - case XMLStreamConstants.COMMENT: - case XMLStreamConstants.PROCESSING_INSTRUCTION: - continue; - case XMLStreamConstants.CDATA: - case XMLStreamConstants.CHARACTERS: - if (!event.asCharacters().isWhiteSpace()) { - throw new XMLStreamException("Non-ignorable whitespace CDATA or CHARACTERS event in nextTag()"); - } - break; - default: - throw new XMLStreamException( - "Received event [" + event + "], instead of START_ELEMENT or END_ELEMENT."); - } - } - } - - /** - * Throws an IllegalArgumentException when called. - * - * @throws IllegalArgumentException when called. - */ - public Object getProperty(String name) throws IllegalArgumentException { - throw new IllegalArgumentException("Property not supported: [" + name + "]"); - } - - /** - * Returns true if closed; false otherwise. - * - * @see #close() - */ - protected boolean isClosed() { - return closed; - } - - /** - * Checks if the reader is closed, and throws a XMLStreamException if so. - * - * @throws XMLStreamException if the reader is closed - * @see #close() - * @see #isClosed() - */ - protected void checkIfClosed() throws XMLStreamException { - if (closed) { - throw new XMLStreamException("XMLEventReader has been closed"); - } - } - - public void close() { - closed = true; - } -} diff --git a/sandbox/src/main/java/org/springframework/xml/stream/AbstractXMLEventWriter.java b/sandbox/src/main/java/org/springframework/xml/stream/AbstractXMLEventWriter.java deleted file mode 100644 index 0c1344c8..00000000 --- a/sandbox/src/main/java/org/springframework/xml/stream/AbstractXMLEventWriter.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.xml.stream; - -import javax.xml.namespace.NamespaceContext; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLEventWriter; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.XMLEvent; - -import org.springframework.util.Assert; -import org.springframework.util.ClassUtils; -import org.springframework.xml.namespace.SimpleNamespaceContext; - -/** - * @author Arjen Poutsma - */ -public abstract class AbstractXMLEventWriter implements XMLEventWriter { - - private boolean closed; - - private SimpleNamespaceContext namespaceContext = new SimpleNamespaceContext(); - - public void flush() throws XMLStreamException { - } - - public void add(XMLEventReader eventReader) throws XMLStreamException { - checkIfClosed(); - while (eventReader.hasNext()) { - XMLEvent event = eventReader.nextEvent(); - add(event); - } - } - - public String getPrefix(String uri) throws XMLStreamException { - return namespaceContext.getPrefix(uri); - } - - public void setPrefix(String prefix, String uri) throws XMLStreamException { - namespaceContext.bindNamespaceUri(prefix, uri); - } - - public void setDefaultNamespace(String uri) throws XMLStreamException { - namespaceContext.bindDefaultNamespaceUri(uri); - } - - public void setNamespaceContext(NamespaceContext namespaceContext) throws XMLStreamException { - Assert.notNull(namespaceContext, "'namespaceContext' must not be null"); - this.namespaceContext = (SimpleNamespaceContext) namespaceContext; - } - - public NamespaceContext getNamespaceContext() { - return namespaceContext; - } - - /** - * Returns true if closed; false otherwise. - * - * @see #close() - */ - protected boolean isClosed() { - return closed; - } - - /** - * Checks if the reader is closed, and throws a XMLStreamException if so. - * - * @throws XMLStreamException if the reader is closed - * @see #close() - * @see #isClosed() - */ - protected void checkIfClosed() throws XMLStreamException { - if (closed) { - throw new XMLStreamException(ClassUtils.getShortName(getClass()) + " has been closed"); - } - } - - public void close() { - closed = true; - } - -} diff --git a/sandbox/src/main/java/org/springframework/xml/stream/CompositeXMLEventReader.java b/sandbox/src/main/java/org/springframework/xml/stream/CompositeXMLEventReader.java deleted file mode 100644 index edb3b3f7..00000000 --- a/sandbox/src/main/java/org/springframework/xml/stream/CompositeXMLEventReader.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.xml.stream; - -import java.util.List; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.XMLEvent; - -import org.springframework.util.Assert; - -/** - * Implementation of {@link XMLEventReader} that combines multiple other {@code XMLEventReader}s. - * - * @author Arjen Poutsma - */ -public class CompositeXMLEventReader extends AbstractXMLEventReader { - - private final XMLEventReader[] eventReaders; - - private int cursor = 0; - - public CompositeXMLEventReader(XMLEventReader eventReader) { - Assert.notNull(eventReader, "'eventReader' must not be null"); - this.eventReaders = new XMLEventReader[]{eventReader}; - } - - public CompositeXMLEventReader(XMLEventReader... eventReaders) { - Assert.notNull(eventReaders, "'eventReaders' must not be null"); - this.eventReaders = eventReaders; - } - - public CompositeXMLEventReader(List eventReaders) { - Assert.notNull(eventReaders, "'eventReaders' must not be null"); - this.eventReaders = eventReaders.toArray(new XMLEventReader[eventReaders.size()]); - } - - public boolean hasNext() { - while (cursor < eventReaders.length) { - if (!atLastEventReader()) { - if (!currentEventReader().hasNext()) { - cursor++; - continue; - } - } - return currentEventReader().hasNext(); - } - return false; - } - - public XMLEvent nextEvent() throws XMLStreamException { - XMLEvent event = null; - while (cursor < eventReaders.length) { - event = currentEventReader().nextEvent(); - if (!atLastEventReader() && event.isEndDocument()) { - cursor++; - } - else { - break; - } - } - return event; - } - - public XMLEvent peek() throws XMLStreamException { - XMLEvent event = null; - while (cursor < eventReaders.length) { - event = currentEventReader().peek(); - if (!atLastEventReader() && (event == null || event.isEndDocument())) { - cursor++; - } - else { - break; - } - } - return event; - } - - private XMLEventReader currentEventReader() { - return eventReaders[cursor]; - } - - private boolean atLastEventReader() { - return cursor == eventReaders.length - 1; - } - -} diff --git a/sandbox/src/main/java/org/springframework/xml/stream/ListBasedXMLEventReader.java b/sandbox/src/main/java/org/springframework/xml/stream/ListBasedXMLEventReader.java deleted file mode 100644 index d56814b6..00000000 --- a/sandbox/src/main/java/org/springframework/xml/stream/ListBasedXMLEventReader.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.xml.stream; - -import java.util.List; -import java.util.NoSuchElementException; -import javax.xml.stream.events.XMLEvent; - -import org.springframework.util.Assert; - -/** - * @author Arjen Poutsma - */ -public class ListBasedXMLEventReader extends AbstractXMLEventReader { - - private final XMLEvent[] events; - - private int cursor = 0; - - public ListBasedXMLEventReader() { - this.events = new XMLEvent[0]; - } - - public ListBasedXMLEventReader(XMLEvent event) { - if (event != null) { - this.events = new XMLEvent[]{event}; - } - else { - this.events = new XMLEvent[0]; - } - } - - public ListBasedXMLEventReader(XMLEvent... events) { - Assert.notNull(events, "'events' must not be null"); - this.events = events; - } - - public ListBasedXMLEventReader(List events) { - Assert.notNull(events, "'events' must not be null"); - this.events = events.toArray(new XMLEvent[events.size()]); - } - - public boolean hasNext() { - Assert.notNull(events, "'events' must not be null"); - return cursor != events.length; - } - - public XMLEvent nextEvent() { - if (cursor < events.length) { - return events[cursor++]; - } - else { - throw new NoSuchElementException(); - } - } - - public XMLEvent peek() { - if (cursor < events.length) { - return events[cursor]; - } - else { - return null; - } - } -} diff --git a/sandbox/src/main/resources/log4j.properties b/sandbox/src/main/resources/log4j.properties deleted file mode 100644 index 8e32525b..00000000 --- a/sandbox/src/main/resources/log4j.properties +++ /dev/null @@ -1,7 +0,0 @@ -log4j.rootCategory=WARN, stdout -log4j.logger.org.springframework.ws=DEBUG -log4j.logger.org.springframework.jms=DEBUG - -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n \ No newline at end of file diff --git a/sandbox/src/test/java/org/springframework/ws/jaxws/JaxWsProviderEndpointAdapterTest.java b/sandbox/src/test/java/org/springframework/ws/jaxws/JaxWsProviderEndpointAdapterTest.java deleted file mode 100644 index 3ca263a9..00000000 --- a/sandbox/src/test/java/org/springframework/ws/jaxws/JaxWsProviderEndpointAdapterTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.jaxws; - -import javax.xml.namespace.QName; -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPMessage; -import javax.xml.transform.Source; -import javax.xml.ws.Provider; -import javax.xml.ws.Service; -import javax.xml.ws.ServiceMode; -import javax.xml.ws.WebServiceProvider; - -import junit.framework.TestCase; -import org.springframework.ws.context.DefaultMessageContext; -import org.springframework.ws.context.MessageContext; -import org.springframework.ws.soap.saaj.SaajSoapMessage; -import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; - -public class JaxWsProviderEndpointAdapterTest extends TestCase { - - private JaxWsProviderEndpointAdapter adapter; - - private MessageContext messageContext; - - @Override - protected void setUp() throws Exception { - adapter = new JaxWsProviderEndpointAdapter(); - MessageFactory messageFactory = MessageFactory.newInstance(); - SOAPMessage request = messageFactory.createMessage(); - request.getSOAPBody().addBodyElement(new QName("http://springframework.org/spring-ws", "content")); - messageContext = - new DefaultMessageContext(new SaajSoapMessage(request), new SaajSoapMessageFactory(messageFactory)); - } - - public void testSupports() throws Exception { - MyMessageProvider messageProvider = new MyMessageProvider(); - assertTrue("Does not support message provider", adapter.supports(messageProvider)); - MySourceProvider sourceProvider = new MySourceProvider(); - assertTrue("Does not support source provider", adapter.supports(sourceProvider)); - MyDefaultProvider defaultProvider = new MyDefaultProvider(); - assertTrue("Does not support source provider", adapter.supports(defaultProvider)); - } - - public void testInvokeMessageProvider() throws Exception { - MyMessageProvider provider = new MyMessageProvider(); - adapter.invoke(messageContext, provider); - assertTrue("No response", messageContext.hasResponse()); - SaajSoapMessage request = (SaajSoapMessage) messageContext.getRequest(); - SaajSoapMessage response = (SaajSoapMessage) messageContext.getResponse(); - assertEquals("Invalid response", request.getSaajMessage(), response.getSaajMessage()); - } - - public void testInvokeSourceProvider() throws Exception { - MySourceProvider provider = new MySourceProvider(); - adapter.invoke(messageContext, provider); - assertTrue("No response", messageContext.hasResponse()); - } - - public void testInvokeDefaultProvider() throws Exception { - MyDefaultProvider provider = new MyDefaultProvider(); - adapter.invoke(messageContext, provider); - assertTrue("No response", messageContext.hasResponse()); - } - - @WebServiceProvider - @ServiceMode(Service.Mode.MESSAGE) - private static class MyMessageProvider implements Provider { - - public SOAPMessage invoke(SOAPMessage request) { - return request; - } - } - - @WebServiceProvider - @ServiceMode(value = Service.Mode.PAYLOAD) - private static class MySourceProvider implements Provider { - - public Source invoke(Source request) { - return request; - } - } - - @WebServiceProvider - private static class MyDefaultProvider implements Provider { - - public Source invoke(Source request) { - return request; - } - } - - -} diff --git a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11BodyTest.java b/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11BodyTest.java deleted file mode 100644 index d977c381..00000000 --- a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11BodyTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapBody; -import org.springframework.ws.soap.soap11.AbstractSoap11BodyTestCase; - -public class Stroap11BodyTest extends AbstractSoap11BodyTestCase { - - @Override - protected SoapBody createSoapBody() throws Exception { - StroapMessageFactory messageFactory = new StroapMessageFactory(); - return new Stroap11Body(messageFactory); - } - - @Override - public void testAddFaultWithDetail() throws Exception { - } - - @Override - public void testAddFaultWithDetailResult() throws Exception { - } -} diff --git a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11EnvelopeTest.java b/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11EnvelopeTest.java deleted file mode 100644 index 6bcf2773..00000000 --- a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11EnvelopeTest.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapEnvelope; -import org.springframework.ws.soap.soap11.AbstractSoap11EnvelopeTestCase; - -public class Stroap11EnvelopeTest extends AbstractSoap11EnvelopeTestCase { - - @Override - protected SoapEnvelope createSoapEnvelope() throws Exception { - StroapMessageFactory messageFactory = new StroapMessageFactory(); - StroapEnvelope envelope = new StroapEnvelope(messageFactory); - envelope.getHeader(); - return envelope; - } -} diff --git a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11HeaderTest.java b/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11HeaderTest.java deleted file mode 100644 index 21f9530d..00000000 --- a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11HeaderTest.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapHeader; -import org.springframework.ws.soap.soap11.AbstractSoap11HeaderTestCase; - -public class Stroap11HeaderTest extends AbstractSoap11HeaderTestCase { - - @Override - protected SoapHeader createSoapHeader() throws Exception { - StroapMessageFactory messageFactory = new StroapMessageFactory(); - return new Stroap11Header(messageFactory); - } -} diff --git a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11MessageFactoryTest.java b/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11MessageFactoryTest.java deleted file mode 100644 index 9e525a1f..00000000 --- a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11MessageFactoryTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.WebServiceMessageFactory; -import org.springframework.ws.soap.soap11.AbstractSoap11MessageFactoryTestCase; - -public class Stroap11MessageFactoryTest extends AbstractSoap11MessageFactoryTestCase { - - @Override - protected WebServiceMessageFactory createMessageFactory() throws Exception { - return new StroapMessageFactory(); - } - - @Override - public void testCreateSoapMessageMtom() throws Exception { - } - - @Override - public void testCreateSoapMessageSwA() throws Exception { - } - - @Override - public void testCreateSoapMessageMtomWeirdStartInfo() throws Exception { - } -} \ No newline at end of file diff --git a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11MessageTest.java b/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11MessageTest.java deleted file mode 100644 index ce1dce70..00000000 --- a/sandbox/src/test/java/org/springframework/ws/soap/stroap/Stroap11MessageTest.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.soap.stroap; - -import org.springframework.ws.soap.SoapMessage; -import org.springframework.ws.soap.soap11.AbstractSoap11MessageTestCase; - -public class Stroap11MessageTest extends AbstractSoap11MessageTestCase { - - @Override - protected final SoapMessage createSoapMessage() throws Exception { - StroapMessageFactory messageFactory = new StroapMessageFactory(); - return new StroapMessage(messageFactory); - } - - @Override - public void testWriteToTransportResponseAttachment() throws Exception { - } - - @Override - public void testAddAttachment() throws Exception { - } - - @Override - public void testGetAttachment() throws Exception { - } - - @Override - public void testGetAttachments() throws Exception { - } - -} diff --git a/sandbox/src/test/java/org/springframework/ws/transport/tcp/Driver.java b/sandbox/src/test/java/org/springframework/ws/transport/tcp/Driver.java deleted file mode 100644 index 90de5f07..00000000 --- a/sandbox/src/test/java/org/springframework/ws/transport/tcp/Driver.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2007 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -import java.io.IOException; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -/** @author Arjen Poutsma */ -public class Driver { - - public static void main(String[] args) throws IOException { - new ClassPathXmlApplicationContext("applicationContext.xml", Driver.class); - System.out.println("Started...."); - System.in.read(); - } - -} diff --git a/sandbox/src/test/java/org/springframework/ws/transport/tcp/TcpIntegrationTest.java b/sandbox/src/test/java/org/springframework/ws/transport/tcp/TcpIntegrationTest.java deleted file mode 100644 index 4db39b69..00000000 --- a/sandbox/src/test/java/org/springframework/ws/transport/tcp/TcpIntegrationTest.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -import org.springframework.test.AbstractDependencyInjectionSpringContextTests; -import org.springframework.ws.client.core.WebServiceTemplate; -import org.springframework.xml.transform.StringResult; -import org.springframework.xml.transform.StringSource; - -import org.custommonkey.xmlunit.XMLAssert; -import org.junit.Ignore; - -@Ignore -public class TcpIntegrationTest extends AbstractDependencyInjectionSpringContextTests { - - private WebServiceTemplate webServiceTemplate; - - protected String[] getConfigLocations() { - return new String[]{"classpath:org/springframework/ws/transport/tcp/tcp-applicationContext.xml"}; - } - - public void setWebServiceTemplate(WebServiceTemplate webServiceTemplate) { - this.webServiceTemplate = webServiceTemplate; - } - - public void testJmsTransport() throws Exception { - String content = ""; - StringResult result = new StringResult(); - webServiceTemplate.sendSourceAndReceiveToResult(new StringSource(content), result); - XMLAssert.assertXMLEqual("Invalid content received", content, result.toString()); - applicationContext.close(); - } -} \ No newline at end of file diff --git a/sandbox/src/test/java/org/springframework/ws/transport/tcp/TcpMessageReceiverIntegrationTest.java b/sandbox/src/test/java/org/springframework/ws/transport/tcp/TcpMessageReceiverIntegrationTest.java deleted file mode 100644 index eae28ae0..00000000 --- a/sandbox/src/test/java/org/springframework/ws/transport/tcp/TcpMessageReceiverIntegrationTest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.ws.transport.tcp; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.net.Socket; -import javax.xml.transform.stream.StreamResult; - -import org.springframework.test.AbstractDependencyInjectionSpringContextTests; -import org.springframework.ws.WebServiceMessageFactory; -import org.springframework.ws.client.core.WebServiceTemplate; -import org.springframework.ws.transport.WebServiceMessageSender; -import org.springframework.xml.transform.StringSource; - -import org.junit.Ignore; - -@Ignore -public class TcpMessageReceiverIntegrationTest extends AbstractDependencyInjectionSpringContextTests { - - private WebServiceMessageFactory messageFactory; - - private WebServiceMessageSender messageSender; - - public void setMessageFactory(WebServiceMessageFactory messageFactory) { - this.messageFactory = messageFactory; - } - - public void setMessageSender(WebServiceMessageSender messageSender) { - this.messageSender = messageSender; - } - - public static final String REQUEST = - "\n" + - " \n" + - " \n" + - " DIS\n" + " \n" + - " \n" + ""; - - public void testServer() throws IOException, InterruptedException { - Socket socket = new Socket("localhost", TcpMessageReceiver.DEFAULT_PORT); - Writer writer; - BufferedReader reader; - try { - writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8")); - writer.write(REQUEST); - writer.flush(); - socket.shutdownOutput(); - reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); - String line; - while ((line = reader.readLine()) != null) { - System.out.println(line); - } - } - finally { - socket.close(); - } - } - - public void testTemplate() throws Exception { - WebServiceTemplate template = new WebServiceTemplate(messageFactory); - template.setMessageSender(messageSender); - template.sendSourceAndReceiveToResult("tcp://localhost", new StringSource(REQUEST), - new StreamResult(System.out)); - } - - protected String[] getConfigLocations() { - return new String[]{"classpath:/org/springframework/ws/transport/tcp/applicationContext.xml"}; - } - -} \ No newline at end of file diff --git a/sandbox/src/test/java/org/springframework/xml/stream/CompositeXMLEventReaderTest.java b/sandbox/src/test/java/org/springframework/xml/stream/CompositeXMLEventReaderTest.java deleted file mode 100644 index df79a7e2..00000000 --- a/sandbox/src/test/java/org/springframework/xml/stream/CompositeXMLEventReaderTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2005-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.xml.stream; - -import java.io.StringReader; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.NoSuchElementException; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.events.XMLEvent; - -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * @author Arjen Poutsma - */ -public class CompositeXMLEventReaderTest { - - private CompositeXMLEventReader chain; - - private XMLInputFactory inputFactory; - - private List expectedEvents = new ArrayList(); - - @Before - public void createChainUp() throws Exception { - inputFactory = XMLInputFactory.newFactory(); - List events = getEvents("text1"); - expectedEvents.addAll(events); - XMLEventReader reader1 = new ListBasedXMLEventReader(events); - XMLEventReader reader2 = new ListBasedXMLEventReader(); - events = getEvents(""); - expectedEvents.addAll(events); - XMLEventReader reader3 = new ListBasedXMLEventReader(events); - XMLEventReader reader4 = new ListBasedXMLEventReader(); - chain = new CompositeXMLEventReader(reader1, reader2, reader3, reader4); - } - - private List getEvents(String xml) throws XMLStreamException { - XMLEventReader eventReader = inputFactory.createXMLEventReader(new StringReader(xml)); - List events = new LinkedList(); - while (eventReader.hasNext()) { - XMLEvent event = eventReader.nextEvent(); - if (!(event.isStartDocument() || event.isEndDocument())) { - events.add(event); - } - - } - return events; - } - - @Test - public void testChain() throws Exception { - for (XMLEvent expectedEvent : expectedEvents) { - testEvent(expectedEvent); - } - assertFalse("hasNext returns true", chain.hasNext()); - assertNull("peek returns element", chain.peek()); - try { - chain.nextEvent(); - fail("NoSuchElementElementException expected"); - } - catch (NoSuchElementException e) { - // expected - } - } - - private void testEvent(XMLEvent expected) throws XMLStreamException { - assertEquals("1st peek returns invalid result", expected, chain.peek()); - assertEquals("2nd peek returns invalid result", expected, chain.peek()); - assertTrue("hasNext returns false", chain.hasNext()); - assertEquals("nextEvent returns invalid result", expected, chain.nextEvent()); - } - -} diff --git a/sandbox/src/test/resources/org/springframework/ws/transport/tcp/applicationContext.xml b/sandbox/src/test/resources/org/springframework/ws/transport/tcp/applicationContext.xml deleted file mode 100644 index 29c90894..00000000 --- a/sandbox/src/test/resources/org/springframework/ws/transport/tcp/applicationContext.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - org.springframework.context.Lifecycle - - - - - - - - diff --git a/sandbox/src/test/resources/org/springframework/ws/transport/tcp/tcp-applicationContext.xml b/sandbox/src/test/resources/org/springframework/ws/transport/tcp/tcp-applicationContext.xml deleted file mode 100644 index 16f1d53b..00000000 --- a/sandbox/src/test/resources/org/springframework/ws/transport/tcp/tcp-applicationContext.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file