private static Object unwrapValue(FieldValue val) { if (val == null) { return null; } return val.getWrappedValue(); } }
@Override public Object getWrappedValue() { if (values instanceof MapFieldValue.MapWrapper) { return ((MapFieldValue.MapWrapper) values).map; } Map tmpMap = new HashMap(); for (Entry<K, V> kvEntry : values.entrySet()) { tmpMap.put(kvEntry.getKey().getWrappedValue(), kvEntry.getValue().getWrappedValue()); } return tmpMap; }
@Override public Object getWrappedValue() { if (values instanceof ListWrapper) { return ((ListWrapper) values).myvalues; } List tmpWrappedList = new ArrayList(); for (T value : values) { tmpWrappedList.add(value.getWrappedValue()); } return tmpWrappedList; }
@Override public FieldValue applyTo(FieldValue oldValue) { if (oldValue instanceof NumericFieldValue) { Number number = (Number) oldValue.getWrappedValue(); oldValue.assign(calculate(number)); } else { throw new IllegalStateException("Cannot use arithmetic value update on non-numeric datatype "+oldValue.getClass().getName()); } return oldValue; }
return (o instanceof FieldValue ? ((FieldValue) o).getWrappedValue() : o);
public FieldValue setFieldValue(StructuredFieldValue doc, FieldValue fv) { FieldValue old = getFieldValue(doc); extract.set(doc, (fv == null) ? null : fv.getWrappedValue()); return old; } }
@Override public FieldValue applyTo(FieldValue fval) { if (fval instanceof Array) { Array array = (Array) fval; FieldValue element = array.getFieldValue(((IntegerFieldValue) value).getInteger()); element = update.applyTo(element); array.set(((IntegerFieldValue) value).getInteger(), element); } else if (fval instanceof WeightedSet) { WeightedSet wset = (WeightedSet) fval; WeightedSetDataType wtype = wset.getDataType(); Integer weight = wset.get(value); if (weight == null) { if (wtype.createIfNonExistent() && update instanceof ArithmeticValueUpdate) { weight = 0; } else { return fval; } } weight = (Integer) update.applyTo(new IntegerFieldValue(weight)).getWrappedValue(); wset.put(value, weight); if (wtype.removeIfZero() && update instanceof ArithmeticValueUpdate && weight == 0) { wset.remove(value); } } return fval; }