
org.opentripplanner.framework.token.TokenBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
The newest version!
package org.opentripplanner.framework.token;
import java.time.Duration;
import java.time.Instant;
import org.opentripplanner.framework.lang.ObjectUtils;
/**
* This class is used to create a {@link Token} before encoding it.
*/
public class TokenBuilder {
private final TokenDefinition definition;
private final Object[] values;
public TokenBuilder(TokenDefinition definition) {
this.definition = definition;
this.values = new Object[definition.size()];
}
public TokenBuilder withBoolean(String fieldName, boolean v) {
return with(fieldName, TokenType.BOOLEAN, v);
}
public TokenBuilder withByte(String fieldName, byte v) {
return with(fieldName, TokenType.BYTE, v);
}
public TokenBuilder withEnum(String fieldName, Enum> v) {
return with(fieldName, TokenType.ENUM, v);
}
public TokenBuilder withDuration(String fieldName, Duration v) {
return with(fieldName, TokenType.DURATION, v);
}
public TokenBuilder withInt(String fieldName, int v) {
return with(fieldName, TokenType.INT, v);
}
public TokenBuilder withString(String fieldName, String v) {
return with(fieldName, TokenType.STRING, v);
}
public TokenBuilder withTimeInstant(String fieldName, Instant v) {
return with(fieldName, TokenType.TIME_INSTANT, v);
}
public String build() {
return Serializer.serialize(definition, values);
}
private TokenBuilder with(String fieldName, TokenType type, Object value) {
int index = definition.getIndex(fieldName, type);
ObjectUtils.requireNotInitialized(fieldName, values[index], value);
values[index] = value;
return this;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy