[New] Added CRUD services for notifications
This commit is contained in:
parent
7b9f2f867f
commit
22359e51d8
|
@ -97,5 +97,7 @@ public class StrolchConstants extends StrolchModelConstants {
|
||||||
public static final String PRIVILEGE_REMOVE_PREFIX = "Remove";
|
public static final String PRIVILEGE_REMOVE_PREFIX = "Remove";
|
||||||
public static final String PRIVILEGE_GET_PREFIX = "Get";
|
public static final String PRIVILEGE_GET_PREFIX = "Get";
|
||||||
public static final String PRIVILEGE_GET_NOTIFICATIONS = "GetNotifications";
|
public static final String PRIVILEGE_GET_NOTIFICATIONS = "GetNotifications";
|
||||||
|
public static final String PRIVILEGE_GET_NOTIFICATION = "GetNotification";
|
||||||
|
public static final String PRIVILEGE_GET_NOTIFICATIONS_ALL = "GetNotificationsAll";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,9 +105,12 @@ public class StrolchModelConstants {
|
||||||
public static final String PARAM_GROUP = "group";
|
public static final String PARAM_GROUP = "group";
|
||||||
public static final String PARAM_VISIBLE_FROM = "visibleFrom";
|
public static final String PARAM_VISIBLE_FROM = "visibleFrom";
|
||||||
public static final String PARAM_VISIBLE_TO = "visibleTo";
|
public static final String PARAM_VISIBLE_TO = "visibleTo";
|
||||||
|
public static final String PARAM_TITLE = "title";
|
||||||
|
public static final String PARAM_TEXT = "text";
|
||||||
public static final String PARAM_FOR_ALL = "forAll";
|
public static final String PARAM_FOR_ALL = "forAll";
|
||||||
public static final String PARAM_ROLES = "roles";
|
public static final String PARAM_ROLES = "roles";
|
||||||
public static final String PARAM_LOCATIONS = "locations";
|
public static final String PARAM_LOCATIONS = "locations";
|
||||||
|
public static final String PARAM_LANGUAGES = "languages";
|
||||||
public static final String PARAM_GROUPS = "groups";
|
public static final String PARAM_GROUPS = "groups";
|
||||||
|
|
||||||
public static class PolicyConstants {
|
public static class PolicyConstants {
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
package li.strolch.service.notifications;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import li.strolch.agent.api.StrolchAgent;
|
||||||
|
import li.strolch.model.ParameterBag;
|
||||||
|
import li.strolch.model.Resource;
|
||||||
|
import li.strolch.model.builder.ResourceBuilder;
|
||||||
|
import li.strolch.model.json.FromFlatJsonVisitor;
|
||||||
|
import li.strolch.persistence.api.StrolchTransaction;
|
||||||
|
import li.strolch.runtime.configuration.SupportedLanguage;
|
||||||
|
import li.strolch.service.JsonServiceArgument;
|
||||||
|
import li.strolch.service.api.AbstractService;
|
||||||
|
import li.strolch.service.api.ServiceResult;
|
||||||
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static li.strolch.model.StrolchModelConstants.*;
|
||||||
|
|
||||||
|
public class CreateNotificationService extends AbstractService<JsonServiceArgument, ServiceResult> {
|
||||||
|
@Override
|
||||||
|
protected ServiceResult getResultInstance() {
|
||||||
|
return new ServiceResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonServiceArgument getArgumentInstance() {
|
||||||
|
return new JsonServiceArgument();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ServiceResult internalDoService(JsonServiceArgument arg) throws Exception {
|
||||||
|
DBC.PRE.assertNotNull("JsonElement must be set", arg.jsonElement);
|
||||||
|
DBC.PRE.assertNotNull("JsonElement must be a JsonObject", arg.jsonElement.isJsonObject());
|
||||||
|
|
||||||
|
JsonObject jsonObject = arg.jsonElement.getAsJsonObject();
|
||||||
|
Resource notification = buildNotification(jsonObject, getSupportedLanguages(getAgent()));
|
||||||
|
|
||||||
|
try (StrolchTransaction tx = openArgOrUserTx(arg)) {
|
||||||
|
tx.add(notification);
|
||||||
|
tx.commitOnClose();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ServiceResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static Resource buildNotification(JsonObject jsonObject, Set<String> supportedLanguages) {
|
||||||
|
DBC.PRE.assertTrue("JsonObject must have languages!", jsonObject.has(PARAM_LANGUAGES));
|
||||||
|
JsonObject languagesJ = jsonObject.get(PARAM_LANGUAGES).getAsJsonObject();
|
||||||
|
DBC.PRE.assertNotEmpty("JsonObject must have at least one languages!", languagesJ.keySet());
|
||||||
|
|
||||||
|
FromFlatJsonVisitor visitor = new FromFlatJsonVisitor(jsonObject);
|
||||||
|
visitor.optionalParameter(PARAM_ROLES);
|
||||||
|
visitor.optionalParameter(PARAM_LOCATIONS);
|
||||||
|
visitor.optionalParameter(PARAM_FOR_ALL);
|
||||||
|
Resource notification = newNotification();
|
||||||
|
notification.accept(visitor);
|
||||||
|
|
||||||
|
for (String language : languagesJ.keySet()) {
|
||||||
|
if (!supportedLanguages.contains(language))
|
||||||
|
throw new IllegalArgumentException("The agent doesn't support language " + language);
|
||||||
|
JsonObject languageJ = languagesJ.get(language).getAsJsonObject();
|
||||||
|
String title = languageJ.get(PARAM_TITLE).getAsString();
|
||||||
|
String text = languageJ.get(PARAM_TEXT).getAsString();
|
||||||
|
|
||||||
|
ParameterBag languageBag = new ParameterBag(language, language, TYPE_TEXT);
|
||||||
|
languageBag.setString(PARAM_TITLE, title);
|
||||||
|
languageBag.setString(PARAM_TEXT, text);
|
||||||
|
notification.addParameterBag(languageBag);
|
||||||
|
}
|
||||||
|
return notification;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static Set<String> getSupportedLanguages(StrolchAgent agent) {
|
||||||
|
return agent
|
||||||
|
.getStrolchConfiguration()
|
||||||
|
.getRuntimeConfiguration()
|
||||||
|
.getSupportedLanguages()
|
||||||
|
.stream()
|
||||||
|
.map(SupportedLanguage::locale)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static Resource newNotification() {
|
||||||
|
ResourceBuilder notificationBuilder = new ResourceBuilder(TYPE_NOTIFICATION, TYPE_NOTIFICATION)
|
||||||
|
|
||||||
|
.bag(BAG_VISIBILITY, TYPE_VISIBILITY)
|
||||||
|
|
||||||
|
.date(PARAM_VISIBLE_FROM).end()
|
||||||
|
|
||||||
|
.date(PARAM_VISIBLE_TO).end()
|
||||||
|
|
||||||
|
.booleanB(PARAM_FOR_ALL).end()
|
||||||
|
|
||||||
|
.stringList(PARAM_ROLES).end()
|
||||||
|
|
||||||
|
.stringList(PARAM_LOCATIONS).end()
|
||||||
|
|
||||||
|
.endBag();
|
||||||
|
|
||||||
|
return notificationBuilder.build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package li.strolch.service.notifications;
|
||||||
|
|
||||||
|
import li.strolch.model.Resource;
|
||||||
|
import li.strolch.persistence.api.StrolchTransaction;
|
||||||
|
import li.strolch.service.StringArgument;
|
||||||
|
import li.strolch.service.api.AbstractService;
|
||||||
|
import li.strolch.service.api.ServiceResult;
|
||||||
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
|
import static li.strolch.model.StrolchModelConstants.TYPE_NOTIFICATION;
|
||||||
|
|
||||||
|
public class RemoveNotificationService extends AbstractService<StringArgument, ServiceResult> {
|
||||||
|
@Override
|
||||||
|
protected ServiceResult getResultInstance() {
|
||||||
|
return new ServiceResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StringArgument getArgumentInstance() {
|
||||||
|
return new StringArgument();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ServiceResult internalDoService(StringArgument arg) throws Exception {
|
||||||
|
DBC.PRE.assertNotEmpty("value must be set", arg.value);
|
||||||
|
|
||||||
|
try (StrolchTransaction tx = openArgOrUserTx(arg)) {
|
||||||
|
Resource notification = tx.getResourceBy(TYPE_NOTIFICATION, arg.value, true);
|
||||||
|
tx.remove(notification);
|
||||||
|
tx.commitOnClose();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ServiceResult.success();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package li.strolch.service.notifications;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import li.strolch.model.Resource;
|
||||||
|
import li.strolch.model.Tags;
|
||||||
|
import li.strolch.persistence.api.StrolchTransaction;
|
||||||
|
import li.strolch.service.JsonServiceArgument;
|
||||||
|
import li.strolch.service.api.AbstractService;
|
||||||
|
import li.strolch.service.api.ServiceResult;
|
||||||
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
|
import static li.strolch.service.notifications.CreateNotificationService.buildNotification;
|
||||||
|
import static li.strolch.service.notifications.CreateNotificationService.getSupportedLanguages;
|
||||||
|
|
||||||
|
public class UpdateNotificationService extends AbstractService<JsonServiceArgument, ServiceResult> {
|
||||||
|
@Override
|
||||||
|
protected ServiceResult getResultInstance() {
|
||||||
|
return new ServiceResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonServiceArgument getArgumentInstance() {
|
||||||
|
return new JsonServiceArgument();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ServiceResult internalDoService(JsonServiceArgument arg) throws Exception {
|
||||||
|
DBC.PRE.assertNotEmpty("objectId must be set", arg.objectId);
|
||||||
|
DBC.PRE.assertNotNull("JsonElement must be set", arg.jsonElement);
|
||||||
|
DBC.PRE.assertNotNull("JsonElement must be a JsonObject", arg.jsonElement.isJsonObject());
|
||||||
|
|
||||||
|
JsonObject jsonObject = arg.jsonElement.getAsJsonObject();
|
||||||
|
DBC.PRE.assertEquals("arg ID and jsonObject ID must be the same", arg.objectId,
|
||||||
|
jsonObject.get(Tags.Json.ID).getAsString());
|
||||||
|
|
||||||
|
Resource notification = buildNotification(jsonObject, getSupportedLanguages(getAgent()));
|
||||||
|
notification.setId(arg.objectId);
|
||||||
|
|
||||||
|
try (StrolchTransaction tx = openArgOrUserTx(arg)) {
|
||||||
|
tx.update(notification);
|
||||||
|
tx.commitOnClose();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ServiceResult.success();
|
||||||
|
}
|
||||||
|
}
|
|
@ -48,8 +48,6 @@ public class StrolchRestfulConstants {
|
||||||
public static final String PARAM_TO = "to";
|
public static final String PARAM_TO = "to";
|
||||||
public static final String PARAM_FILTER = "filter";
|
public static final String PARAM_FILTER = "filter";
|
||||||
public static final String PARAM_QUERY = "query";
|
public static final String PARAM_QUERY = "query";
|
||||||
public static final String PARAM_TITLE = "title";
|
|
||||||
public static final String PARAM_TEXT = "text";
|
|
||||||
|
|
||||||
public static final MediaType TEXT_CSV_TYPE = new MediaType("text", "csv");
|
public static final MediaType TEXT_CSV_TYPE = new MediaType("text", "csv");
|
||||||
public static final String TEXT_CSV = "text/csv";
|
public static final String TEXT_CSV = "text/csv";
|
||||||
|
|
|
@ -15,23 +15,31 @@
|
||||||
*/
|
*/
|
||||||
package li.strolch.rest.endpoint;
|
package li.strolch.rest.endpoint;
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.ws.rs.GET;
|
import jakarta.ws.rs.*;
|
||||||
import jakarta.ws.rs.Path;
|
|
||||||
import jakarta.ws.rs.Produces;
|
|
||||||
import jakarta.ws.rs.core.Context;
|
import jakarta.ws.rs.core.Context;
|
||||||
import jakarta.ws.rs.core.MediaType;
|
import jakarta.ws.rs.core.MediaType;
|
||||||
import jakarta.ws.rs.core.Response;
|
import jakarta.ws.rs.core.Response;
|
||||||
import li.strolch.agent.api.StrolchAgent;
|
import li.strolch.agent.api.StrolchAgent;
|
||||||
import li.strolch.model.ParameterBag;
|
import li.strolch.model.ParameterBag;
|
||||||
import li.strolch.model.Resource;
|
import li.strolch.model.Resource;
|
||||||
|
import li.strolch.model.Tags;
|
||||||
|
import li.strolch.model.json.StrolchRootElementToJsonVisitor;
|
||||||
|
import li.strolch.persistence.api.Operation;
|
||||||
import li.strolch.persistence.api.StrolchTransaction;
|
import li.strolch.persistence.api.StrolchTransaction;
|
||||||
import li.strolch.policy.notifications.NotificationsPolicy;
|
import li.strolch.policy.notifications.NotificationsPolicy;
|
||||||
import li.strolch.privilege.model.Certificate;
|
import li.strolch.privilege.model.Certificate;
|
||||||
import li.strolch.rest.RestfulStrolchComponent;
|
import li.strolch.rest.RestfulStrolchComponent;
|
||||||
import li.strolch.rest.helper.ResponseUtil;
|
import li.strolch.rest.helper.ResponseUtil;
|
||||||
|
import li.strolch.service.JsonServiceArgument;
|
||||||
|
import li.strolch.service.StringArgument;
|
||||||
|
import li.strolch.service.api.ServiceHandler;
|
||||||
|
import li.strolch.service.api.ServiceResult;
|
||||||
|
import li.strolch.service.notifications.CreateNotificationService;
|
||||||
|
import li.strolch.service.notifications.RemoveNotificationService;
|
||||||
|
import li.strolch.service.notifications.UpdateNotificationService;
|
||||||
import li.strolch.utils.helper.StringHelper;
|
import li.strolch.utils.helper.StringHelper;
|
||||||
import li.strolch.utils.iso8601.ISO8601;
|
import li.strolch.utils.iso8601.ISO8601;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -44,10 +52,12 @@ import java.util.function.Function;
|
||||||
|
|
||||||
import static java.util.Optional.ofNullable;
|
import static java.util.Optional.ofNullable;
|
||||||
import static li.strolch.model.StrolchModelConstants.*;
|
import static li.strolch.model.StrolchModelConstants.*;
|
||||||
import static li.strolch.privilege.base.PrivilegeConstants.REALM;
|
import static li.strolch.rest.RestfulStrolchComponent.getInstance;
|
||||||
import static li.strolch.rest.StrolchRestfulConstants.*;
|
import static li.strolch.rest.StrolchRestfulConstants.DATA;
|
||||||
|
import static li.strolch.rest.StrolchRestfulConstants.STROLCH_CERTIFICATE;
|
||||||
|
import static li.strolch.rest.helper.ResponseUtil.*;
|
||||||
import static li.strolch.runtime.StrolchConstants.DEFAULT_REALM;
|
import static li.strolch.runtime.StrolchConstants.DEFAULT_REALM;
|
||||||
import static li.strolch.runtime.StrolchConstants.StrolchPrivilegeConstants.PRIVILEGE_GET_NOTIFICATIONS;
|
import static li.strolch.runtime.StrolchConstants.StrolchPrivilegeConstants.*;
|
||||||
import static li.strolch.utils.helper.ExceptionHelper.getCallerMethod;
|
import static li.strolch.utils.helper.ExceptionHelper.getCallerMethod;
|
||||||
import static li.strolch.utils.helper.ExceptionHelper.getCallerMethodNoClass;
|
import static li.strolch.utils.helper.ExceptionHelper.getCallerMethodNoClass;
|
||||||
|
|
||||||
|
@ -66,30 +76,60 @@ public class NotificationResource {
|
||||||
return RestfulStrolchComponent.getInstance().openTx(certificate, realm, getCallerMethod());
|
return RestfulStrolchComponent.getInstance().openTx(certificate, realm, getCallerMethod());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Certificate validateCertificate(HttpServletRequest request) {
|
private static Certificate validateCertificate(HttpServletRequest request, String privilege) {
|
||||||
Certificate cert = (Certificate) request.getAttribute(STROLCH_CERTIFICATE);
|
Certificate cert = (Certificate) request.getAttribute(STROLCH_CERTIFICATE);
|
||||||
RestfulStrolchComponent rest = RestfulStrolchComponent.getInstance();
|
RestfulStrolchComponent rest = RestfulStrolchComponent.getInstance();
|
||||||
rest.validate(cert).validateAction(PRIVILEGE_GET_NOTIFICATIONS, getCallerMethodNoClass(2));
|
rest.validate(cert).validateAction(privilege, getCallerMethodNoClass(2));
|
||||||
return cert;
|
return cert;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public Response getNotifications(@Context HttpServletRequest request) {
|
public Response getUserNotifications(@Context HttpServletRequest request) {
|
||||||
Certificate cert = validateCertificate(request);
|
Certificate cert = validateCertificate(request, PRIVILEGE_GET_NOTIFICATIONS);
|
||||||
try (StrolchTransaction tx = openTx(cert)) {
|
try (StrolchTransaction tx = openTx(cert)) {
|
||||||
List<Resource> notifications = NotificationsPolicy.getDefaultPolicy(tx).findUserNotifications();
|
List<Resource> notifications = NotificationsPolicy.getDefaultPolicy(tx).findUserNotifications();
|
||||||
Function<Resource, JsonObject> visitor = notificationToJson(tx.getAgent(), cert);
|
Function<Resource, JsonObject> visitor = notificationToJson(tx.getAgent(), cert);
|
||||||
return ResponseUtil.toResponse(DATA, notifications.stream().map(visitor).filter(Objects::nonNull).toList());
|
return toResponse(DATA, notifications.stream().map(visitor).filter(Objects::nonNull).toList());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
return ResponseUtil.toResponse(e);
|
return toResponse(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("{id}")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public Response getNotification(@Context HttpServletRequest request, @PathParam("id") String id) {
|
||||||
|
Certificate cert = validateCertificate(request, PRIVILEGE_GET_NOTIFICATION);
|
||||||
|
try (StrolchTransaction tx = openTx(cert)) {
|
||||||
|
Resource notification = tx.getResourceBy(TYPE_NOTIFICATION, id, true);
|
||||||
|
tx.assertHasPrivilege(Operation.GET, notification);
|
||||||
|
return toResponse(DATA, notificationToJson(tx.getAgent(), cert).apply(notification));
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error(e.getMessage(), e);
|
||||||
|
return toResponse(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("all")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public Response getAllNotifications(@Context HttpServletRequest request) {
|
||||||
|
Certificate cert = validateCertificate(request, PRIVILEGE_GET_NOTIFICATIONS_ALL);
|
||||||
|
try (StrolchTransaction tx = openTx(cert)) {
|
||||||
|
StrolchRootElementToJsonVisitor visitor = new StrolchRootElementToJsonVisitor().flatBags();
|
||||||
|
return toResponse(DATA, tx.streamResources(TYPE_NOTIFICATION).map(a -> a.accept(visitor)).toList());
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error(e.getMessage(), e);
|
||||||
|
return toResponse(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Function<Resource, JsonObject> notificationToJson(StrolchAgent agent, Certificate cert) {
|
private static Function<Resource, JsonObject> notificationToJson(StrolchAgent agent, Certificate cert) {
|
||||||
return notification -> {
|
return notification -> {
|
||||||
JsonObject notificationJ = new JsonObject();
|
JsonObject notificationJ = new JsonObject();
|
||||||
|
notificationJ.addProperty(Tags.Json.ID, notification.getId());
|
||||||
|
|
||||||
String lang = cert.getLocale().getLanguage();
|
String lang = cert.getLocale().getLanguage();
|
||||||
Optional<ParameterBag> textBagO = ofNullable(notification.getParameterBag(lang))
|
Optional<ParameterBag> textBagO = ofNullable(notification.getParameterBag(lang))
|
||||||
|
@ -109,4 +149,64 @@ public class NotificationResource {
|
||||||
return notificationJ;
|
return notificationJ;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public Response create(@Context HttpServletRequest request, String data) {
|
||||||
|
Certificate cert = (Certificate) request.getAttribute(STROLCH_CERTIFICATE);
|
||||||
|
|
||||||
|
// get JSON
|
||||||
|
JsonObject jsonObject = JsonParser.parseString(data).getAsJsonObject();
|
||||||
|
|
||||||
|
// create service and argument
|
||||||
|
CreateNotificationService svc = new CreateNotificationService();
|
||||||
|
ServiceHandler svcHandler = getInstance().getServiceHandler();
|
||||||
|
JsonServiceArgument arg = svc.getArgumentInstance();
|
||||||
|
arg.jsonElement = jsonObject;
|
||||||
|
|
||||||
|
// call service
|
||||||
|
ServiceResult result = svcHandler.doService(cert, svc, arg);
|
||||||
|
return toResponse(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PUT
|
||||||
|
@Path("{id}")
|
||||||
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public Response update(@Context HttpServletRequest request, @PathParam("id") String id, String data) {
|
||||||
|
Certificate cert = (Certificate) request.getAttribute(STROLCH_CERTIFICATE);
|
||||||
|
|
||||||
|
// get JSON
|
||||||
|
JsonObject jsonObject = JsonParser.parseString(data).getAsJsonObject();
|
||||||
|
|
||||||
|
// create service and argument
|
||||||
|
UpdateNotificationService svc = new UpdateNotificationService();
|
||||||
|
ServiceHandler svcHandler = getInstance().getServiceHandler();
|
||||||
|
JsonServiceArgument arg = svc.getArgumentInstance();
|
||||||
|
arg.objectId = id;
|
||||||
|
arg.jsonElement = jsonObject;
|
||||||
|
|
||||||
|
// call service
|
||||||
|
ServiceResult result = svcHandler.doService(cert, svc, arg);
|
||||||
|
return toResponse(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
@Path("{id}")
|
||||||
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public Response remove(@Context HttpServletRequest request, @PathParam("id") String id) {
|
||||||
|
Certificate cert = (Certificate) request.getAttribute(STROLCH_CERTIFICATE);
|
||||||
|
|
||||||
|
// create service and argument
|
||||||
|
RemoveNotificationService svc = new RemoveNotificationService();
|
||||||
|
ServiceHandler svcHandler = getInstance().getServiceHandler();
|
||||||
|
StringArgument arg = svc.getArgumentInstance();
|
||||||
|
arg.value = id;
|
||||||
|
|
||||||
|
// call service
|
||||||
|
ServiceResult result = svcHandler.doService(cert, svc, arg);
|
||||||
|
return toResponse(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue