package foo; import io.norberg.automatter.AutoMatter; import java.util.Optional; import javax.annotation.Generated; @Generated("io.norberg.automatter.processor.AutoMatterProcessor") public final class JUTOptionalFieldsBuilder { private Optional<String> foo; private Optional<String> bar; public JUTOptionalFieldsBuilder() { this.foo = Optional.empty(); } private JUTOptionalFieldsBuilder(JUTOptionalFields v) { this.foo = v.foo(); this.bar = v.bar(); } private JUTOptionalFieldsBuilder(JUTOptionalFieldsBuilder v) { this.foo = v.foo; this.bar = v.bar; } public Optional<String> foo() { return foo; } public JUTOptionalFieldsBuilder foo(String foo) { return foo(Optional.ofNullable(foo)); } @SuppressWarnings("unchecked") public JUTOptionalFieldsBuilder foo(Optional<? extends String> foo) { if (foo == null) { throw new NullPointerException("foo"); } this.foo = (Optional<String>) foo; return this; } public Optional<String> bar() { return bar; } public JUTOptionalFieldsBuilder bar(String bar) { return bar(Optional.ofNullable(bar)); } @SuppressWarnings("unchecked") public JUTOptionalFieldsBuilder bar(Optional<? extends String> bar) { this.bar = (Optional<String>) bar; return this; } public JUTOptionalFields build() { return new Value(foo, bar); } public static JUTOptionalFieldsBuilder from(JUTOptionalFields v) { return new JUTOptionalFieldsBuilder(v); } public static JUTOptionalFieldsBuilder from(JUTOptionalFieldsBuilder v) { return new JUTOptionalFieldsBuilder(v); } private static final class Value implements JUTOptionalFields { private final Optional<String> foo; private final Optional<String> bar; private Value(@AutoMatter.Field("foo") Optional<String> foo, @AutoMatter.Field("bar") Optional<String> bar) { if (foo == null) { throw new NullPointerException("foo"); } this.foo = foo; this.bar = bar; } @AutoMatter.Field @Override public Optional<String> foo() { return foo; } @AutoMatter.Field @Override public Optional<String> bar() { return bar; } public JUTOptionalFieldsBuilder builder() { return new JUTOptionalFieldsBuilder(this); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof JUTOptionalFields)) { return false; } final JUTOptionalFields that = (JUTOptionalFields) o; if (foo != null ? !foo.equals(that.foo()) : that.foo() != null) { return false; } if (bar != null ? !bar.equals(that.bar()) : that.bar() != null) { return false; } return true; } @Override public int hashCode() { int result = 1; long temp; result = 31 * result + (this.foo != null ? this.foo.hashCode() : 0); result = 31 * result + (this.bar != null ? this.bar.hashCode() : 0); return result; } @Override public String toString() { return "JUTOptionalFields{" + "foo=" + foo + ", bar=" + bar + '}'; } } }