001package org.xbib.elasticsearch.http.netty; 002 003import org.elasticsearch.common.unit.TimeValue; 004import org.elasticsearch.common.xcontent.XContentBuilder; 005import org.xbib.elasticsearch.websocket.InteractiveRequest; 006import org.xbib.elasticsearch.websocket.client.WebSocketClient; 007import org.xbib.elasticsearch.websocket.client.WebSocketClientRequest; 008 009import java.io.IOException; 010import java.util.Map; 011 012/** 013 * Netty implemenation for an interactive request. 014 * At the same time, this class serves as an implementation 015 * for a WebSocket client request. 016 */ 017public class NettyInteractiveRequest implements InteractiveRequest, WebSocketClientRequest { 018 019 protected String type; 020 021 protected Map<String, Object> data; 022 023 protected XContentBuilder builder; 024 025 public NettyInteractiveRequest() { 026 } 027 028 public NettyInteractiveRequest(Map<String, Object> data) { 029 this.data = data; 030 } 031 032 @Override 033 public NettyInteractiveRequest type(String type) { 034 this.type = type; 035 return this; 036 } 037 038 @Override 039 public NettyInteractiveRequest data(XContentBuilder builder) { 040 this.builder = builder; 041 return this; 042 } 043 044 @Override 045 public void send(WebSocketClient client) throws IOException { 046 client.send(new NettyInteractiveResponse(type, builder).response()); 047 } 048 049 @Override 050 public Map<String, Object> asMap() { 051 return data; 052 } 053 054 @Override 055 public boolean hasParam(String key) { 056 return data.containsKey(key); 057 } 058 059 @Override 060 public Object param(String key) { 061 return data.get(key); 062 } 063 064 @Override 065 public String paramAsString(String key) { 066 Object o = param(key); 067 return o != null ? o.toString() : null; 068 } 069 070 @Override 071 public String paramAsString(String key, String defaultValue) { 072 Object o = param(key); 073 return o != null ? o.toString() : defaultValue; 074 } 075 076 @Override 077 public long paramAsLong(String key) { 078 Object o = param(key); 079 try { 080 return o != null ? Long.parseLong(o.toString()) : null; 081 } catch (NumberFormatException e) { 082 return 0L; 083 } 084 } 085 086 @Override 087 public long paramAsLong(String key, long defaultValue) { 088 Object o = param(key); 089 try { 090 return o != null ? Long.parseLong(o.toString()) : defaultValue; 091 } catch (NumberFormatException e) { 092 return defaultValue; 093 } 094 } 095 096 @Override 097 public boolean paramAsBoolean(String key) { 098 Object o = param(key); 099 return o != null ? Boolean.getBoolean(o.toString()) : null; 100 } 101 102 @Override 103 public boolean paramAsBoolean(String key, boolean defaultValue) { 104 Object o = param(key); 105 return o != null ? Boolean.getBoolean(o.toString()) : defaultValue; 106 } 107 108 @Override 109 public TimeValue paramAsTime(String key) { 110 Object o = param(key); 111 return o != null ? TimeValue.parseTimeValue(o.toString(), null) : null; 112 } 113 114 @Override 115 public TimeValue paramAsTime(String key, TimeValue defaultValue) { 116 Object o = param(key); 117 return o != null ? TimeValue.parseTimeValue(o.toString(), defaultValue) : defaultValue; 118 } 119}