class ProtocolDataReferenceProvider implements DataReferenceProvider {
    private final DeviceGatewayService deviceGatewayService;

    @Override
    public String getId() {
        return DataReferenceManager.TYPE_PROTOCOL;
    }

    @Override
    public Flux<DataReferenceInfo> getReference(String protocolId) {<FILL_FUNCTION_BODY>}

    @Override
    public Flux<DataReferenceInfo> getReferences() {
        return deviceGatewayService
            .createQuery()
            .where()
            .notNull(DeviceGatewayEntity::getChannelId)
            .fetch()
            .map(e -> DataReferenceInfo.of(e.getId(),DataReferenceManager.TYPE_PROTOCOL, e.getChannelId(), e.getName()));
    }
}

        return deviceGatewayService
            .createQuery()
            .where()
            .is(DeviceGatewayEntity::getProtocol, protocolId)
            .fetch()
            .map(e -> DataReferenceInfo.of(e.getId(),DataReferenceManager.TYPE_PROTOCOL, e.getProtocol(), e.getName()));
    
<no_super_class>