package org.talend.esb.transport.jms; import org.apache.cxf.Bus; import org.apache.cxf.endpoint.Client; import org.apache.cxf.endpoint.Server; import org.apache.cxf.feature.AbstractFeature; import org.apache.cxf.transport.Conduit; import org.apache.cxf.transport.Destination; import org.apache.cxf.transport.jms.JMSConduit; import org.apache.cxf.transport.jms.JMSConfiguration; import org.apache.cxf.transport.jms.JMSDestination; public class DurableSubscriptionFeature extends AbstractFeature { private String durableSubscriptionClientId; private String durableSubscriptionName; @Override public void initialize(Client client, Bus bus) { Conduit conduit = client.getConduit(); if (conduit instanceof JMSConduit) { JMSConfiguration jmsConfig = ((JMSConduit) conduit).getJmsConfig(); updateJMSConfig(jmsConfig); } } @Override public void initialize(Server server, Bus bus) { Destination destination = server.getDestination(); if (destination instanceof JMSDestination) { JMSConfiguration jmsConfig = ((JMSDestination) destination).getJmsConfig(); updateJMSConfig(jmsConfig); } } private void updateJMSConfig(JMSConfiguration jmsConfig) { if (jmsConfig != null) { if(this.durableSubscriptionClientId!=null){ jmsConfig.setDurableSubscriptionClientId(durableSubscriptionClientId); } if(this.durableSubscriptionName!=null){ jmsConfig.setDurableSubscriptionName(durableSubscriptionName); jmsConfig.setSubscriptionDurable(true); } } } public void setDurableSubscriptionClientId(String durableSubscriptionClientId) { this.durableSubscriptionClientId = durableSubscriptionClientId; } public void setDurableSubscriptionName(String durableSubscriptionName) { this.durableSubscriptionName = durableSubscriptionName; } }