Package org.racsor.jmeter.flex.messaging.util

Source Code of org.racsor.jmeter.flex.messaging.util.UtilsFlexMessage

package org.racsor.jmeter.flex.messaging.util;

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.commons.lang3.StringUtils;

import com.thoughtworks.xstream.XStream;

import flex.messaging.io.MessageDeserializer;
import flex.messaging.io.MessageIOConstants;
import flex.messaging.io.MessageSerializer;
import flex.messaging.io.SerializationContext;
import flex.messaging.io.amf.ActionContext;
import flex.messaging.io.amf.ActionMessage;
import flex.messaging.io.amf.AmfMessageDeserializer;
import flex.messaging.io.amf.AmfMessageSerializer;
import flex.messaging.io.amf.AmfTrace;
import flex.messaging.io.amf.MessageBody;

/**
* Class to serialize and deserialize AMF request/response to xmlSerialization
*
* @author oruizs
*
*/
public class UtilsFlexMessage {
    ActionContext context;
    ActionMessage message;
    String targetURI = "";
    String responseURI = "";
    String content;

    public ActionMessage getMessage() {
  return message;
    }

    public void setMessage(ActionMessage message) {
  this.message = message;
    }

    SerializationContext dsContext;
    MessageDeserializer deserializer;
    AmfTrace trace;

    public UtilsFlexMessage() {
  trace = new AmfTrace();

  /**
   * CREATE A DESERIALIZER FOR SAMPLE AMF REQUEST
   */
  context = new ActionContext();
  message = new ActionMessage();
  content=new String();
  context.setRequestMessage(message);
  trace.startRequest("----------Deserializing AMF/HTTP request-----");
  dsContext = SerializationContext.getSerializationContext();
  dsContext.instantiateTypes = false;

  deserializer = new AmfMessageDeserializer();
    }

    public void parseInputStream(InputStream din) {
  try {
      deserializer.initialize(dsContext, din, trace);
      /**
       * RECORD TIME TO DESERIALIZE THE SAMPLE MESSAGE AS OUR TEST
       * METRIC...
       */

      long start = System.currentTimeMillis();

      deserializer.readMessage(message, context);

      long finish = System.currentTimeMillis();
      trace.endMessage();
      long duration = finish - start;

      /**
       * PRINT TRACE OUTPUT
       */
      System.out.print(trace.toString());
      System.out.println("AMF Deserialization Time: " + duration + "ms");
  } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
  }
    }

    public String updateFlexMessage(String from, String to) {
  content = messageToXML();
  content= StringUtils.replace(content, from, to);
  return content;
    }

    public void serializeMessage(String toFile,String contenido) {
  try {
      FileUtils.writeByteArrayToFile(new File(toFile), serializeMessage(contenido));
  } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
  }

    }
    public byte[] serializeMessage(String contenido) {
  try {
      ActionMessage requestMessage = new ActionMessage();
     
      ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
      MessageBody amfMessage = new MessageBody(targetURI, responseURI, new com.thoughtworks.xstream.XStream().fromXML(contenido));
      requestMessage.addBody(amfMessage);
      MessageSerializer amfMessageSerializer = new AmfMessageSerializer();
      amfMessageSerializer.initialize(dsContext, outBuffer, trace);
      amfMessageSerializer.writeMessage(requestMessage);
      return outBuffer.toByteArray();
  } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return null;
  }
 
    }

    public String messageToXML() {
  String content = "";

  ArrayList<MessageBody> messages = message.getBodies();
  for (MessageBody messageBody : messages) {
      targetURI = messageBody.getTargetURI();
      responseURI = messageBody.getResponseURI();

      content = new XStream().toXML(messageBody.getData());
      if (targetURI.endsWith(MessageIOConstants.RESULT_METHOD)) {
    content = new com.thoughtworks.xstream.XStream().toXML(messageBody.getData());
      } else if (targetURI.endsWith(MessageIOConstants.STATUS_METHOD)) {
    // String exMessage = "Server error";
    // HttpResponseInfo responseInfo = generateHttpResponseInfo();
    // ServerStatusException exception = new ServerStatusException(
    // exMessage, message.getData(), responseInfo );

    content = new com.thoughtworks.xstream.XStream().toXML(messageBody.getData());
    // throw exception;
      }
  }
  return content;
    }

}
TOP

Related Classes of org.racsor.jmeter.flex.messaging.util.UtilsFlexMessage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.