1.1 --- a/serverside/src/main/java/org/apidesign/bck2brwsr/demo/serverside/ChatClient.java Sun May 05 17:14:48 2013 +0200
1.2 +++ b/serverside/src/main/java/org/apidesign/bck2brwsr/demo/serverside/ChatClient.java Sun May 05 18:04:13 2013 +0200
1.3 @@ -36,36 +36,47 @@
1.4 */
1.5 @Model(className = "ChatModel", properties = {
1.6 @Property(name = "user", type = String.class),
1.7 - @Property(name = "text", type = String.class),
1.8 + @Property(name = "comment", type = String.class),
1.9 @Property(name = "msgs", type = Message.class, array = true)
1.10 })
1.11 class ChatClient {
1.12 @ComputedProperty
1.13 - static boolean sendEnabled(String user, String text) {
1.14 - boolean res = user != null && text != null && !user.isEmpty() && !text.isEmpty();
1.15 - try {
1.16 - if (true) throw new IllegalStateException("Query for msg '" + text + "' by user " + user + " res: " + res);
1.17 - } catch (Exception ex) {
1.18 -
1.19 - }
1.20 + static boolean sendEnabled(String user, String comment) {
1.21 + boolean res = user != null && comment != null && !user.isEmpty() && !comment.isEmpty();
1.22 return res;
1.23 }
1.24
1.25 @Function
1.26 static void submit(ChatModel m) {
1.27 - if (!sendEnabled(m.getUser(), m.getText())) {
1.28 + if (!sendEnabled(m.getUser(), m.getComment())) {
1.29 return;
1.30 }
1.31 - Message msg = new Message(CNTX);
1.32 - msg.setComment(m.getText());
1.33 - msg.setUser(m.getUser());
1.34 - m.getMsgs().add(msg);
1.35 + m.postComment(m.getUser(), m.getComment());
1.36 + }
1.37 +
1.38 + @OnReceive(url = "/chat/addComment?user={user}&comment={comment}")
1.39 + static void postComment(ChatModel m, Message addedMessage) {
1.40 + if (addedMessage.getComment().equals(m.getComment())) {
1.41 + m.setComment("");
1.42 + }
1.43 }
1.44
1.45 @OnReceive(url = "/chat?since=0")
1.46 static void initialRead(ChatModel m, Query q) {
1.47 m.getMsgs().clear();
1.48 m.getMsgs().addAll(q.getMessages());
1.49 + moreMessages(m);
1.50 + }
1.51 +
1.52 + @OnReceive(url = "/chat?since={since}")
1.53 + static void updateMsgs(ChatModel m, Query q) {
1.54 + m.getMsgs().addAll(q.getMessages());
1.55 + moreMessages(m);
1.56 + }
1.57 +
1.58 + private static void moreMessages(ChatModel m) {
1.59 + long now = System.currentTimeMillis();
1.60 + m.updateMsgs("" + now);
1.61 }
1.62
1.63 static final Context CNTX = Context.findDefault(ChatClient.class);
1.64 @@ -76,6 +87,11 @@
1.65 m.setUser("system");
1.66 chm.getMsgs().add(m);
1.67 chm.applyBindings();
1.68 - chm.initialRead();
1.69 + try {
1.70 + // XXX: this should not be in static initializer -
1.71 + // XXX: prevents unit testing!
1.72 + chm.initialRead();
1.73 + } catch (Throwable ex) {
1.74 + }
1.75 }
1.76 }