This repository has been archived by the owner on Mar 15, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
StartActivityHandler.java
79 lines (70 loc) · 3.06 KB
/
StartActivityHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package name.pehl.karaka.client.activity.dispatch;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;
import com.gwtplatform.dispatch.shared.SecurityCookie;
import com.gwtplatform.dispatch.shared.SecurityCookieAccessor;
import name.pehl.karaka.client.activity.model.ActivityReader;
import name.pehl.karaka.client.activity.model.ActivityWriter;
import name.pehl.karaka.client.dispatch.KarakaActionHandler;
import name.pehl.karaka.client.dispatch.KarakaJsonCallback;
import name.pehl.karaka.client.rest.UrlBuilder;
import name.pehl.karaka.shared.model.Activity;
import name.pehl.piriti.json.client.JsonReader;
import org.fusesource.restygwt.client.Method;
import org.fusesource.restygwt.client.Resource;
import java.util.HashSet;
import static name.pehl.karaka.client.dispatch.KarakaActionHandler.HttpMethod.PUT;
import static org.fusesource.restygwt.client.Resource.CONTENT_TYPE_JSON;
import static org.fusesource.restygwt.client.Resource.HEADER_CONTENT_TYPE;
/**
* @author $Author:$
* @version $Date:$ $Revision:$
*/
public class StartActivityHandler extends KarakaActionHandler<StartActivityAction, StartActivityResult>
{
private final ActivityReader activityReader;
private final ActivityWriter activityWriter;
@Inject
protected StartActivityHandler(@SecurityCookie String securityCookieName,
SecurityCookieAccessor securityCookieAccessor, ActivityReader activityReader, ActivityWriter activityWriter)
{
super(StartActivityAction.class, securityCookieName, securityCookieAccessor);
this.activityReader = activityReader;
this.activityWriter = activityWriter;
}
@Override
protected Resource resourceFor(StartActivityAction action)
{
Activity activity = action.getActivity();
UrlBuilder urlBuilder = new UrlBuilder().module("rest").path("activities", "start");
if (!activity.isTransient())
{
urlBuilder = urlBuilder.path(activity.getId());
}
return new Resource(urlBuilder.toUrl());
}
@Override
protected Method methodFor(StartActivityAction action, Resource resource)
{
Activity activity = action.getActivity();
Method method = new Method(resource, PUT.name()).header(HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON);
if (action.getActivity().isTransient())
{
method = method.text(activityWriter.toJson(activity));
}
return method;
}
@Override
protected void executeMethod(final Method method, final AsyncCallback<StartActivityResult> resultCallback)
{
method.send(new KarakaJsonCallback<Activity, StartActivityResult>(activityReader, resultCallback)
{
@Override
protected StartActivityResult extractResult(final JsonReader<Activity> reader, final JSONObject json)
{
return new StartActivityResult(new HashSet<Activity>(reader.readList(json)));
}
});
}
}