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.ElementExtendableAccessibleObject;
import com.l7tech.gateway.api.impl.ElementExtensionSupport;
import com.l7tech.util.Functions.Nullary;
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 = "PolicyBackedService")
@XmlType(name = "PolicyBackedServiceType", propOrder = {"nameValue", "interfaceNameValue", "policyBackedServiceOperationsValues", "extension", "extensions"})
@AccessorSupport.AccessibleResource(name = "policyBackedServices")
public class PolicyBackedServiceMO extends ElementExtendableAccessibleObject {
   private AttributeExtensibleType.AttributeExtensibleString h;
   private AttributeExtensibleType.AttributeExtensibleString i;
   private PolicyBackedServiceMO.AttributeExtensiblePolicyBackedServiceOperationsList j;

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

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

   public String getInterfaceName() {
      return AttributeExtensibleType.get(this.i);
   }

   public void setInterfaceName(String var1) {
      this.i = AttributeExtensibleType.set(this.i, var1);
   }

   public List<PolicyBackedServiceMO.PolicyBackedServiceOperation> getPolicyBackedServiceOperations() {
      return AttributeExtensibleType.get(this.j, new ArrayList<>());
   }

   public void setPolicyBackedServiceOperations(List<PolicyBackedServiceMO.PolicyBackedServiceOperation> var1) {
      this.j = AttributeExtensibleType.set(this.j, var1, PolicyBackedServiceMO.AttributeExtensiblePolicyBackedServiceOperationsList.c);
   }

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

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

   @XmlElement(name = "InterfaceName", required = true)
   protected AttributeExtensibleType.AttributeExtensibleString getInterfaceNameValue() {
      return this.i;
   }

   protected void setInterfaceNameValue(AttributeExtensibleType.AttributeExtensibleString var1) {
      this.i = var1;
   }

   @XmlElement(name = "PolicyBackedServiceOperations")
   protected PolicyBackedServiceMO.AttributeExtensiblePolicyBackedServiceOperationsList getPolicyBackedServiceOperationsValues() {
      return this.j;
   }

   protected void setPolicyBackedServiceOperationsValues(PolicyBackedServiceMO.AttributeExtensiblePolicyBackedServiceOperationsList var1) {
      this.j = var1;
   }

   PolicyBackedServiceMO() {
   }

   @XmlType(name = "PolicyBackedServiceOperationListPropertyType", propOrder = "value")
   protected static class AttributeExtensiblePolicyBackedServiceOperationsList
      extends AttributeExtensibleType.AttributeExtensible<List<PolicyBackedServiceMO.PolicyBackedServiceOperation>> {
      private List<PolicyBackedServiceMO.PolicyBackedServiceOperation> b;
      private static final Nullary<PolicyBackedServiceMO.AttributeExtensiblePolicyBackedServiceOperationsList> c = new i();

      @XmlElement(name = "PolicyBackedServiceOperation")
      public List<PolicyBackedServiceMO.PolicyBackedServiceOperation> getValue() {
         return this.b;
      }

      public void setValue(List<PolicyBackedServiceMO.PolicyBackedServiceOperation> var1) {
         this.b = var1;
      }
   }

   @XmlRootElement(name = "PolicyBackedServiceOperation")
   @XmlType(name = "PolicyBackedServiceOperationArgumentType", propOrder = {"policyIdValue", "operationNameValue", "extension", "extensions"})
   public static class PolicyBackedServiceOperation extends ElementExtensionSupport {
      private AttributeExtensibleType.AttributeExtensibleString d;
      private AttributeExtensibleType.AttributeExtensibleString e;

      public String getPolicyId() {
         return AttributeExtensibleType.get(this.d);
      }

      public void setPolicyId(String var1) {
         this.d = AttributeExtensibleType.set(this.d, var1);
      }

      public String getOperationName() {
         return AttributeExtensibleType.get(this.e);
      }

      public void setOperationName(String var1) {
         this.e = AttributeExtensibleType.set(this.e, var1);
      }

      @XmlElement(name = "PolicyId")
      protected AttributeExtensibleType.AttributeExtensibleString getPolicyIdValue() {
         return this.d;
      }

      protected void setPolicyIdValue(AttributeExtensibleType.AttributeExtensibleString var1) {
         this.d = var1;
      }

      @XmlElement(name = "OperationName")
      protected AttributeExtensibleType.AttributeExtensibleString getOperationNameValue() {
         return this.e;
      }

      protected void setOperationNameValue(AttributeExtensibleType.AttributeExtensibleString var1) {
         this.e = var1;
      }
   }
}
