Created
November 28, 2014 21:27
-
-
Save ericnormand/19787461b47fe5d7b4fc to your computer and use it in GitHub Desktop.
Examples how to handle EDN messages to/from sente
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package edntester; | |
import us.bpsm.edn.Keyword; | |
import us.bpsm.edn.parser.Parseable; | |
import us.bpsm.edn.parser.Parser; | |
import us.bpsm.edn.parser.Parsers; | |
import us.bpsm.edn.printer.Printers; | |
import java.util.ArrayList; | |
import java.util.HashMap; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.Random; | |
import static us.bpsm.edn.Keyword.newKeyword; | |
import static us.bpsm.edn.parser.Parsers.defaultConfiguration; | |
/** | |
* Created by eric on 11/28/14. | |
*/ | |
public class EdnTester { | |
public static final Keyword clientSearch = newKeyword("client", "search"); | |
public static final Keyword serverSearchResult = newKeyword("server", "search-result"); | |
public static String randomMessageID() { | |
Random rand = new Random(); | |
StringBuilder sb = new StringBuilder(); | |
String chars = "0123456789abcdef"; | |
for(int i = 0; i < 6; i++) { | |
int r = rand.nextInt(chars.length()); | |
sb.append(chars.charAt(r)); | |
} | |
return sb.toString(); | |
} | |
public static String searchMessage(String query, long page) { | |
ArrayList<java.io.Serializable> outer = new ArrayList<java.io.Serializable>(); | |
ArrayList<Object> inner = new ArrayList<Object>(); | |
Map<Object, Object> data = new HashMap<Object, Object>(); | |
data.put(newKeyword("query"), query); | |
data.put(newKeyword("page"), 1); | |
outer.add(inner); | |
outer.add(randomMessageID()); | |
inner.add(clientSearch); | |
inner.add(data); | |
return Printers.printString(outer); | |
} | |
public static List<Message> readMessagesFromFrame(String frame) { | |
Parseable pbr = Parsers.newParseable(frame); | |
Parser p = Parsers.newParser(defaultConfiguration()); | |
List<Message> ret = new ArrayList<Message>(); | |
List<List<Object>> rawMessages = (List<List<Object>>)p.nextValue(pbr); | |
for(List<Object> message : rawMessages) { | |
Keyword messageName = (Keyword)message.get(0); | |
Map<Keyword, Object> data = (Map<Keyword, Object>)message.get(1); | |
ret.add(new Message(messageName, data)); | |
} | |
return ret; | |
} | |
public static void dispatchMessage(Message message) { | |
if(message.type.equals(serverSearchResult)) { | |
handleSearchResult(message); | |
} | |
// ... | |
} | |
private static void handleSearchResult(Message message) { | |
// .... | |
} | |
public static void main(String [] args) { | |
System.out.println(searchMessage("dude", 1)); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package edntester; | |
import us.bpsm.edn.Keyword; | |
import java.security.Key; | |
import java.util.Collections; | |
import java.util.HashMap; | |
import java.util.Map; | |
/** | |
* Created by eric on 11/28/14. | |
*/ | |
public class Message { | |
public final Keyword type; | |
public final Map<Keyword, Object> data; | |
public Message(Keyword type, Map<Keyword, Object> data) { | |
this.type = type; | |
this.data = Collections.unmodifiableMap(new HashMap<Keyword, Object>(data)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment