All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.outbrain.ob1k.server.services.EndpointMappingService Maven / Gradle / Ivy

The newest version!
package com.outbrain.ob1k.server.services;

import com.google.common.base.Function;
import com.google.common.collect.Maps;
import com.outbrain.ob1k.HttpRequestMethodType;
import com.outbrain.ob1k.concurrent.ComposableFuture;
import com.outbrain.ob1k.Service;
import com.outbrain.ob1k.concurrent.ComposableFutures;
import com.outbrain.ob1k.server.registry.endpoints.AbstractServerEndpoint;
import com.outbrain.ob1k.server.registry.ServiceRegistry;

import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;

/**
 * A service that exposes the path to endpoint mapping.
 *
 * @author Eran Harel
 */
public class EndpointMappingService implements IEndpointMappingService {
  private final ServiceRegistry registry;

  public EndpointMappingService(final ServiceRegistry registry) {
    this.registry = registry;
  }

  public ComposableFuture>> handle() {
    final SortedMap> registeredEndpoints = registry.getRegisteredEndpoints();
    final Function, Map> endpointsMap = new Function, Map>() {
      @Override
      public Map apply(final Map input) {
        final Map result = new HashMap<>();
        for (final AbstractServerEndpoint endpoint : input.values()) {
          result.put(endpoint.getTargetAsString(), endpoint.requestMethodType);
        }
        return result;
      }
    };
    return ComposableFutures.fromValue(Maps.transformValues(registeredEndpoints, endpointsMap));
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy