Package org.jboss.ws.extensions.wsrm.jaxws

Source Code of org.jboss.ws.extensions.wsrm.jaxws.RMHandlerHelper

/*
* JBoss, Home of Professional Open Source.
* Copyright 2006, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.ws.extensions.wsrm.jaxws;

import java.util.Iterator;
import java.util.List;

import javax.xml.namespace.QName;

import org.jboss.ws.extensions.wsrm.RMFault;
import org.jboss.ws.extensions.wsrm.RMSequence;
import org.jboss.ws.extensions.wsrm.common.RMHelper;
import org.jboss.ws.extensions.wsrm.protocol.RMConstants;
import org.jboss.ws.extensions.wsrm.protocol.RMMessageFactory;
import org.jboss.ws.extensions.wsrm.protocol.RMProvider;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMAckRequested;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMCloseSequence;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMCloseSequenceResponse;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMCreateSequence;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMCreateSequenceResponse;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMSequenceAcknowledgement;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMSequenceFault;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMSerializable;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMTerminateSequence;
import org.jboss.ws.extensions.wsrm.protocol.spi.RMTerminateSequenceResponse;

/**
* Handler helper
*
* @author richard.opalka@jboss.com
*
* @since Dec 13, 2007
*/
public final class RMHandlerHelper
{

   private static final RMMessageFactory rmFactory = RMProvider.get().getMessageFactory();
   private static final RMConstants rmConstants = RMProvider.get().getConstants();
  
   public static RMSerializable getMessage(QName msgQN)
   {
      if (rmConstants.getCreateSequenceQName().equals(msgQN))
      {
         return rmFactory.newCreateSequence();
      }
      if (rmConstants.getCreateSequenceResponseQName().equals(msgQN))
      {
         return rmFactory.newCreateSequenceResponse();
      }
      if (rmConstants.getCloseSequenceQName().equals(msgQN))
      {
         return rmFactory.newCloseSequence();
      }
      if (rmConstants.getCloseSequenceResponseQName().equals(msgQN))
      {
         return rmFactory.newCloseSequenceResponse();
      }
      if (rmConstants.getTerminateSequenceQName().equals(msgQN))
      {
         return rmFactory.newTerminateSequence();
      }
      if (rmConstants.getTerminateSequenceResponseQName().equals(msgQN))
      {
         return rmFactory.newTerminateSequenceResponse();
      }
      if (rmConstants.getSequenceAcknowledgementQName().equals(msgQN))
      {
         return rmFactory.newSequenceAcknowledgement();
      }
      if (rmConstants.getSequenceQName().equals(msgQN))
      {
         return rmFactory.newSequence();
      }
      if (rmConstants.getAckRequestedQName().equals(msgQN))
      {
         return rmFactory.newAckRequested();
      }
           
      throw new IllegalArgumentException();
   }
  
   public static RMSerializable prepareData(QName msgQN, List<QName> outMsgs, RMSequence seq)
   {
      if (outMsgs.contains(msgQN))
      {
         if (rmConstants.getSequenceQName().equals(msgQN))
         {
            return newSequence(seq);
         }
         if (rmConstants.getSequenceAcknowledgementQName().equals(msgQN))
         {
            return newSequenceAcknowledgement(seq);
         }
         if (rmConstants.getTerminateSequenceQName().equals(msgQN))
         {
            return newTerminateSequence(seq);
         }
         if (rmConstants.getTerminateSequenceResponseQName().equals(msgQN))
         {
            return newTerminateSequenceResponse(seq);
         }
         if (rmConstants.getCloseSequenceQName().equals(msgQN))
         {
            return newCloseSequence(seq);
         }
         if (rmConstants.getCloseSequenceResponseQName().equals(msgQN))
         {
            return newCloseSequenceResponse(seq);
         }
         if (rmConstants.getAckRequestedQName().equals(msgQN))
         {
            return newAckRequested(seq);
         }
         if (rmConstants.getCreateSequenceQName().equals(msgQN))
         {
            return newCreateSequence(seq);
         }
         if (rmConstants.getCreateSequenceResponseQName().equals(msgQN))
         {
            return newCreateSequenceResponse(seq);
         }
        
         throw new IllegalArgumentException(msgQN.toString());
      }
     
      return null;
   }
  
   public static RMSerializable prepareData(QName msgQN, List<QName> outMsgs, RMFault fault)
   {
      if (outMsgs.contains(msgQN))
      {
         if (rmConstants.getSequenceFaultQName().equals(msgQN))
         {
            return newSequenceFault(fault);
         }
        
         throw new IllegalArgumentException(msgQN.toString());
      }
     
      return null;
   }
  
   private static RMSerializable newSequenceFault(RMFault fault)
   {
      RMSequenceFault sequenceFault = rmFactory.newSequenceFault();
      sequenceFault.setDetail(fault);
      sequenceFault.setFaultCode(fault.getFaultCode().getSubcode());
      return sequenceFault;
   }
  
   private static RMSerializable newCreateSequence(RMSequence seq)
   {
      RMCreateSequence createSequence = rmFactory.newCreateSequence();
      createSequence.setAcksTo(seq.getAcksTo());
      return createSequence;
   }
  
   private static RMSerializable newCreateSequenceResponse(RMSequence seq)
   {
      RMCreateSequenceResponse createSequenceResponse = rmFactory.newCreateSequenceResponse();
      createSequenceResponse.setIdentifier(seq.getInboundId());
      createSequenceResponse.setExpires(RMHelper.longToDuration(seq.getDuration()));
      return createSequenceResponse;
   }
  
   private static RMSerializable newCloseSequenceResponse(RMSequence seq)
   {
      // construct CloseSequenceResponse object
      RMCloseSequenceResponse closeSequenceResponse = rmFactory.newCloseSequenceResponse();
      closeSequenceResponse.setIdentifier(seq.getInboundId());
      return closeSequenceResponse;
   }
  
   private static RMSerializable newCloseSequence(RMSequence seq)
   {
      // construct CloseSequenceResponse object
      RMCloseSequence closeSequence = rmFactory.newCloseSequence();
      closeSequence.setIdentifier(seq.getOutboundId());
      if (seq.getLastMessageNumber() > 0)
      {
         closeSequence.setLastMsgNumber(seq.getLastMessageNumber());
      }
      return closeSequence;
   }
  
   private static RMSerializable newTerminateSequence(RMSequence seq)
   {
      // construct CloseSequenceResponse object
      RMTerminateSequence terminateSequence = rmFactory.newTerminateSequence();
      terminateSequence.setIdentifier(seq.getOutboundId());
      if (seq.getLastMessageNumber() > 0)
      {
         terminateSequence.setLastMsgNumber(seq.getLastMessageNumber());
      }
      return terminateSequence;
   }
  
   private static RMSerializable newTerminateSequenceResponse(RMSequence seq)
   {
      // construct TerminateSequenceResponse object
      RMTerminateSequenceResponse terminateSequenceResponse = rmFactory.newTerminateSequenceResponse();
      terminateSequenceResponse.setIdentifier(seq.getInboundId());
      return terminateSequenceResponse;
   }
  
   private static RMSerializable newSequenceAcknowledgement(RMSequence seq)
   {
      // construct SequenceAcknowledgement object
      RMSequenceAcknowledgement sequenceAcknowledgement = rmFactory.newSequenceAcknowledgement();
      sequenceAcknowledgement.setIdentifier(seq.getInboundId());
      Iterator<Long> receivedMessages = seq.getReceivedInboundMessages().iterator();
      if (false == receivedMessages.hasNext())
      {
         sequenceAcknowledgement.setNone();
      }
      else
      {
         while (receivedMessages.hasNext())
         {
            long messageNo = receivedMessages.next();
            RMSequenceAcknowledgement.RMAcknowledgementRange range = sequenceAcknowledgement.newAcknowledgementRange();
            range.setLower(messageNo);
            range.setUpper(messageNo);
            sequenceAcknowledgement.addAcknowledgementRange(range);
         }
      }
     
      return sequenceAcknowledgement;
   }

   private static RMSerializable newAckRequested(RMSequence seq)
   {
      // construct AckRequested object
      RMAckRequested wsrmMsg = rmFactory.newAckRequested();
      wsrmMsg.setIdentifier(seq.getOutboundId());
      wsrmMsg.setMessageNumber(seq.getLastMessageNumber());
      return wsrmMsg;
   }

   private static RMSerializable newSequence(RMSequence seq)
   {
      // construct Sequence object
      org.jboss.ws.extensions.wsrm.protocol.spi.RMSequence sequence = rmFactory.newSequence();
      sequence.setIdentifier(seq.getOutboundId());
      sequence.setMessageNumber(seq.getLastMessageNumber());
      return sequence;
   }

}
TOP

Related Classes of org.jboss.ws.extensions.wsrm.jaxws.RMHandlerHelper

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.