1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.linecorp.centraldogma.server.command;
18
19 import static java.util.Objects.requireNonNull;
20
21 import javax.annotation.Nullable;
22
23 import com.fasterxml.jackson.annotation.JsonProperty;
24 import com.google.common.base.MoreObjects.ToStringHelper;
25
26 import com.linecorp.centraldogma.common.Author;
27
28
29
30
31
32
33 abstract class ProjectCommand<T> extends AbstractCommand<T> {
34
35 private final String projectName;
36
37 ProjectCommand(CommandType commandType, @Nullable Long timestamp,
38 @Nullable Author author, String projectName) {
39 super(commandType, timestamp, author);
40 this.projectName = requireNonNull(projectName, "projectName");
41 }
42
43 @JsonProperty
44 public final String projectName() {
45 return projectName;
46 }
47
48 @Override
49 public String executionPath() {
50 return '/' + projectName;
51 }
52
53 @Override
54 public boolean equals(Object obj) {
55 if (this == obj) {
56 return true;
57 }
58
59 if (!(obj instanceof ProjectCommand)) {
60 return false;
61 }
62
63 final ProjectCommand<?> that = (ProjectCommand<?>) obj;
64 return super.equals(obj) &&
65 projectName.equals(that.projectName);
66 }
67
68 @Override
69 public int hashCode() {
70 return projectName.hashCode() * 31 + super.hashCode();
71 }
72
73 @Override
74 ToStringHelper toStringHelper() {
75 return super.toStringHelper().add("projectName", projectName);
76 }
77 }