package org.jboss.as.domain.http.server; import io.undertow.util.ETag; /** * Value class for describing the result of an operation against the {@link DomainApiHandler}. * Used by {@link DomainUtil#writeResponse(io.undertow.server.HttpServerExchange, int, org.jboss.dmr.ModelNode, OperationParameter)} * * @author Harald Pehl * @date 05/14/2013 */ public class OperationParameter { private final boolean get; private final int maxAge; private final ETag etag; private final boolean encode; private final boolean pretty; private OperationParameter(Builder builder) { this.get = builder.get; this.maxAge = builder.maxAge; this.etag = builder.etag; this.encode = builder.encode; this.pretty = builder.pretty; } public boolean isGet() { return get; } public int getMaxAge() { return maxAge; } public ETag getEtag() { return etag; } public boolean isEncode() { return encode; } public boolean isPretty() { return pretty; } @Override public String toString() { final StringBuilder sb = new StringBuilder("OperationResult{"); sb.append("get=").append(get); sb.append(", maxAge=").append(maxAge); sb.append(", etag=").append(etag); sb.append(", encode=").append(encode); sb.append(", pretty=").append(pretty); sb.append('}'); return sb.toString(); } /** * Builder for {@link OperationParameter}. */ public static class Builder { // mandatory private final boolean get; // optional private int maxAge; private ETag etag; private boolean pretty; private boolean encode; /** * Creates a new builder. * <p>Mandatory parameter</p> * <ol> * <li>get</li> * </ol> * <p>Optional parameter (and their default values)</p> * <ul> * <li>maxAge (0)</li> * <li>etag (null)</li> * <li>encode (false)</li> * <li>pretty (false)</li> * </ul> * * @param get */ public Builder(final boolean get) { this.get = get; this.maxAge = 0; this.encode = false; this.pretty = false; } public Builder maxAge(int maxAge) { this.maxAge = maxAge; return this; } public Builder etag(ETag etag) { this.etag = etag; return this; } public Builder encode(boolean encode) { this.encode = encode; return this; } public Builder pretty(boolean pretty) { this.pretty = pretty; return this; } public OperationParameter build() { return new OperationParameter(this); } } }