/** @param rma The rmAssertion to set. */ public void setRMAssertion(org.apache.cxf.ws.rmp.v200502.RMAssertion rma) { setConfiguration(RMPolicyUtilities.intersect(rma, getConfiguration())); }
public RMEndpoint getReliableEndpoint(Message message) throws RMException { Endpoint endpoint = message.getExchange().getEndpoint(); QName name = endpoint.getEndpointInfo().getName(); if (LOG.isLoggable(Level.FINE)) { LOG.fine("Getting RMEndpoint for endpoint with info: " + name); } if (name.equals(RM10Constants.PORT_NAME) || name.equals(RM11Constants.PORT_NAME)) { WrappedEndpoint wrappedEndpoint = (WrappedEndpoint) endpoint; endpoint = wrappedEndpoint.getWrappedEndpoint(); } String rmUri = (String) message.getContextualProperty(WSRM_VERSION_PROPERTY); if (rmUri == null) { RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false); if (rmps != null) { rmUri = rmps.getNamespaceURI(); } } String addrUri = (String) message.getContextualProperty(WSRM_WSA_VERSION_PROPERTY); if (addrUri == null) { AddressingProperties maps = ContextUtils.retrieveMAPs(message, false, false, false); if (maps != null) { addrUri = maps.getNamespaceURI(); } } RMConfiguration config = getConfiguration(); if (rmUri != null) { config.setRMNamespace(rmUri); ProtocolVariation protocol = ProtocolVariation.findVariant(rmUri, addrUri); if (protocol == null) { org.apache.cxf.common.i18n.Message msg = new org.apache.cxf.common.i18n.Message("UNSUPPORTED_NAMESPACE", LOG, addrUri, rmUri); LOG.log(Level.INFO, msg.toString()); throw new RMException(msg); } } if (addrUri != null) { config.setRM10AddressingNamespace(addrUri); } Long timeout = (Long) message.getContextualProperty(WSRM_INACTIVITY_TIMEOUT_PROPERTY); if (timeout != null) { config.setInactivityTimeout(timeout); } Long interval = (Long) message.getContextualProperty(WSRM_RETRANSMISSION_INTERVAL_PROPERTY); if (interval != null) { config.setBaseRetransmissionInterval(interval); } Boolean exponential = (Boolean) message.getContextualProperty(WSRM_EXPONENTIAL_BACKOFF_PROPERTY); if (exponential != null) { config.setExponentialBackoff(exponential); } interval = (Long) message.getContextualProperty(WSRM_ACKNOWLEDGEMENT_INTERVAL_PROPERTY); if (interval != null) { config.setAcknowledgementInterval(interval); } RMEndpoint rme = reliableEndpoints.get(endpoint); if (null == rme) { synchronized (endpoint) { rme = reliableEndpoints.get(endpoint); if (rme != null) { return rme; } rme = createReliableEndpoint(endpoint); org.apache.cxf.transport.Destination destination = message.getExchange().getDestination(); EndpointReferenceType replyTo = null; if (null != destination) { AddressingProperties maps = RMContextUtils.retrieveMAPs(message, false, false); replyTo = maps.getReplyTo(); } Endpoint ei = message.getExchange().getEndpoint(); org.apache.cxf.transport.Destination dest = ei == null ? null : ei.getEndpointInfo() .getProperty( MAPAggregator.DECOUPLED_DESTINATION, org.apache.cxf.transport.Destination.class); config = RMPolicyUtilities.getRMConfiguration(config, message); rme.initialise(config, message.getExchange().getConduit(message), replyTo, dest, message); reliableEndpoints.put(endpoint, rme); LOG.fine("Created new RMEndpoint."); } } return rme; }
/** * Get configuration after applying policies. * * @param msg * @return configuration (non-<code>null</code>) */ public RMConfiguration getEffectiveConfiguration(Message msg) { return RMPolicyUtilities.getRMConfiguration(getConfiguration(), msg); }