org.apache.cxf.aegis.type.encoded.SoapEncodingUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cxf-bundle-minimal Show documentation
Show all versions of cxf-bundle-minimal Show documentation
Apache CXF Minimal Bundle Jar
/**
* 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.cxf.aegis.type.encoded;
import javax.xml.namespace.QName;
import org.apache.cxf.aegis.xml.MessageReader;
import org.apache.cxf.aegis.xml.MessageWriter;
import org.apache.cxf.binding.soap.Soap12;
/**
* Utilitiy methods for SOAP reading and writing encoded mesages.
*/
public final class SoapEncodingUtil {
private static final String SOAP_ENCODING_NS_1_2 = Soap12.getInstance().getSoapEncodingStyle();
private static final QName SOAP_ENCODING_ID_1_2 = new QName(SOAP_ENCODING_NS_1_2, "id");
private static final QName SOAP_ENCODING_ID_1_1 = new QName("id");
private static final QName SOAP_ENCODING_REF_1_2 = new QName(SOAP_ENCODING_NS_1_2, "ref");
private static final QName SOAP_ENCODING_REF_1_1 = new QName("href");
private SoapEncodingUtil() {
}
/**
* Reads the SOAP 1.2 or SOAP 1.1 id attribute.
*
* @param reader the stream to read; must not be null
* @return the id or null of neither attribute was present
*/
public static String readId(MessageReader reader) {
String id = readAttributeValue(reader, SOAP_ENCODING_ID_1_2);
if (id == null) {
id = readAttributeValue(reader, SOAP_ENCODING_ID_1_1);
}
return id;
}
/**
* Writes a SOAP 1.1 id attribute.
*
* @param writer the stream to which the id should be written; must not be null
* @param id the id to write; must not be null
*/
public static void writeId(MessageWriter writer, String id) {
if (id == null) {
throw new NullPointerException("id is null");
}
writeAttribute(writer, SOAP_ENCODING_ID_1_1, id);
}
/**
* Reads the SOAP 1.2 or SOAP 1.1 reference attribute.
*
* @param reader the stream to read; must not be null
* @return the reference id or null of neither attribute was present
*/
public static String readRef(MessageReader reader) {
String ref = readAttributeValue(reader, SOAP_ENCODING_REF_1_2);
if (ref == null) {
ref = readAttributeValue(reader, SOAP_ENCODING_REF_1_1);
}
return ref;
}
/**
* Writes a SOAP 1.1 ref attribute.
*
* @param writer the stream to which the id should be written; must not be null
* @param refId the reference id to write; must not be null
*/
public static void writeRef(MessageWriter writer, String refId) {
if (refId == null) {
throw new NullPointerException("refId is null");
}
writeAttribute(writer, SOAP_ENCODING_REF_1_1, refId);
}
public static String readAttributeValue(MessageReader reader, QName name) {
if (reader == null) {
throw new NullPointerException("reader is null");
}
if (name == null) {
throw new NullPointerException("name is null");
}
MessageReader attributeReader = reader.getAttributeReader(name);
if (attributeReader != null) {
String value = attributeReader.getValue();
if (value != null) {
return value;
}
}
return null;
}
public static void writeAttribute(MessageWriter writer, QName name, String value) {
if (writer == null) {
throw new NullPointerException("writer is null");
}
if (name == null) {
throw new NullPointerException("name is null");
}
if (value == null) {
throw new NullPointerException("value is null");
}
MessageWriter attributeWriter = writer.getAttributeWriter(name);
attributeWriter.writeValue(value);
attributeWriter.close();
}
}