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

com.ververica.common.model.deployment.Artifact Maven / Gradle / Ivy

package com.ververica.common.model.deployment;

import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver;
import com.ververica.common.util.Polymorphic;
import com.ververica.common.util.PolymorphicResolver;
import java.util.List;
import lombok.Data;

@JsonTypeIdResolver(Artifact.Resolver.class)
public interface Artifact extends Polymorphic {

  @Data
  class JarArtifact implements Artifact {
    public static final String KIND = "JAR";

    String kind = KIND;
    Boolean imageUserDefined;
    String versionName;
    String jarUri;
    String mainArgs;
    String entryClass;
    String flinkVersion;
    String flinkImageRegistry;
    String flinkImageRepository;
    String flinkImageTag;
    List additionalDependencies;

    @Override
    public void setKind(String ignored) {}
  }

  @Data
  class SqlScriptArtifact implements Artifact {
    public static final String KIND = "SQLSCRIPT";

    String kind = KIND;
    Boolean imageUserDefined;
    String versionName;
    String sqlScript;
    String flinkVersion;
    String flinkImageRegistry;
    String flinkImageRepository;
    String flinkImageTag;
    List additionalDependencies;

    @Override
    public void setKind(String ignored) {}
  }

  @Data
  class PythonArtifact implements Artifact {
    public static final String KIND = "PYTHON";
    Boolean imageUserDefined;
    String versionName;
    String mainArgs;
    String kind = KIND;
    String entryModule;
    String flinkVersion;
    String flinkImageRegistry;
    String flinkImageRepository;
    String flinkImageTag;
    List additionalDependencies;
    List additionalPythonArchives;
    List additionalPythonLibraries;
    String pythonArtifactUri;

    @Override
    public void setKind(String ignored) {}
  }

  @Data
  class UnknownArtifact implements Artifact {
    String kind;

    @Override
    public void setKind(String ignored) {}
  }

  final class Resolver extends PolymorphicResolver {
    public Resolver() {
      bind(JarArtifact.KIND, JarArtifact.class);
      bind(SqlScriptArtifact.KIND, SqlScriptArtifact.class);
      bind(PythonArtifact.KIND, PythonArtifact.class);
      bindDefault(UnknownArtifact.class);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy