
com.nominanuda.store.mongo.BSONObjectAsDataObject Maven / Gradle / Ivy
The newest version!
package com.nominanuda.store.mongo;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.bson.BSONObject;
import com.nominanuda.dataobject.DataArray;
import com.nominanuda.dataobject.DataObject;
import com.nominanuda.dataobject.DataStruct;
import com.nominanuda.dataobject.DataType;
import com.nominanuda.dataobject.PropertyBag;
import com.nominanuda.lang.Check;
import com.nominanuda.lang.Maths;
import static com.nominanuda.dataobject.DataStructHelper.STRUCT;
public class BSONObjectAsDataObject implements DataObject {
private final BSONObject bson;
public BSONObjectAsDataObject(BSONObject bson) {
this.bson = bson;
}
public Iterator keyIterator() {
return bson.keySet().iterator();
}
public Object get(String key) {
Object o = bson.get(key);
return wrapIfNecessary(o);
}
static Object wrapIfNecessary(Object o) {
if(STRUCT.isPrimitiveOrNull(o)) {
return o;
} else if(o instanceof List) {
return new BSONListAsDataArray((List>)o);
} else {
return new BSONObjectAsDataObject(
Check.illegalstate.assertInstanceOf(o, BSONObject.class));
}
}
public boolean exists(String k) {
return bson.containsField(k);
}
public List getKeys() {
return new LinkedList(bson.keySet());
}
public Object getPathSafe(String path) {
return getPathSafe(this, path);
}
static Object getPathSafe(Object o, String path) {
PropertyBag
© 2015 - 2025 Weber Informatics LLC | Privacy Policy