/* * Copyright 2015, The Sporting Exchange Limited * * 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 com.betfair.cougar.modules.zipkin.impl; import com.betfair.cougar.modules.zipkin.api.ZipkinData; import com.betfair.cougar.modules.zipkin.api.ZipkinDataBuilder; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Objects; /** * A default implementation of ZipkinData. * * @see com.betfair.cougar.modules.zipkin.api.ZipkinData */ public class ZipkinDataImpl implements ZipkinData { private final long traceId; private final long spanId; private final Long parentSpanId; private final String spanName; private final short port; private final Long flags; private ZipkinDataImpl(@Nonnull Builder builder) { Objects.requireNonNull(builder); traceId = builder.traceId; spanId = builder.spanId; parentSpanId = builder.parentSpanId; spanName = builder.spanName; port = builder.port; flags = builder.flags; Objects.requireNonNull(spanName); } @Override public long getTraceId() { return traceId; } @Override public long getSpanId() { return spanId; } @Nullable @Override public Long getParentSpanId() { return parentSpanId; } @Nonnull @Override public String getSpanName() { return spanName; } @Override public short getPort() { return port; } @Nullable @Override public Long getFlags() { return flags; } @Override public String toString() { return "ZipkinDataImpl{" + "traceId=" + traceId + ", spanId=" + spanId + ", parentSpanId=" + parentSpanId + ", spanName='" + spanName + '\'' + ", port=" + port + ", flags=" + flags + '}'; } /** * A ZipkinDataBuilder implementation to be used when instantiating new ZipkinDataImpl instances. * * @see com.betfair.cougar.modules.zipkin.api.ZipkinDataBuilder */ public static final class Builder implements ZipkinDataBuilder { private long traceId; private long spanId; private Long parentSpanId; private String spanName; private short port; private Long flags; @Nonnull @Override public Builder traceId(long traceId) { this.traceId = traceId; return this; } @Nonnull @Override public Builder spanId(long spanId) { this.spanId = spanId; return this; } @Nonnull @Override public Builder parentSpanId(@Nullable Long parentSpanId) { this.parentSpanId = parentSpanId; return this; } @Nonnull @Override public Builder spanName(@Nonnull String spanName) { this.spanName = spanName; return this; } @Nonnull @Override public Builder port(short port) { this.port = port; return this; } @Nonnull @Override public Builder flags(@Nullable Long flags) { this.flags = flags; return this; } @Nonnull @Override public ZipkinDataImpl build() { return new ZipkinDataImpl(this); } } }