Package org.apache.sandesha2.util

Source Code of org.apache.sandesha2.util.MsgInitializer

/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed 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.sandesha2.util;

import org.apache.axis2.context.MessageContext;
import org.apache.sandesha2.Sandesha2Constants;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.wsrm.RMElements;

/**
* This class is used to create an RMMessageContext out of an MessageContext.
*
* @author Chamikara Jayalath <chamikaramj@gmail.com>
*/

public class MsgInitializer {

  public static RMMsgContext initializeMessage(MessageContext ctx)
      throws SandeshaException {
    RMMsgContext rmMsgCtx = new RMMsgContext(ctx);
    populateRMMsgContext(ctx, rmMsgCtx);
    validateMessage(rmMsgCtx);
    return rmMsgCtx;
  }

  /**
   * Adds the message parts the the RMMessageContext.
   *
   * @param msgCtx
   * @param rmMsgContext
   */
  private static void populateRMMsgContext(MessageContext msgCtx,
      RMMsgContext rmMsgContext) {

    RMElements elements = new RMElements();
    elements.fromSOAPEnvelope(msgCtx.getEnvelope());

    if (elements.getCreateSequence() != null)
      rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ,
          elements.getCreateSequence());

    if (elements.getCreateSequenceResponse() != null)
      rmMsgContext.setMessagePart(
          Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE, elements
              .getCreateSequenceResponse());

    if (elements.getSequence() != null)
      rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.SEQUENCE,
          elements.getSequence());

    if (elements.getSequenceAcknowledgement() != null)
      rmMsgContext.setMessagePart(
          Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT, elements
              .getSequenceAcknowledgement());

    if (elements.getTerminateSequence() != null)
      rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ,
          elements.getTerminateSequence());

    if (elements.getAckRequested() != null)
      rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST,
          elements.getAckRequested());

  }

  /**
   * This is used to validate the message.
   * Also set an Message type. Possible types are given in the Sandesha2Constants.MessageTypes interface.
   *
   * @param rmMsgCtx
   * @return
   * @throws SandeshaException
   */
  private static boolean validateMessage(RMMsgContext rmMsgCtx)
      throws SandeshaException {

    //Setting message type.
    if (rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ) != null)
      rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ);
    else if (rmMsgCtx
        .getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE) != null)
      rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ_RESPONSE);
    else if (rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ) != null)
      rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ);
    else if (rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE) != null)
      rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
    else if (rmMsgCtx
        .getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT) != null)
      rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK);
    else
      rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.UNKNOWN);

    return true;
  }

}
TOP

Related Classes of org.apache.sandesha2.util.MsgInitializer

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.