public AbstractObjectStore() { this(new SerializationFactoryProxy()); }
/** * Reads object from its binary representation as stored in the database. */ public RevObject decode(final ObjectId id, final byte[] bytes) { return read(id, bytes, 0, bytes.length); }
private EncodedObject encode(RevObject o) { byte[] serialized = encoder.encode(o); return new EncodedObject(o, serialized); }
@Override public RevObject read(ObjectId id, InputStream in) throws IOException { final int serialVersionHeader = in.read(); assert serialVersionHeader >= 0 && serialVersionHeader <= MAX_FORMAT_CODE; final ObjectSerializingFactory serializer = serializer(id, serialVersionHeader); RevObject revObject = serializer.read(id, in); return revObject; }
bytes = rs.getBytes(4); RevObject obj = encoder.decode(id, bytes); if (objType == null || objType.equals(obj.getType())) { if (notify) {
public byte[] encode(final RevObject o) { try (ByteArrayOutputStream bout = new ByteArrayOutputStream()) { write(o, bout); byte[] bytes = bout.toByteArray(); return bytes; } catch (Exception e) { throw new RuntimeException("Error encoding object " + o, e); } }
@Override public RevObject read(@Nullable ObjectId id, byte[] data, int offset, int length) { final int serialVersionHeader = data[offset] & 0xFF; assert serialVersionHeader >= 0 && serialVersionHeader <= MAX_FORMAT_CODE; final ObjectSerializingFactory serializer = serializer(id, serialVersionHeader); RevObject revObject; try { revObject = serializer.read(id, data, offset + 1, length - 1); } catch (IOException e) { throw new RuntimeException("Error reading object " + id, e); } return revObject; }
callback.notFound(n.getObjectId()); } else { RevObject obj = encoder.decode(id, bytes); if (objType == null || objType.equals(obj.getType())) {
RevObject obj = encoder.read(id, bytes, 0, bytes.length); sharedCache.put(obj); return obj;
protected synchronized void open(Set<String> columnFamilyNames) { if (isOpen()) { return; } Map<String, String> defaultMetadata = ImmutableMap.of("version", RocksdbStorageProvider.VERSION, "serializer", "proxy"); DBConfig address = new DBConfig(path, readOnly, defaultMetadata, columnFamilyNames); this.dbhandle = RocksConnectionManager.INSTANCE.acquire(address); this.bulkReadOptions = new ReadOptions(); this.bulkReadOptions.setFillCache(false); this.bulkReadOptions.setVerifyChecksums(false); ObjectSerializingFactory defaultSerializer = new SerializationFactoryProxy(); ObjectSerializingFactory serializer = defaultSerializer; final Optional<String> serializerValue = dbhandle.getMetadata("serializer"); if (serializerValue.isPresent()) { String sval = serializerValue.get(); Preconditions.checkState("proxy".equals(sval), "serialization factory metadata error: expected 'proxy', got '%s'", sval); } else { // pre 1.0 serializer, for backwards compatibility with repos created before initial // release serializer = new LZFSerializationFactory(DataStreamSerializationFactoryV2.INSTANCE); } super.setSerializationFactory(serializer); open = true; }
@Override public boolean put(final RevObject object) { checkNotNull(object, "argument object is null"); checkArgument(!object.getId().isNull(), "ObjectId is NULL %s", object); checkWritable(); config.checkRepositoryExists(); final ObjectId id = object.getId(); final PGId pgid = PGId.valueOf(id); final String tableName = tableNameForType(object.getType(), pgid); final String sql = format("INSERT INTO %s (id, object) VALUES (ROW(?,?,?),?)", tableName); try (Connection cx = PGStorage.newConnection(dataSource)) { cx.setAutoCommit(true); try (PreparedStatement ps = cx.prepareStatement(log(sql, LOG, id, object))) { pgid.setArgs(ps, 1); byte[] blob = encoder.encode(object); ps.setBytes(4, blob); final int updateCount = ps.executeUpdate(); boolean inserted = updateCount == 1; return inserted; } } catch (SQLException e) { throw propagate(e); } }