package org.jboss.jbossts.txbridge.outbound;
import javax.xml.ws.BindingProvider;
import org.jboss.ws.api.configuration.AbstractClientFeature;
import com.arjuna.mw.wst11.client.WSTXFeature;
/**
* Web service feature is used to enable or disable JTA context propagation over WS-AT.
*
* @author <a href="mailto:gytis@redhat.com">Gytis Trikleris</a>
*
*/
public final class JTAOverWSATFeature extends AbstractClientFeature {
/**
* Key to store JTAOverWSATFeature's enabled/disabled value in SOAP header.
*/
public static final String REQUEST_CONTEXT_KEY = "JTAOverWSATFeature";
/**
* Value to indicate that JTAOverWSATFeature is enabled.
*/
public static final String ENABLED_VALUE = "true";
/**
* Value to indicate that JTAOverWSATFeature is disabled.
*/
public static final String DISABLED_VALUE = "false";
/**
* Default constructor creates an instance of enabled JTAOverWSATFeature.
*/
public JTAOverWSATFeature() {
this(true);
}
/**
* Parametrised constructor creates either enabled or disabled JTAOverWSATFeature based on <code>enabled</code> parameter.
*
* @param enabled true to create enabled JTAOverWSATFeature, false to create disabled JTAOverWSATFeature.
*/
public JTAOverWSATFeature(final boolean enabled) {
super(JTAOverWSATFeature.class.getName());
this.enabled = enabled;
}
/**
* Sets <code>JTAOverWSATFeature.REQUEST_CONTEXT_KEY</code> value to <code>JTAOverWSATFeature.ENABLED_VALUE</code> and
* <code>WSTXFeature.REQUEST_CONTEXT_KEY</code> value to <code>WSTXFeature.ENABLED_VALUE</code> if JTAOverWSATFeature is
* enabled. It is because WSTXFeature has to be enabled in order to make JTAOverWSATFeature work.
*
* Sets <code>JTAOverWSATFeature.REQUEST_CONTEXT_KEY</code> value to <code>JTAOverWSATFeature.DISABLED_VALUE</code> if
* JTAOverWSATFeature is disabled.
*/
@Override
protected void initializeBindingProvider(BindingProvider bp) {
if (enabled) {
bp.getRequestContext().put(REQUEST_CONTEXT_KEY, ENABLED_VALUE);
bp.getRequestContext().put(WSTXFeature.REQUEST_CONTEXT_KEY, WSTXFeature.ENABLED_VALUE);
} else {
bp.getRequestContext().put(REQUEST_CONTEXT_KEY, DISABLED_VALUE);
}
}
}