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

com.expediagroup.streamplatform.streamregistry.graphql.resolvers.Resolvers Maven / Gradle / Ivy

/**
 * Copyright (C) ${license.git.copyrightYears} Expedia, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.expediagroup.streamplatform.streamregistry.graphql.resolvers;

import java.util.List;
import java.util.Optional;

import com.fasterxml.jackson.databind.node.ObjectNode;

import com.expediagroup.streamplatform.streamregistry.graphql.GraphQLApiType;
import com.expediagroup.streamplatform.streamregistry.model.*;
import com.expediagroup.streamplatform.streamregistry.model.Process;
import com.expediagroup.streamplatform.streamregistry.model.keys.ZoneKey;

import graphql.kickstart.tools.GraphQLResolver;

interface Resolvers {
  interface DomainResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    List schemas(Domain domain);
  }

  interface SchemaResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Domain domain(Schema schema);
  }

  interface StreamResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Domain domain(Stream stream);

    Schema schema(Stream stream);
  }

  interface ZoneResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {}

  interface InfrastructureResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Zone zone(Infrastructure infrastructure);
  }

  interface StreamBindingResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Stream stream(StreamBinding streamBinding);

    Infrastructure infrastructure(StreamBinding streamBinding);
  }

  interface ProducerResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Stream stream(Producer producer);

    Zone zone(Producer producer);

    ProducerBinding binding(Producer producer);
  }

  interface ConsumerResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Stream stream(Consumer consumer);

    Zone zone(Consumer consumer);

    ConsumerBinding binding(Consumer consumer);
  }

  interface ProcessResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Domain domain(Process process);
  }

  interface ConsumerBindingResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Consumer consumer(ConsumerBinding consumerBinding);

    StreamBinding binding(ConsumerBinding consumerBinding);
  }

  interface ProducerBindingResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Producer producer(ProducerBinding producerBinding);

    StreamBinding binding(ProducerBinding producerBinding);
  }

  interface ProcessBindingResolver extends EntityResolver, GraphQLResolver, GraphQLApiType {
    Process process(ProcessBinding processBinding);

    Domain domain(ProcessBinding processBinding);

    ZoneKey zone(ProcessBinding processBinding);
  }

  interface StatusResolver extends GraphQLResolver, GraphQLApiType {
    ObjectNode getAgentStatus(com.expediagroup.streamplatform.streamregistry.model.Status status);
  }

  interface EntityResolver {
    default Status status(E entity) {
      return Optional.ofNullable(entity.getStatus()).orElseGet(Status::new);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy