
co.nstant.in.cbor.CborBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cbor Show documentation
Show all versions of cbor Show documentation
Java implementation of RFC 7049: Concise Binary Object Representation (CBOR)
The newest version!
package co.nstant.in.cbor;
import java.math.BigInteger;
import java.util.LinkedList;
import java.util.List;
import co.nstant.in.cbor.builder.AbstractBuilder;
import co.nstant.in.cbor.builder.ArrayBuilder;
import co.nstant.in.cbor.builder.ByteStringBuilder;
import co.nstant.in.cbor.builder.MapBuilder;
import co.nstant.in.cbor.builder.UnicodeStringBuilder;
import co.nstant.in.cbor.model.Array;
import co.nstant.in.cbor.model.ByteString;
import co.nstant.in.cbor.model.DataItem;
import co.nstant.in.cbor.model.Map;
import co.nstant.in.cbor.model.UnicodeString;
public class CborBuilder extends AbstractBuilder {
private final LinkedList dataItems = new LinkedList<>();
public CborBuilder() {
super(null);
}
public CborBuilder reset() {
dataItems.clear();
return this;
}
public List build() {
return dataItems;
}
public CborBuilder add(DataItem dataItem) {
dataItems.add(dataItem);
return this;
}
public CborBuilder add(long value) {
add(convert(value));
return this;
}
public CborBuilder add(BigInteger value) {
add(convert(value));
return this;
}
public CborBuilder add(boolean value) {
add(convert(value));
return this;
}
public CborBuilder add(float value) {
add(convert(value));
return this;
}
public CborBuilder add(double value) {
add(convert(value));
return this;
}
public CborBuilder add(byte[] bytes) {
add(convert(bytes));
return this;
}
public ByteStringBuilder startByteString() {
return startByteString(null);
}
public ByteStringBuilder startByteString(byte[] bytes) {
add(new ByteString(bytes).setChunked(true));
return new ByteStringBuilder(this);
}
public CborBuilder add(String string) {
add(convert(string));
return this;
}
public UnicodeStringBuilder startString() {
return startString(null);
}
public UnicodeStringBuilder startString(String string) {
add(new UnicodeString(string).setChunked(true));
return new UnicodeStringBuilder(this);
}
public CborBuilder addTag(long value) {
add(tag(value));
return this;
}
public CborBuilder tagged(long value) {
DataItem item = dataItems.peekLast();
if (item == null) {
throw new IllegalStateException("Can't add a tag before adding an item");
}
item.getOuterTaggable().setTag(value);
return this;
}
public ArrayBuilder startArray() {
Array array = new Array();
array.setChunked(true);
add(array);
return new ArrayBuilder(this, array);
}
public ArrayBuilder addArray() {
Array array = new Array();
add(array);
return new ArrayBuilder(this, array);
}
public MapBuilder addMap() {
Map map = new Map();
add(map);
return new MapBuilder(this, map);
}
public MapBuilder startMap() {
Map map = new Map();
map.setChunked(true);
add(map);
return new MapBuilder(this, map);
}
@Override
protected void addChunk(DataItem dataItem) {
add(dataItem);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy