// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package org.jeecg.loader.repository; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import java.util.function.Function; import java.util.function.Supplier; import ch.qos.logback.classic.Logger; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.route.RouteDefinition; import org.springframework.cloud.gateway.route.RouteDefinitionRepository; import org.springframework.cloud.gateway.support.NotFoundException; import org.springframework.stereotype.Component; import org.springframework.util.ObjectUtils; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; /** * @author qinfeng */ @Slf4j @Component public class MyInMemoryRouteDefinitionRepository implements RouteDefinitionRepository { private final Map routes = Collections.synchronizedMap(new LinkedHashMap()); public MyInMemoryRouteDefinitionRepository() { } @Override public Mono save(Mono route) { return route.flatMap((r) -> { if (ObjectUtils.isEmpty(r.getId())) { return Mono.error(new IllegalArgumentException("id may not be empty")); } else { this.routes.put(r.getId(), r); return Mono.empty(); } }); } @Override public Mono delete(Mono routeId) { return routeId.flatMap((id) -> { if (this.routes.containsKey(id)) { this.routes.remove(id); return Mono.empty(); } else { log.warn("RouteDefinition not found: " + routeId); return Mono.empty(); // return Mono.defer(() -> { // return Mono.error(new NotFoundException("RouteDefinition not found: " + routeId)); // }); } }); } @Override public Flux getRouteDefinitions() { Map routesSafeCopy = new LinkedHashMap(this.routes); return Flux.fromIterable(routesSafeCopy.values()); } }