content: /*
   * Copyright The OpenTelemetry Authors
   * SPDX-License-Identifier: Apache-2.0
   */
  
  package io.opentelemetry.javaagent.instrumentation.jms.v1_1;
  
  import io.opentelemetry.javaagent.instrumentation.jms.DestinationAdapter;
  import io.opentelemetry.javaagent.instrumentation.jms.MessageAdapter;
  import java.util.Collections;
  import java.util.List;
  import javax.annotation.Nullable;
  import javax.jms.Destination;
  import javax.jms.JMSException;
  import javax.jms.Message;
  
  public final class JavaxMessageAdapter implements MessageAdapter {
  
    public static MessageAdapter create(Message message) {
      return new JavaxMessageAdapter(message);
    }
  
    private final Message message;
  
    private JavaxMessageAdapter(Message message) {
      this.message = message;
    }
  
    @Nullable
    @Override
    public DestinationAdapter getJmsDestination() throws JMSException {
      Destination destination = message.getJMSDestination();
      if (destination == null) {
        return null;
      }
      return JavaxDestinationAdapter.create(destination);
    }
  
    @Override
    @SuppressWarnings("unchecked")
    public List<String> getPropertyNames() throws JMSException {
      return Collections.list(message.getPropertyNames());
    }
  
    @Nullable
    @Override
    public Object getObjectProperty(String key) throws JMSException {
      return message.getObjectProperty(key);
    }
  
    @Nullable
    @Override
    public String getStringProperty(String key) throws JMSException {
      return message.getStringProperty(key);
    }
  
    @Override
    public void setStringProperty(String key, String value) throws JMSException {
      message.setStringProperty(key, value);
    }
  
    @Nullable
    @Override
    public String getJmsCorrelationId() throws JMSException {
      return message.getJMSCorrelationID();
    }
  
    @Nullable
    @Override
    public String getJmsMessageId() throws JMSException {
      return message.getJMSMessageID();
    }
  }
  