You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2014/07/09 23:20:45 UTC
svn commit: r1609306 - in /webservices/axiom/trunk/testing: ./
saaj-testsuite/ saaj-testsuite/src/ saaj-testsuite/src/main/
saaj-testsuite/src/main/java/ saaj-testsuite/src/main/java/org/
saaj-testsuite/src/main/java/org/apache/ saaj-testsuite/src/main...
Author: veithen
Date: Wed Jul 9 21:20:44 2014
New Revision: 1609306
URL: http://svn.apache.org/r1609306
Log:
Add a SAAJ test suite. This will be used at a later stage in the project. In the meantime it will be useful to test Axis2's SAAJ implementation.
Added:
webservices/axiom/trunk/testing/saaj-testsuite/ (with props)
webservices/axiom/trunk/testing/saaj-testsuite/pom.xml (with props)
webservices/axiom/trunk/testing/saaj-testsuite/src/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/FactorySelector.java (with props)
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJImplementation.java (with props)
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestCase.java (with props)
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestSuiteBuilder.java (with props)
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SOAPSpecAdapterFactory.java (with props)
webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/TestExamineMustUnderstandHeaderElements.java (with props)
webservices/axiom/trunk/testing/saaj-testsuite/src/main/resources/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/resources/META-INF/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/resources/META-INF/services/
webservices/axiom/trunk/testing/saaj-testsuite/src/main/resources/META-INF/services/org.apache.axiom.ts.soap.AdapterFactory
webservices/axiom/trunk/testing/saaj-testsuite/src/test/
webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/
webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/
webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/
webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/
webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/ts/
webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/ts/saaj/
webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/ts/saaj/SAAJRITest.java (with props)
webservices/axiom/trunk/testing/saaj-testsuite/src/test/resources/
webservices/axiom/trunk/testing/soap-testsuite/src/main/resources/test-message/set/must-understand.xml (with props)
Modified:
webservices/axiom/trunk/testing/pom.xml
webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/ConvertedTestMessage.java
webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPSpec.java
webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/TestMessageSet.java
Modified: webservices/axiom/trunk/testing/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/pom.xml?rev=1609306&r1=1609305&r2=1609306&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/pom.xml (original)
+++ webservices/axiom/trunk/testing/pom.xml Wed Jul 9 21:20:44 2014
@@ -30,6 +30,7 @@
<modules>
<module>dom-testsuite</module>
<module>jaxen-testsuite</module>
+ <module>saaj-testsuite</module>
<module>soap-testsuite</module>
<module>spring-ws-testsuite</module>
</modules>
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jul 9 21:20:44 2014
@@ -0,0 +1,4 @@
+.settings
+target
+.classpath
+.project
Added: webservices/axiom/trunk/testing/saaj-testsuite/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/pom.xml?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/pom.xml (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/pom.xml Wed Jul 9 21:20:44 2014
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you 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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.ws.commons.axiom</groupId>
+ <artifactId>testing</artifactId>
+ <version>1.2.15-SNAPSHOT</version>
+ </parent>
+ <artifactId>saaj-testsuite</artifactId>
+ <name>SAAJ Test Suite</name>
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>axiom-testutils</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>soap-testsuite</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.messaging.saaj</groupId>
+ <artifactId>saaj-impl</artifactId>
+ <version>1.3.10</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/FactorySelector.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/FactorySelector.java?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/FactorySelector.java (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/FactorySelector.java Wed Jul 9 21:20:44 2014
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.axiom.ts.saaj;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
+
+import org.apache.axiom.ts.soap.AdapterType;
+import org.apache.axiom.ts.soap.SOAPSpec;
+
+/**
+ * {@link SOAPSpec} adapter that allows to retrieve the {@link MessageFactory} or
+ * {@link SOAPFactory} corresponding to the SOAP version from a {@link SAAJImplementation}.
+ */
+@AdapterType
+public interface FactorySelector {
+ MessageFactory newMessageFactory(SAAJImplementation saajImplementation, boolean dynamic) throws SOAPException;
+}
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/FactorySelector.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJImplementation.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJImplementation.java?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJImplementation.java (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJImplementation.java Wed Jul 9 21:20:44 2014
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.axiom.ts.saaj;
+
+import java.lang.reflect.Method;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SAAJMetaFactory;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
+
+public final class SAAJImplementation {
+ private static final Method newMessageFactoryMethod;
+ private static final Method newSOAPFactoryMethod;
+
+ static {
+ try {
+ newMessageFactoryMethod = SAAJMetaFactory.class.getDeclaredMethod("newMessageFactory", String.class);
+ newMessageFactoryMethod.setAccessible(true);
+ newSOAPFactoryMethod = SAAJMetaFactory.class.getDeclaredMethod("newMessageFactory", String.class);
+ newSOAPFactoryMethod.setAccessible(true);
+ } catch (Exception ex) {
+ throw new Error(ex);
+ }
+ }
+
+ private final SAAJMetaFactory metaFactory;
+
+ public SAAJImplementation(SAAJMetaFactory metaFactory) {
+ this.metaFactory = metaFactory;
+ }
+
+ public MessageFactory newMessageFactory(String protocol) throws SOAPException {
+ try {
+ return (MessageFactory)newMessageFactoryMethod.invoke(metaFactory, protocol);
+ } catch (Exception ex) {
+ throw new Error(ex);
+ }
+ }
+
+ public SOAPFactory newSOAPFactory(String protocol) throws SOAPException {
+ try {
+ return (SOAPFactory)newSOAPFactoryMethod.invoke(metaFactory, protocol);
+ } catch (Exception ex) {
+ throw new Error(ex);
+ }
+ }
+}
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJImplementation.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestCase.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestCase.java?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestCase.java (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestCase.java Wed Jul 9 21:20:44 2014
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.axiom.ts.saaj;
+
+import org.apache.axiom.testutils.suite.MatrixTestCase;
+
+public abstract class SAAJTestCase extends MatrixTestCase {
+ protected final SAAJImplementation saajImplementation;
+
+ public SAAJTestCase(SAAJImplementation saajImplementation) {
+ this.saajImplementation = saajImplementation;
+ }
+}
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestSuiteBuilder.java?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestSuiteBuilder.java (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestSuiteBuilder.java Wed Jul 9 21:20:44 2014
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.axiom.ts.saaj;
+
+import javax.xml.soap.SAAJMetaFactory;
+
+import org.apache.axiom.testutils.suite.MatrixTestSuiteBuilder;
+import org.apache.axiom.ts.soap.SOAPSpec;
+
+public class SAAJTestSuiteBuilder extends MatrixTestSuiteBuilder {
+ private final SAAJImplementation saajImplementation;
+
+ public SAAJTestSuiteBuilder(SAAJMetaFactory metaFactory) {
+ saajImplementation = new SAAJImplementation(metaFactory);
+ }
+
+ @Override
+ protected void addTests() {
+ addTest(new TestExamineMustUnderstandHeaderElements(saajImplementation, SOAPSpec.SOAP11, false));
+ addTest(new TestExamineMustUnderstandHeaderElements(saajImplementation, SOAPSpec.SOAP12, false));
+ addTest(new TestExamineMustUnderstandHeaderElements(saajImplementation, SOAPSpec.SOAP11, true));
+ addTest(new TestExamineMustUnderstandHeaderElements(saajImplementation, SOAPSpec.SOAP12, true));
+ }
+}
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SAAJTestSuiteBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SOAPSpecAdapterFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SOAPSpecAdapterFactory.java?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SOAPSpecAdapterFactory.java (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SOAPSpecAdapterFactory.java Wed Jul 9 21:20:44 2014
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.axiom.ts.saaj;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPException;
+
+import org.apache.axiom.ts.soap.AdapterFactory;
+import org.apache.axiom.ts.soap.Adapters;
+import org.apache.axiom.ts.soap.SOAPSpec;
+
+public class SOAPSpecAdapterFactory implements AdapterFactory<SOAPSpec> {
+ public void createAdapters(SOAPSpec spec, Adapters adapters) {
+ if (spec == SOAPSpec.SOAP11) {
+ adapters.add(new FactorySelector() {
+ @Override
+ public MessageFactory newMessageFactory(SAAJImplementation saajImplementation,
+ boolean dynamic) throws SOAPException {
+ return saajImplementation.newMessageFactory(dynamic
+ ? SOAPConstants.DYNAMIC_SOAP_PROTOCOL
+ : SOAPConstants.SOAP_1_1_PROTOCOL);
+ }
+ });
+ } else if (spec == SOAPSpec.SOAP12) {
+ adapters.add(new FactorySelector() {
+ @Override
+ public MessageFactory newMessageFactory(SAAJImplementation saajImplementation,
+ boolean dynamic) throws SOAPException {
+ return saajImplementation.newMessageFactory(dynamic
+ ? SOAPConstants.DYNAMIC_SOAP_PROTOCOL
+ : SOAPConstants.SOAP_1_2_PROTOCOL);
+ }
+ });
+ }
+ }
+}
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/SOAPSpecAdapterFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/TestExamineMustUnderstandHeaderElements.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/TestExamineMustUnderstandHeaderElements.java?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/TestExamineMustUnderstandHeaderElements.java (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/TestExamineMustUnderstandHeaderElements.java Wed Jul 9 21:20:44 2014
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.axiom.ts.saaj;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.MimeHeaders;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+
+import org.apache.axiom.ts.soap.SOAPSpec;
+import org.apache.axiom.ts.soap.TestMessageSet;
+
+public class TestExamineMustUnderstandHeaderElements extends SAAJTestCase {
+ private final SOAPSpec spec;
+ private final boolean dynamic;
+
+ public TestExamineMustUnderstandHeaderElements(SAAJImplementation saajImplementation, SOAPSpec spec, boolean dynamic) {
+ super(saajImplementation);
+ this.spec = spec;
+ this.dynamic = dynamic;
+ addTestParameter("spec", spec.getName());
+ addTestParameter("dynamic", dynamic);
+ }
+
+ @Override
+ protected void runTest() throws Throwable {
+ MessageFactory messageFactory = spec.getAdapter(FactorySelector.class).newMessageFactory(saajImplementation, dynamic);
+ MimeHeaders mimeHeaders = new MimeHeaders();
+ mimeHeaders.addHeader("Content-Type", spec.getContentType());
+ InputStream in = TestMessageSet.MUST_UNDERSTAND.getMessage(spec).getInputStream();
+ try {
+ SOAPMessage message = messageFactory.createMessage(mimeHeaders, in);
+ SOAPHeader header = message.getSOAPHeader();
+ Iterator it = header.examineMustUnderstandHeaderElements(null);
+ assertTrue(it.hasNext());
+ assertTrue(it.next() instanceof SOAPHeaderElement);
+ assertFalse(it.hasNext());
+ } finally {
+ in.close();
+ }
+ }
+}
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/src/main/java/org/apache/axiom/ts/saaj/TestExamineMustUnderstandHeaderElements.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: webservices/axiom/trunk/testing/saaj-testsuite/src/main/resources/META-INF/services/org.apache.axiom.ts.soap.AdapterFactory
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/src/main/resources/META-INF/services/org.apache.axiom.ts.soap.AdapterFactory?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/src/main/resources/META-INF/services/org.apache.axiom.ts.soap.AdapterFactory (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/src/main/resources/META-INF/services/org.apache.axiom.ts.soap.AdapterFactory Wed Jul 9 21:20:44 2014
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+org.apache.axiom.ts.saaj.SOAPSpecAdapterFactory
Added: webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/ts/saaj/SAAJRITest.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/ts/saaj/SAAJRITest.java?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/ts/saaj/SAAJRITest.java (added)
+++ webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/ts/saaj/SAAJRITest.java Wed Jul 9 21:20:44 2014
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.axiom.ts.saaj;
+
+import com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class SAAJRITest extends TestCase {
+ public static TestSuite suite() throws Exception {
+ return new SAAJTestSuiteBuilder(new SAAJMetaFactoryImpl()).build();
+ }
+}
Propchange: webservices/axiom/trunk/testing/saaj-testsuite/src/test/java/org/apache/axiom/ts/saaj/SAAJRITest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/ConvertedTestMessage.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/ConvertedTestMessage.java?rev=1609306&r1=1609305&r2=1609306&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/ConvertedTestMessage.java (original)
+++ webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/ConvertedTestMessage.java Wed Jul 9 21:20:44 2014
@@ -28,6 +28,7 @@ import javax.xml.transform.TransformerFa
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
+import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -80,7 +81,17 @@ final class ConvertedTestMessage extends
}
element = (Element)element.getOwnerDocument().renameNode(element, newName.getNamespaceURI(),
prefix == null ? newName.getLocalPart() : prefix + ":" + newName.getLocalPart());
- if (type == SOAPFaultChild.CODE) {
+ if (type == SOAPElementType.HEADER) {
+ NodeList children = element.getChildNodes();
+ for (int i=0; i<children.getLength(); i++) {
+ Node child = children.item(i);
+ if (child.getNodeType() == Node.ELEMENT_NODE) {
+ Element headerBlock = (Element)child;
+ processBooleanAttribute(headerBlock, BooleanAttribute.MUST_UNDERSTAND);
+ processBooleanAttribute(headerBlock, BooleanAttribute.RELAY);
+ }
+ }
+ } else if (type == SOAPFaultChild.CODE) {
Element value = getChild(element, SOAPFaultChild.VALUE);
// TODO: should translate fault code as well
element.setTextContent(value.getTextContent());
@@ -107,6 +118,28 @@ final class ConvertedTestMessage extends
}
}
+ private static void processBooleanAttribute(Element headerBlock, BooleanAttribute booleanAttribute) {
+ String localName = booleanAttribute.getName();
+ Attr attr = headerBlock.getAttributeNodeNS(SOAPSpec.SOAP12.getEnvelopeNamespaceURI(), localName);
+ if (attr != null) {
+ if (booleanAttribute.isSupported(SOAPSpec.SOAP11)) {
+ String prefix = attr.getPrefix();
+ attr = (Attr)attr.getOwnerDocument().renameNode(attr, SOAPSpec.SOAP11.getEnvelopeNamespaceURI(), prefix + ":" + localName);
+ String stringValue = attr.getValue();
+ boolean value = false;
+ for (BooleanLiteral booleanLiteral : SOAPSpec.SOAP12.getBooleanLiterals()) {
+ if (stringValue.equals(booleanLiteral.getLexicalRepresentation())) {
+ value = booleanLiteral.getValue();
+ break;
+ }
+ }
+ attr.setValue(SOAPSpec.SOAP11.getCanonicalRepresentation(value));
+ } else {
+ headerBlock.removeAttributeNode(attr);
+ }
+ }
+ }
+
private static boolean hasName(Element element, QName name) {
String namespaceURI = element.getNamespaceURI();
if (namespaceURI == null) {
Modified: webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPSpec.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPSpec.java?rev=1609306&r1=1609305&r2=1609306&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPSpec.java (original)
+++ webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPSpec.java Wed Jul 9 21:20:44 2014
@@ -33,7 +33,9 @@ import javax.xml.validation.SchemaFactor
* Describes the characteristics of a given SOAP version.
*/
public abstract class SOAPSpec extends Adaptable {
- public static final SOAPSpec SOAP11 = new SOAPSpec("soap11", "http://schemas.xmlsoap.org/soap/envelope/",
+ public static final SOAPSpec SOAP11 = new SOAPSpec("soap11",
+ "text/xml",
+ "http://schemas.xmlsoap.org/soap/envelope/",
new BooleanLiteral[] { BooleanLiteral.ONE, BooleanLiteral.ZERO },
new QName("faultcode"),
null,
@@ -56,7 +58,9 @@ public abstract class SOAPSpec extends A
}
};
- public static final SOAPSpec SOAP12 = new SOAPSpec("soap12", "http://www.w3.org/2003/05/soap-envelope",
+ public static final SOAPSpec SOAP12 = new SOAPSpec("soap12",
+ "application/soap+xml",
+ "http://www.w3.org/2003/05/soap-envelope",
new BooleanLiteral[] { BooleanLiteral.TRUE, BooleanLiteral.FALSE, BooleanLiteral.ONE, BooleanLiteral.ZERO },
new QName("http://www.w3.org/2003/05/soap-envelope", "Code"),
new QName("http://www.w3.org/2003/05/soap-envelope", "Value"),
@@ -80,6 +84,7 @@ public abstract class SOAPSpec extends A
};
private final String name;
+ private final String contentType;
private final String envelopeNamespaceURI;
private final BooleanLiteral[] booleanLiterals;
private final QName envelopeQName;
@@ -100,12 +105,13 @@ public abstract class SOAPSpec extends A
private final String[] schemaResources;
private Schema schema;
- public SOAPSpec(String name, String envelopeNamespaceURI, BooleanLiteral[] booleanLiterals,
+ public SOAPSpec(String name, String contentType, String envelopeNamespaceURI, BooleanLiteral[] booleanLiterals,
QName faultCodeQName, QName faultValueQName, QName faultSubCodeQName, QName faultReasonQName,
QName faultTextQName, QName faultNodeQName, QName faultRoleQName, QName faultDetailQName,
String nextRoleURI, QName senderFaultCode, QName receiverFaultCode,
String[] schemaResources) {
this.name = name;
+ this.contentType = contentType;
this.envelopeNamespaceURI = envelopeNamespaceURI;
this.booleanLiterals = booleanLiterals;
envelopeQName = new QName(envelopeNamespaceURI, "Envelope");
@@ -138,6 +144,10 @@ public abstract class SOAPSpec extends A
*/
public abstract SOAPSpec getAltSpec();
+ public final String getContentType() {
+ return contentType;
+ }
+
public final String getEnvelopeNamespaceURI() {
return envelopeNamespaceURI;
}
Modified: webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/TestMessageSet.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/TestMessageSet.java?rev=1609306&r1=1609305&r2=1609306&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/TestMessageSet.java (original)
+++ webservices/axiom/trunk/testing/soap-testsuite/src/main/java/org/apache/axiom/ts/soap/TestMessageSet.java Wed Jul 9 21:20:44 2014
@@ -58,6 +58,11 @@ public final class TestMessageSet extend
*/
public static final TestMessageSet CUSTOM_ROLE_FAULT = new TestMessageSet("custom-role-fault");
+ /**
+ * A SOAP request with a single mustUnderstand header.
+ */
+ public static final TestMessageSet MUST_UNDERSTAND = new TestMessageSet("must-understand");
+
private final TestMessage soap11Message;
private final TestMessage soap12Message;
Added: webservices/axiom/trunk/testing/soap-testsuite/src/main/resources/test-message/set/must-understand.xml
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/soap-testsuite/src/main/resources/test-message/set/must-understand.xml?rev=1609306&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/soap-testsuite/src/main/resources/test-message/set/must-understand.xml (added)
+++ webservices/axiom/trunk/testing/soap-testsuite/src/main/resources/test-message/set/must-understand.xml Wed Jul 9 21:20:44 2014
@@ -0,0 +1,10 @@
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope">
+ <SOAP-ENV:Header>
+ <t:Transaction xmlns:t="urn:tx" SOAP-ENV:mustUnderstand="true">5</t:Transaction>
+ </SOAP-ENV:Header>
+ <SOAP-ENV:Body>
+ <m:GetLastTradePrice xmlns:m="urn:trade">
+ <symbol>DEF</symbol>
+ </m:GetLastTradePrice>
+ </SOAP-ENV:Body>
+</SOAP-ENV:Envelope>
\ No newline at end of file
Propchange: webservices/axiom/trunk/testing/soap-testsuite/src/main/resources/test-message/set/must-understand.xml
------------------------------------------------------------------------------
svn:eol-style = native