1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.atlassian.jira.rest.client.api.domain.util;
18
19 import com.google.common.base.Objects;
20 import com.google.common.collect.ImmutableList;
21 import com.google.common.collect.ImmutableMap;
22
23 import javax.annotation.Nullable;
24 import java.util.Collection;
25 import java.util.Collections;
26 import java.util.Map;
27
28
29
30
31
32
33 public class ErrorCollection {
34
35 private final Integer status;
36 private final Collection<String> errorMessages;
37 private final Map<String, String> errors;
38
39 public ErrorCollection(@Nullable final Integer status, final Collection<String> errorMessages, final Map<String, String> errors) {
40 this.status = status;
41 this.errors = ImmutableMap.copyOf(errors);
42 this.errorMessages = ImmutableList.copyOf(errorMessages);
43 }
44
45 public ErrorCollection(final String errorMessage) {
46 this(null, ImmutableList.of(errorMessage), Collections.<String, String>emptyMap());
47 }
48
49 @SuppressWarnings("unused")
50 @Nullable
51 public Integer getStatus() {
52 return status;
53 }
54
55 public Collection<String> getErrorMessages() {
56 return errorMessages;
57 }
58
59 public Map<String, String> getErrors() {
60 return errors;
61 }
62
63 public static Builder builder() {
64 return new Builder();
65 }
66
67 @Override
68 public String toString() {
69 return Objects.toStringHelper(this)
70 .add("status", status)
71 .add("errors", errors)
72 .add("errorMessages", errorMessages)
73 .toString();
74 }
75
76 @Override
77 public boolean equals(final Object obj) {
78 if (obj instanceof ErrorCollection) {
79 final ErrorCollection that = (ErrorCollection) obj;
80 return Objects.equal(this.status, that.status)
81 && Objects.equal(this.errors, that.errors)
82 && Objects.equal(this.errorMessages, that.errorMessages);
83 }
84 return false;
85 }
86
87 @Override
88 public int hashCode() {
89 return Objects.hashCode(status, errors, errorMessages);
90 }
91
92 public static class Builder {
93
94 private int status;
95 private final ImmutableMap.Builder<String, String> errors;
96 private final ImmutableList.Builder<String> errorMessages;
97
98 public Builder() {
99 errors = ImmutableMap.builder();
100 errorMessages = ImmutableList.builder();
101 }
102
103 public Builder status(final int status) {
104 this.status = status;
105 return this;
106 }
107
108 public Builder error(final String key, final String message) {
109 errors.put(key, message);
110 return this;
111
112 }
113
114 public Builder errorMessage(final String message) {
115 errorMessages.add(message);
116 return this;
117 }
118
119 public ErrorCollection build() {
120 return new ErrorCollection(status, errorMessages.build(), errors.build());
121 }
122 }
123 }