mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
Add zeppelinhubmessage class + tests
This commit is contained in:
parent
a1c5f52c6b
commit
f8f168ac06
2 changed files with 104 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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"));
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in a new issue