| /* |
| * 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.axis2.jaxws.providerapi; |
| |
| import javax.imageio.IIOImage; |
| import javax.imageio.ImageWriter; |
| import javax.imageio.stream.ImageOutputStream; |
| import javax.xml.soap.MessageFactory; |
| import javax.xml.soap.SOAPConstants; |
| import javax.xml.soap.SOAPException; |
| import javax.xml.soap.SOAPMessage; |
| import javax.xml.transform.Result; |
| import javax.xml.transform.Source; |
| import javax.xml.transform.Transformer; |
| import javax.xml.transform.TransformerFactory; |
| import javax.xml.transform.stream.StreamResult; |
| import javax.xml.transform.stream.StreamSource; |
| import java.awt.*; |
| import java.awt.image.BufferedImage; |
| import java.io.OutputStream; |
| import java.io.StringReader; |
| import java.io.StringWriter; |
| import java.util.Iterator; |
| |
| /** |
| * This will serve as a helper class for attachments utility methods. All methods |
| * are intended to be referenced staticly. |
| * |
| */ |
| public class AttachmentUtil { |
| public static final String SOAP11_NAMESPACE = "http://schemas.xmlsoap.org/soap/envelope"; |
| public static final String SOAP12_NAMESPACE = "http://www.w3.org/2003/05/soap-envelope"; |
| |
| public static final String MU_TEXT = "soap message mustUnderstand header request"; |
| public static final String UNDERSTOOD_MU_TEXT = "understood headers soap message mustUnderstand header request"; |
| public static final String TEXT = "soap message request"; |
| public static final String VALUE = "value"; |
| public static final String VALUE_NODE = "<"+VALUE+">"; |
| public static final String VALUE_NODE_SLASH = "</"+VALUE+">"; |
| public static final String XML_HEADER = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; |
| public static final String MUHEADER_CLIENT = "ns1:muclient"; |
| public static final String MUHEADER_SERVER = "ns1:muserver"; |
| public static final String MUHEADER_CLIENT_UNDERSTOOD = "ns1:muclientunderstood"; |
| public static final String MUHEADER_SERVER_UNDERSTOOD = "ns1:muserverunderstood"; |
| public static final String msgEnvMU = |
| "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" + |
| "<soapenv:Header>" + |
| "<"+MUHEADER_CLIENT+" xmlns:ns1=\"http://ws.apache.org/axis2\" soapenv:mustUnderstand=\"1\">MUinfo</"+MUHEADER_CLIENT+">" + |
| "</soapenv:Header>" + |
| "<soapenv:Body>" + |
| "<ns1:invoke xmlns:ns1=\"http://ws.apache.org/axis2\">" + |
| VALUE_NODE + |
| MU_TEXT + |
| VALUE_NODE_SLASH + |
| "</ns1:invoke>" + |
| "</soapenv:Body>" + |
| "</soapenv:Envelope>"; |
| |
| public static final String msgEnv = |
| "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" + |
| "<soapenv:Body>" + |
| "<ns1:invoke xmlns:ns1=\"http://ws.apache.org/axis2\">" + |
| VALUE_NODE + |
| MU_TEXT + |
| VALUE_NODE_SLASH + |
| "</ns1:invoke>" + |
| "</soapenv:Body>" + |
| "</soapenv:Envelope>"; |
| |
| public static final String msgEnvPlain = |
| "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" + |
| "<soapenv:Body>" + |
| "<ns1:invoke xmlns:ns1=\"http://ws.apache.org/axis2\">" + |
| VALUE_NODE + |
| TEXT + |
| VALUE_NODE_SLASH + |
| "</ns1:invoke>" + |
| "</soapenv:Body>" + |
| "</soapenv:Envelope>"; |
| |
| public static final String msgEnvMU_understood = |
| "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" + |
| "<soapenv:Header>" + |
| "<"+MUHEADER_CLIENT_UNDERSTOOD+" xmlns:ns1=\"http://ws.apache.org/axis2\" soapenv:mustUnderstand=\"1\">MUinfo</"+MUHEADER_CLIENT_UNDERSTOOD+">" + |
| "</soapenv:Header>" + |
| "<soapenv:Body>" + |
| "<ns1:invoke xmlns:ns1=\"http://ws.apache.org/axis2\">" + |
| VALUE_NODE + |
| UNDERSTOOD_MU_TEXT + |
| VALUE_NODE_SLASH + |
| "</ns1:invoke>" + |
| "</soapenv:Body>" + |
| "</soapenv:Envelope>"; |
| |
| public static final String msgEnv_understood = |
| "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" + |
| "<soapenv:Body>" + |
| "<ns1:invoke xmlns:ns1=\"http://ws.apache.org/axis2\">" + |
| VALUE_NODE + |
| UNDERSTOOD_MU_TEXT + |
| VALUE_NODE_SLASH + |
| "</ns1:invoke>" + |
| "</soapenv:Body>" + |
| "</soapenv:Envelope>"; |
| |
| /** |
| * Store a given image to an Image output stream |
| * @param mimeType |
| * @param image |
| * @param os |
| * @throws Exception |
| */ |
| public static void storeImage(String mimeType, Image image, OutputStream os) throws Exception { |
| ImageWriter imageWriter = null; |
| BufferedImage bufferedImage = (BufferedImage) image; |
| |
| Iterator iterator = javax.imageio.ImageIO.getImageWritersByMIMEType(mimeType); |
| if (iterator.hasNext()) { |
| imageWriter = (ImageWriter) iterator.next(); |
| } |
| ImageOutputStream ios = javax.imageio.ImageIO.createImageOutputStream(os); |
| imageWriter.setOutput(ios); |
| |
| imageWriter.write(new IIOImage(bufferedImage, null, null)); |
| ios.flush(); |
| imageWriter.dispose(); |
| } |
| |
| /** |
| * Adapter method used to convert any type of Source to a String |
| * |
| * @param input |
| * @return |
| */ |
| public static String toString(Source input) { |
| |
| if (input == null) |
| return null; |
| |
| StringWriter writer = new StringWriter(); |
| Transformer trasformer; |
| try { |
| trasformer = TransformerFactory.newInstance().newTransformer(); |
| Result result = new StreamResult(writer); |
| trasformer.transform(input, result); |
| } catch (Exception e) { |
| return null; |
| } |
| |
| return writer.getBuffer().toString(); |
| } |
| |
| /** |
| * Adapter method used to convert any type of SOAPMessage to a String |
| * |
| * @param input |
| * @return |
| */ |
| public static String toString(SOAPMessage input) { |
| |
| if (input == null) |
| return null; |
| |
| Source result = null; |
| try { |
| result = input.getSOAPPart().getContent(); |
| } catch (SOAPException e) { |
| e.printStackTrace(); |
| } |
| |
| return toString(result); |
| } |
| |
| /** |
| * Method used to convert Strings to SOAPMessages |
| * |
| * @param msgString |
| * @return |
| */ |
| public static SOAPMessage toSOAPMessage(String msgString) { |
| |
| if (msgString == null) return null; |
| |
| SOAPMessage message = null; |
| try { |
| MessageFactory factory = null; |
| |
| // Force the usage of specific MesasgeFactories |
| if (msgString.indexOf(SOAP11_NAMESPACE) >= 0) { |
| factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); |
| } else { |
| factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); |
| } |
| message = factory.createMessage(); |
| message.getSOAPPart().setContent((Source) new StreamSource(new StringReader(msgString))); |
| message.saveChanges(); |
| } catch (SOAPException e) { |
| System.out.println("toSOAPMessage Exception encountered: " + e); |
| e.printStackTrace(); |
| } |
| return message; |
| } |
| |
| } |
| |