private @Nullable Object parse(int index) { final int offset = offsets[index]; final int tagValue = data[offset] & 0xFF; if (tagValue > 100) { throw new IllegalStateException(); } final FieldType type = FieldType.valueOf(tagValue); final DataInput in = ByteStreams.newDataInput(data, offset + 1); @Nullable Object value; try { value = valueParser.decode(type, in); } catch (IOException e) { throw Throwables.propagate(e); } return value; }
private @Nullable Object parse(int index) { final int offset = offsets[index]; final int tagValue = data[offset] & 0xFF; if (tagValue > 100) { throw new IllegalStateException(); } final FieldType type = FieldType.valueOf(tagValue); final DataInput in = ByteStreams.newDataInput(data, offset + 1); @Nullable Object value; try { value = valueParser.decode(type, in); } catch (IOException e) { throw new RuntimeException(e); } return value; }
public RevFeature readFeature(@Nullable ObjectId id, DataInput in) throws IOException { final int count = readUnsignedVarInt(in); final RevFeatureBuilder builder = RevFeature.builder(); for (int i = 0; i < count; i++) { final byte fieldTag = in.readByte(); final FieldType fieldType = FieldType.valueOf(fieldTag); Object value = valueEncoder.decode(fieldType, in); builder.addValueNoCopy(value); } RevFeature built = builder.id(id).build(); return built; }
Object extra = valueEncoder.decode(FieldType.MAP, in); Preconditions.checkState(extra instanceof Map); extraData = (Map<String, Object>) extra;
public RevFeature readFeature(@Nullable ObjectId id, DataInput in) throws IOException { final int count = readUnsignedVarInt(in); final RevFeatureBuilder builder = RevFeatureBuilder.builder(); for (int i = 0; i < count; i++) { final byte fieldTag = in.readByte(); final FieldType fieldType = FieldType.valueOf(fieldTag); Object value = valueEncoder.decode(fieldType, in); builder.addValueNoCopy(value); } RevFeature built = id == null ? builder.build() : builder.build(id); return built; }
Object extra = valueEncoder.decode(FieldType.MAP, in); Preconditions.checkState(extra instanceof Map); extraData = (Map<String, Object>) extra;
@SuppressWarnings("unchecked") @Override public Node readNode(DataInput in) throws IOException { final int typeAndMasks = in.readByte() & 0xFF; final int nodeType = typeAndMasks & TYPE_READ_MASK; final int boundsMask = typeAndMasks & BOUNDS_READ_MASK; //unused final int metadataMask = typeAndMasks & METADATA_READ_MASK; final int extraDataMask = typeAndMasks & EXTRA_DATA_READ_MASK; final RevObject.TYPE contentType = RevObject.TYPE.valueOf(nodeType); final String name = in.readUTF(); final ObjectId objectId = readObjectId(in); ObjectId metadataId = ObjectId.NULL; if (metadataMask == METADATA_PRESENT_MASK) { metadataId = readObjectId(in); } @Nullable final Envelope bbox = readBounds(in); Map<String, Object> extraData = null; if (extraDataMask == EXTRA_DATA_PRESENT_MASK) { Object extra = valueEncoder.decode(FieldType.MAP, in); Preconditions.checkState(extra instanceof Map); extraData = (Map<String, Object>) extra; } final Node node; node = Node.create(name, objectId, metadataId, contentType, bbox, extraData); return node; }
@SuppressWarnings("unchecked") @Override public Node readNode(DataInput in) throws IOException { final int typeAndMasks = in.readByte() & 0xFF; final int nodeType = typeAndMasks & TYPE_READ_MASK; // final int boundsMask = typeAndMasks & BOUNDS_READ_MASK; //unused final int metadataMask = typeAndMasks & METADATA_READ_MASK; final int extraDataMask = typeAndMasks & EXTRA_DATA_READ_MASK; final RevObject.TYPE contentType = RevObject.TYPE.valueOf(nodeType); final String name = in.readUTF(); final ObjectId objectId = readObjectId(in); ObjectId metadataId = ObjectId.NULL; if (metadataMask == METADATA_PRESENT_MASK) { metadataId = readObjectId(in); } @Nullable final Envelope bbox = readBounds(in); Map<String, Object> extraData = null; if (extraDataMask == EXTRA_DATA_PRESENT_MASK) { Object extra = valueEncoder.decode(FieldType.MAP, in); Preconditions.checkState(extra instanceof Map); extraData = (Map<String, Object>) extra; } final Node node; node = RevObjectFactory.defaultInstance().createNode(name, objectId, metadataId, contentType, bbox, extraData); return node; }