private static Neo4jTypes.AnyType NextInner(Neo4jTypes.AnyType type) { if (type is Neo4jTypes.ListType) { return(((Neo4jTypes.ListType)type).innerType()); } else { return(type); } }
public override ListValue Apply(AnyValue value, Neo4jTypes.AnyType innerType, DbAccess access) { //Fast route if (innerType == NTAny) { return(FastListConversion(value)); } //slow route, recursively convert the list if (!(value is SequenceValue)) { throw CantCoerce(value, "List"); } SequenceValue listValue = ( SequenceValue )value; Coercer innerCoercer = _converters[innerType.GetType()]; AnyValue[] coercedValues = new AnyValue[listValue.Length()]; Neo4jTypes.AnyType nextInner = nextInner(innerType); if (listValue.IterationPreference() == RANDOM_ACCESS) { for (int i = 0; i < coercedValues.Length; i++) { AnyValue nextItem = listValue.Value(i); coercedValues[i] = nextItem == NO_VALUE ? NO_VALUE : innerCoercer(nextItem, nextInner, access); } } else { int i = 0; foreach (AnyValue anyValue in listValue) { AnyValue nextItem = listValue.Value(i); coercedValues[i++] = nextItem == NO_VALUE ? NO_VALUE : innerCoercer(anyValue, nextInner, access); } } return(VirtualValues.list(coercedValues)); }
public ListConverter(Type type, Neo4jTypes.AnyType neoType) { this._type = type; this._neoType = neoType; }
/// <summary> /// Registers a type and its mapping to Neo4jTypes /// </summary> /// <param name="javaClass"> /// the class of the native type </param> /// <param name="type"> /// the mapping to Neo4jTypes </param> public virtual void RegisterType(Type javaClass, Neo4jTypes.AnyType type) { _typeMappers.registerType(javaClass, new TypeMappers.DefaultValueConverter(type, javaClass)); }
internal TypeChecker(Neo4jTypes.AnyType type, Type javaClass) { this.TypeConflict = type; this.JavaClass = javaClass; }
internal static System.Func <string, DefaultParameterValue> NullParser(Type javaType, Neo4jTypes.AnyType neoType) { return(s => { if (s.equalsIgnoreCase("null")) { return nullValue(neoType); } else { throw new System.ArgumentException(string.Format("A {0} can only have a `defaultValue = \"null\"", javaType.Name)); } }); }
internal DefaultValueConverter(Neo4jTypes.AnyType type, Type javaClass, System.Func <string, DefaultParameterValue> parser) : base(type, javaClass) { this.Parser = parser; }
public DefaultValueConverter(Neo4jTypes.AnyType type, Type javaClass) : this(type, javaClass, NullParser(javaClass, type)) { }
private AnyValue CoerceTo(AnyValue value, DbAccess access, Neo4jTypes.AnyType types) { Coercer function = _converters[types.GetType()]; return(function(value, types, access)); }
public static ListValue AsList(AnyValue value, Neo4jTypes.AnyType innerType, DbAccess access) { return((new ListCoercer()).Apply(value, innerType, access)); }