private E getFilterEndpoint(EndpointBean endpointBean) { E endpoint = this.filterEndpoints.get(endpointBean); if (endpoint == null) { endpoint = createEndpoint(endpointBean.getBean(), endpointBean.getId(), endpointBean.isEnabledByDefault(), Collections.emptySet()); this.filterEndpoints.put(endpointBean, endpoint); } return endpoint; }
private E convertToEndpoint(EndpointBean endpointBean) { MultiValueMap<OperationKey, O> indexed = new LinkedMultiValueMap<>(); EndpointId id = endpointBean.getId(); addOperations(indexed, id, endpointBean.getBean(), false); if (endpointBean.getExtensions().size() > 1) { String extensionBeans = endpointBean.getExtensions().stream() .map(ExtensionBean::getBeanName).collect(Collectors.joining(", ")); throw new IllegalStateException( "Found multiple extensions for the endpoint bean " + endpointBean.getBeanName() + " (" + extensionBeans + ")"); } for (ExtensionBean extensionBean : endpointBean.getExtensions()) { addOperations(indexed, id, extensionBean.getBean(), true); } assertNoDuplicateOperations(endpointBean, indexed); List<O> operations = indexed.values().stream().map(this::getLast) .filter(Objects::nonNull).collect(Collectors.collectingAndThen( Collectors.toList(), Collections::unmodifiableList)); return createEndpoint(endpointBean.getBean(), id, endpointBean.isEnabledByDefault(), operations); }