// Path: src/main/java/com/webfluxclient/codec/ExtendedClientCodecConfigurer.java
// public interface ExtendedClientCodecConfigurer extends ClientCodecConfigurer {
// 
//     List<HttpErrorReader> getErrorReaders();
// 
//     ExtendedCustomCodecs customCodecs();
// 
//     ExtendedClientDefaultCodecs defaultCodecs();
// 
//     static ExtendedClientCodecConfigurer create(){
//         return new DefaultExtendedClientCodecConfigurer();
//     }
// 
//     interface ExtendedClientDefaultCodecs extends ClientDefaultCodecs {
//         void httpClientErrorDecoder(HttpClientErrorDecoder clientErrorDecoder);
//         void httpServerErrorDecoder(HttpServerErrorDecoder serverErrorDecoder);
//     }
// 
//     interface ExtendedCustomCodecs extends CustomCodecs{
//         void errorReader(HttpErrorReader errorReader);
//         void errorDecoder(ErrorDecoder errorDecoder);
//     }
// }


import com.webfluxclient.codec.ExtendedClientCodecConfigurer;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
import org.springframework.web.reactive.function.client.ExchangeFunctions;
import org.springframework.web.reactive.function.client.ExchangeStrategies;
import org.springframework.web.reactive.function.client.WebClient;
package com.webfluxclient.client;


public class DefaultRequestExecutorFactory implements RequestExecutorFactory {

    @Override
// Path: src/main/java/com/webfluxclient/codec/ExtendedClientCodecConfigurer.java
// public interface ExtendedClientCodecConfigurer extends ClientCodecConfigurer {
// 
//     List<HttpErrorReader> getErrorReaders();
// 
//     ExtendedCustomCodecs customCodecs();
// 
//     ExtendedClientDefaultCodecs defaultCodecs();
// 
//     static ExtendedClientCodecConfigurer create(){
//         return new DefaultExtendedClientCodecConfigurer();
//     }
// 
//     interface ExtendedClientDefaultCodecs extends ClientDefaultCodecs {
//         void httpClientErrorDecoder(HttpClientErrorDecoder clientErrorDecoder);
//         void httpServerErrorDecoder(HttpServerErrorDecoder serverErrorDecoder);
//     }
// 
//     interface ExtendedCustomCodecs extends CustomCodecs{
//         void errorReader(HttpErrorReader errorReader);
//         void errorDecoder(ErrorDecoder errorDecoder);
//     }
// }


// Path: src/main/java/com/webfluxclient/client/DefaultRequestExecutorFactory.java
import com.webfluxclient.codec.ExtendedClientCodecConfigurer;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
import org.springframework.web.reactive.function.client.ExchangeFunctions;
import org.springframework.web.reactive.function.client.ExchangeStrategies;
import org.springframework.web.reactive.function.client.WebClient;

package com.webfluxclient.client;


public class DefaultRequestExecutorFactory implements RequestExecutorFactory {

    @Override
    public RequestExecutor build(ExtendedClientCodecConfigurer codecConfigurer, ExchangeFilterFunction exchangeFilterFunction) {