X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FAbstractReplyBuilder.java;h=10a0a5826b74434b4ee3450fe5c6b3832b910e3c;hb=2e03e9dddbea4b81aacaf1aa316f5c3ccffd4bf9;hp=5c1b97678bb086d54d795cd47af1c823d2392e44;hpb=550219212ea7809a6575b9d6bbe81030cb6f8618;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/impl/AbstractReplyBuilder.java b/src/main/java/net/pterodactylus/sone/data/impl/AbstractReplyBuilder.java index 5c1b976..10a0a58 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/AbstractReplyBuilder.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/AbstractReplyBuilder.java @@ -20,12 +20,14 @@ package net.pterodactylus.sone.data.impl; import static com.google.common.base.Optional.absent; import static com.google.common.base.Optional.fromNullable; import static com.google.common.base.Optional.of; +import static com.google.common.base.Preconditions.checkState; import static java.lang.System.currentTimeMillis; import static java.util.UUID.randomUUID; import net.pterodactylus.sone.database.ReplyBuilder; import com.google.common.base.Optional; +import org.apache.commons.lang.StringUtils; /** * Abstract implementation of a {@link ReplyBuilder}. @@ -34,41 +36,24 @@ import com.google.common.base.Optional; * The interface implemented and exposed by the builder * @author David ‘Bombe’ Roden */ -public class AbstractReplyBuilder> implements ReplyBuilder { +public abstract class AbstractReplyBuilder> implements ReplyBuilder { + protected final String senderId; protected Optional id = absent(); - - /** The sender of the reply. */ - protected String senderId; - protected Optional time = absent(); - - /** The text of the reply. */ protected String text; - /** - * {@inheritDoc} - */ - @Override - @SuppressWarnings("unchecked") - public B withId(String id) { - this.id = fromNullable(id); - return (B) this; + protected AbstractReplyBuilder(String senderId) { + this.senderId = senderId; } - /** - * {@inheritDoc} - */ @Override @SuppressWarnings("unchecked") - public B from(String senderId) { - this.senderId = senderId; + public B withId(String id) { + this.id = fromNullable(id); return (B) this; } - /** - * {@inheritDoc} - */ @Override @SuppressWarnings("unchecked") public B withTime(long time) { @@ -76,9 +61,6 @@ public class AbstractReplyBuilder> implements ReplyBui return (B) this; } - /** - * {@inheritDoc} - */ @Override @SuppressWarnings("unchecked") public B withText(String text) { @@ -94,4 +76,15 @@ public class AbstractReplyBuilder> implements ReplyBui return time.isPresent() ? time.get() : currentTimeMillis(); } + /** + * Validates the state of this post reply builder. + * + * @throws IllegalStateException + * if the state is not valid for building a new post reply + */ + protected void validate() throws IllegalStateException { + checkState(senderId != null, "sender must not be null"); + checkState(!StringUtils.isBlank(text), "text must not be empty"); + } + }