Skip to content

Commit fa16d1d

Browse files
committed
#92 - introduce RelationshipObject, ToOneRelationshipObject and ToManyRelationshipObject classes; do all needed refactorings for the model classes
1 parent dce24c6 commit fa16d1d

36 files changed

Lines changed: 429 additions & 486 deletions
Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,27 @@
11
package pro.api4.jsonapi4j.model.document;
22

3+
import lombok.AllArgsConstructor;
34
import lombok.EqualsAndHashCode;
5+
import lombok.Getter;
46
import lombok.ToString;
57
import pro.api4.jsonapi4j.model.document.data.JsonApiObject;
68

79
/**
810
* Carries common members ('links' and 'meta') that exist for all types of JSON:API data documents regardless of their
911
* nature (all types of relationship & resource docs, error docs, meta doc).
1012
*/
13+
@Getter
1114
@ToString
1215
@EqualsAndHashCode
16+
@AllArgsConstructor
1317
public abstract class BaseDoc {
1418

1519
public static final String LINKS_FIELD = "links";
1620
public static final String META_FIELD = "meta";
1721
public static final String JSONAPI_FIELD = "jsonapi";
1822

19-
private LinksObject links;
20-
private Object meta;
21-
private JsonApiObject jsonapi;
22-
23-
public BaseDoc(LinksObject links,
24-
Object meta,
25-
JsonApiObject jsonapi) {
26-
this.links = links;
27-
this.meta = meta;
28-
this.jsonapi = jsonapi;
29-
}
30-
31-
public LinksObject getLinks() {
32-
return links;
33-
}
34-
35-
public Object getMeta() {
36-
return meta;
37-
}
38-
39-
public JsonApiObject getJsonapi() {
40-
return jsonapi;
41-
}
23+
private final LinksObject links;
24+
private final Object meta;
25+
private final JsonApiObject jsonapi;
4226

4327
}
Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package pro.api4.jsonapi4j.model.document;
22

3-
import lombok.EqualsAndHashCode;
4-
import lombok.Getter;
5-
import lombok.Setter;
6-
import lombok.ToString;
3+
import lombok.*;
74
import lombok.experimental.SuperBuilder;
85

96
/**
@@ -15,6 +12,7 @@
1512
@EqualsAndHashCode
1613
@ToString
1714
@SuperBuilder
15+
@AllArgsConstructor
1816
public class LinksObject {
1917

2018
public static final String SELF_FIELD = "self";
@@ -25,12 +23,4 @@ public class LinksObject {
2523
private Object related;
2624
private String next;
2725

28-
public LinksObject(String self,
29-
Object related,
30-
String next) {
31-
this.self = self;
32-
this.related = related;
33-
this.next = next;
34-
}
35-
3626
}

jsonapi4j-base/src/main/java/pro/api4/jsonapi4j/model/document/data/AbstractMultipleDataItemsDoc.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

jsonapi4j-base/src/main/java/pro/api4/jsonapi4j/model/document/data/AbstractSingleDataItemDoc.java

Lines changed: 0 additions & 38 deletions
This file was deleted.

jsonapi4j-base/src/main/java/pro/api4/jsonapi4j/model/document/data/JsonApiObject.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
package pro.api4.jsonapi4j.model.document.data;
22

3+
import lombok.EqualsAndHashCode;
4+
import lombok.Getter;
5+
import lombok.ToString;
6+
37
import java.net.URI;
48
import java.util.List;
59

10+
@Getter
11+
@EqualsAndHashCode
12+
@ToString
613
public class JsonApiObject {
714

815
public static final String JSONAPI_VERSION_1_0 = "1.0";
@@ -13,10 +20,10 @@ public class JsonApiObject {
1320
public static final String PROFILE_FIELD = "profile";
1421
public static final String META_FIELD = "meta";
1522

16-
private String version;
17-
private List<URI> ext;
18-
private List<URI> profile;
19-
private Object meta;
23+
private final String version;
24+
private final List<URI> ext;
25+
private final List<URI> profile;
26+
private final Object meta;
2027

2128
public JsonApiObject(String version,
2229
List<URI> ext,
@@ -37,9 +44,7 @@ public JsonApiObject(List<URI> ext,
3744
public JsonApiObject(String version,
3845
List<URI> ext,
3946
List<URI> profile) {
40-
this.version = version;
41-
this.ext = ext;
42-
this.profile = profile;
47+
this(version, ext, profile, null);
4348
}
4449

4550
public JsonApiObject(List<URI> ext,

jsonapi4j-base/src/main/java/pro/api4/jsonapi4j/model/document/data/MultipleResourcesDoc.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package pro.api4.jsonapi4j.model.document.data;
22

3+
import lombok.Getter;
4+
import pro.api4.jsonapi4j.model.document.BaseDoc;
35
import pro.api4.jsonapi4j.model.document.LinksObject;
46
import lombok.EqualsAndHashCode;
57
import lombok.ToString;
@@ -62,17 +64,25 @@
6264
* }
6365
* </pre>
6466
*/
67+
@Getter
6568
@EqualsAndHashCode(callSuper = true)
6669
@ToString(callSuper = true)
67-
public class MultipleResourcesDoc<PRIMARY_RESOURCE extends ResourceObject<?, ?>>
68-
extends AbstractMultipleDataItemsDoc<PRIMARY_RESOURCE> {
70+
public class MultipleResourcesDoc<PRIMARY_RESOURCE extends ResourceObject<?, ?>> extends BaseDoc {
71+
72+
public static final String DATA_FIELD = "data";
73+
public static final String INCLUDED_FIELD = "included";
74+
75+
private final List<PRIMARY_RESOURCE> data;
76+
private final List<? extends ResourceObject<?, ?>> included;
6977

7078
public MultipleResourcesDoc(List<PRIMARY_RESOURCE> data,
7179
LinksObject links,
7280
Object meta,
7381
List<? extends ResourceObject<?, ?>> included,
7482
JsonApiObject jsonapi) {
75-
super(data, links, meta, included, jsonapi);
83+
super(links, meta, jsonapi);
84+
this.data = data;
85+
this.included = included;
7686
}
7787

7888
public MultipleResourcesDoc(List<PRIMARY_RESOURCE> data,
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package pro.api4.jsonapi4j.model.document.data;
2+
3+
import lombok.EqualsAndHashCode;
4+
import lombok.Getter;
5+
import lombok.ToString;
6+
import pro.api4.jsonapi4j.model.document.LinksObject;
7+
8+
@Getter
9+
@ToString
10+
@EqualsAndHashCode
11+
public class RelationshipObject {
12+
13+
public static final String LINKS_FIELD = "links";
14+
public static final String META_FIELD = "meta";
15+
16+
private final LinksObject links;
17+
private final Object meta;
18+
19+
public RelationshipObject(LinksObject links,
20+
Object meta) {
21+
this.links = links;
22+
this.meta = meta;
23+
}
24+
25+
public RelationshipObject(LinksObject links) {
26+
this(links, null);
27+
}
28+
29+
}
Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package pro.api4.jsonapi4j.model.document.data;
22

33
import lombok.EqualsAndHashCode;
4+
import lombok.Getter;
45
import lombok.ToString;
56

67
/**
78
* JSON:API Specification reference:
89
* <a href="https://jsonapi.org/format/#document-resource-identifier-objects">Resource Identifier Object</a>
910
*/
10-
@EqualsAndHashCode(of = {"id", "type"})
11-
@ToString(of = {"id", "type"})
11+
@Getter
12+
@EqualsAndHashCode
13+
@ToString
1214
public class ResourceIdentifierObject {
1315

1416
public static final String ID_FIELD = "id";
@@ -18,8 +20,8 @@ public class ResourceIdentifierObject {
1820

1921
private final String id;
2022
private final String type;
21-
private Object meta;
22-
private String lid;
23+
private final Object meta;
24+
private final String lid;
2325

2426
public ResourceIdentifierObject(String id,
2527
String type,
@@ -34,29 +36,12 @@ public ResourceIdentifierObject(String id,
3436
public ResourceIdentifierObject(String id,
3537
String type,
3638
Object meta) {
37-
this.id = id;
38-
this.type = type;
39-
this.meta = meta;
39+
this(id, type, meta, null);
4040
}
4141

4242
public ResourceIdentifierObject(String id,
4343
String type) {
4444
this(id, type, null);
4545
}
4646

47-
public String getId() {
48-
return id;
49-
}
50-
51-
public String getType() {
52-
return type;
53-
}
54-
55-
public Object getMeta() {
56-
return meta;
57-
}
58-
59-
public String getLid() {
60-
return lid;
61-
}
6247
}

jsonapi4j-base/src/main/java/pro/api4/jsonapi4j/model/document/data/ResourceObject.java

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
package pro.api4.jsonapi4j.model.document.data;
22

33
import lombok.EqualsAndHashCode;
4+
import lombok.Getter;
45
import lombok.ToString;
56
import pro.api4.jsonapi4j.model.document.LinksObject;
67

78
/**
89
* Spec ref: <a href="https://jsonapi.org/format/#document-resource-objects">Resource Object</a>
910
*/
10-
@ToString(callSuper = true, exclude = {"attributes", "relationships", "links"})
11-
@EqualsAndHashCode(exclude = {"links"}, callSuper = true)
11+
@Getter
12+
@EqualsAndHashCode(callSuper = true)
13+
@ToString(callSuper = true)
1214
public class ResourceObject<A, R> extends ResourceIdentifierObject {
1315

1416
public static final String ATTRIBUTES_FIELD = "attributes";
1517
public static final String RELATIONSHIPS_FIELD = "relationships";
1618
public static final String LINKS_FIELD = "links";
1719

18-
private A attributes;
19-
private R relationships;
20-
private LinksObject links;
20+
private final A attributes;
21+
private final R relationships;
22+
private final LinksObject links;
2123

2224
public ResourceObject(String id,
2325
String type,
@@ -46,16 +48,4 @@ public ResourceObject(String id,
4648
this(id, type, attributes, relationships, null);
4749
}
4850

49-
public A getAttributes() {
50-
return attributes;
51-
}
52-
53-
public R getRelationships() {
54-
return relationships;
55-
}
56-
57-
public LinksObject getLinks() {
58-
return links;
59-
}
60-
6151
}

0 commit comments

Comments
 (0)