Skip to content
This repository has been archived by the owner on Mar 15, 2022. It is now read-only.

Commit

Permalink
New resource and repository methods to control the activity lifecycle…
Browse files Browse the repository at this point in the history
… on the server instead on the client side
  • Loading branch information
hpehl committed Nov 21, 2012
1 parent df98068 commit 3bed0fb
Show file tree
Hide file tree
Showing 28 changed files with 1,174 additions and 651 deletions.
@@ -0,0 +1,20 @@
package name.pehl.karaka.client.activity.dispatch;

import com.gwtplatform.dispatch.annotation.GenDispatch;
import com.gwtplatform.dispatch.annotation.In;
import com.gwtplatform.dispatch.annotation.Out;
import name.pehl.karaka.shared.model.Activity;

/**
* Used to save new and update existing activities.
*
* @author $LastChangedBy:$
* @version $LastChangedRevision:$
*/
@GenDispatch
public class CopyActivity
{
@In(1) Activity activity;
@In(2) String period;
@Out(1) Activity copy;
}
@@ -0,0 +1,64 @@
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.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 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 CopyActivityHandler extends KarakaActionHandler<CopyActivityAction, CopyActivityResult>
{
private final ActivityReader activityReader;


@Inject
protected CopyActivityHandler(@SecurityCookie String securityCookieName,
SecurityCookieAccessor securityCookieAccessor, ActivityReader activityReader)
{
super(CopyActivityAction.class, securityCookieName, securityCookieAccessor);
this.activityReader = activityReader;
}

@Override
protected Resource resourceFor(CopyActivityAction action)
{
UrlBuilder urlBuilder = new UrlBuilder().module("rest")
.path("activities", "copy", action.getActivity().getId());
return new Resource(urlBuilder.toUrl());
}

@Override
protected Method methodFor(CopyActivityAction action, Resource resource)
{
return new Method(resource, PUT.name()).header(HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON);
}

@Override
protected void executeMethod(final Method method, final AsyncCallback<CopyActivityResult> resultCallback)
{
method.send(new KarakaJsonCallback<Activity, CopyActivityResult>(activityReader, resultCallback)
{
@Override
protected CopyActivityResult extractResult(final JsonReader<Activity> reader, final JSONObject json)
{
return new CopyActivityResult(reader.read(json));
}
});
}
}
Expand Up @@ -15,6 +15,6 @@
@GenDispatch
public class SaveActivity
{
@In(1) Activity newOrModifiedActivity;
@Out(1) Activity storedActivity;
@In(1) Activity activity;
@Out(1) Activity saved;
}
@@ -1,23 +1,19 @@
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.dispatch.KarakaActionHandler;
import name.pehl.karaka.client.dispatch.KarakaJsonCallback;
import name.pehl.piriti.json.client.JsonReader;
import name.pehl.karaka.client.activity.model.ActivityReader;
import name.pehl.karaka.client.activity.model.ActivityWriter;
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 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 static name.pehl.karaka.client.dispatch.KarakaActionHandler.HttpMethod.POST;
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;
Expand All @@ -29,50 +25,28 @@
public class SaveActivityHandler extends KarakaActionHandler<SaveActivityAction, SaveActivityResult>
{
private final ActivityReader activityReader;
private final ActivityWriter activityWriter;


@Inject
protected SaveActivityHandler(@SecurityCookie String securityCookieName,
SecurityCookieAccessor securityCookieAccessor, ActivityReader activityReader, ActivityWriter activityWriter)
SecurityCookieAccessor securityCookieAccessor, ActivityReader activityReader)
{
super(SaveActivityAction.class, securityCookieName, securityCookieAccessor);
this.activityReader = activityReader;
this.activityWriter = activityWriter;
}


@Override
protected Resource resourceFor(SaveActivityAction action)
{
UrlBuilder urlBuilder = null;
Activity newOrModifiedActivity = action.getNewOrModifiedActivity();
if (newOrModifiedActivity.isTransient())
{
urlBuilder = new UrlBuilder().module("rest").path("activities");
}
else
{
urlBuilder = new UrlBuilder().module("rest").path("activities", newOrModifiedActivity.getId());
}
return new Resource(urlBuilder.toUrl());
return new Resource(new UrlBuilder().module("rest").path("activities", action.getActivity().getId()).toUrl());
}


@Override
protected Method methodFor(SaveActivityAction action, Resource resource)
{
Method method = null;
Activity newOrModifiedActivity = action.getNewOrModifiedActivity();
if (newOrModifiedActivity.isTransient())
{
method = new Method(resource, POST.name());
}
else
{
method = new Method(resource, PUT.name());
}
return method.header(HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON).text(activityWriter.toJson(newOrModifiedActivity));
return new Method(resource, PUT.name()).header(HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON);
}


Expand Down
@@ -0,0 +1,21 @@
package name.pehl.karaka.client.activity.dispatch;

import com.gwtplatform.dispatch.annotation.GenDispatch;
import com.gwtplatform.dispatch.annotation.In;
import com.gwtplatform.dispatch.annotation.Out;
import name.pehl.karaka.shared.model.Activity;

import java.util.Set;

/**
* Used to save new and update existing activities.
*
* @author $LastChangedBy:$
* @version $LastChangedRevision:$
*/
@GenDispatch
public class StartActivity
{
@In(1) Activity activity;
@Out(1) Set<Activity> modified;
}
@@ -0,0 +1,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)));
}
});
}
}
@@ -0,0 +1,19 @@
package name.pehl.karaka.client.activity.dispatch;

import com.gwtplatform.dispatch.annotation.GenDispatch;
import com.gwtplatform.dispatch.annotation.In;
import com.gwtplatform.dispatch.annotation.Out;
import name.pehl.karaka.shared.model.Activity;

/**
* Used to save new and update existing activities.
*
* @author $LastChangedBy:$
* @version $LastChangedRevision:$
*/
@GenDispatch
public class StopActivity
{
@In(1) Activity activity;
@Out(1) Activity stopped;
}
@@ -0,0 +1,93 @@
package name.pehl.karaka.client.activity.dispatch;

import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
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.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 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 StopActivityHandler extends KarakaActionHandler<StopActivityAction, StopActivityResult>
{
private final ActivityReader activityReader;

@Inject
protected StopActivityHandler(@SecurityCookie String securityCookieName,
SecurityCookieAccessor securityCookieAccessor, ActivityReader activityReader)
{
super(StopActivityAction.class, securityCookieName, securityCookieAccessor);
this.activityReader = activityReader;
}


@Override
protected Resource resourceFor(StopActivityAction action)
{
UrlBuilder urlBuilder = new UrlBuilder().module("rest").path("activities", "stop", action.getActivity().getId());
return new Resource(urlBuilder.toUrl());
}


@Override
protected Method methodFor(StopActivityAction action, Resource resource)
{
return new Method(resource, PUT.name()).header(HEADER_CONTENT_TYPE, CONTENT_TYPE_JSON);
}


@Override
protected void executeMethod(final Method method, final AsyncCallback<StopActivityResult> resultCallback)
{
method.send(new KarakaJsonCallback<Activity, StopActivityResult>(activityReader, resultCallback)
{
@Override
protected StopActivityResult extractResult(final JsonReader<Activity> reader, final JSONObject json)
{
return new StopActivityResult(reader.read(json));
}
});


try
{
method.send(new RequestCallback()
{
@Override
public void onResponseReceived(Request request, Response response)
{
resultCallback.onSuccess(new StopActivityResult());
}


@Override
public void onError(Request request, Throwable exception)
{
resultCallback.onFailure(exception);
}
});
}
catch (RequestException e)
{
resultCallback.onFailure(e);
}
}
}

0 comments on commit 3bed0fb

Please sign in to comment.