From 2fcbb24d633e715e49722abcfc2c40fa6d8915c7 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Fri, 29 Apr 2022 14:52:03 +0200 Subject: [PATCH] first notifications working --- pom.xml | 7 ++++++- .../model/beans/WSAddedItemNotificationBean.java | 11 ++++++++++- .../beans/WSSharedFolderNotificationBean.java | 7 ++++++- .../beans/WSUnsharedFolderNotificationBean.java | 13 +++++++++++-- .../model/beans/WorkspaceNotificationBean.java | 14 +++++++++++++- .../model/beans/WorkspaceNotificationMessage.java | 11 ++++++++++- 6 files changed, 56 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 5d48293..4678239 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,7 @@ 1.8 2.9 + 2.8.11 2.14.0 social-networking ${project.basedir}/distro @@ -54,12 +55,16 @@ - org.gcube.common storagehub-model [1.0.0,2.0.0-SNAPSHOT) + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + org.glassfish.jersey.ext jersey-bean-validation diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSAddedItemNotificationBean.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSAddedItemNotificationBean.java index 8cdabff..f715272 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSAddedItemNotificationBean.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSAddedItemNotificationBean.java @@ -2,9 +2,13 @@ package org.gcube.social_networking.socialnetworking.model.beans; import javax.validation.constraints.NotNull; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; -public class WSAddedItemNotificationBean implements WorkspaceNotificationBean { +@JsonTypeName("ITEM_NEW") +@JsonIgnoreProperties(ignoreUnknown=true) +public class WSAddedItemNotificationBean extends WorkspaceNotificationBean { /** * the username of the user you wish to notify */ @@ -19,6 +23,11 @@ public class WSAddedItemNotificationBean implements WorkspaceNotificationBean { @JsonProperty("folderItem") @NotNull(message="folderItem cannot be missing") private SharedFolderBean folder; + + public WSAddedItemNotificationBean() { + super(); + // TODO Auto-generated constructor stub + } public WSAddedItemNotificationBean(String userIdToNotify, WorkspaceFileItemBean item, SharedFolderBean folder) { super(); diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSSharedFolderNotificationBean.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSSharedFolderNotificationBean.java index 9c66d12..d4b4115 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSSharedFolderNotificationBean.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSSharedFolderNotificationBean.java @@ -2,9 +2,14 @@ package org.gcube.social_networking.socialnetworking.model.beans; import javax.validation.constraints.NotNull; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; -public class WSSharedFolderNotificationBean implements WorkspaceNotificationBean { + +@JsonTypeName("FOLDER_SHARE") +@JsonIgnoreProperties(ignoreUnknown=true) +public class WSSharedFolderNotificationBean extends WorkspaceNotificationBean { /** * the username of the user you wish to notify diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSUnsharedFolderNotificationBean.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSUnsharedFolderNotificationBean.java index e9ee911..d19e7c7 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSUnsharedFolderNotificationBean.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WSUnsharedFolderNotificationBean.java @@ -2,9 +2,12 @@ package org.gcube.social_networking.socialnetworking.model.beans; import javax.validation.constraints.NotNull; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; -public class WSUnsharedFolderNotificationBean implements WorkspaceNotificationBean { +@JsonTypeName("FOLDER_UNSHARE") +public class WSUnsharedFolderNotificationBean extends WorkspaceNotificationBean { /** * the username of the user you wish to notify @@ -19,7 +22,13 @@ public class WSUnsharedFolderNotificationBean implements WorkspaceNotificationBe @JsonProperty("unsharedFolderName") @NotNull(message="unsharedFolderName cannot be missing") - private String unsharedFolderName; + private String unsharedFolderName; + + + public WSUnsharedFolderNotificationBean() { + super(); + // TODO Auto-generated constructor stub + } public WSUnsharedFolderNotificationBean(String userIdToNotify, String unsharedFolderId, String unsharedFolderName) { super(); diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WorkspaceNotificationBean.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WorkspaceNotificationBean.java index 314a069..098f44c 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WorkspaceNotificationBean.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WorkspaceNotificationBean.java @@ -1,5 +1,17 @@ package org.gcube.social_networking.socialnetworking.model.beans; -public interface WorkspaceNotificationBean { +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeInfo.As; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, +include = As.PROPERTY, property = "type") @JsonSubTypes({ +@JsonSubTypes.Type(value = WSSharedFolderNotificationBean.class, name = "FOLDER_SHARE"), +@JsonSubTypes.Type(value = WSUnsharedFolderNotificationBean.class, name = "FOLDER_UNSHARE"), +@JsonSubTypes.Type(value = WSAddedItemNotificationBean.class, name = "ITEM_NEW") +}) +public abstract class WorkspaceNotificationBean { } diff --git a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WorkspaceNotificationMessage.java b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WorkspaceNotificationMessage.java index ae6e239..c20d510 100644 --- a/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WorkspaceNotificationMessage.java +++ b/src/main/java/org/gcube/social_networking/socialnetworking/model/beans/WorkspaceNotificationMessage.java @@ -5,6 +5,10 @@ public class WorkspaceNotificationMessage { private WorkspaceNotificationType type; private WorkspaceNotificationBean bean; + + public WorkspaceNotificationMessage() { + super(); + } public WorkspaceNotificationMessage(WorkspaceNotificationType type, WorkspaceNotificationBean bean) { super(); @@ -20,6 +24,11 @@ public class WorkspaceNotificationMessage { return bean; } + public void setType(WorkspaceNotificationType type) { + this.type = type; + } - + public void setBean(WorkspaceNotificationBean bean) { + this.bean = bean; + } }