конструктор WsEventDto в классе WsEvenrDto не может быть применен к данным типам;требуется: аргументы не найдены: ObjectType, EventType - PullRequest
0 голосов
/ 05 октября 2019

Java-класс скомпилирован с ошибкой.

Задача: compileJava C: ... \ sarafan \ src \ main \ java \ initcode \ sarafan \ util \ WsSender.java: 42: ошибка:конструктор WsEventDto в классе WsEventDto не может быть применен к данным типам;новый WsEventDto (objectType, eventType, значение) ^ обязательно: аргументы не найдены: ObjectType, EventType, String причина: фактические и формальные списки аргументов различаются по длине 1 ошибка

WsSender.java

package initcode.sarafan.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import initcode.sarafan.dto.EventType;
import initcode.sarafan.dto.ObjectType;
import initcode.sarafan.dto.WsEventDto;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Component;

import java.util.function.BiConsumer;

@Component
public class WsSender {
    private final SimpMessagingTemplate template;
    private final ObjectMapper mapper;


    public WsSender(SimpMessagingTemplate template, ObjectMapper mapper) {
        this.template = template;
        this.mapper = mapper;
    }

    public <T> BiConsumer<EventType, T> getSender(ObjectType objectType, Class view) {
        ObjectWriter writer = mapper
                .setConfig(mapper.getSerializationConfig())
                .writerWithView(view);

        return (EventType eventType, T payload) -> {
            String value = null;

            try {
                value = writer.writeValueAsString(payload);
            } catch (JsonProcessingException e) {
                throw new RuntimeException(e);
            }

            template.convertAndSend(
                    "/topic/activity",
                    new WsEventDto(objectType, eventType, value)
            );
        };
    }
}

WsEventDto.java

package initcode.sarafan.dto;

import com.fasterxml.jackson.annotation.JsonRawValue;
import com.fasterxml.jackson.annotation.JsonView;
import initcode.sarafan.domain.Views;
import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
@JsonView(Views.Id.class)
public class WsEventDto {
    private ObjectType objectType;
    private EventType eventType;
    @JsonRawValue
    private String body;
}

Я использую ломбок и пружинный башмак.

...