Skip to content

Commit

Permalink
Improved the command emiting and handling utils.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed Nov 1, 2015
1 parent 154f8f3 commit fc956d6
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 16 deletions.
21 changes: 15 additions & 6 deletions assets-ng/emit.js
Expand Up @@ -36,12 +36,21 @@ Rapidoid.initializer(function($scope) {
} }
} }


$.post(window.location.href, { inputs._cmd = eventId;
_event : eventId, inputs._state = window.__state;
_args : eventArgs,
_inputs : JSON.stringify(inputs), for (var i = 0; i < eventArgs.length; i++) {
__state : window.__state inputs['_' + i] = eventArgs[i];
}).done(function(data) { }

$.post(window.location.href, inputs).done(function(data) {

if (typeof data === 'string' || data instanceof String) {
$scope.ajaxBodyContent = data;
$scope.$apply();
return;
}

if (data._redirect_) { if (data._redirect_) {
_goAt(data._redirect_); _goAt(data._redirect_);
return; return;
Expand Down
Expand Up @@ -21,21 +21,20 @@
*/ */


import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.Map;


import org.rapidoid.annotation.Authors; import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since; import org.rapidoid.annotation.Since;
import org.rapidoid.ctx.Ctx; import org.rapidoid.ctx.Ctx;
import org.rapidoid.u.U; import org.rapidoid.u.U;
import org.rapidoid.util.D;


@Authors("Nikolche Mihajlovski") @Authors("Nikolche Mihajlovski")
@Since("4.2.0") @Since("4.2.0")
public abstract class AbstractCommandWidget<W extends AbstractCommandWidget<?>> extends AbstractWidget { public abstract class AbstractCommandWidget<W extends AbstractCommandWidget<?>> extends AbstractWidget {


private String command; private String command;


private Object[] cmdArgs; private String[] cmdArgs;


private Runnable handler; private Runnable handler;


Expand All @@ -44,28 +43,39 @@ public abstract class AbstractCommandWidget<W extends AbstractCommandWidget<?>>
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public W command(String cmd, Object... cmdArgs) { public W command(String cmd, Object... cmdArgs) {
this.command = cmd; this.command = cmd;
this.cmdArgs = cmdArgs; this.cmdArgs = strArgs(cmdArgs);


handleEventIfReady(); handleEventIfReady();


return (W) this; return (W) this;
} }


private String[] strArgs(Object[] args) {
String[] strs = new String[args.length];

for (int i = 0; i < args.length; i++) {
strs[i] = U.str(args[i]).replace("'", "`");
}

return strs;
}

protected void handleEventIfReady() { protected void handleEventIfReady() {
if (!handled && handler != null && command != null) { if (!handled && handler != null && command != null) {
Ctx ctx = ctx(); Ctx ctx = ctx();
Map<String, Object> data = ctx.data();


if ("POST".equalsIgnoreCase(ctx.verb())) { if ("POST".equalsIgnoreCase(ctx.verb())) {
String event = U.str(ctx.data().get("_event")); String event = U.str(data.get("_cmd"));


if (!U.isEmpty(event) && U.eq(event, command)) { if (!U.isEmpty(event) && U.eq(event, command)) {
List<Object> argList = U.cast(ctx.data().get("_args"));
Object[] args = argList != null ? U.array(argList) : new Object[0]; Object[] args = new Object[cmdArgs.length];
D.print(args); for (int i = 0; i < args.length; i++) {
D.print(cmdArgs); args[i] = U.get(data, "_" + i, "");
}


if (Arrays.equals(args, cmdArgs)) { if (Arrays.equals(args, cmdArgs)) {
System.out.println("EQ");
handled = true; handled = true;
handler.run(); handler.run();
} }
Expand Down

0 comments on commit fc956d6

Please sign in to comment.