Skip to content

Commit d354887

Browse files
committed
Remove dependency of Resource on CatalogResource
1 parent e08b8b4 commit d354887

5 files changed

Lines changed: 24 additions & 56 deletions

File tree

src/main/java/io/github/jpmorganchase/fusion/model/CatalogResource.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package io.github.jpmorganchase.fusion.model;
22

3+
import static io.github.jpmorganchase.fusion.model.VarArgsHelper.copyMap;
4+
5+
import com.google.gson.annotations.Expose;
36
import io.github.jpmorganchase.fusion.Fusion;
47
import java.util.Arrays;
8+
import java.util.LinkedHashSet;
59
import java.util.Map;
610
import java.util.Set;
711
import lombok.EqualsAndHashCode;
@@ -14,36 +18,41 @@
1418
@Getter
1519
@ToString
1620
@EqualsAndHashCode
17-
public abstract class CatalogResource extends Resource {
21+
public abstract class CatalogResource {
1822

1923
private final String identifier;
2024

25+
private final Map<String, Object> varArgs;
26+
27+
@Expose(serialize = false, deserialize = false)
28+
private final Fusion fusion;
29+
2130
private final String catalogIdentifier;
2231

2332
public CatalogResource(String identifier, Map<String, Object> varArgs, Fusion fusion, String catalogIdentifier) {
24-
super(varArgs, fusion);
33+
this.varArgs = copyMap(varArgs);
2534
this.identifier = identifier;
35+
this.fusion = fusion;
2636
this.catalogIdentifier = catalogIdentifier;
2737
}
2838

2939
protected String getCatalogIdentifier() {
30-
Fusion fusion = getFusion();
3140
if (catalogIdentifier == null && fusion != null) {
3241
return fusion.getDefaultCatalog();
3342
}
3443
return catalogIdentifier;
3544
}
3645

3746
public String create() {
38-
return this.getFusion().create(getApiPath(), this);
47+
return this.fusion.create(getApiPath(), this);
3948
}
4049

4150
public String update() {
42-
return this.getFusion().update(getApiPath(), this);
51+
return this.fusion.update(getApiPath(), this);
4352
}
4453

4554
public String delete() {
46-
return this.getFusion().delete(getApiPath());
55+
return this.fusion.delete(getApiPath());
4756
}
4857

4958
/**
@@ -54,14 +63,18 @@ public String delete() {
5463
*/
5564
protected abstract String getApiPath();
5665

66+
public Map<String, Object> getVarArgs() {
67+
return copyMap(varArgs);
68+
}
69+
5770
/**
5871
* Returns the registered attributes pertaining to this catalog resource.
5972
* A 'registered' attribute is essentially member variables belonging to the class.
6073
* It is expected that child classes will override, calling super to initialise and register attributes
6174
* @return set of attributes registered against this CatalogResource
6275
*/
6376
public Set<String> getRegisteredAttributes() {
64-
Set<String> registered = super.getRegisteredAttributes();
77+
Set<String> registered = new LinkedHashSet<>();
6578
registered.addAll(VarArgsHelper.getFieldNames(CatalogResource.class));
6679
registered.addAll(Arrays.asList("@id", "@context", "@base"));
6780
return registered;

src/main/java/io/github/jpmorganchase/fusion/model/Resource.java

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

src/main/java/io/github/jpmorganchase/fusion/model/VarArgsHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static Map<String, Object> initializeMap() {
2626
return new HashMap<>();
2727
}
2828

29-
public static Set<String> getFieldNames(Class<? extends Resource> resourceClass) {
29+
public static Set<String> getFieldNames(Class<? extends CatalogResource> resourceClass) {
3030
if (resourceClass == null) {
3131
// Explicitly return an empty set to handle null input
3232
return Collections.emptySet();

src/main/java/io/github/jpmorganchase/fusion/parsing/GsonAPIResponseParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ private ParsingException generateNoResourceException() {
215215
return new ParsingException(message);
216216
}
217217

218-
private <T extends Resource> T parseResourceWithVarArgs(
218+
private <T extends CatalogResource> T parseResourceWithVarArgs(
219219
Set<String> excludes, T obj, Map<String, Object> untypedResource, ResourceMutationFactory<T> mutator) {
220220

221221
Map<String, Object> varArgs = getVarArgsToInclude(untypedResource, excludes);
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.github.jpmorganchase.fusion.serializing.mutation;
22

3-
import io.github.jpmorganchase.fusion.model.Resource;
3+
import io.github.jpmorganchase.fusion.model.CatalogResource;
44

55
@FunctionalInterface
6-
public interface ResourceMutationFactory<T extends Resource> {
6+
public interface ResourceMutationFactory<T extends CatalogResource> {
77
T mutate(T resource, MutationContext mc);
88
}

0 commit comments

Comments
 (0)