1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.linecorp.centraldogma.common;
18
19 import static com.linecorp.centraldogma.internal.Util.validateFilePath;
20
21 import com.google.common.base.MoreObjects;
22
23
24
25
26
27 public final class MergeSource {
28
29
30
31
32 public static MergeSource ofRequired(String path) {
33 return new MergeSource(path, false);
34 }
35
36
37
38
39 public static MergeSource ofOptional(String path) {
40 return new MergeSource(path, true);
41 }
42
43 private final String path;
44
45 private final boolean optional;
46
47
48
49
50 private MergeSource(String path, boolean optional) {
51 this.path = validateFilePath(path, "path");
52 this.optional = optional;
53 }
54
55
56
57
58 public String path() {
59 return path;
60 }
61
62
63
64
65 public boolean isOptional() {
66 return optional;
67 }
68
69 @Override
70 public int hashCode() {
71 return path.hashCode() * 31 + Boolean.hashCode(optional);
72 }
73
74 @Override
75 public boolean equals(Object o) {
76 if (this == o) {
77 return true;
78 }
79 if (!(o instanceof MergeSource)) {
80 return false;
81 }
82
83 @SuppressWarnings("unchecked")
84 final MergeSource that = (MergeSource) o;
85 return path.equals(that.path) && optional == that.optional;
86 }
87
88 @Override
89 public String toString() {
90 return MoreObjects.toStringHelper(this)
91 .add("path", path)
92 .add("optional", optional)
93 .toString();
94 }
95 }