package com.airlock.iam.oauth2.application.configuration.client;

import com.airlock.iam.oauth2.domain.service.client.resource.OAuth2RemoteResource;
import com.airlock.iam.oauth2.domain.service.client.resource.OAuth2ResourceSelector;
import com.airlock.iam.plugin.api.annotation.property.PluginProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

public abstract class AbstractOAuth2RemoteResourceConfig {
   @PluginProperty(
      description = "OAuth 2.0 Resource Selector allowing to specify how this specific resource is contained within the JSON response expected from the resource request.",
      optional = false
   )
   private OAuth2ResourceSelector resourceSelector;

   public abstract OAuth2RemoteResource resource();

   public OAuth2ResourceSelector getResourceSelector() {
      return this.resourceSelector;
   }

   @SuppressFBWarnings(justification = "generated code")
   public AbstractOAuth2RemoteResourceConfig() {
   }

   @SuppressFBWarnings(justification = "generated code")
   protected AbstractOAuth2RemoteResourceConfig(OAuth2ResourceSelector resourceSelector) {
      this.resourceSelector = resourceSelector;
   }
}
