aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/www/api/activity/model
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2021-08-22 00:13:02 +0300
committerGravatar Vitaly Takmazov2021-08-22 00:13:02 +0300
commit9100b5bda037fcd1b051b98585744077132320bc (patch)
treefdda04472de22e8f53eafc342a05e31b46cfb15d /src/main/java/com/juick/www/api/activity/model
parente5c28b65b5d3ef2e5c98c71f55faa7c60d7864f0 (diff)
Type-safe ActivityStreams deserialization
Diffstat (limited to 'src/main/java/com/juick/www/api/activity/model')
-rw-r--r--src/main/java/com/juick/www/api/activity/model/Activity.java9
-rw-r--r--src/main/java/com/juick/www/api/activity/model/Context.java10
-rw-r--r--src/main/java/com/juick/www/api/activity/model/objects/Note.java6
-rw-r--r--src/main/java/com/juick/www/api/activity/model/objects/Tombstone.java24
4 files changed, 41 insertions, 8 deletions
diff --git a/src/main/java/com/juick/www/api/activity/model/Activity.java b/src/main/java/com/juick/www/api/activity/model/Activity.java
index d2f905af..7cc0b13f 100644
--- a/src/main/java/com/juick/www/api/activity/model/Activity.java
+++ b/src/main/java/com/juick/www/api/activity/model/Activity.java
@@ -19,6 +19,8 @@ package com.juick.www.api.activity.model;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.juick.www.api.activity.helpers.ActivityIdDeserializer;
+import com.juick.www.api.activity.helpers.ContextDeserializer;
+
import org.apache.commons.lang3.StringUtils;
import java.util.UUID;
@@ -27,7 +29,7 @@ public abstract class Activity extends Context {
@JsonDeserialize(using = ActivityIdDeserializer.class)
private String actor;
- private Object object;
+ private Context object;
public String getActor() {
return actor;
@@ -40,11 +42,12 @@ public abstract class Activity extends Context {
}
}
- public Object getObject() {
+ @JsonDeserialize(using = ContextDeserializer.class)
+ public Context getObject() {
return object;
}
- public void setObject(Object object) {
+ public void setObject(Context object) {
this.object = object;
}
}
diff --git a/src/main/java/com/juick/www/api/activity/model/Context.java b/src/main/java/com/juick/www/api/activity/model/Context.java
index d7b23539..edfa89b1 100644
--- a/src/main/java/com/juick/www/api/activity/model/Context.java
+++ b/src/main/java/com/juick/www/api/activity/model/Context.java
@@ -30,7 +30,7 @@ import java.util.List;
import java.util.Map;
@JsonIgnoreProperties(ignoreUnknown = true)
-@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property="type")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property="type", defaultImpl = Context.class)
@JsonSubTypes({
@JsonSubTypes.Type(value = Create.class, name = "Create"),
@JsonSubTypes.Type(value = Update.class, name = "Update"),
@@ -55,7 +55,7 @@ import java.util.Map;
@JsonSubTypes.Type(value = Person.class, name = "Person"),
@JsonSubTypes.Type(value = Application.class, name = "Application")
})
-public abstract class Context {
+public class Context {
private List<Object> context;
@@ -120,6 +120,12 @@ public abstract class Context {
return response;
}
+ public Context() {}
+
+ public Context(String id) {
+ setId(id);
+ }
+
public String getUrl() {
return url;
}
diff --git a/src/main/java/com/juick/www/api/activity/model/objects/Note.java b/src/main/java/com/juick/www/api/activity/model/objects/Note.java
index 66470b5c..7889b172 100644
--- a/src/main/java/com/juick/www/api/activity/model/objects/Note.java
+++ b/src/main/java/com/juick/www/api/activity/model/objects/Note.java
@@ -26,7 +26,7 @@ public class Note extends Context {
private String content;
private String attributedTo;
private String inReplyTo;
- private List<Image> attachment;
+ private List<Context> attachment;
private List<String> to;
private List<String> cc;
private boolean sensitive;
@@ -48,11 +48,11 @@ public class Note extends Context {
}
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
- public List<Image> getAttachment() {
+ public List<Context> getAttachment() {
return attachment;
}
- public void setAttachment(List<Image> attachment) {
+ public void setAttachment(List<Context> attachment) {
this.attachment = attachment;
}
diff --git a/src/main/java/com/juick/www/api/activity/model/objects/Tombstone.java b/src/main/java/com/juick/www/api/activity/model/objects/Tombstone.java
new file mode 100644
index 00000000..1a229299
--- /dev/null
+++ b/src/main/java/com/juick/www/api/activity/model/objects/Tombstone.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008-2021, Juick
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.juick.www.api.activity.model.objects;
+
+import com.juick.www.api.activity.model.Context;
+
+public class Tombstone extends Context {
+
+} \ No newline at end of file