parent
							
								
									efe5fbf0aa
								
							
						
					
					
						commit
						643b697106
					
				| 
						 | 
				
			
			@ -30,10 +30,12 @@ import java.util.Map;
 | 
			
		|||
import java.util.NoSuchElementException;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/** A read-only view of an array of key-value pairs. */
 | 
			
		||||
@SuppressWarnings("unchecked")
 | 
			
		||||
final class ReadOnlyArrayMap<K, V> implements Map<K, V> {
 | 
			
		||||
public final class ReadOnlyArrayMap<K, V> implements Map<K, V> {
 | 
			
		||||
 | 
			
		||||
  static <K, V> Map<K, V> wrap(List<Object> array) {
 | 
			
		||||
  /** Returns a read-only view of the given {@code array}. */
 | 
			
		||||
  public static <K, V> Map<K, V> wrap(List<Object> array) {
 | 
			
		||||
    if (array.isEmpty()) {
 | 
			
		||||
      return Collections.emptyMap();
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,8 +6,10 @@
 | 
			
		|||
package io.opentelemetry.api.trace;
 | 
			
		||||
 | 
			
		||||
import com.google.auto.value.AutoValue;
 | 
			
		||||
import io.opentelemetry.api.internal.ReadOnlyArrayMap;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.function.BiConsumer;
 | 
			
		||||
import javax.annotation.Nullable;
 | 
			
		||||
import javax.annotation.concurrent.Immutable;
 | 
			
		||||
| 
						 | 
				
			
			@ -46,6 +48,12 @@ abstract class ArrayBasedTraceState implements TraceState {
 | 
			
		|||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  @SuppressWarnings({"unchecked", "rawtypes"})
 | 
			
		||||
  public Map<String, String> asMap() {
 | 
			
		||||
    return ReadOnlyArrayMap.wrap((List) getEntries());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  abstract List<String> getEntries();
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@
 | 
			
		|||
 | 
			
		||||
package io.opentelemetry.api.trace;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.function.BiConsumer;
 | 
			
		||||
import javax.annotation.Nullable;
 | 
			
		||||
import javax.annotation.concurrent.Immutable;
 | 
			
		||||
| 
						 | 
				
			
			@ -69,6 +70,9 @@ public interface TraceState {
 | 
			
		|||
  /** Iterates over all the key-value entries contained in this {@link TraceState}. */
 | 
			
		||||
  void forEach(BiConsumer<String, String> consumer);
 | 
			
		||||
 | 
			
		||||
  /** Returns a read-only view of this {@link TraceState} as a {@link Map}. */
 | 
			
		||||
  Map<String, String> asMap();
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Returns a {@code Builder} based on this {@code TraceState}.
 | 
			
		||||
   *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,6 +64,17 @@ class TraceStateTest {
 | 
			
		|||
        .containsExactly(entry(SECOND_KEY, SECOND_VALUE), entry(FIRST_KEY, FIRST_VALUE));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  void asMap() {
 | 
			
		||||
    assertThat(firstTraceState.asMap()).containsExactly(entry(FIRST_KEY, FIRST_VALUE));
 | 
			
		||||
 | 
			
		||||
    assertThat(secondTraceState.asMap()).containsExactly(entry(SECOND_KEY, SECOND_VALUE));
 | 
			
		||||
 | 
			
		||||
    // Reverse order of input.
 | 
			
		||||
    assertThat(multiValueTraceState.asMap())
 | 
			
		||||
        .containsExactly(entry(SECOND_KEY, SECOND_VALUE), entry(FIRST_KEY, FIRST_VALUE));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  void disallowsNullKey() {
 | 
			
		||||
    assertThat(EMPTY.toBuilder().set(null, FIRST_VALUE).build()).isEqualTo(EMPTY);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue