Search in sources :

Example 81 with Identifier

use of org.apache.cxf.ws.rm.v200502.Identifier in project cxf by apache.

the class Servant method terminateSequence.

public Object terminateSequence(Message message) {
    LOG.fine("Terminating sequence");
    final ProtocolVariation protocol = RMContextUtils.getProtocolVariation(message);
    EncoderDecoder codec = protocol.getCodec();
    TerminateSequenceType terminate = codec.convertReceivedTerminateSequence(getParameter(message));
    // check if the terminated sequence was created in response to a a createSequence
    // request
    Destination destination = reliableEndpoint.getDestination();
    Identifier sid = terminate.getIdentifier();
    DestinationSequence terminatedSeq = destination.getSequence(sid);
    if (null != terminatedSeq) {
        destination.terminateSequence(terminatedSeq);
    }
    // the following may be necessary if the last message for this sequence was a oneway
    // request and hence there was no response to which a last message could have been added
    // REVISIT: A last message for the correlated sequence should have been sent by the time
    // the last message for the underlying sequence was received.
    Source source = reliableEndpoint.getSource();
    for (SourceSequence outboundSeq : source.getAllSequences()) {
        if (outboundSeq.offeredBy(sid) && !outboundSeq.isLastMessage()) {
            if (outboundSeq.getCurrentMessageNr() == 0) {
                source.removeSequence(outboundSeq);
            }
            break;
        }
    }
    TerminateSequenceResponseType terminateResponse = null;
    if (RM11Constants.NAMESPACE_URI.equals(protocol.getWSRMNamespace())) {
        AddressingProperties maps = RMContextUtils.retrieveMAPs(message, false, false);
        Message outMessage = message.getExchange().getOutMessage();
        if (null == outMessage) {
            // outMessage may be null e.g. if ReplyTo is not set for TS
            outMessage = ContextUtils.createMessage(message.getExchange());
            message.getExchange().setOutMessage(outMessage);
        }
        if (null != outMessage) {
            RMContextUtils.storeMAPs(maps, outMessage, false, false);
        }
        terminateResponse = new TerminateSequenceResponseType();
        terminateResponse.setIdentifier(sid);
    }
    return terminateResponse;
}
Also used : TerminateSequenceResponseType(org.apache.cxf.ws.rm.v200702.TerminateSequenceResponseType) Identifier(org.apache.cxf.ws.rm.v200702.Identifier) Message(org.apache.cxf.message.Message) TerminateSequenceType(org.apache.cxf.ws.rm.v200702.TerminateSequenceType) AddressingProperties(org.apache.cxf.ws.addressing.AddressingProperties)

Example 82 with Identifier

use of org.apache.cxf.ws.rm.v200502.Identifier in project cxf by apache.

the class Servant method createSequenceResponse.

public void createSequenceResponse(CreateSequenceResponseType createResponse, ProtocolVariation protocol) {
    LOG.fine("Creating sequence response");
    SourceSequence seq = new SourceSequence(createResponse.getIdentifier(), protocol);
    seq.setExpires(createResponse.getExpires());
    Source source = reliableEndpoint.getSource();
    source.addSequence(seq);
    // the incoming sequence ID is either used as the requestor sequence
    // (signalled by null) or associated with a corresponding sequence
    // identifier
    source.setCurrent(clearUnattachedIdentifier(), seq);
    // if a sequence was offered and accepted, then we can add this to
    // to the local destination sequence list, otherwise we have to wait for
    // and incoming CreateSequence request
    Identifier offeredId = reliableEndpoint.getProxy().getOfferedIdentifier();
    if (null != offeredId) {
        AcceptType accept = createResponse.getAccept();
        if (accept != null) {
            Destination dest = reliableEndpoint.getDestination();
            String address = accept.getAcksTo().getAddress().getValue();
            if (!RMUtils.getAddressingConstants().getNoneURI().equals(address)) {
                DestinationSequence ds = new DestinationSequence(offeredId, accept.getAcksTo(), dest, protocol);
                dest.addSequence(ds);
            }
        }
    }
}
Also used : Identifier(org.apache.cxf.ws.rm.v200702.Identifier) AcceptType(org.apache.cxf.ws.rm.v200702.AcceptType)

Aggregations

Identifier (org.apache.cxf.ws.rm.v200702.Identifier)72 Test (org.junit.Test)43 Message (org.apache.cxf.message.Message)11 SourceSequence (org.apache.cxf.ws.rm.SourceSequence)11 RMMessage (org.apache.cxf.ws.rm.persistence.RMMessage)11 SequenceAcknowledgement (org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement)11 Connection (java.sql.Connection)9 AddressingProperties (org.apache.cxf.ws.addressing.AddressingProperties)8 SQLException (java.sql.SQLException)7 ArrayList (java.util.ArrayList)7 Date (java.util.Date)7 EndpointReferenceType (org.apache.cxf.ws.addressing.EndpointReferenceType)7 DestinationSequence (org.apache.cxf.ws.rm.DestinationSequence)7 Method (java.lang.reflect.Method)6 AttributedURIType (org.apache.cxf.ws.addressing.AttributedURIType)6 RMStore (org.apache.cxf.ws.rm.persistence.RMStore)6 SequenceType (org.apache.cxf.ws.rm.v200702.SequenceType)6 SoapBinding (org.apache.cxf.binding.soap.SoapBinding)5 ProtocolVariation (org.apache.cxf.ws.rm.ProtocolVariation)5 Identifier (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev171207.Identifier)5