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

open_rtb.App Maven / Gradle / Ivy

There is a newer version: 3.1.2
Show newest version
/**
 * Autogenerated by Avro
 * 
 * DO NOT EDIT DIRECTLY
 */

package open_rtb;

/** 3.3.6 App Object
An “app” object should be included if the ad supported content is part of a mobile application (as opposed to a mobile website). A bid request must not contain both an “app” object and a “site” object.
The app object itself and all of its parameters are optional, so default values are not provided. If an optional parameter is not specified, it should be considered unknown. At a minimum, it’s useful to provide an App ID or bundle, but this is not strictly required. */
public interface App
  extends java.util.function.Supplier,
          java.lang.Comparable>,
          java.io.Serializable {

  /** True if all fields are set to default values. */
  default boolean isDefault() {
    return
      isDefaultId() &&
      isDefaultName() &&
      isDefaultDomain() &&
      isDefaultCat() &&
      isDefaultSectioncat() &&
      isDefaultPagecat() &&
      isDefaultVer() &&
      isDefaultBundle() &&
      isDefaultPrivacypolicy() &&
      isDefaultPaid() &&
      isDefaultPublisher() &&
      isDefaultContent() &&
      isDefaultKeywords() &&
      isDefaultStoreurl();
  }

  /** Returns underlying object. */
  T get();

  /** Creates a new builder based on this object. */
  Builder newBuilder();

  /** Application ID on the exchange. */
  java.lang.String getId();

  boolean isDefaultId();

  /** Application name (may be masked at publisher’s request). */
  java.lang.String getName();

  boolean isDefaultName();

  /** Domain of the application (e.g., “mygame.foo.com”). */
  java.lang.String getDomain();

  boolean isDefaultDomain();

  /** Array of IAB content categories for the overall application. See Table 6.1 Content Categories. */
  java.util.List getCat();

  boolean isDefaultCat();

  /** Array of IAB content categories for the current subsection of the app. See Table 6.1 Content Categories. */
  java.util.List getSectioncat();

  boolean isDefaultSectioncat();

  /** Array of IAB content categories for the current page/view of the app. See Table 6.1 Content Categories. */
  java.util.List getPagecat();

  boolean isDefaultPagecat();

  /** Application version. */
  java.lang.String getVer();

  boolean isDefaultVer();

  /** Application bundle or package name (e.g., com.foo.mygame). This is intended to be a unique ID across multiple exchanges. */
  java.lang.String getBundle();

  boolean isDefaultBundle();

  /** Specifies whether the app has a privacy policy. “1” means there is a policy and “0” means there is not. */
  int getPrivacypolicy();

  boolean isDefaultPrivacypolicy();

  /** “1” if the application is a paid version; else “0” (i.e., free). */
  int getPaid();

  boolean isDefaultPaid();

  /** See Publisher Object. */
  open_rtb.Publisher getPublisher();

  boolean isDefaultPublisher();

  /** See Content Object. */
  open_rtb.Content getContent();

  boolean isDefaultContent();

  /** List of keywords describing this app in a comma separated string. */
  java.lang.String getKeywords();

  boolean isDefaultKeywords();

  /** For QAG 1.5 compliance, an app store URL for an installed app should be passed in the bid request. */
  java.lang.String getStoreurl();

  boolean isDefaultStoreurl();

  public interface Builder {

    App build();

    Builder setId(java.lang.String value);

    Builder clearId();

    Builder setName(java.lang.String value);

    Builder clearName();

    Builder setDomain(java.lang.String value);

    Builder clearDomain();

    Builder setCat(java.util.List value);

    Builder clearCat();

    Builder setSectioncat(java.util.List value);

    Builder clearSectioncat();

    Builder setPagecat(java.util.List value);

    Builder clearPagecat();

    Builder setVer(java.lang.String value);

    Builder clearVer();

    Builder setBundle(java.lang.String value);

    Builder clearBundle();

    Builder setPrivacypolicy(int value);

    Builder clearPrivacypolicy();

    Builder setPaid(int value);

    Builder clearPaid();

    Builder setPublisher(open_rtb.Publisher value);

    Builder clearPublisher();

    Builder setContent(open_rtb.Content value);

    Builder clearContent();

    Builder setKeywords(java.lang.String value);

    Builder clearKeywords();

    Builder setStoreurl(java.lang.String value);

    Builder clearStoreurl();
  }


  static class Comparator implements java.util.Comparator>, java.io.Serializable {

    @Override public int compare(open_rtb.App a, open_rtb.App b) {
      int _cmp;
      if (0 != (_cmp = compareId(a, b))) return _cmp;
      if (0 != (_cmp = compareName(a, b))) return _cmp;
      if (0 != (_cmp = compareDomain(a, b))) return _cmp;
      if (0 != (_cmp = compareCat(a, b))) return _cmp;
      if (0 != (_cmp = compareSectioncat(a, b))) return _cmp;
      if (0 != (_cmp = comparePagecat(a, b))) return _cmp;
      if (0 != (_cmp = compareVer(a, b))) return _cmp;
      if (0 != (_cmp = compareBundle(a, b))) return _cmp;
      if (0 != (_cmp = comparePrivacypolicy(a, b))) return _cmp;
      if (0 != (_cmp = comparePaid(a, b))) return _cmp;
      if (0 != (_cmp = comparePublisher(a, b))) return _cmp;
      if (0 != (_cmp = compareContent(a, b))) return _cmp;
      if (0 != (_cmp = compareKeywords(a, b))) return _cmp;
      if (0 != (_cmp = compareStoreurl(a, b))) return _cmp;
      return 0;
    }

    static private int compareId (open_rtb.App a, open_rtb.App b) {
      final java.lang.String fa = a.getId();
      final java.lang.String fb = b.getId();
      return fa.compareTo(fb);
    }

    static private int compareName (open_rtb.App a, open_rtb.App b) {
      final java.lang.String fa = a.getName();
      final java.lang.String fb = b.getName();
      return fa.compareTo(fb);
    }

    static private int compareDomain (open_rtb.App a, open_rtb.App b) {
      final java.lang.String fa = a.getDomain();
      final java.lang.String fb = b.getDomain();
      return fa.compareTo(fb);
    }

    static private int compareCat (open_rtb.App a, open_rtb.App b) {
      final java.util.List fa = a.getCat();
      final java.util.List fb = b.getCat();
      int _cmp = 0; java.util.Iterator a_it3 = fa.iterator(); java.util.Iterator b_it3 = fb.iterator(); while (a_it3.hasNext() && b_it3.hasNext()) { if (0 != (_cmp = a_it3.next().compareTo(b_it3.next()))) return _cmp; } if (a_it3.hasNext()) return 1; if (b_it3.hasNext()) return -1; return 0;
    }

    static private int compareSectioncat (open_rtb.App a, open_rtb.App b) {
      final java.util.List fa = a.getSectioncat();
      final java.util.List fb = b.getSectioncat();
      int _cmp = 0; java.util.Iterator a_it4 = fa.iterator(); java.util.Iterator b_it4 = fb.iterator(); while (a_it4.hasNext() && b_it4.hasNext()) { if (0 != (_cmp = a_it4.next().compareTo(b_it4.next()))) return _cmp; } if (a_it4.hasNext()) return 1; if (b_it4.hasNext()) return -1; return 0;
    }

    static private int comparePagecat (open_rtb.App a, open_rtb.App b) {
      final java.util.List fa = a.getPagecat();
      final java.util.List fb = b.getPagecat();
      int _cmp = 0; java.util.Iterator a_it5 = fa.iterator(); java.util.Iterator b_it5 = fb.iterator(); while (a_it5.hasNext() && b_it5.hasNext()) { if (0 != (_cmp = a_it5.next().compareTo(b_it5.next()))) return _cmp; } if (a_it5.hasNext()) return 1; if (b_it5.hasNext()) return -1; return 0;
    }

    static private int compareVer (open_rtb.App a, open_rtb.App b) {
      final java.lang.String fa = a.getVer();
      final java.lang.String fb = b.getVer();
      return fa.compareTo(fb);
    }

    static private int compareBundle (open_rtb.App a, open_rtb.App b) {
      final java.lang.String fa = a.getBundle();
      final java.lang.String fb = b.getBundle();
      return fa.compareTo(fb);
    }

    static private int comparePrivacypolicy (open_rtb.App a, open_rtb.App b) {
      final java.lang.Integer fa = a.getPrivacypolicy();
      final java.lang.Integer fb = b.getPrivacypolicy();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int comparePaid (open_rtb.App a, open_rtb.App b) {
      final java.lang.Integer fa = a.getPaid();
      final java.lang.Integer fb = b.getPaid();
      return java.lang.Integer.compareUnsigned(fa, fb);
    }

    static private int comparePublisher (open_rtb.App a, open_rtb.App b) {
      final open_rtb.Publisher fa = a.getPublisher();
      final open_rtb.Publisher fb = b.getPublisher();
      return fa.compareTo(fb);
    }

    static private int compareContent (open_rtb.App a, open_rtb.App b) {
      final open_rtb.Content fa = a.getContent();
      final open_rtb.Content fb = b.getContent();
      return fa.compareTo(fb);
    }

    static private int compareKeywords (open_rtb.App a, open_rtb.App b) {
      final java.lang.String fa = a.getKeywords();
      final java.lang.String fb = b.getKeywords();
      return fa.compareTo(fb);
    }

    static private int compareStoreurl (open_rtb.App a, open_rtb.App b) {
      final java.lang.String fa = a.getStoreurl();
      final java.lang.String fb = b.getStoreurl();
      return fa.compareTo(fb);
    }

    static private final Comparator INSTANCE = new Comparator();

    static public final long serialVersionUID = 14;
  }

  /** Returns comparator instance for App objects. */
  static java.util.Comparator> getComparator() {
    return Comparator.INSTANCE;
  }

  @Override default int compareTo(open_rtb.App other) {
    return getComparator().compare(this, other);
  }

  static class NativeImpl implements open_rtb.App {

    transient private java.lang.String json;
    private java.lang.String __id;
    transient private java.lang.Boolean is_default$id;
    private java.lang.String __name;
    transient private java.lang.Boolean is_default$name;
    private java.lang.String __domain;
    transient private java.lang.Boolean is_default$domain;
    private java.util.List __cat;
    transient private java.lang.Boolean is_default$cat;
    transient private java.util.List _cat;
    private java.util.List __sectioncat;
    transient private java.lang.Boolean is_default$sectioncat;
    transient private java.util.List _sectioncat;
    private java.util.List __pagecat;
    transient private java.lang.Boolean is_default$pagecat;
    transient private java.util.List _pagecat;
    private java.lang.String __ver;
    transient private java.lang.Boolean is_default$ver;
    private java.lang.String __bundle;
    transient private java.lang.Boolean is_default$bundle;
    private int __privacypolicy;
    transient private java.lang.Boolean is_default$privacypolicy;
    private int __paid;
    transient private java.lang.Boolean is_default$paid;
    private open_rtb.Publisher __publisher;
    transient private java.lang.Boolean is_default$publisher;
    private open_rtb.Content __content;
    transient private java.lang.Boolean is_default$content;
    private java.lang.String __keywords;
    transient private java.lang.Boolean is_default$keywords;
    private java.lang.String __storeurl;
    transient private java.lang.Boolean is_default$storeurl;

    private NativeImpl() {
      __id = "";
      is_default$id = java.lang.Boolean.TRUE;
      __name = "";
      is_default$name = java.lang.Boolean.TRUE;
      __domain = "";
      is_default$domain = java.lang.Boolean.TRUE;
      __cat = java.util.Collections.emptyList();
      is_default$cat = java.lang.Boolean.TRUE;
      __sectioncat = java.util.Collections.emptyList();
      is_default$sectioncat = java.lang.Boolean.TRUE;
      __pagecat = java.util.Collections.emptyList();
      is_default$pagecat = java.lang.Boolean.TRUE;
      __ver = "";
      is_default$ver = java.lang.Boolean.TRUE;
      __bundle = "";
      is_default$bundle = java.lang.Boolean.TRUE;
      __privacypolicy = 0;
      is_default$privacypolicy = java.lang.Boolean.TRUE;
      __paid = 0;
      is_default$paid = java.lang.Boolean.TRUE;
      __publisher = open_rtb.Publisher.newNativeImplBuilder().build();
      is_default$publisher = java.lang.Boolean.TRUE;
      __content = open_rtb.Content.newNativeImplBuilder().build();
      is_default$content = java.lang.Boolean.TRUE;
      __keywords = "";
      is_default$keywords = java.lang.Boolean.TRUE;
      __storeurl = "";
      is_default$storeurl = java.lang.Boolean.TRUE;
      json = "{}";
    }

    private NativeImpl(NativeImpl other) {
      setId(other.getId());
      setName(other.getName());
      setDomain(other.getDomain());
      setCat(other.getCat());
      setSectioncat(other.getSectioncat());
      setPagecat(other.getPagecat());
      setVer(other.getVer());
      setBundle(other.getBundle());
      setPrivacypolicy(other.getPrivacypolicy());
      setPaid(other.getPaid());
      setPublisher(other.getPublisher());
      setContent(other.getContent());
      setKeywords(other.getKeywords());
      setStoreurl(other.getStoreurl());
      json = other.json;
    }

    @Override public NativeImpl get() {
      return this;
    }

    @Override public Builder newBuilder() {
      return newNativeImplBuilder(this);
    }

    private java.lang.String buildJson() {
      java.lang.StringBuilder sb = new StringBuilder();
      if (!isDefaultId()) {
        sb.append((0 == sb.length()) ? "{\"id\": " : ", \"id\": ")
          .append("\"" + __id.replace("\"","\\\"") + '\"');
      }
      if (!isDefaultName()) {
        sb.append((0 == sb.length()) ? "{\"name\": " : ", \"name\": ")
          .append("\"" + __name.replace("\"","\\\"") + '\"');
      }
      if (!isDefaultDomain()) {
        sb.append((0 == sb.length()) ? "{\"domain\": " : ", \"domain\": ")
          .append("\"" + __domain.replace("\"","\\\"") + '\"');
      }
      if (!isDefaultCat()) {
        sb.append((0 == sb.length()) ? "{\"cat\": " : ", \"cat\": ")
          .append(__cat.stream().map(v -> "\"" + v.replace("\"","\\\"") + '\"').collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultSectioncat()) {
        sb.append((0 == sb.length()) ? "{\"sectioncat\": " : ", \"sectioncat\": ")
          .append(__sectioncat.stream().map(v -> "\"" + v.replace("\"","\\\"") + '\"').collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultPagecat()) {
        sb.append((0 == sb.length()) ? "{\"pagecat\": " : ", \"pagecat\": ")
          .append(__pagecat.stream().map(v -> "\"" + v.replace("\"","\\\"") + '\"').collect(java.util.stream.Collectors.joining(", ", "[", "]")));
      }
      if (!isDefaultVer()) {
        sb.append((0 == sb.length()) ? "{\"ver\": " : ", \"ver\": ")
          .append("\"" + __ver.replace("\"","\\\"") + '\"');
      }
      if (!isDefaultBundle()) {
        sb.append((0 == sb.length()) ? "{\"bundle\": " : ", \"bundle\": ")
          .append("\"" + __bundle.replace("\"","\\\"") + '\"');
      }
      if (!isDefaultPrivacypolicy()) {
        sb.append((0 == sb.length()) ? "{\"privacypolicy\": " : ", \"privacypolicy\": ")
          .append(__privacypolicy);
      }
      if (!isDefaultPaid()) {
        sb.append((0 == sb.length()) ? "{\"paid\": " : ", \"paid\": ")
          .append(__paid);
      }
      if (!isDefaultPublisher()) {
        sb.append((0 == sb.length()) ? "{\"publisher\": " : ", \"publisher\": ")
          .append(__publisher);
      }
      if (!isDefaultContent()) {
        sb.append((0 == sb.length()) ? "{\"content\": " : ", \"content\": ")
          .append(__content);
      }
      if (!isDefaultKeywords()) {
        sb.append((0 == sb.length()) ? "{\"keywords\": " : ", \"keywords\": ")
          .append("\"" + __keywords.replace("\"","\\\"") + '\"');
      }
      if (!isDefaultStoreurl()) {
        sb.append((0 == sb.length()) ? "{\"storeurl\": " : ", \"storeurl\": ")
          .append("\"" + __storeurl.replace("\"","\\\"") + '\"');
      }
      return (0 == sb.length()) ? "{}" : sb.append('}').toString();
    }

    @Override public String toString() {
      if (null == json) {
        json = buildJson();
      }
      return json;
    }

    @Override public int hashCode() {
      return toString().hashCode();
    }

    @Override public boolean equals(Object other) {
      if (other == this) return true;
      if (other == null || !(other instanceof NativeImpl)) return false;
      return toString().equals(other.toString());
    }

    @Override public java.lang.String getId() {
      return __id;
    }

    @Override public boolean isDefaultId() {
      if (null == is_default$id) {
        is_default$id = getId().length() == 0;
      }
      return is_default$id;
    }

    private void setId(java.lang.String value) {
      this.__id = value;
      this.is_default$id = null;
      this.json = null;
    }

    @Override public java.lang.String getName() {
      return __name;
    }

    @Override public boolean isDefaultName() {
      if (null == is_default$name) {
        is_default$name = getName().length() == 0;
      }
      return is_default$name;
    }

    private void setName(java.lang.String value) {
      this.__name = value;
      this.is_default$name = null;
      this.json = null;
    }

    @Override public java.lang.String getDomain() {
      return __domain;
    }

    @Override public boolean isDefaultDomain() {
      if (null == is_default$domain) {
        is_default$domain = getDomain().length() == 0;
      }
      return is_default$domain;
    }

    private void setDomain(java.lang.String value) {
      this.__domain = value;
      this.is_default$domain = null;
      this.json = null;
    }

    @Override public java.util.List getCat() {
      if (null == _cat) {
        _cat = java.util.Collections.unmodifiableList(__cat);
      }
      return _cat;
    }

    @Override public boolean isDefaultCat() {
      if (null == is_default$cat) {
        is_default$cat = getCat().isEmpty();
      }
      return is_default$cat;
    }

    private void setCat(java.util.List value) {
      this.__cat = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$cat = null;
      this.json = null;
      this._cat = null;
    }

    @Override public java.util.List getSectioncat() {
      if (null == _sectioncat) {
        _sectioncat = java.util.Collections.unmodifiableList(__sectioncat);
      }
      return _sectioncat;
    }

    @Override public boolean isDefaultSectioncat() {
      if (null == is_default$sectioncat) {
        is_default$sectioncat = getSectioncat().isEmpty();
      }
      return is_default$sectioncat;
    }

    private void setSectioncat(java.util.List value) {
      this.__sectioncat = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$sectioncat = null;
      this.json = null;
      this._sectioncat = null;
    }

    @Override public java.util.List getPagecat() {
      if (null == _pagecat) {
        _pagecat = java.util.Collections.unmodifiableList(__pagecat);
      }
      return _pagecat;
    }

    @Override public boolean isDefaultPagecat() {
      if (null == is_default$pagecat) {
        is_default$pagecat = getPagecat().isEmpty();
      }
      return is_default$pagecat;
    }

    private void setPagecat(java.util.List value) {
      this.__pagecat = value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size())));
      this.is_default$pagecat = null;
      this.json = null;
      this._pagecat = null;
    }

    @Override public java.lang.String getVer() {
      return __ver;
    }

    @Override public boolean isDefaultVer() {
      if (null == is_default$ver) {
        is_default$ver = getVer().length() == 0;
      }
      return is_default$ver;
    }

    private void setVer(java.lang.String value) {
      this.__ver = value;
      this.is_default$ver = null;
      this.json = null;
    }

    @Override public java.lang.String getBundle() {
      return __bundle;
    }

    @Override public boolean isDefaultBundle() {
      if (null == is_default$bundle) {
        is_default$bundle = getBundle().length() == 0;
      }
      return is_default$bundle;
    }

    private void setBundle(java.lang.String value) {
      this.__bundle = value;
      this.is_default$bundle = null;
      this.json = null;
    }

    @Override public int getPrivacypolicy() {
      return __privacypolicy;
    }

    @Override public boolean isDefaultPrivacypolicy() {
      if (null == is_default$privacypolicy) {
        is_default$privacypolicy = 0 == getPrivacypolicy();
      }
      return is_default$privacypolicy;
    }

    private void setPrivacypolicy(int value) {
      this.__privacypolicy = value;
      this.is_default$privacypolicy = null;
      this.json = null;
    }

    @Override public int getPaid() {
      return __paid;
    }

    @Override public boolean isDefaultPaid() {
      if (null == is_default$paid) {
        is_default$paid = 0 == getPaid();
      }
      return is_default$paid;
    }

    private void setPaid(int value) {
      this.__paid = value;
      this.is_default$paid = null;
      this.json = null;
    }

    @Override public open_rtb.Publisher getPublisher() {
      return __publisher;
    }

    @Override public boolean isDefaultPublisher() {
      if (null == is_default$publisher) {
        is_default$publisher = getPublisher().get().equals(open_rtb.App.NativeImpl._DEFAULT.get().getPublisher().get());
      }
      return is_default$publisher;
    }

    private void setPublisher(open_rtb.Publisher value) {
      this.__publisher = open_rtb.Publisher.nativeImpl(value);
      this.is_default$publisher = null;
      this.json = null;
    }

    @Override public open_rtb.Content getContent() {
      return __content;
    }

    @Override public boolean isDefaultContent() {
      if (null == is_default$content) {
        is_default$content = getContent().get().equals(open_rtb.App.NativeImpl._DEFAULT.get().getContent().get());
      }
      return is_default$content;
    }

    private void setContent(open_rtb.Content value) {
      this.__content = open_rtb.Content.nativeImpl(value);
      this.is_default$content = null;
      this.json = null;
    }

    @Override public java.lang.String getKeywords() {
      return __keywords;
    }

    @Override public boolean isDefaultKeywords() {
      if (null == is_default$keywords) {
        is_default$keywords = getKeywords().length() == 0;
      }
      return is_default$keywords;
    }

    private void setKeywords(java.lang.String value) {
      this.__keywords = value;
      this.is_default$keywords = null;
      this.json = null;
    }

    @Override public java.lang.String getStoreurl() {
      return __storeurl;
    }

    @Override public boolean isDefaultStoreurl() {
      if (null == is_default$storeurl) {
        is_default$storeurl = getStoreurl().length() == 0;
      }
      return is_default$storeurl;
    }

    private void setStoreurl(java.lang.String value) {
      this.__storeurl = value;
      this.is_default$storeurl = null;
      this.json = null;
    }

    static class NativeImplBuilder implements Builder {

      private NativeImpl wrapped = new NativeImpl();

      @Override public open_rtb.App build() {
        return new NativeImpl(wrapped);
      }

      @Override public Builder setId(java.lang.String value) {
        if (value.length() == 0) {
          return clearId();
        }
        wrapped.setId(value);
        return this;
      }

      @Override public Builder clearId() {
        wrapped.__id = _DEFAULT.get().__id;
        wrapped.is_default$id = true;
        return this;
      }

      @Override public Builder setName(java.lang.String value) {
        if (value.length() == 0) {
          return clearName();
        }
        wrapped.setName(value);
        return this;
      }

      @Override public Builder clearName() {
        wrapped.__name = _DEFAULT.get().__name;
        wrapped.is_default$name = true;
        return this;
      }

      @Override public Builder setDomain(java.lang.String value) {
        if (value.length() == 0) {
          return clearDomain();
        }
        wrapped.setDomain(value);
        return this;
      }

      @Override public Builder clearDomain() {
        wrapped.__domain = _DEFAULT.get().__domain;
        wrapped.is_default$domain = true;
        return this;
      }

      @Override public Builder setCat(java.util.List value) {
        if (value.isEmpty()) {
          return clearCat();
        }
        wrapped.setCat(value);
        return this;
      }

      @Override public Builder clearCat() {
        wrapped.__cat = _DEFAULT.get().__cat;
        wrapped.is_default$cat = true;
        wrapped._cat = _DEFAULT.get()._cat;
        return this;
      }

      @Override public Builder setSectioncat(java.util.List value) {
        if (value.isEmpty()) {
          return clearSectioncat();
        }
        wrapped.setSectioncat(value);
        return this;
      }

      @Override public Builder clearSectioncat() {
        wrapped.__sectioncat = _DEFAULT.get().__sectioncat;
        wrapped.is_default$sectioncat = true;
        wrapped._sectioncat = _DEFAULT.get()._sectioncat;
        return this;
      }

      @Override public Builder setPagecat(java.util.List value) {
        if (value.isEmpty()) {
          return clearPagecat();
        }
        wrapped.setPagecat(value);
        return this;
      }

      @Override public Builder clearPagecat() {
        wrapped.__pagecat = _DEFAULT.get().__pagecat;
        wrapped.is_default$pagecat = true;
        wrapped._pagecat = _DEFAULT.get()._pagecat;
        return this;
      }

      @Override public Builder setVer(java.lang.String value) {
        if (value.length() == 0) {
          return clearVer();
        }
        wrapped.setVer(value);
        return this;
      }

      @Override public Builder clearVer() {
        wrapped.__ver = _DEFAULT.get().__ver;
        wrapped.is_default$ver = true;
        return this;
      }

      @Override public Builder setBundle(java.lang.String value) {
        if (value.length() == 0) {
          return clearBundle();
        }
        wrapped.setBundle(value);
        return this;
      }

      @Override public Builder clearBundle() {
        wrapped.__bundle = _DEFAULT.get().__bundle;
        wrapped.is_default$bundle = true;
        return this;
      }

      @Override public Builder setPrivacypolicy(int value) {
        if (0 == value) {
          return clearPrivacypolicy();
        }
        wrapped.setPrivacypolicy(value);
        return this;
      }

      @Override public Builder clearPrivacypolicy() {
        wrapped.__privacypolicy = _DEFAULT.get().__privacypolicy;
        wrapped.is_default$privacypolicy = true;
        return this;
      }

      @Override public Builder setPaid(int value) {
        if (0 == value) {
          return clearPaid();
        }
        wrapped.setPaid(value);
        return this;
      }

      @Override public Builder clearPaid() {
        wrapped.__paid = _DEFAULT.get().__paid;
        wrapped.is_default$paid = true;
        return this;
      }

      @Override public Builder setPublisher(open_rtb.Publisher value) {
        if (value.get().equals(open_rtb.App.NativeImpl._DEFAULT.get().getPublisher().get())) {
          return clearPublisher();
        }
        wrapped.setPublisher(value);
        return this;
      }

      @Override public Builder clearPublisher() {
        wrapped.__publisher = _DEFAULT.get().__publisher;
        wrapped.is_default$publisher = true;
        return this;
      }

      @Override public Builder setContent(open_rtb.Content value) {
        if (value.get().equals(open_rtb.App.NativeImpl._DEFAULT.get().getContent().get())) {
          return clearContent();
        }
        wrapped.setContent(value);
        return this;
      }

      @Override public Builder clearContent() {
        wrapped.__content = _DEFAULT.get().__content;
        wrapped.is_default$content = true;
        return this;
      }

      @Override public Builder setKeywords(java.lang.String value) {
        if (value.length() == 0) {
          return clearKeywords();
        }
        wrapped.setKeywords(value);
        return this;
      }

      @Override public Builder clearKeywords() {
        wrapped.__keywords = _DEFAULT.get().__keywords;
        wrapped.is_default$keywords = true;
        return this;
      }

      @Override public Builder setStoreurl(java.lang.String value) {
        if (value.length() == 0) {
          return clearStoreurl();
        }
        wrapped.setStoreurl(value);
        return this;
      }

      @Override public Builder clearStoreurl() {
        wrapped.__storeurl = _DEFAULT.get().__storeurl;
        wrapped.is_default$storeurl = true;
        return this;
      }
    }

    static private java.lang.ThreadLocal _DEFAULT = new java.lang.ThreadLocal() {
      @Override protected NativeImpl initialValue() {
        NativeImpl instance = new NativeImpl();
        assert instance.isDefault();
        return instance;
      }
    };

    static public final long serialVersionUID = 14;
  }

  /** Returns a POJO builder instance with default values. */
  static Builder newNativeImplBuilder() { return new NativeImpl.NativeImplBuilder(); }

  /** Returns a POJO builder instance based on existing prototype App. */
  static Builder newNativeImplBuilder(open_rtb.App other) {
    return newNativeImplBuilder()
      .setId(other.getId())
      .setName(other.getName())
      .setDomain(other.getDomain())
      .setCat(other.getCat())
      .setSectioncat(other.getSectioncat())
      .setPagecat(other.getPagecat())
      .setVer(other.getVer())
      .setBundle(other.getBundle())
      .setPrivacypolicy(other.getPrivacypolicy())
      .setPaid(other.getPaid())
      .setPublisher(other.getPublisher())
      .setContent(other.getContent())
      .setKeywords(other.getKeywords())
      .setStoreurl(other.getStoreurl());
  }

  /** Returns a POJO based on an instance of App. */
  static NativeImpl nativeImpl(open_rtb.App instance) {
    if (instance instanceof NativeImpl) {
      return (NativeImpl) instance;
    } else {
      return (NativeImpl) newNativeImplBuilder(instance).build();
    }
  }

  static class Avro implements open_rtb.App {

    private byte[] binaryEncoding;
    transient private open_rtb.AppAvro wrapped;
    transient private java.lang.Boolean is_default$id;
    transient private java.lang.String _id;
    transient private java.lang.Boolean is_default$name;
    transient private java.lang.String _name;
    transient private java.lang.Boolean is_default$domain;
    transient private java.lang.String _domain;
    transient private java.lang.Boolean is_default$cat;
    transient private java.util.List _cat;
    transient private java.lang.Boolean is_default$sectioncat;
    transient private java.util.List _sectioncat;
    transient private java.lang.Boolean is_default$pagecat;
    transient private java.util.List _pagecat;
    transient private java.lang.Boolean is_default$ver;
    transient private java.lang.String _ver;
    transient private java.lang.Boolean is_default$bundle;
    transient private java.lang.String _bundle;
    transient private java.lang.Boolean is_default$privacypolicy;
    transient private java.lang.Boolean is_default$paid;
    transient private java.lang.Boolean is_default$publisher;
    transient private open_rtb.Publisher _publisher;
    transient private java.lang.Boolean is_default$content;
    transient private open_rtb.Content _content;
    transient private java.lang.Boolean is_default$keywords;
    transient private java.lang.String _keywords;
    transient private java.lang.Boolean is_default$storeurl;
    transient private java.lang.String _storeurl;

    private Avro(open_rtb.AppAvro wrapped, byte[] binaryEncoding) {
      this.wrapped = wrapped;
      this.binaryEncoding = binaryEncoding;
    }

    /** Constructs a new Avro instance based on a message's binary encoding. Only use this if you know what you're doing. */
    public Avro(byte[] binaryEncoding) { this(null, binaryEncoding); }

    @Override public open_rtb.AppAvro get() {
      if (wrapped == null) {
        try {
          wrapped = decode(binaryEncoding);
        } catch (java.io.IOException e) {
          throw new java.io.UncheckedIOException(e);
        }
      }
      return wrapped;
    }

    @Override public Builder newBuilder() {
      return newAvroBuilder(get());
    }

    /** Returns an Avro binary encoding of this record. */
    public byte[] toByteArray() {
      return (byte[]) encoded().binaryEncoding.clone();
    }

    /** Returns the Avro binary encoding of this record wrapped in a read-only buffer. */
    public java.nio.ByteBuffer toByteBuffer() {
      return java.nio.ByteBuffer.wrap(encoded().binaryEncoding).asReadOnlyBuffer();
    }

    @Override public java.lang.String getId() {
      if (_id == null) {
        _id = java.util.Optional.of(get().id).map(java.lang.Object::toString).orElse("");
      }
      return _id;
    }

    @Override public boolean isDefaultId() {
      if (is_default$id == null) {
        is_default$id = getId().length() == 0;
      }
      return is_default$id;
    }

    @Override public java.lang.String getName() {
      if (_name == null) {
        _name = java.util.Optional.of(get().name).map(java.lang.Object::toString).orElse("");
      }
      return _name;
    }

    @Override public boolean isDefaultName() {
      if (is_default$name == null) {
        is_default$name = getName().length() == 0;
      }
      return is_default$name;
    }

    @Override public java.lang.String getDomain() {
      if (_domain == null) {
        _domain = java.util.Optional.of(get().domain).map(java.lang.Object::toString).orElse("");
      }
      return _domain;
    }

    @Override public boolean isDefaultDomain() {
      if (is_default$domain == null) {
        is_default$domain = getDomain().length() == 0;
      }
      return is_default$domain;
    }

    @Override public java.util.List getCat() {
      if (_cat == null) {
        _cat = java.util.Collections.unmodifiableList(get().cat.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList(get().cat.size()))));
      }
      return _cat;
    }

    @Override public boolean isDefaultCat() {
      if (is_default$cat == null) {
        is_default$cat = getCat().isEmpty();
      }
      return is_default$cat;
    }

    @Override public java.util.List getSectioncat() {
      if (_sectioncat == null) {
        _sectioncat = java.util.Collections.unmodifiableList(get().sectioncat.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList(get().sectioncat.size()))));
      }
      return _sectioncat;
    }

    @Override public boolean isDefaultSectioncat() {
      if (is_default$sectioncat == null) {
        is_default$sectioncat = getSectioncat().isEmpty();
      }
      return is_default$sectioncat;
    }

    @Override public java.util.List getPagecat() {
      if (_pagecat == null) {
        _pagecat = java.util.Collections.unmodifiableList(get().pagecat.stream().map(java.lang.Object::toString).collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList(get().pagecat.size()))));
      }
      return _pagecat;
    }

    @Override public boolean isDefaultPagecat() {
      if (is_default$pagecat == null) {
        is_default$pagecat = getPagecat().isEmpty();
      }
      return is_default$pagecat;
    }

    @Override public java.lang.String getVer() {
      if (_ver == null) {
        _ver = java.util.Optional.of(get().ver).map(java.lang.Object::toString).orElse("");
      }
      return _ver;
    }

    @Override public boolean isDefaultVer() {
      if (is_default$ver == null) {
        is_default$ver = getVer().length() == 0;
      }
      return is_default$ver;
    }

    @Override public java.lang.String getBundle() {
      if (_bundle == null) {
        _bundle = java.util.Optional.of(get().bundle).map(java.lang.Object::toString).orElse("");
      }
      return _bundle;
    }

    @Override public boolean isDefaultBundle() {
      if (is_default$bundle == null) {
        is_default$bundle = getBundle().length() == 0;
      }
      return is_default$bundle;
    }

    @Override public int getPrivacypolicy() {
      return get().privacypolicy;
    }

    @Override public boolean isDefaultPrivacypolicy() {
      if (is_default$privacypolicy == null) {
        is_default$privacypolicy = 0 == getPrivacypolicy();
      }
      return is_default$privacypolicy;
    }

    @Override public int getPaid() {
      return get().paid;
    }

    @Override public boolean isDefaultPaid() {
      if (is_default$paid == null) {
        is_default$paid = 0 == getPaid();
      }
      return is_default$paid;
    }

    @Override public open_rtb.Publisher getPublisher() {
      if (_publisher == null) {
        _publisher = open_rtb.Publisher.avro(get().publisher);
      }
      return _publisher;
    }

    @Override public boolean isDefaultPublisher() {
      if (is_default$publisher == null) {
        is_default$publisher = getPublisher().get().equals(open_rtb.App.Avro._DEFAULT.get().getPublisher().get());
      }
      return is_default$publisher;
    }

    @Override public open_rtb.Content getContent() {
      if (_content == null) {
        _content = open_rtb.Content.avro(get().content);
      }
      return _content;
    }

    @Override public boolean isDefaultContent() {
      if (is_default$content == null) {
        is_default$content = getContent().get().equals(open_rtb.App.Avro._DEFAULT.get().getContent().get());
      }
      return is_default$content;
    }

    @Override public java.lang.String getKeywords() {
      if (_keywords == null) {
        _keywords = java.util.Optional.of(get().keywords).map(java.lang.Object::toString).orElse("");
      }
      return _keywords;
    }

    @Override public boolean isDefaultKeywords() {
      if (is_default$keywords == null) {
        is_default$keywords = getKeywords().length() == 0;
      }
      return is_default$keywords;
    }

    @Override public java.lang.String getStoreurl() {
      if (_storeurl == null) {
        _storeurl = java.util.Optional.of(get().storeurl).map(java.lang.Object::toString).orElse("");
      }
      return _storeurl;
    }

    @Override public boolean isDefaultStoreurl() {
      if (is_default$storeurl == null) {
        is_default$storeurl = getStoreurl().length() == 0;
      }
      return is_default$storeurl;
    }

    @Override public boolean equals(Object other) {
      if (other == this) return true;
      if (other == null && !(other instanceof Avro)) return false;
      return get().equals(((Avro) other).get());
    }

    @Override public int hashCode() { return get().hashCode(); }

    @Override public String toString() { return get().toString(); }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      if (binaryEncoding == null) { encode(); }
      out.defaultWriteObject();
    }

    public Avro encoded() {
      if (binaryEncoding != null) {
        try {
          encode();
        } catch (java.io.IOException e) {
          throw new java.io.UncheckedIOException(e);
        }
      }
      return this;
    }

    private void encode() throws java.io.IOException {
      java.io.ByteArrayOutputStream stream = _ENCODER_STREAM.get();
      org.apache.avro.io.BinaryEncoder encoder = _ENCODER.get();
      stream.reset();
      wrapped.encode(encoder);
      encoder.flush();
      binaryEncoding = stream.toByteArray();
    }

    static private open_rtb.AppAvro decode(byte[] binaryEncoding) throws java.io.IOException {
      open_rtb.AppAvro instance = new open_rtb.AppAvro();
      org.apache.avro.io.BinaryDecoder decoder = org.apache.avro.io.DecoderFactory.get().binaryDecoder(binaryEncoding, _DECODER.get());
      return instance.decode(decoder);
    }

    /** Decodes a Avro record. */
    static public open_rtb.App from(byte[] binaryEncoding) throws java.io.IOException {
      return new Avro(decode(binaryEncoding), binaryEncoding);
    }

    static private java.lang.ThreadLocal _DECODER = new java.lang.ThreadLocal() {
      @Override protected org.apache.avro.io.BinaryDecoder initialValue() { return org.apache.avro.io.DecoderFactory.get().binaryDecoder(new byte[0], null); }
    };

    static private java.lang.ThreadLocal _ENCODER_STREAM = new java.lang.ThreadLocal() {
      @Override protected java.io.ByteArrayOutputStream initialValue() { return new java.io.ByteArrayOutputStream(); }
    };

    static private java.lang.ThreadLocal _ENCODER = new java.lang.ThreadLocal() {
      @Override protected org.apache.avro.io.BinaryEncoder initialValue() { return org.apache.avro.io.EncoderFactory.get().binaryEncoder(_ENCODER_STREAM.get(), null); }
    };

    static private java.lang.ThreadLocal _DEFAULT = new java.lang.ThreadLocal() {
      @Override protected Avro initialValue() { return new Avro(open_rtb.AppAvro.newBuilder().build(), null); }
    };

    static public final long serialVersionUID = 14;
  }

  static class AvroBuilder implements Builder {

    final private open_rtb.AppAvro.Builder builder;

    /** Only use this if you know what you are doing. */
    public AvroBuilder(open_rtb.AppAvro.Builder builder) { this.builder = builder; }

    @Override public open_rtb.App build() {
      return new Avro(builder.build(), null);
    }

    @Override public Builder setId(java.lang.String value) {
      builder.setId(new org.apache.avro.util.Utf8(value));
      return this;
    }

    @Override public Builder clearId() {
      builder.clearId();
      return this;
    }

    @Override public Builder setName(java.lang.String value) {
      builder.setName(new org.apache.avro.util.Utf8(value));
      return this;
    }

    @Override public Builder clearName() {
      builder.clearName();
      return this;
    }

    @Override public Builder setDomain(java.lang.String value) {
      builder.setDomain(new org.apache.avro.util.Utf8(value));
      return this;
    }

    @Override public Builder clearDomain() {
      builder.clearDomain();
      return this;
    }

    @Override public Builder setCat(java.util.List value) {
      builder.setCat(value.stream().map(org.apache.avro.util.Utf8::new).collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.AppAvro.SCHEMA$.getFields().get(3).schema()))));
      return this;
    }

    @Override public Builder clearCat() {
      builder.clearCat();
      return this;
    }

    @Override public Builder setSectioncat(java.util.List value) {
      builder.setSectioncat(value.stream().map(org.apache.avro.util.Utf8::new).collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.AppAvro.SCHEMA$.getFields().get(4).schema()))));
      return this;
    }

    @Override public Builder clearSectioncat() {
      builder.clearSectioncat();
      return this;
    }

    @Override public Builder setPagecat(java.util.List value) {
      builder.setPagecat(value.stream().map(org.apache.avro.util.Utf8::new).collect(java.util.stream.Collectors.toCollection(() -> new org.apache.avro.generic.GenericData.Array<>(value.size(), open_rtb.AppAvro.SCHEMA$.getFields().get(5).schema()))));
      return this;
    }

    @Override public Builder clearPagecat() {
      builder.clearPagecat();
      return this;
    }

    @Override public Builder setVer(java.lang.String value) {
      builder.setVer(new org.apache.avro.util.Utf8(value));
      return this;
    }

    @Override public Builder clearVer() {
      builder.clearVer();
      return this;
    }

    @Override public Builder setBundle(java.lang.String value) {
      builder.setBundle(new org.apache.avro.util.Utf8(value));
      return this;
    }

    @Override public Builder clearBundle() {
      builder.clearBundle();
      return this;
    }

    @Override public Builder setPrivacypolicy(int value) {
      builder.setPrivacypolicy(value);
      return this;
    }

    @Override public Builder clearPrivacypolicy() {
      builder.clearPrivacypolicy();
      return this;
    }

    @Override public Builder setPaid(int value) {
      builder.setPaid(value);
      return this;
    }

    @Override public Builder clearPaid() {
      builder.clearPaid();
      return this;
    }

    @Override public Builder setPublisher(open_rtb.Publisher value) {
      builder.setPublisher(open_rtb.Publisher.avro(value).get());
      return this;
    }

    @Override public Builder clearPublisher() {
      builder.clearPublisher();
      return this;
    }

    @Override public Builder setContent(open_rtb.Content value) {
      builder.setContent(open_rtb.Content.avro(value).get());
      return this;
    }

    @Override public Builder clearContent() {
      builder.clearContent();
      return this;
    }

    @Override public Builder setKeywords(java.lang.String value) {
      builder.setKeywords(new org.apache.avro.util.Utf8(value));
      return this;
    }

    @Override public Builder clearKeywords() {
      builder.clearKeywords();
      return this;
    }

    @Override public Builder setStoreurl(java.lang.String value) {
      builder.setStoreurl(new org.apache.avro.util.Utf8(value));
      return this;
    }

    @Override public Builder clearStoreurl() {
      builder.clearStoreurl();
      return this;
    }
  }

  /** Returns new Avro builder instance with default values. */
  static Builder newAvroBuilder() {
    return new AvroBuilder(open_rtb.AppAvro.newBuilder());
  }

  /** Returns new Avro builder instance based on existing prototype. */
  static Builder newAvroBuilder(open_rtb.AppAvro other) {
    return new AvroBuilder(open_rtb.AppAvro.newBuilder(other));
  }

  /** Returns new Avro builder instance based on existing prototype builder. */
  static Builder newAvroBuilder(open_rtb.AppAvro.Builder other) {
    return new AvroBuilder(open_rtb.AppAvro.newBuilder(other));
  }

  /** Returns new Avro builder instance based on existing prototype App. */
  static Builder newAvroBuilder(open_rtb.App other) {
    return newAvroBuilder()
      .setId(other.getId())
      .setName(other.getName())
      .setDomain(other.getDomain())
      .setCat(other.getCat())
      .setSectioncat(other.getSectioncat())
      .setPagecat(other.getPagecat())
      .setVer(other.getVer())
      .setBundle(other.getBundle())
      .setPrivacypolicy(other.getPrivacypolicy())
      .setPaid(other.getPaid())
      .setPublisher(other.getPublisher())
      .setContent(other.getContent())
      .setKeywords(other.getKeywords())
      .setStoreurl(other.getStoreurl());
  }

  /** Returns a wrapped Avro record based on an instance of App. */
  static Avro avro(open_rtb.App instance) {
    if (instance instanceof Avro) {
      return (Avro) instance;
    } else {
      return (Avro) newAvroBuilder(instance).build();
    }
  }

  /** Wraps an existing Avro record. */
  static Avro avro(open_rtb.AppAvro wrapped) {
    assert wrapped != null;
    return new Avro(wrapped.freeze(), null);
  }

  /** Returns Avro record class. */
  static java.lang.Class getAvroClass() {
    return open_rtb.AppAvro.class;
  }

  /** Returns Avro record schema. */
  static org.apache.avro.Schema getAvroSchema() {
    return open_rtb.AppAvro.SCHEMA$;
  }

  static class Protobuf implements open_rtb.App {

    private byte[] binaryEncoding;
    transient private open_rtb.OpenRtbProtobuf.App wrapped;
    transient private java.lang.Boolean is_default$id;
    transient private java.lang.Boolean is_default$name;
    transient private java.lang.Boolean is_default$domain;
    transient private java.lang.Boolean is_default$cat;
    transient private java.lang.Boolean is_default$sectioncat;
    transient private java.lang.Boolean is_default$pagecat;
    transient private java.lang.Boolean is_default$ver;
    transient private java.lang.Boolean is_default$bundle;
    transient private java.lang.Boolean is_default$privacypolicy;
    transient private java.lang.Boolean is_default$paid;
    transient private java.lang.Boolean is_default$publisher;
    transient private open_rtb.Publisher _publisher;
    transient private java.lang.Boolean is_default$content;
    transient private open_rtb.Content _content;
    transient private java.lang.Boolean is_default$keywords;
    transient private java.lang.Boolean is_default$storeurl;

    private Protobuf(open_rtb.OpenRtbProtobuf.App wrapped, byte[] binaryEncoding) {
      this.wrapped = wrapped;
      this.binaryEncoding = binaryEncoding;
    }

    /** Constructs a new Protobuf instance based on a message's binary encoding. Only use this if you know what you're doing. */
    public Protobuf(byte[] binaryEncoding) { this(null, binaryEncoding); }

    @Override public open_rtb.OpenRtbProtobuf.App get() {
      if (wrapped == null) {
        try {
          wrapped = open_rtb.OpenRtbProtobuf.App.parseFrom(binaryEncoding);
        } catch (java.io.IOException e) {
          throw new java.io.UncheckedIOException(e);
        }
      }
      return wrapped;
    }

    @Override public Builder newBuilder() {
      return newProtobufBuilder(get());
    }

    @Override public java.lang.String getId() {
      return get().getId();
    }

    @Override public boolean isDefaultId() {
      if (is_default$id == null) {
        is_default$id = getId().length() == 0;
      }
      return is_default$id;
    }

    @Override public java.lang.String getName() {
      return get().getName();
    }

    @Override public boolean isDefaultName() {
      if (is_default$name == null) {
        is_default$name = getName().length() == 0;
      }
      return is_default$name;
    }

    @Override public java.lang.String getDomain() {
      return get().getDomain();
    }

    @Override public boolean isDefaultDomain() {
      if (is_default$domain == null) {
        is_default$domain = getDomain().length() == 0;
      }
      return is_default$domain;
    }

    @Override public java.util.List getCat() {
      return (java.util.List)(java.util.List) get().getCatList();
    }

    @Override public boolean isDefaultCat() {
      if (is_default$cat == null) {
        is_default$cat = getCat().isEmpty();
      }
      return is_default$cat;
    }

    @Override public java.util.List getSectioncat() {
      return (java.util.List)(java.util.List) get().getSectioncatList();
    }

    @Override public boolean isDefaultSectioncat() {
      if (is_default$sectioncat == null) {
        is_default$sectioncat = getSectioncat().isEmpty();
      }
      return is_default$sectioncat;
    }

    @Override public java.util.List getPagecat() {
      return (java.util.List)(java.util.List) get().getPagecatList();
    }

    @Override public boolean isDefaultPagecat() {
      if (is_default$pagecat == null) {
        is_default$pagecat = getPagecat().isEmpty();
      }
      return is_default$pagecat;
    }

    @Override public java.lang.String getVer() {
      return get().getVer();
    }

    @Override public boolean isDefaultVer() {
      if (is_default$ver == null) {
        is_default$ver = getVer().length() == 0;
      }
      return is_default$ver;
    }

    @Override public java.lang.String getBundle() {
      return get().getBundle();
    }

    @Override public boolean isDefaultBundle() {
      if (is_default$bundle == null) {
        is_default$bundle = getBundle().length() == 0;
      }
      return is_default$bundle;
    }

    @Override public int getPrivacypolicy() {
      return get().getPrivacypolicy();
    }

    @Override public boolean isDefaultPrivacypolicy() {
      if (is_default$privacypolicy == null) {
        is_default$privacypolicy = 0 == getPrivacypolicy();
      }
      return is_default$privacypolicy;
    }

    @Override public int getPaid() {
      return get().getPaid();
    }

    @Override public boolean isDefaultPaid() {
      if (is_default$paid == null) {
        is_default$paid = 0 == getPaid();
      }
      return is_default$paid;
    }

    @Override public open_rtb.Publisher getPublisher() {
      if (_publisher == null) {
        _publisher = open_rtb.Publisher.protobuf(get().getPublisher());
      }
      return _publisher;
    }

    @Override public boolean isDefaultPublisher() {
      if (is_default$publisher == null) {
        is_default$publisher = getPublisher().get().equals(open_rtb.App.Protobuf._DEFAULT.get().getPublisher().get());
      }
      return is_default$publisher;
    }

    @Override public open_rtb.Content getContent() {
      if (_content == null) {
        _content = open_rtb.Content.protobuf(get().getContent());
      }
      return _content;
    }

    @Override public boolean isDefaultContent() {
      if (is_default$content == null) {
        is_default$content = getContent().get().equals(open_rtb.App.Protobuf._DEFAULT.get().getContent().get());
      }
      return is_default$content;
    }

    @Override public java.lang.String getKeywords() {
      return get().getKeywords();
    }

    @Override public boolean isDefaultKeywords() {
      if (is_default$keywords == null) {
        is_default$keywords = getKeywords().length() == 0;
      }
      return is_default$keywords;
    }

    @Override public java.lang.String getStoreurl() {
      return get().getStoreurl();
    }

    @Override public boolean isDefaultStoreurl() {
      if (is_default$storeurl == null) {
        is_default$storeurl = getStoreurl().length() == 0;
      }
      return is_default$storeurl;
    }

    @Override public boolean equals(Object other) {
      if (other == this) return true;
      if (other == null && !(other instanceof Protobuf)) return false;
      return get().equals(((Protobuf) other).get());
    }

    @Override public int hashCode() { return get().hashCode(); }

    @Override public String toString() { return get().toString(); }

    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
      if (binaryEncoding == null) {
        binaryEncoding = wrapped.toByteArray();
      }
      out.defaultWriteObject();
    }

    /** Decodes a Protobuf message. */
    static public open_rtb.App from(byte[] binaryEncoding) throws java.io.IOException {
      return new Protobuf(open_rtb.OpenRtbProtobuf.App.parseFrom(binaryEncoding), binaryEncoding);
    }

    static private java.lang.ThreadLocal _DEFAULT = new java.lang.ThreadLocal() {
      @Override protected Protobuf initialValue() { return new Protobuf(open_rtb.OpenRtbProtobuf.App.getDefaultInstance() , null); }
    };

    static public final long serialVersionUID = 14;
  }

  static class ProtobufBuilder implements Builder {

    final private open_rtb.OpenRtbProtobuf.App.Builder builder;

    /** Only use this if you know what you are doing. */
    public ProtobufBuilder(open_rtb.OpenRtbProtobuf.App.Builder builder) { this.builder = builder; }

    @Override public open_rtb.App build() {
      return new Protobuf(builder.build(), null);
    }

    @Override public Builder setId(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setId(value);
      }
      return this;
    }

    @Override public Builder clearId() {
      builder.clearId();
      return this;
    }

    @Override public Builder setName(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setName(value);
      }
      return this;
    }

    @Override public Builder clearName() {
      builder.clearName();
      return this;
    }

    @Override public Builder setDomain(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setDomain(value);
      }
      return this;
    }

    @Override public Builder clearDomain() {
      builder.clearDomain();
      return this;
    }

    @Override public Builder setCat(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllCat(value);
      }
      return this;
    }

    @Override public Builder clearCat() {
      builder.clearCat();
      return this;
    }

    @Override public Builder setSectioncat(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllSectioncat(value);
      }
      return this;
    }

    @Override public Builder clearSectioncat() {
      builder.clearSectioncat();
      return this;
    }

    @Override public Builder setPagecat(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.addAllPagecat(value);
      }
      return this;
    }

    @Override public Builder clearPagecat() {
      builder.clearPagecat();
      return this;
    }

    @Override public Builder setVer(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setVer(value);
      }
      return this;
    }

    @Override public Builder clearVer() {
      builder.clearVer();
      return this;
    }

    @Override public Builder setBundle(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setBundle(value);
      }
      return this;
    }

    @Override public Builder clearBundle() {
      builder.clearBundle();
      return this;
    }

    @Override public Builder setPrivacypolicy(int value) {
      if (!(0 == value)) {
        builder.setPrivacypolicy(value);
      }
      return this;
    }

    @Override public Builder clearPrivacypolicy() {
      builder.clearPrivacypolicy();
      return this;
    }

    @Override public Builder setPaid(int value) {
      if (!(0 == value)) {
        builder.setPaid(value);
      }
      return this;
    }

    @Override public Builder clearPaid() {
      builder.clearPaid();
      return this;
    }

    @Override public Builder setPublisher(open_rtb.Publisher value) {
      if (!(value.get().equals(open_rtb.App.Protobuf._DEFAULT.get().getPublisher().get()))) {
        builder.setPublisher(open_rtb.Publisher.protobuf(value).get());
      }
      return this;
    }

    @Override public Builder clearPublisher() {
      builder.clearPublisher();
      return this;
    }

    @Override public Builder setContent(open_rtb.Content value) {
      if (!(value.get().equals(open_rtb.App.Protobuf._DEFAULT.get().getContent().get()))) {
        builder.setContent(open_rtb.Content.protobuf(value).get());
      }
      return this;
    }

    @Override public Builder clearContent() {
      builder.clearContent();
      return this;
    }

    @Override public Builder setKeywords(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setKeywords(value);
      }
      return this;
    }

    @Override public Builder clearKeywords() {
      builder.clearKeywords();
      return this;
    }

    @Override public Builder setStoreurl(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setStoreurl(value);
      }
      return this;
    }

    @Override public Builder clearStoreurl() {
      builder.clearStoreurl();
      return this;
    }
  }

  /** Returns new Protobuf builder instance with default values. */
  static Builder newProtobufBuilder() {
    return new ProtobufBuilder(open_rtb.OpenRtbProtobuf.App.newBuilder());
  }

  /** Returns new Protobuf builder instance based on existing prototype. */
  static Builder newProtobufBuilder(open_rtb.OpenRtbProtobuf.App other) {
    return new ProtobufBuilder(open_rtb.OpenRtbProtobuf.App.newBuilder(other));
  }

  /** Returns new Protobuf builder instance based on existing prototype App. */
  static Builder newProtobufBuilder(open_rtb.App other) {
    return newProtobufBuilder()
      .setId(other.getId())
      .setName(other.getName())
      .setDomain(other.getDomain())
      .setCat(other.getCat())
      .setSectioncat(other.getSectioncat())
      .setPagecat(other.getPagecat())
      .setVer(other.getVer())
      .setBundle(other.getBundle())
      .setPrivacypolicy(other.getPrivacypolicy())
      .setPaid(other.getPaid())
      .setPublisher(other.getPublisher())
      .setContent(other.getContent())
      .setKeywords(other.getKeywords())
      .setStoreurl(other.getStoreurl());
  }

  /** Returns a wrapped Protobuf message based on an instance of App. */
  static Protobuf protobuf(open_rtb.App instance) {
    if (instance instanceof Protobuf) {
      return (Protobuf) instance;
    }
    return (Protobuf) newProtobufBuilder(instance).build();
  }

  /** Wraps an existing Protobuf message. */
  static Protobuf protobuf(open_rtb.OpenRtbProtobuf.App wrapped) {
    assert wrapped != null;
    return new Protobuf(wrapped, null);
  }

  /** Returns Protobuf class for this struct. */
  static java.lang.Class getProtobufClass() {
    return open_rtb.OpenRtbProtobuf.App.class;
  }

  /** Returns Protobuf protocol class for this struct. */
  static java.lang.Class getProtobufProtocolClass() {
    return com.adgear.anoa.test.ad_exchange.AdExchangeProtobuf.class;
  }

  /** Returns Protobuf descriptor for this struct. */
  static com.google.protobuf.Descriptors.Descriptor getProtobufDescriptor() {
    return open_rtb.OpenRtbProtobuf.App.getDescriptor();
  }

  /** Returns Protobuf protocol descriptor for this struct. */
  static com.google.protobuf.Descriptors.FileDescriptor getProtobufProtocolDescriptor() {
    return com.adgear.anoa.test.ad_exchange.AdExchangeProtobuf.getDescriptor();
  }

  static class Thrift implements open_rtb.App {

    private open_rtb.AppThrift wrapped;
    transient private java.lang.Boolean is_default$id;
    transient private java.lang.String _id;
    transient private java.lang.Boolean is_default$name;
    transient private java.lang.String _name;
    transient private java.lang.Boolean is_default$domain;
    transient private java.lang.String _domain;
    transient private java.lang.Boolean is_default$cat;
    transient private java.util.List _cat;
    transient private java.lang.Boolean is_default$sectioncat;
    transient private java.util.List _sectioncat;
    transient private java.lang.Boolean is_default$pagecat;
    transient private java.util.List _pagecat;
    transient private java.lang.Boolean is_default$ver;
    transient private java.lang.String _ver;
    transient private java.lang.Boolean is_default$bundle;
    transient private java.lang.String _bundle;
    transient private java.lang.Boolean is_default$privacypolicy;
    transient private java.lang.Boolean is_default$paid;
    transient private java.lang.Boolean is_default$publisher;
    transient private open_rtb.Publisher _publisher;
    transient private java.lang.Boolean is_default$content;
    transient private open_rtb.Content _content;
    transient private java.lang.Boolean is_default$keywords;
    transient private java.lang.String _keywords;
    transient private java.lang.Boolean is_default$storeurl;
    transient private java.lang.String _storeurl;

    /** Wraps an existing instance. Only use this if you know what you are doing. */
    public Thrift(open_rtb.AppThrift wrapped) { this.wrapped = wrapped; }

    /** Create a new wrapper. */
    public Thrift() { this(new open_rtb.AppThrift()); }

    @Override public open_rtb.AppThrift get() { return wrapped; }

    @Override public Builder newBuilder() {
      return newThriftBuilder(get());
    }

    @Override public java.lang.String getId() {
      if (_id == null) {
        _id = java.util.Optional.ofNullable(wrapped.getId()).orElse("");
      }
      return _id;
    }

    @Override public boolean isDefaultId() {
      if (is_default$id == null) {
        is_default$id = getId().length() == 0;
      }
      return is_default$id;
    }

    @Override public java.lang.String getName() {
      if (_name == null) {
        _name = java.util.Optional.ofNullable(wrapped.getName()).orElse("");
      }
      return _name;
    }

    @Override public boolean isDefaultName() {
      if (is_default$name == null) {
        is_default$name = getName().length() == 0;
      }
      return is_default$name;
    }

    @Override public java.lang.String getDomain() {
      if (_domain == null) {
        _domain = java.util.Optional.ofNullable(wrapped.getDomain()).orElse("");
      }
      return _domain;
    }

    @Override public boolean isDefaultDomain() {
      if (is_default$domain == null) {
        is_default$domain = getDomain().length() == 0;
      }
      return is_default$domain;
    }

    @Override public java.util.List getCat() {
      if (_cat == null) {
        _cat = java.util.Optional.ofNullable(wrapped.getCat()).orElseGet(java.util.Collections::emptyList).stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _cat;
    }

    @Override public boolean isDefaultCat() {
      if (is_default$cat == null) {
        is_default$cat = getCat().isEmpty();
      }
      return is_default$cat;
    }

    @Override public java.util.List getSectioncat() {
      if (_sectioncat == null) {
        _sectioncat = java.util.Optional.ofNullable(wrapped.getSectioncat()).orElseGet(java.util.Collections::emptyList).stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _sectioncat;
    }

    @Override public boolean isDefaultSectioncat() {
      if (is_default$sectioncat == null) {
        is_default$sectioncat = getSectioncat().isEmpty();
      }
      return is_default$sectioncat;
    }

    @Override public java.util.List getPagecat() {
      if (_pagecat == null) {
        _pagecat = java.util.Optional.ofNullable(wrapped.getPagecat()).orElseGet(java.util.Collections::emptyList).stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList()));
      }
      return _pagecat;
    }

    @Override public boolean isDefaultPagecat() {
      if (is_default$pagecat == null) {
        is_default$pagecat = getPagecat().isEmpty();
      }
      return is_default$pagecat;
    }

    @Override public java.lang.String getVer() {
      if (_ver == null) {
        _ver = java.util.Optional.ofNullable(wrapped.getVer()).orElse("");
      }
      return _ver;
    }

    @Override public boolean isDefaultVer() {
      if (is_default$ver == null) {
        is_default$ver = getVer().length() == 0;
      }
      return is_default$ver;
    }

    @Override public java.lang.String getBundle() {
      if (_bundle == null) {
        _bundle = java.util.Optional.ofNullable(wrapped.getBundle()).orElse("");
      }
      return _bundle;
    }

    @Override public boolean isDefaultBundle() {
      if (is_default$bundle == null) {
        is_default$bundle = getBundle().length() == 0;
      }
      return is_default$bundle;
    }

    @Override public int getPrivacypolicy() {
      return wrapped.getPrivacypolicy();
    }

    @Override public boolean isDefaultPrivacypolicy() {
      if (is_default$privacypolicy == null) {
        is_default$privacypolicy = 0 == getPrivacypolicy();
      }
      return is_default$privacypolicy;
    }

    @Override public int getPaid() {
      return wrapped.getPaid();
    }

    @Override public boolean isDefaultPaid() {
      if (is_default$paid == null) {
        is_default$paid = 0 == getPaid();
      }
      return is_default$paid;
    }

    @Override public open_rtb.Publisher getPublisher() {
      if (_publisher == null) {
        _publisher = open_rtb.Publisher.thrift(java.util.Optional.ofNullable(wrapped.getPublisher()).orElseGet(open_rtb.PublisherThrift::new));
      }
      return _publisher;
    }

    @Override public boolean isDefaultPublisher() {
      if (is_default$publisher == null) {
        is_default$publisher = getPublisher().get().equals(open_rtb.App.Thrift._DEFAULT.get().getPublisher().get());
      }
      return is_default$publisher;
    }

    @Override public open_rtb.Content getContent() {
      if (_content == null) {
        _content = open_rtb.Content.thrift(java.util.Optional.ofNullable(wrapped.getContent()).orElseGet(open_rtb.ContentThrift::new));
      }
      return _content;
    }

    @Override public boolean isDefaultContent() {
      if (is_default$content == null) {
        is_default$content = getContent().get().equals(open_rtb.App.Thrift._DEFAULT.get().getContent().get());
      }
      return is_default$content;
    }

    @Override public java.lang.String getKeywords() {
      if (_keywords == null) {
        _keywords = java.util.Optional.ofNullable(wrapped.getKeywords()).orElse("");
      }
      return _keywords;
    }

    @Override public boolean isDefaultKeywords() {
      if (is_default$keywords == null) {
        is_default$keywords = getKeywords().length() == 0;
      }
      return is_default$keywords;
    }

    @Override public java.lang.String getStoreurl() {
      if (_storeurl == null) {
        _storeurl = java.util.Optional.ofNullable(wrapped.getStoreurl()).orElse("");
      }
      return _storeurl;
    }

    @Override public boolean isDefaultStoreurl() {
      if (is_default$storeurl == null) {
        is_default$storeurl = getStoreurl().length() == 0;
      }
      return is_default$storeurl;
    }

    @Override public boolean equals(Object other) {
      if (other == this) return true;
      if (other == null || !(other instanceof Thrift)) return false;
      return wrapped.equals(((Thrift) other).wrapped);
    }

    @Override public int hashCode() { return wrapped.hashCode(); }

    @Override public String toString() { return wrapped.toString(); }

    static private java.lang.ThreadLocal _DEFAULT = new java.lang.ThreadLocal() {
      @Override protected Thrift initialValue() { return new Thrift(); }
    };

    static public final long serialVersionUID = 14;
  }

  static class ThriftBuilder implements Builder {

    final private open_rtb.AppThrift builder;

    /** Only use this if you know what you are doing. */
    public ThriftBuilder(open_rtb.AppThrift builder) { this.builder = builder; }

    @Override public open_rtb.App build() {
      return new Thrift((open_rtb.AppThrift) builder.deepCopy());
    }

    @Override public Builder setId(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setId(value);
      }
      return this;
    }

    @Override public Builder clearId() {
      builder.unsetId();
      return this;
    }

    @Override public Builder setName(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setName(value);
      }
      return this;
    }

    @Override public Builder clearName() {
      builder.unsetName();
      return this;
    }

    @Override public Builder setDomain(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setDomain(value);
      }
      return this;
    }

    @Override public Builder clearDomain() {
      builder.unsetDomain();
      return this;
    }

    @Override public Builder setCat(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setCat(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearCat() {
      builder.unsetCat();
      return this;
    }

    @Override public Builder setSectioncat(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setSectioncat(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearSectioncat() {
      builder.unsetSectioncat();
      return this;
    }

    @Override public Builder setPagecat(java.util.List value) {
      if (!(value.isEmpty())) {
        builder.setPagecat(value.stream().collect(java.util.stream.Collectors.toCollection(() -> new java.util.ArrayList<>(value.size()))));
      }
      return this;
    }

    @Override public Builder clearPagecat() {
      builder.unsetPagecat();
      return this;
    }

    @Override public Builder setVer(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setVer(value);
      }
      return this;
    }

    @Override public Builder clearVer() {
      builder.unsetVer();
      return this;
    }

    @Override public Builder setBundle(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setBundle(value);
      }
      return this;
    }

    @Override public Builder clearBundle() {
      builder.unsetBundle();
      return this;
    }

    @Override public Builder setPrivacypolicy(int value) {
      if (!(0 == value)) {
        builder.setPrivacypolicy((byte) value);
      }
      return this;
    }

    @Override public Builder clearPrivacypolicy() {
      builder.unsetPrivacypolicy();
      return this;
    }

    @Override public Builder setPaid(int value) {
      if (!(0 == value)) {
        builder.setPaid((byte) value);
      }
      return this;
    }

    @Override public Builder clearPaid() {
      builder.unsetPaid();
      return this;
    }

    @Override public Builder setPublisher(open_rtb.Publisher value) {
      if (!(value.get().equals(open_rtb.App.Thrift._DEFAULT.get().getPublisher().get()))) {
        builder.setPublisher(open_rtb.Publisher.thrift(value).get());
      }
      return this;
    }

    @Override public Builder clearPublisher() {
      builder.unsetPublisher();
      return this;
    }

    @Override public Builder setContent(open_rtb.Content value) {
      if (!(value.get().equals(open_rtb.App.Thrift._DEFAULT.get().getContent().get()))) {
        builder.setContent(open_rtb.Content.thrift(value).get());
      }
      return this;
    }

    @Override public Builder clearContent() {
      builder.unsetContent();
      return this;
    }

    @Override public Builder setKeywords(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setKeywords(value);
      }
      return this;
    }

    @Override public Builder clearKeywords() {
      builder.unsetKeywords();
      return this;
    }

    @Override public Builder setStoreurl(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setStoreurl(value);
      }
      return this;
    }

    @Override public Builder clearStoreurl() {
      builder.unsetStoreurl();
      return this;
    }
  }

  /** Returns new Thrift builder instance with default values. */
  static Builder newThriftBuilder() {
    return new ThriftBuilder(new open_rtb.AppThrift());
  }

  /** Returns new Thrift builder instance based on existing prototype. */
  static Builder newThriftBuilder(open_rtb.AppThrift other) {
    return new ThriftBuilder((open_rtb.AppThrift) other.deepCopy());
  }

  /** Returns new Thrift builder instance based on existing prototype App. */
  static Builder newThriftBuilder(open_rtb.App other) {
    return newThriftBuilder()
      .setId(other.getId())
      .setName(other.getName())
      .setDomain(other.getDomain())
      .setCat(other.getCat())
      .setSectioncat(other.getSectioncat())
      .setPagecat(other.getPagecat())
      .setVer(other.getVer())
      .setBundle(other.getBundle())
      .setPrivacypolicy(other.getPrivacypolicy())
      .setPaid(other.getPaid())
      .setPublisher(other.getPublisher())
      .setContent(other.getContent())
      .setKeywords(other.getKeywords())
      .setStoreurl(other.getStoreurl());
  }

  /** Returns a wrapped Thrift struct based on an instance of App. */
  static Thrift thrift(open_rtb.App instance) {
    if (instance instanceof Thrift) {
      return (Thrift) instance;
    }
    return (Thrift) newThriftBuilder(instance).build();
  }

  /** Creates a new wrapped Thrift struct copied from an existing instance. */
  @SuppressWarnings("all")
  static Thrift thrift(open_rtb.AppThrift instance) {
    return new Thrift((open_rtb.AppThrift) instance.deepCopy());
  }

  /** Returns Thrift class for this struct. */
  static java.lang.Class getThriftClass() {
    return open_rtb.AppThrift.class;
  }

  /** Returns Thrift metadata map for this struct. */
  static java.util.Map getThriftMetadataMap() {
    return open_rtb.AppThrift.metaDataMap;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy