Java: Make the generics of the Options interfaces more strict (#5461)

Summary:
Make the generics of the Options interfaces more strict so they are usable in a Kotlin Multiplatform expect/actual typealias implementation without causing a Violation of Finite Bound Restriction.

This fix would enable the creation of a generic Kotlin multiplatform library by just typealiasing the JVM implementation to the current Java implementation.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/5461

Differential Revision: D15903288

Pulled By: sagar0

fbshipit-source-id: 75e83fdf5d2fcede40744a17e767563d6a4b0696
main
Jurriaan Mous 6 years ago committed by Facebook Github Bot
parent 24b118ad98
commit 5830c619d5
  1. 2
      java/src/main/java/org/rocksdb/AdvancedColumnFamilyOptionsInterface.java
  2. 2
      java/src/main/java/org/rocksdb/AdvancedMutableColumnFamilyOptionsInterface.java
  3. 2
      java/src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java
  4. 2
      java/src/main/java/org/rocksdb/DBOptionsInterface.java
  5. 2
      java/src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java
  6. 2
      java/src/main/java/org/rocksdb/MutableDBOptionsInterface.java
  7. 2
      java/src/main/java/org/rocksdb/Options.java

@ -14,7 +14,7 @@ import java.util.List;
* Taken from include/rocksdb/advanced_options.h
*/
public interface AdvancedColumnFamilyOptionsInterface
<T extends AdvancedColumnFamilyOptionsInterface> {
<T extends AdvancedColumnFamilyOptionsInterface<T>> {
/**
* The minimum number of write buffers that will be merged together

@ -12,7 +12,7 @@ package org.rocksdb;
* and MutableCFOptions in util/cf_options.h
*/
public interface AdvancedMutableColumnFamilyOptionsInterface
<T extends AdvancedMutableColumnFamilyOptionsInterface> {
<T extends AdvancedMutableColumnFamilyOptionsInterface<T>> {
/**
* The maximum number of write buffers that are built up in memory.

@ -6,7 +6,7 @@
package org.rocksdb;
public interface ColumnFamilyOptionsInterface
<T extends ColumnFamilyOptionsInterface>
<T extends ColumnFamilyOptionsInterface<T>>
extends AdvancedColumnFamilyOptionsInterface<T> {
/**

@ -8,7 +8,7 @@ package org.rocksdb;
import java.util.Collection;
import java.util.List;
public interface DBOptionsInterface<T extends DBOptionsInterface> {
public interface DBOptionsInterface<T extends DBOptionsInterface<T>> {
/**
* Use this if your DB is very small (like under 1GB) and you don't want to

@ -6,7 +6,7 @@
package org.rocksdb;
public interface MutableColumnFamilyOptionsInterface
<T extends MutableColumnFamilyOptionsInterface>
<T extends MutableColumnFamilyOptionsInterface<T>>
extends AdvancedMutableColumnFamilyOptionsInterface<T> {
/**

@ -1,7 +1,7 @@
// Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
package org.rocksdb;
public interface MutableDBOptionsInterface<T extends MutableDBOptionsInterface> {
public interface MutableDBOptionsInterface<T extends MutableDBOptionsInterface<T>> {
/**
* Specifies the maximum number of concurrent background jobs (both flushes

@ -16,7 +16,7 @@ import java.util.List;
* during the creation of a {@link org.rocksdb.RocksDB} (i.e., RocksDB.open()).
*
* If {@link #dispose()} function is not called, then it will be GC'd
* automaticallyand native resources will be released as part of the process.
* automatically and native resources will be released as part of the process.
*/
public class Options extends RocksObject
implements DBOptionsInterface<Options>,

Loading…
Cancel
Save