У меня есть открытый Connection
класс, который расширяет JsonObject
. Для хранения Connection
объектов у меня есть следующий статический метод:
public static Future<Void> storeConnection(MongoClient mc, Connection cnx) {
Future<Void> fut = Future.future();
mc.save("coll", cnx, ar -> {
if(ar.succeeded()) {
fut.complete();
}
else {
fut.fail(ar.cause());
}
});
return fut;
}
При звонке mc.save("coll", cnx, ar -> {...})
я получаю исключение org.bson.codecs.configuration.CodecConfigurationException
. Я попробовал некоторые (очевидно бесполезные) вещи, такие как изменение подписи, чтобы cnx
было JsonObject
, приведение cnx
в JsonObject
или даже создание JsonObject toJsonObject() { return (JsonObject)this; }
метода. Я получил то же исключение.
Тем не менее, когда я заменяю mc.save("coll", cnx, ar -> {...})
на mc.save("coll", new JsonObject().put("foo", "bar"), ar -> {...})
, запись успешна.
Я не могу понять, что я делаю неправильно.
Обновление : Я изменил наследование по составу:
public class Connection {
private JsonObject data;
...
// and then
public JsonObject jsonObject() { return data; }
...
}
и тогда mc.save("coll", cnx.jsonObject(), ar -> { ... });
больше не жалуется.
Тем не менее, я не понимаю, что не так с делом о наследовании.