package com.l7tech.gateway.api;

import com.l7tech.gateway.api.impl.AccessorSupport;
import com.l7tech.gateway.api.impl.Extension;
import com.l7tech.gateway.api.impl.ManagedObjectReference;
import com.l7tech.gateway.api.impl.PropertiesMapType;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlElementWrapper;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@XmlRootElement(name = "SolutionKit")
@XmlType(
   name = "SolutionKitType",
   propOrder = {
         "name",
         "skGuid",
         "skVersion",
         "parentReference",
         "properties",
         "installProperties",
         "uninstallBundle",
         "mappings",
         "lastUpdateTime",
         "entityOwnershipDescriptors",
         "extension",
         "extensions"
   }
)
@AccessorSupport.AccessibleResource(name = "solutionKits")
public class SolutionKitMO extends AccessibleObject {
   private String f;
   private String g;
   private String h;
   private Map<String, String> i;
   private Map<String, String> j;
   private String k;
   private String l;
   private Long m;
   private ManagedObjectReference n;
   private List<EntityOwnershipDescriptorMO> o = new ArrayList<>();

   @XmlElement(name = "Name", required = true)
   public String getName() {
      return this.f;
   }

   public void setName(String var1) {
      this.f = var1;
   }

   @XmlElement(name = "SolutionKitGuid", required = true)
   public String getSkGuid() {
      return this.g;
   }

   public void setSkGuid(String var1) {
      this.g = var1;
   }

   @XmlElement(name = "SolutionKitVersion", required = true)
   public String getSkVersion() {
      return this.h;
   }

   public void setSkVersion(String var1) {
      this.h = var1;
   }

   @XmlElement(name = "ParentReference")
   public final ManagedObjectReference getParentReference() {
      return this.n;
   }

   public final void setParentReference(ManagedObjectReference var1) {
      this.n = var1;
   }

   @XmlElement(name = "Properties")
   @XmlJavaTypeAdapter(PropertiesMapType.PropertiesMapTypeAdapter.class)
   public Map<String, String> getProperties() {
      return this.i;
   }

   public void setProperties(Map<String, String> var1) {
      this.i = var1;
   }

   @XmlElement(name = "InstallProperties")
   @XmlJavaTypeAdapter(PropertiesMapType.PropertiesMapTypeAdapter.class)
   public Map<String, String> getInstallProperties() {
      return this.j;
   }

   public void setInstallProperties(Map<String, String> var1) {
      this.j = var1;
   }

   @XmlElement(name = "UninstallBundle")
   public String getUninstallBundle() {
      return this.k;
   }

   public void setUninstallBundle(String var1) {
      this.k = var1;
   }

   @XmlElement(name = "Mappings", required = true)
   public String getMappings() {
      return this.l;
   }

   public void setMappings(String var1) {
      this.l = var1;
   }

   @XmlElement(name = "LastUpdateTime", required = true)
   public Long getLastUpdateTime() {
      return this.m;
   }

   public void setLastUpdateTime(Long var1) {
      this.m = var1;
   }

   @XmlElementWrapper(name = "EntityOwnershipDescriptors", required = false)
   @XmlElement(name = "EntityOwnershipDescriptor", required = false)
   public List<EntityOwnershipDescriptorMO> getEntityOwnershipDescriptors() {
      return this.o;
   }

   public void setEntityOwnershipDescriptors(List<EntityOwnershipDescriptorMO> var1) {
      this.o = var1;
   }

   @XmlElement(name = "Extension")
   @Override
   protected Extension getExtension() {
      return super.getExtension();
   }

   @XmlAnyElement(lax = true)
   @Override
   protected List<Object> getExtensions() {
      return super.getExtensions();
   }

   SolutionKitMO() {
   }
}
