1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.common.lib.request;
20
21 import com.fasterxml.jackson.annotation.JsonProperty;
22 import org.apache.commons.lang3.builder.EqualsBuilder;
23 import org.apache.commons.lang3.builder.HashCodeBuilder;
24
25 public abstract class AbstractPatchItem<T> extends AbstractPatch {
26
27 private static final long serialVersionUID = -8889326446009942028L;
28
29 protected abstract static class Builder<T, P extends AbstractPatchItem<T>, B extends Builder<T, P, B>>
30 extends AbstractPatch.Builder<P, B> {
31
32 @SuppressWarnings("unchecked")
33 public B value(final T value) {
34 getInstance().setValue(value);
35 return (B) this;
36 }
37 }
38
39 private T value;
40
41 @JsonProperty(required = true)
42 public T getValue() {
43 return value;
44 }
45
46 public void setValue(final T value) {
47 this.value = value;
48 }
49
50 @Override
51 public int hashCode() {
52 return new HashCodeBuilder().
53 appendSuper(super.hashCode()).
54 append(value).
55 build();
56 }
57
58 @Override
59 public boolean equals(final Object obj) {
60 if (this == obj) {
61 return true;
62 }
63 if (obj == null) {
64 return false;
65 }
66 if (getClass() != obj.getClass()) {
67 return false;
68 }
69 @SuppressWarnings("unchecked")
70 final AbstractPatchItem<T> other = (AbstractPatchItem<T>) obj;
71 return new EqualsBuilder().
72 appendSuper(super.equals(obj)).
73 append(value, other.value).
74 build();
75 }
76 }