IWebSocketPushMessage を拡張する

Wicket8 + Tomcat9 + Websocket native broadcast - Oboe吹きプログラマの黙示録
を書いた時に思った。
メッセージを送る契機のメソッドで、指定する IWebSocketPushMessage にセットするメッセージオブジェクトを
ラムダで書きたくなった。

WebSocketPushBroadcasterExtra broadcaster
= new WebSocketPushBroadcasterExtra(WebSocketSettings.Holder.get(getApplication()).getConnectionRegistry());
broadcaster.broadcastAll(getApplication(), ()->”メッセージ”);

WebSocketPushBroadcasterExtra は、WebSocketPushBroadcasterを継承してラムダで表現できるようにした
IWebSocketPushMessage 拡張で、broadcastAll またはbroadcastを実行するようにしたもの。
そこまでしなくてもとは思ったけど。。。

import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
/**
 * WebsocketMessage
 */
@FunctionalInterface
public interface WebsocketMessage<T> extends IWebSocketPushMessage{

   public T get();

   public static <T> WebsocketMessage of(T t){
      return new WebsocketMessage<>(){
         @Override
         public T get(){
            return t;
         }
      };
   }
}

WebSocketPushBroadcaster を継承します。

import org.apache.wicket.Application;
import org.apache.wicket.protocol.ws.api.WebSocketPushBroadcaster;
import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;

/**
 * WebSocketPushBroadcasterExtra.java
 */
public class WebSocketPushBroadcasterExtra extends WebSocketPushBroadcaster{
   public WebSocketPushBroadcasterExtra(IWebSocketConnectionRegistry registry){
      super(registry);
   }
   public void broadcastAll(Application application, WebsocketMessage message){
      super.broadcastAll(application, message);
   }
   public void broadcast(ConnectedMessage connection, WebsocketMessage message){
      super.broadcast(connection, message);
   }
}

IWebSocketPushMessage は、元々 Serializable です。