package rocks.inspectit.agent.java.tracing.core.adapter.mq;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import io.opentracing.References;
import io.opentracing.propagation.Format;
import io.opentracing.propagation.TextMap;
import rocks.inspectit.agent.java.tracing.core.adapter.ClientRequestAdapter;
import rocks.inspectit.agent.java.tracing.core.adapter.ServerRequestAdapter;
import rocks.inspectit.agent.java.tracing.core.adapter.mq.data.MQMessage;
import rocks.inspectit.shared.all.tracing.constants.ExtraTags;
import rocks.inspectit.shared.all.tracing.data.PropagationType;
/**
* The {@link ServerRequestAdapter} and {@link ClientRequestAdapter} for the MQ.
*
* @author Ivan Senic
*
*/
public class MQRequestAdapter implements ServerRequestAdapter<TextMap>, ClientRequestAdapter<TextMap> {
/**
* Message.
*/
private MQMessage message;
/**
* Default constructor.
*
* @param message
* Message
*/
public MQRequestAdapter(MQMessage message) {
this.message = message;
}
/**
* {@inheritDoc}
*/
@Override
public boolean startClientSpan() {
return true;
}
/**
* {@inheritDoc}
*/
@Override
public PropagationType getPropagationType() {
return PropagationType.JMS;
}
/**
* {@inheritDoc}
*/
@Override
public String getReferenceType() {
return References.FOLLOWS_FROM;
}
/**
* {@inheritDoc}
*/
@Override
public Map<String, String> getTags() {
String messageId = message.getId();
String messageDestination = message.getDestination();
if ((null == messageId) && (null == messageDestination)) {
return Collections.emptyMap();
}
Map<String, String> tags = new HashMap<String, String>(2, 1f);
if (null != messageId) {
tags.put(ExtraTags.JMS_MESSAGE_ID, messageId);
}
if (null != messageDestination) {
tags.put(ExtraTags.JMS_MESSAGE_DESTINATION, messageDestination);
}
return tags;
}
/**
* {@inheritDoc}
*/
@Override
public Format<TextMap> getFormat() {
return Format.Builtin.TEXT_MAP;
}
/**
* {@inheritDoc}
*/
@Override
public TextMap getCarrier() {
return message;
}
}