package com.airlock.iam.admin.infrastructure.factory.prot;

import com.airlock.iam.common.api.domain.model.user.UserIdentity;
import com.airlock.iam.common.domain.model.principal.UserPrincipal;
import com.airlock.iam.common.domain.service.principal.UserPrincipalService;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;

public final class AdminProtectedUserPrincipalServiceModule extends PrivateModule {
   @Exposed
   @Provides
   UserPrincipalService provideUserPrincipalService() {
      return new AdminProtectedUserPrincipalServiceModule.NopUserPrincipalService();
   }

   protected void configure() {
   }

   private static final class NopUserPrincipalService implements UserPrincipalService {
      public UserPrincipal initializePrincipal(UserIdentity userIdentity) {
         throw new UnsupportedOperationException();
      }

      public void savePrincipal() {
      }

      public void reloadPrincipal() {
      }
   }
}
