com.mongodb.spark.pickle.DBRefConstructor Maven / Gradle / Ivy
package com.mongodb.spark.pickle;
import com.mongodb.DBRef;
import net.razorvine.pickle.IObjectConstructor;
import net.razorvine.pickle.PickleException;
import org.bson.BSON;
import java.util.HashMap;
public class DBRefConstructor implements IObjectConstructor {
public static class DBRefBox extends BSONValueBox {
private DBRef value;
static {
BSON.addEncodingHook(DBRefBox.class, getTransformer());
}
// CHECKSTYLE:OFF
public void __setstate__(final HashMap state) {
// CHECKSTYLE:ON
Object collection = state.get("_DBRef__collection");
if (!(collection instanceof String)) {
throw new PickleException(
"Expected a String for key \"_DBRef__colledction\", not a "
+ collection.getClass().getName());
}
this.value = new DBRef(
(String) collection, state.get("_DBRef__id"));
}
@Override
public DBRef get() {
return value;
}
}
@Override
public Object construct(final Object[] args) {
if (args.length != 0) {
throw new PickleException(
"DBRef constructor requires 0 arguments, not " + args.length);
}
return new DBRefBox();
}
}