diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/events/raiseevent.get.desc.xml b/config/alfresco/templates/webscripts/org/alfresco/repository/events/raiseevent.post.desc.xml similarity index 100% rename from config/alfresco/templates/webscripts/org/alfresco/repository/events/raiseevent.get.desc.xml rename to config/alfresco/templates/webscripts/org/alfresco/repository/events/raiseevent.post.desc.xml diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml index 1dde0bc7bf..45de68804a 100644 --- a/config/alfresco/web-scripts-application-context.xml +++ b/config/alfresco/web-scripts-application-context.xml @@ -1581,7 +1581,7 @@ - diff --git a/source/java/org/alfresco/repo/web/scripts/events/RaiseBrowserEventGet.java b/source/java/org/alfresco/repo/web/scripts/events/RaiseBrowserEventPost.java similarity index 84% rename from source/java/org/alfresco/repo/web/scripts/events/RaiseBrowserEventGet.java rename to source/java/org/alfresco/repo/web/scripts/events/RaiseBrowserEventPost.java index c1ebe85be2..5c114a81e9 100644 --- a/source/java/org/alfresco/repo/web/scripts/events/RaiseBrowserEventGet.java +++ b/source/java/org/alfresco/repo/web/scripts/events/RaiseBrowserEventPost.java @@ -41,7 +41,7 @@ import org.springframework.util.StringUtils; * @author Gethin James * @since 5.0 */ -public class RaiseBrowserEventGet extends AbstractWebScript +public class RaiseBrowserEventPost extends AbstractWebScript { private EventPublisher eventPublisher; private SiteService siteService; @@ -79,13 +79,22 @@ public class RaiseBrowserEventGet extends AbstractWebScript action = templateVars.get("action"); } - String attributes = req.getParameter("attributes"); + String attributes = req.getContent().getContent(); if (attributes != null) { - if (!validJsonMap(attributes)) + if (StringUtils.hasText(attributes)) { - throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Invalid JSON Object: " + attributes); + if (!validJsonMap(attributes)) + { + throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Invalid JSON Object: " + attributes); + } } + else + { + //No valid attributes passed in so reset it + attributes = null; + } + } if (StringUtils.hasText(component) && StringUtils.hasText(action)) diff --git a/source/test-java/org/alfresco/repo/web/scripts/events/RaiseEventTest.java b/source/test-java/org/alfresco/repo/web/scripts/events/RaiseEventTest.java index ebb8a42f36..427960a472 100644 --- a/source/test-java/org/alfresco/repo/web/scripts/events/RaiseEventTest.java +++ b/source/test-java/org/alfresco/repo/web/scripts/events/RaiseEventTest.java @@ -35,16 +35,17 @@ import org.alfresco.service.cmr.site.SiteVisibility; import org.alfresco.util.PropertyMap; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest; +import org.springframework.extensions.webscripts.TestWebScriptServer.PostRequest; /** - * Tests the {@link RaiseBrowserEventGet} endpoint + * Tests the {@link RaiseBrowserEventPost} endpoint */ public class RaiseEventTest extends BaseWebScriptTest { private static final String USER_ONE = "RaiseEventTestuser1"; - private static final String SITE_EVENTS_TEST = "RaiseEventTestSite"; - private static final String GET_URL = "/api/events/"; + private static final String SITE_EVENTS_TEST = "Site_Raise_Event_Test"; + private static final String POST_URL = "/api/events/"; private EventPublisherForTestingOnly eventPublisher; private AuthenticationComponent authenticationComponent; @@ -70,7 +71,7 @@ public class RaiseEventTest extends BaseWebScriptTest SiteInfo siteInfo = this.siteService.getSite(SITE_EVENTS_TEST); if (siteInfo == null) { - this.siteService.createSite("RaiseEventSitePreset", SITE_EVENTS_TEST, SITE_EVENTS_TEST+" Title", "SiteDescription", SiteVisibility.PRIVATE); + this.siteService.createSite("RaiseEventSitePreset", SITE_EVENTS_TEST, SITE_EVENTS_TEST+" Title", "SiteDescription", SiteVisibility.PUBLIC); } createUser(USER_ONE, SiteModel.SITE_COLLABORATOR); @@ -96,18 +97,19 @@ public class RaiseEventTest extends BaseWebScriptTest } /** - * Tests GET requests to create browser events. + * Tests POST requests to create browser events. * * @throws Exception */ public void testRaiseEvent() throws Exception { - sendRequest(new GetRequest(GET_URL+"mypage/edit"), Status.STATUS_OK); - sendRequest(new GetRequest(GET_URL), Status.STATUS_NOT_FOUND); - sendRequest(new GetRequest(GET_URL+"mypage"), Status.STATUS_NOT_FOUND); - sendRequest(new GetRequest(GET_URL+SITE_EVENTS_TEST+"/sitepage/view"), Status.STATUS_OK); - sendRequest(new GetRequest(GET_URL+SITE_EVENTS_TEST+"/sitepage/view?attributes=xyz"), Status.STATUS_BAD_REQUEST); - sendRequest(new GetRequest(GET_URL+SITE_EVENTS_TEST+"/specialpage/view?attributes={\"source\": \"bob\", \"target\": \"hope\"}"), Status.STATUS_OK); + sendRequest(new PostRequest(POST_URL+"mypage/edit", "", "application/json"), Status.STATUS_OK); + sendRequest(new PostRequest(POST_URL, "", "application/json"), Status.STATUS_NOT_FOUND); + sendRequest(new PostRequest(POST_URL+"mypage", "", "application/json"), Status.STATUS_NOT_FOUND); + sendRequest(new GetRequest(POST_URL+SITE_EVENTS_TEST+"/sitepage/view"), Status.STATUS_METHOD_NOT_ALLOWED); + sendRequest(new PostRequest(POST_URL+SITE_EVENTS_TEST+"/sitepage/view", "", "application/json"), Status.STATUS_OK); + sendRequest(new PostRequest(POST_URL+SITE_EVENTS_TEST+"/sitepage/view", "rubbish", "application/json"), Status.STATUS_BAD_REQUEST); + sendRequest(new PostRequest(POST_URL+SITE_EVENTS_TEST+"/specialpage/view", "{\"source\": \"bob\", \"target\": \"hope\"}", "application/json"), Status.STATUS_OK); List browserEvents = eventPublisher.getQueueByType(BrowserEvent.class); int found = 0;