/* * Copyright 2017, OpenCensus Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.opencensus.implcore.tags; import static com.google.common.base.Preconditions.checkNotNull; import io.opencensus.implcore.internal.CurrentState; import io.opencensus.implcore.internal.CurrentState.State; import io.opencensus.implcore.tags.propagation.TagPropagationComponentImpl; import io.opencensus.tags.Tagger; import io.opencensus.tags.TaggingState; import io.opencensus.tags.TagsComponent; import io.opencensus.tags.propagation.TagPropagationComponent; /** Base implementation of {@link TagsComponent}. */ public class TagsComponentImplBase extends TagsComponent { private static final State DEFAULT_STATE = State.ENABLED; // The State shared between the TagsComponent, Tagger, and TagPropagationComponent private final CurrentState currentState = new CurrentState(DEFAULT_STATE); private final Tagger tagger = new TaggerImpl(currentState); private final TagPropagationComponent tagPropagationComponent = new TagPropagationComponentImpl(currentState); @Override public Tagger getTagger() { return tagger; } @Override public TagPropagationComponent getTagPropagationComponent() { return tagPropagationComponent; } @Override public TaggingState getState() { return stateToTaggingState(currentState.get()); } @Override @Deprecated public void setState(TaggingState newState) { currentState.set(taggingStateToState(checkNotNull(newState, "newState"))); } private static State taggingStateToState(TaggingState taggingState) { return taggingState == TaggingState.ENABLED ? State.ENABLED : State.DISABLED; } private static TaggingState stateToTaggingState(State state) { return state == State.ENABLED ? TaggingState.ENABLED : TaggingState.DISABLED; } }