package com.fasterxml.jackson.databind.node;
import java.io.IOException;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.SerializerProvider;
/**
* This concrete value class is used to contain boolean (true / false)
* values. Only two instances are ever created, to minimize memory
* usage
*/
public final class BooleanNode
extends ValueNode
{
// // Just need two instances...
public final static BooleanNode TRUE = new BooleanNode();
public final static BooleanNode FALSE = new BooleanNode();
private BooleanNode() { }
public static BooleanNode getTrue() { return TRUE; }
public static BooleanNode getFalse() { return FALSE; }
public static BooleanNode valueOf(boolean b) { return b ? TRUE : FALSE; }
// Interesting... two choices...
@Override public JsonToken asToken() {
return (this == TRUE) ? JsonToken.VALUE_TRUE : JsonToken.VALUE_FALSE;
}
@Override
public boolean isBoolean() { return true; }
@Override
public boolean booleanValue() {
return (this == TRUE);
}
@Override
public String asText() {
return (this == TRUE) ? "true" : "false";
}
@Override
public boolean asBoolean() {
return (this == TRUE);
}
@Override
public boolean asBoolean(boolean defaultValue) {
return (this == TRUE);
}
@Override
public int asInt(int defaultValue) {
return (this == TRUE) ? 1 : 0;
}
@Override
public long asLong(long defaultValue) {
return (this == TRUE) ? 1L : 0L;
}
@Override
public double asDouble(double defaultValue) {
return (this == TRUE) ? 1.0 : 0.0;
}
@Override
public final void serialize(JsonGenerator jg, SerializerProvider provider)
throws IOException, JsonProcessingException
{
jg.writeBoolean(this == TRUE);
}
@Override
public boolean equals(Object o)
{
/* Since there are only ever two instances in existence
* can do identity comparison
*/
return (o == this);
}
}