package com.airlock.iam.common.application.configuration.encoder;

import com.airlock.iam.common.api.application.configuration.encoder.StringEncoderConfig;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(
   description = "<p>Escapes a string to be safely used inside a JSON string.</p><p><b>Note:</b> This plugin can only handle JSON strings, not numbers or other value types. The quotes around the values must be part of the template (e.g. <code>{\"message\":\"Hello, ${name}!\"}</code>).</p>",
   displayName = "JSON String Escaper"
)
public class JsonStringEscaperConfig implements StringEncoderConfig {
   @SuppressFBWarnings(justification = "generated code")
   public static JsonStringEscaperConfig.JsonStringEscaperConfigBuilder builder() {
      return new JsonStringEscaperConfig.JsonStringEscaperConfigBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class JsonStringEscaperConfigBuilder {
      @SuppressFBWarnings(justification = "generated code")
      JsonStringEscaperConfigBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public JsonStringEscaperConfig build() {
         return new JsonStringEscaperConfig();
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "JsonStringEscaperConfig.JsonStringEscaperConfigBuilder()";
      }
   }
}
