Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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.fastinfoset;
 
 
 import java.net.URL;
 
 public class FastInfosetPOXMessageFormatter implements MessageFormatter {
 
 	private static Log logger = LogFactory.getLog(FastInfosetMessageFormatter.class);

 
 	public String formatSOAPAction(MessageContext messageContext,
 			OMOutputFormat formatString soapAction) {
 
 		return null;
 	}

 
 	public byte[] getBytes(MessageContext messageContextOMOutputFormat format)
 			throws AxisFault {
 		//For POX drop the SOAP envelope and use the message body
 		OMElement element = messageContext.getEnvelope().getBody().getFirstElement();
 		
 		try {
 			//Creates StAX document serializer which actually implements the XMLStreamWriter
 			XMLStreamWriter streamWriter = new StAXDocumentSerializer(outStream);
 			//Since we drop the SOAP envelop we have to manually write the start document and the end document events
 			streamWriter.writeStartDocument();
 			element.serializeAndConsume(streamWriter);
 			streamWriter.writeEndDocument();
 			
 			return outStream.toByteArray();
 			
 		} catch (XMLStreamException xmlse) {
 			throw new AxisFault(xmlse.getMessage(), xmlse);
 		}
 	}

 
 	public String getContentType(MessageContext messageContext,
 			OMOutputFormat formatString soapAction) {
 		String contentType = (StringmessageContext.getProperty(..);
 		String encoding = format.getCharSetEncoding();
 		
 		//If the Content Type is not available with the property "Content Type" retrieve it from the property "Message Type"
 		if (contentType == null) {
 			contentType = (StringmessageContext.getProperty(..);
 		}
 
 		if (encoding != null) {
 			contentType += "; charset=" + encoding;
 		}
	        
		return contentType;
	}

Returns the target address to send the response FIXME This is very HTTP specific. What about other transport?

	public URL getTargetAddress(MessageContext messageContext,
			OMOutputFormat formatURL targetURLthrows AxisFault {
        String httpMethod =
            (StringmessageContext.getProperty(..);
        URL targetAddress = targetURL//Let's initialize to this
	    //if the http method is GET, parameters are attached to the target URL
	    if ((httpMethod != null)
	            && ...equalsIgnoreCase(httpMethod)) {
	        String param = getParam(messageContext);
	        if (param.length() > 0) {
	            String returnURLFile = targetURL.getFile() + "?" + param;
	            try {
	                targetAddress = 
	                	new URL(targetURL.getProtocol(), targetURL.getHost(), targetURL.getPort(), returnURLFile);
	            } catch (MalformedURLException murle) {
	            	.error(murle.getMessage());
	                throw new AxisFault(murle.getMessage(), murle);
	            }
	        }
	    }
	    
	    return targetAddress;
	}

	public void writeTo(MessageContext messageContextOMOutputFormat format,
			OutputStream outputStreamboolean preservethrows AxisFault {
		//For POX drop the SOAP envelope and use the message body
		OMElement element = messageContext.getEnvelope().getBody().getFirstElement();
		try {
			//Create the StAX document serializer
			XMLStreamWriter streamWriter = new StAXDocumentSerializer(outputStream);
			//Since we drop the SOAP envelop we have to manually write the start document and the end document events			
			streamWriter.writeStartDocument();
			if (preserve) {
				element.serialize(streamWriter);
else {
				element.serializeAndConsume(streamWriter);
			}
			streamWriter.writeEndDocument();
catch (XMLStreamException xmlse) {
			throw new AxisFault(xmlse.getMessage(), xmlse);
		}
	}

Construct URL parameters like, "param1=value1&param2=value2" FIXME This is very HTTP specific. What about other transports

Parameters:
messageContext
Returns:
Formatted URL parameters
    private String getParam(MessageContext messageContext) {
        
    	OMElement dataOut = messageContext.getEnvelope().getBody().getFirstElement();
        Iterator it = dataOut.getChildElements();
        StringBuffer paramBuffer = new StringBuffer();
 
        while (it.hasNext()) {
            OMElement element = (OMElementit.next();
            String parameter = element.getLocalName() + "=" + element.getText();
            paramBuffer.append(parameter);
            paramBuffer.append("&");
        }
        //We don't need a '&' at the end
        paramBuffer.deleteCharAt(paramBuffer.length() - 1);
        
        return paramBuffer.toString();
    }
New to GrepCode? Check out our FAQ X