| /* |
| * Copyright 2014-present Facebook, Inc. |
| * |
| * 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.facebook.buck.model; |
| |
| import com.fasterxml.jackson.annotation.JsonCreator; |
| import com.fasterxml.jackson.core.JsonGenerator; |
| import com.fasterxml.jackson.databind.JsonSerializer; |
| import com.fasterxml.jackson.databind.SerializerProvider; |
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| |
| import java.io.IOException; |
| import java.util.Objects; |
| import java.util.Random; |
| import java.util.UUID; |
| |
| /** |
| * A strongly typed representation of a build id. |
| */ |
| @JsonSerialize(using = BuildId.BuildIdSerializer.class) |
| public class BuildId implements Comparable<BuildId> { |
| |
| private static final Random INSECURE_RANDOM = new Random(); |
| |
| private final String id; |
| |
| public BuildId() { |
| this(new UUID(INSECURE_RANDOM.nextLong(), INSECURE_RANDOM.nextLong()).toString()); |
| } |
| |
| public BuildId(String id) { |
| this.id = id; |
| } |
| |
| @JsonCreator |
| public static BuildId fromJson(String id) { |
| return new BuildId(id); |
| } |
| |
| @Override |
| public String toString() { |
| return id; |
| } |
| |
| @Override |
| public int compareTo(BuildId other) { |
| if (other == null) { |
| return 1; |
| } |
| return id.compareTo(other.id); |
| } |
| |
| @Override |
| public boolean equals(Object other) { |
| if (!(other instanceof BuildId)) { |
| return false; |
| } |
| |
| return Objects.equals(this.id, ((BuildId) other).id); |
| } |
| |
| @Override |
| public int hashCode() { |
| return Objects.hash(id); |
| } |
| |
| public static class BuildIdSerializer extends JsonSerializer<BuildId> { |
| |
| @Override |
| public void serialize( |
| BuildId buildId, |
| JsonGenerator jsonGenerator, |
| SerializerProvider serializerProvider) throws IOException { |
| jsonGenerator.writeString(buildId.id); |
| } |
| } |
| } |