Exemple #1
0
 private static Neo4jTypes.AnyType NextInner(Neo4jTypes.AnyType type)
 {
     if (type is Neo4jTypes.ListType)
     {
         return(((Neo4jTypes.ListType)type).innerType());
     }
     else
     {
         return(type);
     }
 }
Exemple #2
0
            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));
            }
Exemple #3
0
 public ListConverter(Type type, Neo4jTypes.AnyType neoType)
 {
     this._type    = type;
     this._neoType = neoType;
 }
Exemple #4
0
 /// <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));
 }
Exemple #5
0
 internal TypeChecker(Neo4jTypes.AnyType type, Type javaClass)
 {
     this.TypeConflict = type;
     this.JavaClass    = javaClass;
 }
Exemple #6
0
 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));
         }
     });
 }
Exemple #7
0
 internal DefaultValueConverter(Neo4jTypes.AnyType type, Type javaClass, System.Func <string, DefaultParameterValue> parser) : base(type, javaClass)
 {
     this.Parser = parser;
 }
Exemple #8
0
 public DefaultValueConverter(Neo4jTypes.AnyType type, Type javaClass) : this(type, javaClass, NullParser(javaClass, type))
 {
 }
Exemple #9
0
        private AnyValue CoerceTo(AnyValue value, DbAccess access, Neo4jTypes.AnyType types)
        {
            Coercer function = _converters[types.GetType()];

            return(function(value, types, access));
        }
Exemple #10
0
 public static ListValue AsList(AnyValue value, Neo4jTypes.AnyType innerType, DbAccess access)
 {
     return((new ListCoercer()).Apply(value, innerType, access));
 }