// TODO Revisit later after Metro provides generic method to pass partial configuration to Metro runtime.
// Only partial configuration is specified in webservices DD, but the information for creating complete RM feature should be gathered
// from wsdl policy, annotation or metro configuration file. For ex: RmProtocolVersion would be decided by policy assertion.
// For now, the feature would be constructed from default values, overriding any configuration specified in wsdl or metro configuration file..
ReliabilityConfig rxConfig = endpoint.getReliabilityConfig();
ReliableMessagingFeatureBuilder rmbuilder = new ReliableMessagingFeatureBuilder(RmProtocolVersion.getDefault());
if (rxConfig.getInactivityTimeout() != null) {
rmbuilder.sequenceInactivityTimeout(Long.parseLong(rxConfig.getInactivityTimeout().trim()));
}
if (endpoint.getHttpResponseBufferSize() != null) {
rmbuilder.destinationBufferQuota(Long.parseLong(endpoint.getHttpResponseBufferSize().trim()));
}
if (rxConfig.getBaseRetransmissionInterval() != null) {
rmbuilder.messageRetransmissionInterval(Long.parseLong(rxConfig.getBaseRetransmissionInterval().trim()));
}
if (rxConfig.getRetransmissionExponentialBackoff() != null) {
rmbuilder.retransmissionBackoffAlgorithm(Boolean.parseBoolean(rxConfig.getRetransmissionExponentialBackoff()) ?
ReliableMessagingFeature.BackoffAlgorithm.EXPONENTIAL :
ReliableMessagingFeature.BackoffAlgorithm.getDefault());
}
if (rxConfig.getAcknowledgementInterval() != null) {
rmbuilder.acknowledgementTransmissionInterval(Long.parseLong(rxConfig.getAcknowledgementInterval().trim()));
}
if (rxConfig.getSequenceExpiration() != null) {
logger.log(Level.INFO, LogUtils.CONFIGURATION_IGNORE_IN_WLSWS,
new Object[] {endpoint.getEndpointName(), "<sequence-expiration>"});
}
if (rxConfig.getBufferRetryCount() != null) {
rmbuilder.maxMessageRetransmissionCount(Long.parseLong(rxConfig.getBufferRetryCount().trim()));
}
if (rxConfig.getBufferRetryDelay() != null) {
logger.log(Level.INFO, LogUtils.CONFIGURATION_IGNORE_IN_WLSWS,
new Object[] {endpoint.getEndpointName(), "<buffer-retry-delay>"});
}
wsFeatures.add(rmbuilder.build());