package com.l7tech.gateway.api;

import com.l7tech.gateway.api.impl.AccessorSupport;
import com.l7tech.gateway.api.impl.AttributeExtensibleType;
import com.l7tech.gateway.api.impl.Extension;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;
import java.util.ArrayList;
import java.util.List;

@XmlRootElement(name = "SecurityZone")
@XmlType(name = "SecurityZoneType", propOrder = {"nameValue", "descriptionValue", "permittedEntityTypesValue", "extension", "extensions"})
@AccessorSupport.AccessibleResource(name = "securityZones")
public class SecurityZoneMO extends AccessibleObject {
   private AttributeExtensibleType.AttributeExtensibleString f;
   private AttributeExtensibleType.AttributeExtensibleString g;
   private AttributeExtensibleType.AttributeExtensibleStringList h;

   public String getName() {
      return AttributeExtensibleType.get(this.f);
   }

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

   public String getDescription() {
      return AttributeExtensibleType.get(this.g);
   }

   public void setDescription(String var1) {
      this.g = AttributeExtensibleType.set(this.g, var1);
   }

   public List<String> getPermittedEntityTypes() {
      return AttributeExtensibleType.unwrap(AttributeExtensibleType.get(this.h, new ArrayList()));
   }

   public void setPermittedEntityTypes(List<String> var1) {
      this.h = AttributeExtensibleType.set(this.h, AttributeExtensibleType.wrap(var1, AttributeExtensibleType.AttributeExtensibleStringBuilder));
   }

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

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

   @XmlElement(name = "Name", required = true)
   protected AttributeExtensibleType.AttributeExtensibleString getNameValue() {
      return this.f;
   }

   protected void setNameValue(AttributeExtensibleType.AttributeExtensibleString var1) {
      this.f = var1;
   }

   @XmlElement(name = "Description", required = true)
   protected AttributeExtensibleType.AttributeExtensibleString getDescriptionValue() {
      return this.g;
   }

   protected void setDescriptionValue(AttributeExtensibleType.AttributeExtensibleString var1) {
      this.g = var1;
   }

   @XmlElement(name = "PermittedEntityTypes", required = true)
   protected AttributeExtensibleType.AttributeExtensibleStringList getPermittedEntityTypesValue() {
      return this.h;
   }

   protected void setPermittedEntityTypesValue(AttributeExtensibleType.AttributeExtensibleStringList var1) {
      this.h = var1;
   }

   SecurityZoneMO() {
   }
}
