Java - обработчик сессии Stomp, преобразование полезной нагрузки в параметризованную коллекцию - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть веб-сокет между двумя Java приложениями, и я хочу, чтобы они общались с помощью печатных сообщений. Приложение A отправляет сообщения Collection<RotationPayload> с RotationPayload в виде dto с большим количеством полей.

Приложение B регистрирует свой собственный StompSessionHandler и ожидает, что сообщения будут иметь тип Collection<RotationInfo> с RotationInfo, являющимся класс, который extends RotationPayload. StompSessionHandler выглядит следующим образом:

public class AirportStompSessionHandler implements StompSessionHandler {

  @Override
  public Type getPayloadType(StompHeaders headers) {
    final ParameterizedTypeReference<Collection<RotationInfo>> parameterizedType =
      new ParameterizedTypeReference<Collection<RotationInfo>>() {};
    return parameterizedType.getType();
  }

  @Override
  public void handleFrame(StompHeaders headers, Object payload) {
    final Collection<RotationInfo> message = (Collection<RotationInfo>) payload;

    // do stuff with the message
  }

  // other methods which are not related to the problem...
}

Проблема в том, что приведение не работает, поскольку полезная нагрузка вместо этого Collection<LinkedHashMap>, даже если в методе getPayloadType я указал ожидаемый параметризованный тип.

У меня возникло сомнение, что я предположил, что что-то не так ... и что payloadType не может быть параметризованной коллекцией ... это должен быть простой тип объекта?

...