DefaultMessagePayload.java

package sprout.server.websocket.message;

import java.nio.charset.StandardCharsets;

public class DefaultMessagePayload implements MessagePayload{
    private final String stringPayload;
    private final byte[] binaryPayload;

    public DefaultMessagePayload(String stringPayload, byte[] binaryPayload) {
        this.stringPayload = stringPayload;
        this.binaryPayload = binaryPayload;
    }

    @Override
    public boolean isText() {
        return stringPayload != null && !stringPayload.isEmpty();
    }

    @Override
    public boolean isBinary() {
        return binaryPayload != null && binaryPayload.length > 0;
    }

    @Override
    public String asText() {
        if (isBinary()) {
            return new String(binaryPayload, StandardCharsets.UTF_8);
        }
        return stringPayload;
    }

    @Override
    public byte[] asBinary() {
        if (isText()) {
            return stringPayload.getBytes(StandardCharsets.UTF_8);
        }
        return binaryPayload;
    }
}