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

open_rtb.Site 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.5 Site Object
A site object should be included if the ad supported content is part of a website (as opposed to an application). A bid request must not contain both a site object and an app object.
The site 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 a page URL or a site ID, but this is not strictly required. */
public interface Site
  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() &&
      isDefaultPage() &&
      isDefaultPrivacypolicy() &&
      isDefaultRef() &&
      isDefaultSearch() &&
      isDefaultPublisher() &&
      isDefaultContent() &&
      isDefaultKeywords();
  }

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

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

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

  boolean isDefaultId();

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

  boolean isDefaultName();

  /** Domain of the site, used for advertiser side blocking. For example, “foo.com”. */
  java.lang.String getDomain();

  boolean isDefaultDomain();

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

  boolean isDefaultCat();

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

  boolean isDefaultSectioncat();

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

  boolean isDefaultPagecat();

  /** URL of the page where the impression will be shown. */
  java.lang.String getPage();

  boolean isDefaultPage();

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

  boolean isDefaultPrivacypolicy();

  /** Referrer URL that caused navigation to the current page. */
  java.lang.String getRef();

  boolean isDefaultRef();

  /** Search string that caused navigation to the current page. */
  java.lang.String getSearch();

  boolean isDefaultSearch();

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

  boolean isDefaultPublisher();

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

  boolean isDefaultContent();

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

  boolean isDefaultKeywords();

  public interface Builder {

    Site 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 setPage(java.lang.String value);

    Builder clearPage();

    Builder setPrivacypolicy(int value);

    Builder clearPrivacypolicy();

    Builder setRef(java.lang.String value);

    Builder clearRef();

    Builder setSearch(java.lang.String value);

    Builder clearSearch();

    Builder setPublisher(open_rtb.Publisher value);

    Builder clearPublisher();

    Builder setContent(open_rtb.Content value);

    Builder clearContent();

    Builder setKeywords(java.lang.String value);

    Builder clearKeywords();
  }


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

    @Override public int compare(open_rtb.Site a, open_rtb.Site 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 = comparePage(a, b))) return _cmp;
      if (0 != (_cmp = comparePrivacypolicy(a, b))) return _cmp;
      if (0 != (_cmp = compareRef(a, b))) return _cmp;
      if (0 != (_cmp = compareSearch(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;
      return 0;
    }

    static private int compareId (open_rtb.Site a, open_rtb.Site 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.Site a, open_rtb.Site 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.Site a, open_rtb.Site 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.Site a, open_rtb.Site 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.Site a, open_rtb.Site 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.Site a, open_rtb.Site 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 comparePage (open_rtb.Site a, open_rtb.Site b) {
      final java.lang.String fa = a.getPage();
      final java.lang.String fb = b.getPage();
      return fa.compareTo(fb);
    }

    static private int comparePrivacypolicy (open_rtb.Site a, open_rtb.Site 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 compareRef (open_rtb.Site a, open_rtb.Site b) {
      final java.lang.String fa = a.getRef();
      final java.lang.String fb = b.getRef();
      return fa.compareTo(fb);
    }

    static private int compareSearch (open_rtb.Site a, open_rtb.Site b) {
      final java.lang.String fa = a.getSearch();
      final java.lang.String fb = b.getSearch();
      return fa.compareTo(fb);
    }

    static private int comparePublisher (open_rtb.Site a, open_rtb.Site 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.Site a, open_rtb.Site 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.Site a, open_rtb.Site b) {
      final java.lang.String fa = a.getKeywords();
      final java.lang.String fb = b.getKeywords();
      return fa.compareTo(fb);
    }

    static private final Comparator INSTANCE = new Comparator();

    static public final long serialVersionUID = 13;
  }

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

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

  static class NativeImpl implements open_rtb.Site {

    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 __page;
    transient private java.lang.Boolean is_default$page;
    private int __privacypolicy;
    transient private java.lang.Boolean is_default$privacypolicy;
    private java.lang.String __ref;
    transient private java.lang.Boolean is_default$ref;
    private java.lang.String __search;
    transient private java.lang.Boolean is_default$search;
    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 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;
      __page = "";
      is_default$page = java.lang.Boolean.TRUE;
      __privacypolicy = 0;
      is_default$privacypolicy = java.lang.Boolean.TRUE;
      __ref = "";
      is_default$ref = java.lang.Boolean.TRUE;
      __search = "";
      is_default$search = 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;
      json = "{}";
    }

    private NativeImpl(NativeImpl other) {
      setId(other.getId());
      setName(other.getName());
      setDomain(other.getDomain());
      setCat(other.getCat());
      setSectioncat(other.getSectioncat());
      setPagecat(other.getPagecat());
      setPage(other.getPage());
      setPrivacypolicy(other.getPrivacypolicy());
      setRef(other.getRef());
      setSearch(other.getSearch());
      setPublisher(other.getPublisher());
      setContent(other.getContent());
      setKeywords(other.getKeywords());
      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 (!isDefaultPage()) {
        sb.append((0 == sb.length()) ? "{\"page\": " : ", \"page\": ")
          .append("\"" + __page.replace("\"","\\\"") + '\"');
      }
      if (!isDefaultPrivacypolicy()) {
        sb.append((0 == sb.length()) ? "{\"privacypolicy\": " : ", \"privacypolicy\": ")
          .append(__privacypolicy);
      }
      if (!isDefaultRef()) {
        sb.append((0 == sb.length()) ? "{\"ref\": " : ", \"ref\": ")
          .append("\"" + __ref.replace("\"","\\\"") + '\"');
      }
      if (!isDefaultSearch()) {
        sb.append((0 == sb.length()) ? "{\"search\": " : ", \"search\": ")
          .append("\"" + __search.replace("\"","\\\"") + '\"');
      }
      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("\"","\\\"") + '\"');
      }
      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 getPage() {
      return __page;
    }

    @Override public boolean isDefaultPage() {
      if (null == is_default$page) {
        is_default$page = getPage().length() == 0;
      }
      return is_default$page;
    }

    private void setPage(java.lang.String value) {
      this.__page = value;
      this.is_default$page = 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 java.lang.String getRef() {
      return __ref;
    }

    @Override public boolean isDefaultRef() {
      if (null == is_default$ref) {
        is_default$ref = getRef().length() == 0;
      }
      return is_default$ref;
    }

    private void setRef(java.lang.String value) {
      this.__ref = value;
      this.is_default$ref = null;
      this.json = null;
    }

    @Override public java.lang.String getSearch() {
      return __search;
    }

    @Override public boolean isDefaultSearch() {
      if (null == is_default$search) {
        is_default$search = getSearch().length() == 0;
      }
      return is_default$search;
    }

    private void setSearch(java.lang.String value) {
      this.__search = value;
      this.is_default$search = 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.Site.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.Site.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;
    }

    static class NativeImplBuilder implements Builder {

      private NativeImpl wrapped = new NativeImpl();

      @Override public open_rtb.Site 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 setPage(java.lang.String value) {
        if (value.length() == 0) {
          return clearPage();
        }
        wrapped.setPage(value);
        return this;
      }

      @Override public Builder clearPage() {
        wrapped.__page = _DEFAULT.get().__page;
        wrapped.is_default$page = 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 setRef(java.lang.String value) {
        if (value.length() == 0) {
          return clearRef();
        }
        wrapped.setRef(value);
        return this;
      }

      @Override public Builder clearRef() {
        wrapped.__ref = _DEFAULT.get().__ref;
        wrapped.is_default$ref = true;
        return this;
      }

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

      @Override public Builder clearSearch() {
        wrapped.__search = _DEFAULT.get().__search;
        wrapped.is_default$search = true;
        return this;
      }

      @Override public Builder setPublisher(open_rtb.Publisher value) {
        if (value.get().equals(open_rtb.Site.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.Site.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;
      }
    }

    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 = 13;
  }

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

  /** Returns a POJO builder instance based on existing prototype Site. */
  static Builder newNativeImplBuilder(open_rtb.Site other) {
    return newNativeImplBuilder()
      .setId(other.getId())
      .setName(other.getName())
      .setDomain(other.getDomain())
      .setCat(other.getCat())
      .setSectioncat(other.getSectioncat())
      .setPagecat(other.getPagecat())
      .setPage(other.getPage())
      .setPrivacypolicy(other.getPrivacypolicy())
      .setRef(other.getRef())
      .setSearch(other.getSearch())
      .setPublisher(other.getPublisher())
      .setContent(other.getContent())
      .setKeywords(other.getKeywords());
  }

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

  static class Avro implements open_rtb.Site {

    private byte[] binaryEncoding;
    transient private open_rtb.SiteAvro 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$page;
    transient private java.lang.String _page;
    transient private java.lang.Boolean is_default$privacypolicy;
    transient private java.lang.Boolean is_default$ref;
    transient private java.lang.String _ref;
    transient private java.lang.Boolean is_default$search;
    transient private java.lang.String _search;
    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;

    private Avro(open_rtb.SiteAvro 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.SiteAvro 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 getPage() {
      if (_page == null) {
        _page = java.util.Optional.of(get().page).map(java.lang.Object::toString).orElse("");
      }
      return _page;
    }

    @Override public boolean isDefaultPage() {
      if (is_default$page == null) {
        is_default$page = getPage().length() == 0;
      }
      return is_default$page;
    }

    @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 java.lang.String getRef() {
      if (_ref == null) {
        _ref = java.util.Optional.of(get().ref).map(java.lang.Object::toString).orElse("");
      }
      return _ref;
    }

    @Override public boolean isDefaultRef() {
      if (is_default$ref == null) {
        is_default$ref = getRef().length() == 0;
      }
      return is_default$ref;
    }

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

    @Override public boolean isDefaultSearch() {
      if (is_default$search == null) {
        is_default$search = getSearch().length() == 0;
      }
      return is_default$search;
    }

    @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.Site.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.Site.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 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.SiteAvro decode(byte[] binaryEncoding) throws java.io.IOException {
      open_rtb.SiteAvro instance = new open_rtb.SiteAvro();
      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.Site 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.SiteAvro.newBuilder().build(), null); }
    };

    static public final long serialVersionUID = 13;
  }

  static class AvroBuilder implements Builder {

    final private open_rtb.SiteAvro.Builder builder;

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

    @Override public open_rtb.Site 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.SiteAvro.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.SiteAvro.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.SiteAvro.SCHEMA$.getFields().get(5).schema()))));
      return this;
    }

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

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

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

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

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

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

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

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

    @Override public Builder clearSearch() {
      builder.clearSearch();
      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;
    }
  }

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

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

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

  /** Returns new Avro builder instance based on existing prototype Site. */
  static Builder newAvroBuilder(open_rtb.Site other) {
    return newAvroBuilder()
      .setId(other.getId())
      .setName(other.getName())
      .setDomain(other.getDomain())
      .setCat(other.getCat())
      .setSectioncat(other.getSectioncat())
      .setPagecat(other.getPagecat())
      .setPage(other.getPage())
      .setPrivacypolicy(other.getPrivacypolicy())
      .setRef(other.getRef())
      .setSearch(other.getSearch())
      .setPublisher(other.getPublisher())
      .setContent(other.getContent())
      .setKeywords(other.getKeywords());
  }

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

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

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

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

  static class Protobuf implements open_rtb.Site {

    private byte[] binaryEncoding;
    transient private open_rtb.OpenRtbProtobuf.Site 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$page;
    transient private java.lang.Boolean is_default$privacypolicy;
    transient private java.lang.Boolean is_default$ref;
    transient private java.lang.Boolean is_default$search;
    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;

    private Protobuf(open_rtb.OpenRtbProtobuf.Site 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.Site get() {
      if (wrapped == null) {
        try {
          wrapped = open_rtb.OpenRtbProtobuf.Site.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 getPage() {
      return get().getPage();
    }

    @Override public boolean isDefaultPage() {
      if (is_default$page == null) {
        is_default$page = getPage().length() == 0;
      }
      return is_default$page;
    }

    @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 java.lang.String getRef() {
      return get().getRef();
    }

    @Override public boolean isDefaultRef() {
      if (is_default$ref == null) {
        is_default$ref = getRef().length() == 0;
      }
      return is_default$ref;
    }

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

    @Override public boolean isDefaultSearch() {
      if (is_default$search == null) {
        is_default$search = getSearch().length() == 0;
      }
      return is_default$search;
    }

    @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.Site.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.Site.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 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.Site from(byte[] binaryEncoding) throws java.io.IOException {
      return new Protobuf(open_rtb.OpenRtbProtobuf.Site.parseFrom(binaryEncoding), binaryEncoding);
    }

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

    static public final long serialVersionUID = 13;
  }

  static class ProtobufBuilder implements Builder {

    final private open_rtb.OpenRtbProtobuf.Site.Builder builder;

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

    @Override public open_rtb.Site 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 setPage(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setPage(value);
      }
      return this;
    }

    @Override public Builder clearPage() {
      builder.clearPage();
      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 setRef(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setRef(value);
      }
      return this;
    }

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

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

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

    @Override public Builder setPublisher(open_rtb.Publisher value) {
      if (!(value.get().equals(open_rtb.Site.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.Site.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;
    }
  }

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

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

  /** Returns new Protobuf builder instance based on existing prototype Site. */
  static Builder newProtobufBuilder(open_rtb.Site other) {
    return newProtobufBuilder()
      .setId(other.getId())
      .setName(other.getName())
      .setDomain(other.getDomain())
      .setCat(other.getCat())
      .setSectioncat(other.getSectioncat())
      .setPagecat(other.getPagecat())
      .setPage(other.getPage())
      .setPrivacypolicy(other.getPrivacypolicy())
      .setRef(other.getRef())
      .setSearch(other.getSearch())
      .setPublisher(other.getPublisher())
      .setContent(other.getContent())
      .setKeywords(other.getKeywords());
  }

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

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

  /** Returns Protobuf class for this struct. */
  static java.lang.Class getProtobufClass() {
    return open_rtb.OpenRtbProtobuf.Site.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.Site.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.Site {

    private open_rtb.SiteThrift 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$page;
    transient private java.lang.String _page;
    transient private java.lang.Boolean is_default$privacypolicy;
    transient private java.lang.Boolean is_default$ref;
    transient private java.lang.String _ref;
    transient private java.lang.Boolean is_default$search;
    transient private java.lang.String _search;
    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;

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

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

    @Override public open_rtb.SiteThrift 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 getPage() {
      if (_page == null) {
        _page = java.util.Optional.ofNullable(wrapped.getPage()).orElse("");
      }
      return _page;
    }

    @Override public boolean isDefaultPage() {
      if (is_default$page == null) {
        is_default$page = getPage().length() == 0;
      }
      return is_default$page;
    }

    @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 java.lang.String getRef() {
      if (_ref == null) {
        _ref = java.util.Optional.ofNullable(wrapped.getRef()).orElse("");
      }
      return _ref;
    }

    @Override public boolean isDefaultRef() {
      if (is_default$ref == null) {
        is_default$ref = getRef().length() == 0;
      }
      return is_default$ref;
    }

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

    @Override public boolean isDefaultSearch() {
      if (is_default$search == null) {
        is_default$search = getSearch().length() == 0;
      }
      return is_default$search;
    }

    @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.Site.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.Site.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 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 = 13;
  }

  static class ThriftBuilder implements Builder {

    final private open_rtb.SiteThrift builder;

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

    @Override public open_rtb.Site build() {
      return new Thrift((open_rtb.SiteThrift) 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 setPage(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setPage(value);
      }
      return this;
    }

    @Override public Builder clearPage() {
      builder.unsetPage();
      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 setRef(java.lang.String value) {
      if (!(value.length() == 0)) {
        builder.setRef(value);
      }
      return this;
    }

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

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

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

    @Override public Builder setPublisher(open_rtb.Publisher value) {
      if (!(value.get().equals(open_rtb.Site.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.Site.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;
    }
  }

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

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

  /** Returns new Thrift builder instance based on existing prototype Site. */
  static Builder newThriftBuilder(open_rtb.Site other) {
    return newThriftBuilder()
      .setId(other.getId())
      .setName(other.getName())
      .setDomain(other.getDomain())
      .setCat(other.getCat())
      .setSectioncat(other.getSectioncat())
      .setPagecat(other.getPagecat())
      .setPage(other.getPage())
      .setPrivacypolicy(other.getPrivacypolicy())
      .setRef(other.getRef())
      .setSearch(other.getSearch())
      .setPublisher(other.getPublisher())
      .setContent(other.getContent())
      .setKeywords(other.getKeywords());
  }

  /** Returns a wrapped Thrift struct based on an instance of Site. */
  static Thrift thrift(open_rtb.Site 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.SiteThrift instance) {
    return new Thrift((open_rtb.SiteThrift) instance.deepCopy());
  }

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

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy