Add zeppelinhubmessage class + tests

This commit is contained in:
Anthony Corbacho 2016-04-27 12:52:21 +09:00 committed by Khalid Huseynov
parent a1c5f52c6b
commit f8f168ac06
2 changed files with 104 additions and 0 deletions

View file

@ -0,0 +1,61 @@
package org.apache.zeppelin.notebook.repo.zeppelinhub.websocket.protocol;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.zeppelin.notebook.repo.zeppelinhub.websocket.Client;
import org.apache.zeppelin.notebook.socket.Message.OP;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
/**
* Zeppelinhub message class.
*
*/
public class ZeppelinhubMessage {
private static final Gson gson = new Gson();
private static final Logger LOG = LoggerFactory.getLogger(Client.class);
public static final ZeppelinhubMessage EMPTY = new ZeppelinhubMessage();
public OP op;
public Object data;
public Map<String, String> meta = Maps.newHashMap();
private ZeppelinhubMessage() {
this.op = OP.LIST_NOTES;
this.data = null;
}
private ZeppelinhubMessage(OP op, Object data, Map<String, String> meta) {
this.op = op;
this.data = data;
this.meta = meta;
}
public static ZeppelinhubMessage newMessage(OP op, Object data, Map<String, String> meta) {
return new ZeppelinhubMessage(op, data, meta);
}
public String serialize() {
return gson.toJson(this, ZeppelinhubMessage.class);
}
public static ZeppelinhubMessage deserialize(String zeppelinhubMessage) {
if (StringUtils.isBlank(zeppelinhubMessage)) {
return EMPTY;
}
ZeppelinhubMessage msg;
try {
msg = gson.fromJson(zeppelinhubMessage, ZeppelinhubMessage.class);
} catch(JsonSyntaxException ex) {
LOG.error("Cannot deserialize zeppelinhub message", ex);
msg = EMPTY;
}
return msg;
}
}

View file

@ -0,0 +1,43 @@
package org.apache.zeppelin.notebook.repo.zeppelinhub.websocket.protocol;
import static org.junit.Assert.assertEquals;
import java.util.Map;
import org.apache.zeppelin.notebook.socket.Message.OP;
import org.junit.Test;
import com.google.common.collect.Maps;
public class ZeppelinhubMessageTest {
private String msg = "{\"op\":\"LIST_NOTES\",\"data\":\"my data\",\"meta\":{\"key1\":\"val1\"}}";
@Test
public void testThatCanSerializeZeppelinHubMessage() {
Map<String,String> meta = Maps.newHashMap();
meta.put("key1", "val1");
String zeppelinHubMsg = ZeppelinhubMessage.newMessage(OP.LIST_NOTES, "my data", meta).serialize();
assertEquals(msg, zeppelinHubMsg);
}
@Test
public void testThastCanDeserialiseZeppelinhubMessage() {
Map<String,String> meta = Maps.newHashMap();
meta.put("key1", "val1");
ZeppelinhubMessage expected = ZeppelinhubMessage.newMessage(OP.LIST_NOTES, "my data", meta);
ZeppelinhubMessage zeppelinHubMsg = ZeppelinhubMessage.deserialize(msg);
assertEquals(expected.op, zeppelinHubMsg.op);
assertEquals(expected.data, zeppelinHubMsg.data);
assertEquals(expected.meta, zeppelinHubMsg.meta);
}
@Test
public void testThatInvalidStringReturnEmptyZeppelinhubMessage() {
assertEquals(ZeppelinhubMessage.EMPTY, ZeppelinhubMessage.deserialize(""));
assertEquals(ZeppelinhubMessage.EMPTY, ZeppelinhubMessage.deserialize("dwfewewrewr"));
}
}