package com.airlock.iam.common.api.infrastructure;

import com.airlock.iam.base.api.domain.model.event.DomainEventSubscriber;
import com.airlock.iam.common.api.infrastructure.mapper.MapperConfiguration;
import com.google.inject.Module;
import java.util.Collection;
import java.util.Collections;
import java.util.function.Consumer;

public interface ApplicationExtension extends ApplicationComponentProvider {
   @Override
   default Collection<Class<?>> jaxRsComponents() {
      return Collections.emptyList();
   }

   @Override
   default Collection<Class<? extends Module>> guiceModules() {
      return Collections.emptyList();
   }

   @Deprecated(forRemoval = true)
   @Override
   default Collection<Class<?>> pluginLogics() {
      return Collections.emptyList();
   }

   @Override
   default Collection<Class<? extends DomainEventSubscriber>> domainEventSubscribers() {
      return Collections.emptyList();
   }

   @Override
   default Collection<Consumer<MapperConfiguration>> beanMappers() {
      return Collections.emptyList();
   }

   @Override
   default Collection<Class<? extends ApplicationInitializationHook>> initializationHooks() {
      return Collections.emptyList();
   }
}
