package com.l7tech.policy;

import com.l7tech.objectmodel.imp.NamedEntityImp;
import com.l7tech.security.rbac.RbacAttribute;
import com.l7tech.util.DeserializeSafe;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType;
import jakarta.persistence.Lob;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.annotations.Proxy;

@XmlRootElement(name = "CustomKeyValueStore")
@XmlType(propOrder = "value")
@Entity
@Proxy(lazy = false)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "custom_key_value_store")
@DeserializeSafe
public class CustomKeyValueStore extends NamedEntityImp {
   private byte[] value;
   static final long serialVersionUID = 4729823673918594362L;

   @NotNull
   @Column(name = "value", nullable = false, length = Integer.MAX_VALUE)
   @Lob
   public final byte[] getValue() {
      return this.value;
   }

   public final void setValue(byte[] var1) {
      this.value = var1;
   }

   @RbacAttribute
   @Size(max = 128)
   @Transient
   @Override
   public String getName() {
      return super.getName();
   }
}
