diff --git a/api/src/main/java/com/oviva/spicegen/api/ObjectRef.java b/api/src/main/java/com/oviva/spicegen/api/ObjectRef.java index 0a22fb2..42d7d39 100644 --- a/api/src/main/java/com/oviva/spicegen/api/ObjectRef.java +++ b/api/src/main/java/com/oviva/spicegen/api/ObjectRef.java @@ -1,6 +1,6 @@ package com.oviva.spicegen.api; -import java.util.Objects; +import com.oviva.spicegen.api.internal.ObjectRefImpl; public interface ObjectRef { String kind(); @@ -14,35 +14,7 @@ static ObjectRef of(String kind, String id) { if (id == null) { throw new IllegalArgumentException("id must not be null"); } - return new ObjectRef() { - @Override - public String kind() { - return kind; - } - @Override - public String id() { - return id; - } - - @Override - public String toString() { - return "%s:%s".formatted(kind, id); - } - - @Override - public int hashCode() { - return Objects.hash(kind, id); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof ObjectRef ref)) { - return false; - } - - return Objects.equals(this.kind(), ref.kind()) && Objects.equals(this.id(), ref.id()); - } - }; + return new ObjectRefImpl(kind, id); } } diff --git a/api/src/main/java/com/oviva/spicegen/api/SubjectRef.java b/api/src/main/java/com/oviva/spicegen/api/SubjectRef.java index 43b1e0c..e8b9c87 100644 --- a/api/src/main/java/com/oviva/spicegen/api/SubjectRef.java +++ b/api/src/main/java/com/oviva/spicegen/api/SubjectRef.java @@ -1,6 +1,6 @@ package com.oviva.spicegen.api; -import java.util.Objects; +import com.oviva.spicegen.api.internal.SubjectRefImpl; public interface SubjectRef { String kind(); @@ -8,38 +8,9 @@ public interface SubjectRef { String id(); static SubjectRef ofObject(ObjectRef o) { - return new SubjectRef() { - @Override - public String kind() { - return o.kind(); - } - - @Override - public String id() { - return o.id(); - } - - @Override - public int hashCode() { - return Objects.hash(o); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof SubjectRef that)) { - return false; - } - return Objects.equals(this.kind(), that.kind()) && Objects.equals(this.id(), that.id()); - } - - @Override - public String toString() { - if (o == null) { - return ""; - } - - return o.toString(); - } - }; + if (o == null) { + return null; + } + return new SubjectRefImpl(o.kind(), o.id()); } } diff --git a/api/src/main/java/com/oviva/spicegen/api/internal/ObjectRefImpl.java b/api/src/main/java/com/oviva/spicegen/api/internal/ObjectRefImpl.java new file mode 100644 index 0000000..3305703 --- /dev/null +++ b/api/src/main/java/com/oviva/spicegen/api/internal/ObjectRefImpl.java @@ -0,0 +1,11 @@ +package com.oviva.spicegen.api.internal; + +import com.oviva.spicegen.api.ObjectRef; + +public record ObjectRefImpl(String kind, String id) implements ObjectRef { + + @Override + public String toString() { + return "%s:%s".formatted(kind, id); + } +} diff --git a/api/src/main/java/com/oviva/spicegen/api/internal/SubjectRefImpl.java b/api/src/main/java/com/oviva/spicegen/api/internal/SubjectRefImpl.java new file mode 100644 index 0000000..6f17f8b --- /dev/null +++ b/api/src/main/java/com/oviva/spicegen/api/internal/SubjectRefImpl.java @@ -0,0 +1,10 @@ +package com.oviva.spicegen.api.internal; + +import com.oviva.spicegen.api.SubjectRef; + +public record SubjectRefImpl(String kind, String id) implements SubjectRef { + @Override + public String toString() { + return "%s:%s".formatted(kind, id); + } +}