Beispiel #1
0
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == null)
				Values.Add (value);
			else
				base.OnPropertyDeserialized (name, value, resolver);
		}
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == "IBEventType")
				IBEventType = (int) value;
			else
				base.OnPropertyDeserialized (name, value, resolver);
		}
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name != null)
				Properties [name] = value;
			else
				Values.Add (value);
		}
 public ComparisonQueryGeneratingVisitor(object predicate, INativeClassFactory classSource
     , IReferenceResolver resolver)
 {
     _predicate = predicate;
     _classSource = classSource;
     _resolver = resolver;
 }
Beispiel #5
0
			internal SODAQueryVisitor(IQuery query, object predicate, INativeClassFactory classSource
				, IReferenceResolver referenceResolver)
			{
				_query = query;
				_predicate = predicate;
				_classSource = classSource;
				_referenceResolver = referenceResolver;
			}
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == "connectionID")
				ConnectionId = (int) value;
			else if (name == "connection")
				Connection = (IBObject) value;
			else
				base.OnPropertyDeserialized (name, value, resolver);
		}
        public ReferenceConverter(IReferenceResolver referenceResolver)
        {
            if (referenceResolver == null)
            {
                throw new ArgumentNullException(nameof(referenceResolver));
            }

            _referenceResolver = referenceResolver;
        }
        public override void ResolveReferences(IReferenceResolver referenceResolver)
        {
            var leftFunction = (ReferenceFunction)_leftFunction;

            _leftFunction = referenceResolver.Resolve(leftFunction.GetName());
            var rightFunction = (ReferenceFunction)_rightFunction;

            _rightFunction = referenceResolver.Resolve(rightFunction.GetName());
        }
Beispiel #9
0
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == "IBDocument.RootObjects")
				RootObjects = (NSMutableArray) value;
			else if (name != null)
				Properties [name] = value;
			else
				throw new InvalidOperationException ("XIB data element contains child with no key");
		}
Beispiel #10
0
        internal IReferenceResolver GetReferenceResolver()
        {
            if (_referenceResolver == null)
            {
                _referenceResolver = new DefaultReferenceResolver();
            }

            return(_referenceResolver);
        }
 public SelectiveValueEqualityReferenceResolver(IReferenceResolver defaultResolver, IEnumerable <Type> valueTypes)
     : base(defaultResolver)
 {
     if (valueTypes == null)
     {
         throw new ArgumentNullException();
     }
     representatives = valueTypes.ToDictionary(t => t, t => new Dictionary <object, object>());
 }
        /// <summary>
        /// Asynchronously resolves the reference specified by its type and id within the latest revision.
        /// </summary>
        /// <typeparam name="TEntity">The type of entity the reference refers to.</typeparam>
        /// <param name="id">The id of the referenced entity.</param>
        /// <param name="cancellation">A <see cref="CancellationToken"/> used to cancel the asynchronous operation or <see cref="CancellationToken.None"/>.</param>
        /// <returns>
        /// A task representing the asynchronous operation.
        /// When evaluated, the tasks result contains the loaded entity or null if the reference could not be resolved.
        /// </returns>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="referenceResolver"/> is null.</exception>
        /// <exception cref="OperationCanceledException">Thrown if the operation was canceled.</exception>
        public static ValueTask <TEntity> ResolveAsync <TEntity>(this IReferenceResolver referenceResolver, string id, CancellationToken cancellation = default)
            where TEntity : class
        {
            if (referenceResolver == null)
            {
                throw new ArgumentNullException(nameof(referenceResolver));
            }

            return(referenceResolver.ResolveAsync <TEntity>(id, revision: default, cancellation));
        public override void WriteJson(JsonWriter writer, QueryExpression value, JsonSerializer serializer)
        {
            IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver;

            writer.WriteStartObject();

            writer.WritePropertyName("$id");
            serializer.Serialize(writer, new Guid(resolver.GetReference(null, value)));

            writer.WritePropertyName("$type");
            serializer.Serialize(writer, nameof(QueryExpression));

            writer.WritePropertyName("Consumer");
            serializer.Serialize(writer, null);

            writer.WritePropertyName("Parameters");
            if (value.Parameters == null)
            {
                serializer.Serialize(writer, null);
            }
            else if (value.Parameters.Count == 0)
            {
                writer.WriteStartArray();
                writer.WriteEndArray();
            }
            else
            {
                writer.WriteStartArray();
                foreach (ParameterExpression parameter in value.Parameters)
                {
                    serializer.Serialize(writer, parameter, typeof(ParameterExpression));
                }
                writer.WriteEndArray();
            }

            writer.WritePropertyName("Expressions");
            if (value.Expressions == null)
            {
                serializer.Serialize(writer, null);
            }
            else if (value.Expressions.Count == 0)
            {
                writer.WriteStartArray();
                writer.WriteEndArray();
            }
            else
            {
                writer.WriteStartArray();
                foreach (HermesModel model in value.Expressions)
                {
                    serializer.Serialize(writer, model, model.GetType());
                }
                writer.WriteEndArray();
            }

            writer.WriteEndObject();
        }
Beispiel #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MultipleSourceReferenceResolver"/> class.
 /// </summary>
 /// <param name="mainResolver">The main resolver, used to add references.</param>
 /// <param name="fallbackResolvers">The fallback resolvers.</param>
 public MultipleSourceReferenceResolver(IReferenceResolver mainResolver, params IReferenceResolver[] fallbackResolvers)
 {
     this.resolvers = new List <IReferenceResolver> {
         mainResolver
     };
     foreach (var resolver in fallbackResolvers)
     {
         this.resolvers.Add(resolver);
     }
 }
        public override PropertyReference ReadJson(JsonReader reader, Type objectType, PropertyReference existingValue, bool hasExistingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return(null);
            }

            IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver;

            PropertyReference target = new PropertyReference(null);

            JObject json = JObject.Load(reader);

            foreach (JProperty property in json.Properties())
            {
                if (property.Name == "$id")
                {
                    string id = (string)serializer.Deserialize(property.Value.CreateReader());
                    resolver.AddReference(null, id, target);
                }
                else if (property.Name == "Consumer")
                {
                    target.Consumer = (HermesModel)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "Table")
                {
                    JObject   expression  = JObject.Load(property.Value.CreateReader());
                    JProperty refProperty = expression.Properties().Where(p => p.Name == "$ref").FirstOrDefault();
                    if (refProperty != null)
                    {
                        target.Table = (TableExpression)serializer.Deserialize(property.Value.CreateReader());
                    }
                    else
                    {
                        JProperty typeProperty = expression.Properties().Where(p => p.Name == "$type").FirstOrDefault();
                        if (typeProperty == null)
                        {
                            target.Table = null;
                        }
                        else
                        {
                            string typeName = (string)serializer.Deserialize(typeProperty.Value.CreateReader());
                            Type   type     = serializer.SerializationBinder.BindToType(null, typeName);
                            target.Table = (TableExpression)serializer.Deserialize(property.Value.CreateReader(), type);
                        }
                    }
                }
                else if (property.Name == "Property")
                {
                    target.Property = serializer.Deserialize <Property>(property.Value.CreateReader());
                }
            }

            return(target);
        }
Beispiel #16
0
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name == "orderedObjects" && value is NSArray)
     {
         orderedObjects = ((NSArray)value).Values;
     }
     else
     {
         base.OnPropertyDeserialized(name, value, resolver);
     }
 }
Beispiel #17
0
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name == null)
     {
         Values.Add(value);
     }
     else
     {
         base.OnPropertyDeserialized(name, value, resolver);
     }
 }
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name == "IBEventType")
     {
         IBEventType = (int)value;
     }
     else
     {
         base.OnPropertyDeserialized(name, value, resolver);
     }
 }
Beispiel #19
0
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name != null)
     {
         Properties [name] = value;
     }
     else
     {
         Values.Add(value);
     }
 }
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == "label")
				Label = (string) value;
			else if (name == "source")
				Source = (IBReference) value;
			else if (name == "destination")
				Destination = (IBReference) value;
			else
				base.OnPropertyDeserialized (name, value, resolver);
		}
Beispiel #21
0
        protected SocketConnection(TcpClient client, IReferenceResolver referenceResolver)
        {
            Client                       = client;
            client.NoDelay               = true;
            ReferenceResolver            = referenceResolver;
            _maxQueueSize                = 0x1000;
            Serializer.ReferenceResolver = referenceResolver;
            Serializer.TypeNameHandling  = TypeNameHandling.Objects;
            Serializer.Context           = new StreamingContext(StreamingContextStates.Remoting);
#if DEBUG
            Serializer.Formatting = Formatting.Indented;
#endif
        }
Beispiel #22
0
        public static void RegisterGlobalAssemblyReferenceResolver(this AppDomain appDomain,
                                                                   IReferenceResolver resolver)
        {
            lock (m_Lock)
            {
                if (!m_DomainsAssemblyResolvers.TryGetValue(appDomain.Id, out AssemblyResolver assmResolver))
                {
                    assmResolver = new AssemblyResolver(appDomain);
                    m_DomainsAssemblyResolvers.Add(appDomain.Id, assmResolver);
                }

                assmResolver.RegisterAssemblyReferenceResolver(resolver);
            }
        }
Beispiel #23
0
        public override void WriteJson(JsonWriter writer, JoinExpression value, JsonSerializer serializer)
        {
            IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver;

            writer.WriteStartObject();

            writer.WritePropertyName("$id");
            serializer.Serialize(writer, new Guid(resolver.GetReference(null, value)));

            writer.WritePropertyName("$type");
            serializer.Serialize(writer, nameof(JoinExpression));

            writer.WritePropertyName("Consumer");
            if (value.Consumer == null)
            {
                serializer.Serialize(writer, null);
            }
            else
            {
                serializer.Serialize(writer, value.Consumer, value.Consumer.GetType());
            }

            writer.WritePropertyName("Name");
            serializer.Serialize(writer, value.Name);

            writer.WritePropertyName("Alias");
            serializer.Serialize(writer, value.Alias);

            writer.WritePropertyName("Entity");
            serializer.Serialize(writer, value.Entity);

            writer.WritePropertyName("Hint");
            serializer.Serialize(writer, value.Hint);

            writer.WritePropertyName("JoinType");
            serializer.Serialize(writer, value.JoinType);

            writer.WritePropertyName("ON");
            if (value.ON == null)
            {
                serializer.Serialize(writer, null);
            }
            else
            {
                serializer.Serialize(writer, value.ON, value.ON.GetType());
            }

            writer.WriteEndObject();
        }
Beispiel #24
0
        protected SocketConnection(IReferenceResolver referenceResolver)
        {
            ReferenceResolver = referenceResolver;
            _sendQueue        = new BlockingCollection <byte[]>(0x10000);
            Serializer        = JsonSerializer.CreateDefault(new JsonSerializerSettings
            {
                ContractResolver          = new SerializationContractResolver(),
                Context                   = new StreamingContext(StreamingContextStates.Remoting, this),
                ReferenceResolverProvider = () => referenceResolver,
                TypeNameHandling          = TypeNameHandling.Objects | TypeNameHandling.Arrays,
#if DEBUG
                Formatting = Formatting.Indented
#endif
            });
        }
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name == "majorKey")
     {
         MajorKey = (string)value;
     }
     else if (name == "minorKey")
     {
         MinorKey = (string)value;
     }
     else
     {
         base.OnPropertyDeserialized(name, value, resolver);
     }
 }
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name == "connectionID")
     {
         ConnectionId = (int)value;
     }
     else if (name == "connection")
     {
         Connection = (IBObject)value;
     }
     else
     {
         base.OnPropertyDeserialized(name, value, resolver);
     }
 }
Beispiel #27
0
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == "objectID")
				ObjectId = (int) value;
			else if (name == "object")
				Object = value;
			else if (name == "objectName")
				ObjectName = (string) value;
			else if (name == "children")
				Children = value;
			else if (name == "parent")
				Parent = value;
			else
				base.OnPropertyDeserialized (name, value, resolver);
		}
Beispiel #28
0
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name == "IBProxiedObjectIdentifier")
     {
         IBProxiedObjectIdentifier = (string)value;
     }
     else if (name == "targetRuntimeIdentifier")
     {
         TargetRuntimeIdentifier = (string)value;
     }
     else
     {
         base.OnPropertyDeserialized(name, value, resolver);
     }
 }
Beispiel #29
0
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name == "IBDocument.RootObjects")
     {
         RootObjects = (NSMutableArray)value;
     }
     else if (name != null)
     {
         Properties [name] = value;
     }
     else
     {
         throw new InvalidOperationException("XIB data element contains child with no key");
     }
 }
        /// <inheritdoc />
        public IAndJsonSerializerSettingsTestBuilder WithReferenceResolver(IReferenceResolver referenceResolver)
        {
            this.jsonSerializerSettings.ReferenceResolverProvider = () => referenceResolver;
            this.validations.Add((expected, actual) =>
            {
                if (expected.ReferenceResolverProvider() != actual.ReferenceResolverProvider())
                {
                    this.ThrowNewJsonResultAssertionException(
                        "the same reference resolver as the provided one",
                        "in fact it was different");
                }
            });

            return(this);
        }
Beispiel #31
0
        public override JoinExpression ReadJson(JsonReader reader, Type objectType, JoinExpression existingValue, bool hasExistingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return(null);
            }

            IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver;

            JoinExpression target = new JoinExpression(null, null);

            JObject json = JObject.Load(reader);

            foreach (JProperty property in json.Properties())
            {
                if (property.Name == "$id")
                {
                    string id = (string)serializer.Deserialize(property.Value.CreateReader());
                    resolver.AddReference(null, id, target);
                }
                else if (property.Name == "Consumer")
                {
                    target.Consumer = (HermesModel)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "Alias")
                {
                    target.Alias = (string)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "Hint")
                {
                    target.Hint = (string)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "Entity")
                {
                    target.Entity = serializer.Deserialize <Entity>(property.Value.CreateReader());
                }
                else if (property.Name == "JoinType")
                {
                    target.JoinType = (string)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "ON")
                {
                    target.ON = serializer.Deserialize <BooleanFunction>(property.Value.CreateReader());
                }
            }

            return(target);
        }
Beispiel #32
0
        public override SelectStatement ReadJson(JsonReader reader, Type objectType, SelectStatement existingValue, bool hasExistingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return(null);
            }

            IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver;

            SelectStatement target = new SelectStatement(null, null);

            JObject json = JObject.Load(reader);

            foreach (JProperty property in json.Properties())
            {
                if (property.Name == "$id")
                {
                    string id = (string)serializer.Deserialize(property.Value.CreateReader());
                    resolver.AddReference(null, id, target);
                }
                else if (property.Name == "Consumer")
                {
                    target.Consumer = (HermesModel)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "Alias")
                {
                    target.Alias = (string)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "Hint")
                {
                    target.Hint = (string)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "FROM")
                {
                    DeserializeFROM(serializer, property, target);
                }
                else if (property.Name == "SELECT")
                {
                    DeserializeSELECT(serializer, property, target);
                }
                else if (property.Name == "WHERE")
                {
                    DeserializeWHERE(serializer, property, target);
                }
            }

            return(target);
        }
Beispiel #33
0
 public EngineConfiguration()
 {
     //this.Activator = (IActivator)new DefaultActivator();
     this.CompilerServiceFactory = new DefaultCompilerServiceFactory();
     this.EncodedStringFactory   = new HtmlEncodedStringFactory();
     this.ReferenceResolver      = new UseCurrentAssembliesReferenceResolver();
     //this.CachingProvider = (ICachingProvider)new DefaultCachingProvider();
     //this.TemplateManager = (ITemplateManager)new DelegateTemplateManager();
     this.Namespaces = new HashSet <string>()
     {
         "System",
         "System.Collections.Generic",
         "System.Linq"
     };
     this.Language = Language.CSharp;
 }
        public override ParameterExpression ReadJson(JsonReader reader, Type objectType, ParameterExpression existingValue, bool hasExistingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return(null);
            }

            IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver;

            ParameterExpression target = new ParameterExpression(null);

            JObject json = JObject.Load(reader);

            foreach (JProperty property in json.Properties())
            {
                if (property.Name == "$id")
                {
                    string id = (string)serializer.Deserialize(property.Value.CreateReader());
                    resolver.AddReference(null, id, target);
                }
                else if (property.Name == "Consumer")
                {
                    target.Consumer = (HermesModel)serializer.Deserialize(property.Value.CreateReader());
                }
                else if (property.Name == "Name")
                {
                    target.Name = (string)property.Value;
                }
                else if (property.Name == "Type")
                {
                    target.Type = serializer.Deserialize <Entity>(property.Value.CreateReader());
                }
                else if (property.Name == "Value")
                {
                    if (property.Value.Type == JTokenType.Object)
                    {
                        target.Value = serializer.Deserialize <ReferenceProxy>(property.Value.CreateReader());
                    }
                    else
                    {
                        target.Value = serializer.Deserialize(property.Value.CreateReader());
                    }
                }
            }

            return(target);
        }
Beispiel #35
0
        public override void WriteJson(JsonWriter writer, Property value, JsonSerializer serializer)
        {
            IReferenceResolver resolver = serializer.Context.Context as IReferenceResolver;

            writer.WriteStartObject();

            writer.WritePropertyName("$id");
            serializer.Serialize(writer, new Guid(resolver.GetReference(null, value)));

            writer.WritePropertyName("$type");
            serializer.Serialize(writer, nameof(Property));

            writer.WritePropertyName("identity");
            serializer.Serialize(writer, value.Identity.ToString());

            writer.WriteEndObject();
        }
Beispiel #36
0
        protected SocketConnection(TcpClient client, IReferenceResolver referenceResolver)
        {
            Client            = client;
            client.NoDelay    = true;
            ReferenceResolver = referenceResolver;
            _sendQueue        = new BlockingCollection <byte[]>(0x1000);
            Serializer        = JsonSerializer.CreateDefault(new JsonSerializerSettings
            {
                ContractResolver          = new SerializationContractResolver(),
                ReferenceResolverProvider = () => referenceResolver,
                TypeNameHandling          = TypeNameHandling.Objects,
                Context = new StreamingContext(StreamingContextStates.Remoting),
#if DEBUG
                Formatting = Formatting.Indented
#endif
            });
        }
Beispiel #37
0
        private Reference(string id, IReferenceResolver referenceResolver)
        {
            if (referenceResolver == null)
            {
                throw new ArgumentNullException(nameof(referenceResolver));
            }

            Id = id;

            if (!string.IsNullOrEmpty(id))
            {
                _aggregate = new Lazy <ValueTask <T> >(() => referenceResolver.ResolveAsync <T>(id, cancellation: default), isThreadSafe: true);
            }
            else
            {
                _aggregate = new Lazy <ValueTask <T> >(() => new ValueTask <T>(default(T)), isThreadSafe: true);
            }
        }
		protected void DeserializeContents (IEnumerable<XElement> children, Dictionary<string, Func<IBObject>> constructors,
		                                            IReferenceResolver resolver)
		{
			foreach (XElement child in children) {
				XAttribute keyAtt = child.Attribute ("key");
				string keyStr = keyAtt == null? null : keyAtt.Value;
				if (child.Name == "bool" && keyStr == "EncodedWithXMLCoder") {
					EncodedWithXMLCoder = child.Value == "YES";
				} else {
					object val = Deserialize (child, constructors, resolver);
					try {
						OnPropertyDeserialized (keyStr, val);
					} catch (Exception ex) {
						Console.WriteLine ("Error assigning {0}={1} to {2} in id {3}:\n{4}", keyStr, val, GetType (), Id, ex);
					}
				}
			}
		}
Beispiel #39
0
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (EncodedWithXMLCoder)
     {
         if (name == "dict.sortedKeys")
         {
             sortedKeys = new Unref <NSArray> (value);
         }
         else if (name == "dict.values")
         {
             values = new Unref <NSArray> (value);
         }
         else
         {
             base.OnPropertyDeserialized(name, value, resolver);
         }
     }
     else
     {
         if (nonCoderKeys == null)
         {
             nonCoderKeys = new List <object> ();
             dict         = new Dictionary <object, object> ();
         }
         if (name.StartsWith("NS.key."))
         {
             int idx = Int32.Parse(name.Substring("NS.key.".Length));
             while (nonCoderKeys.Count <= idx)
             {
                 nonCoderKeys.Add(null);
             }
             nonCoderKeys[idx] = value;
         }
         else if (name.StartsWith("NS.object."))
         {
             int idx = Int32.Parse(name.Substring("NS.object.".Length));
             dict[nonCoderKeys[idx]] = value;
         }
         else
         {
             base.OnPropertyDeserialized(name, value, resolver);
         }
     }
 }
 protected override void OnPropertyDeserialized(string name, object value, IReferenceResolver resolver)
 {
     if (name == "label")
     {
         Label = (string)value;
     }
     else if (name == "source")
     {
         Source = (IBReference)value;
     }
     else if (name == "destination")
     {
         Destination = (IBReference)value;
     }
     else
     {
         base.OnPropertyDeserialized(name, value, resolver);
     }
 }
		public static object Deserialize (XElement element, Dictionary<string, Func<IBObject>> constructors, IReferenceResolver resolver)
		{
			var idAtt = element.Attribute ("id");
			object val = DeserializeInner (element, constructors, resolver);
			var ib = val as IBObject;
			
			if (idAtt != null) {
				int id = Int32.Parse (idAtt.Value);
				if (ib != null) {
					ib.Id = id;
					resolver.Add (ib);
				} else {
					resolver.Add (id, val);
				}
			}
			
			if (ib != null)
				ib.DeserializeContents (element.Elements (), constructors, resolver);
			
			return val;
		}
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == "majorKey")
				MajorKey = (string) value;
			else if (name == "minorKey")
				MinorKey = (string) value;
			else
				base.OnPropertyDeserialized (name, value, resolver);
		}
        /// <summary>
        /// Create a new readonly view (and copy) of the given configuration.
        /// </summary>
        /// <param name="config">the configuration to copy.</param>
        public ReadOnlyTemplateServiceConfiguration(ITemplateServiceConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            _allowMissingPropertiesOnDynamic = config.AllowMissingPropertiesOnDynamic;

            _activator = config.Activator;
            if (_activator == null)
            {
                throw new ArgumentNullException("config", "the configured Activator cannot be null!");
            }

            _baseTemplateType = config.BaseTemplateType;
            // Check if the baseTemplateType is valid.
            if (_baseTemplateType != null && (!typeof(ITemplate).IsAssignableFrom(_baseTemplateType) || typeof(ITemplate) == _baseTemplateType))
            {
                throw new ArgumentOutOfRangeException("config", "the configured BaseTemplateType must implement ITemplate!");
            }
            
            _cachingProvider = config.CachingProvider;
            if (_cachingProvider == null)
            {
                throw new ArgumentNullException("config", "the configured CachingProvider cannot be null!");
            }

#if !RAZOR4
#pragma warning disable 0618 // Backwards Compat.
            _codeInspectors = config.CodeInspectors;
            if (_codeInspectors == null)
            {
                throw new ArgumentNullException("config", "the configured CodeInspectos cannot be null!");
            }
            _codeInspectors = new List<ICodeInspector>(_codeInspectors);
#pragma warning restore 0618 // Backwards Compat.
#endif

            _compilerServiceFactory = config.CompilerServiceFactory;
            if (_compilerServiceFactory == null)
            {
                throw new ArgumentNullException("config", "the configured CompilerServiceFactory cannot be null!");
            }

            _debug = config.Debug;
            _disableTempFileLocking = config.DisableTempFileLocking;
            _encodedStringFactory = config.EncodedStringFactory;
            if (_encodedStringFactory == null)
            {
                throw new ArgumentNullException("config", "the configured EncodedStringFactory cannot be null!");
            }

            _language = config.Language;
            _namespaces = config.Namespaces;
            if (_namespaces == null)
            {
                throw new ArgumentNullException("config", "the configured Namespaces cannot be null!");
            }
            _namespaces = new HashSet<string>(_namespaces);

            _referenceResolver = config.ReferenceResolver;
            if (_referenceResolver == null)
            {
                throw new ArgumentNullException("config", "the configured ReferenceResolver cannot be null!");
            }

#pragma warning disable 0618 // Backwards Compat.
            _resolver = config.Resolver;
            _templateManager = config.TemplateManager;
            if (_templateManager == null)
            {
                if (_resolver != null)
                {
                    _templateManager = new Xml.WrapperTemplateManager(_resolver);
                }
                else
                {
                    throw new ArgumentNullException("config", "the configured TemplateManager and Resolver cannot be null!");
                }
            }
#pragma warning restore 0618 // Backwards Compat.

        }
Beispiel #44
0
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == "orderedObjects" && value is NSArray)
				orderedObjects = ((NSArray)value).Values;
			else
				base.OnPropertyDeserialized (name, value, resolver);
		}
Beispiel #45
0
		public virtual void OptimizeQuery(IExpression expr, IQuery query, object predicate
			, INativeClassFactory classSource, IReferenceResolver referenceResolver)
		{
			expr.Accept(new SODAQueryBuilder.SODAQueryVisitor(query, predicate, classSource, 
				referenceResolver));
		}
Beispiel #46
0
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			Values[name] = value;
		}
Beispiel #47
0
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (EncodedWithXMLCoder) {
				if (name == "dict.sortedKeys") {
					sortedKeys = new Unref<NSArray> (value);
				} else if (name == "dict.values") {
					values = new Unref<NSArray> (value);
				} else {
					base.OnPropertyDeserialized (name, value, resolver);
				}
			} else {
				if (nonCoderKeys == null) {
					nonCoderKeys = new List<object> ();
					dict = new Dictionary<object, object> ();
				}
				if (name.StartsWith ("NS.key.")) {
					int idx = Int32.Parse (name.Substring ("NS.key.".Length));
					while (nonCoderKeys.Count <= idx)
						nonCoderKeys.Add (null);
					nonCoderKeys[idx] = value;
				} else if (name.StartsWith ("NS.object.")) {
					int idx = Int32.Parse (name.Substring ("NS.object.".Length));
					dict[nonCoderKeys[idx]] = value;
				} else {
					base.OnPropertyDeserialized (name, value, resolver);
				}
			}
		}
		static object DeserializeInner (XElement element, Dictionary<string, Func<IBObject>> constructors, IReferenceResolver resolver)
		{
			switch (element.Name.ToString ()) {
			case "int":
				return Int32.Parse (element.Value);
			case "integer":
				return Int32.Parse (element.Attribute ("value").Value);
			case "nil":
				return null;
			case "string":
				XAttribute typeAtt = element.Attribute ("type");
				if (typeAtt != null) {
					switch (typeAtt.Value) {
					case "base64-UTF8":
						//FIXME: figure out the encoding they're using. why do we have to remove the last char to make it decode?
						string s = element.Value.Replace ("\n", "").Replace ("\r", "");
						int last = (s.Length / 4 ) * 4;
						return Encoding.UTF8.GetString (Convert.FromBase64String (s.Substring (0, last)));
					default:
						throw new Exception (String.Format ("Unknown string encoding type {0}", typeAtt.Value));
					}
				}
				return element.Value;
			case "characters":
				return element.Value;
			case "bool":
				return element.Value == "YES";
			case "boolean":
				return element.Attribute ("value").Value == "YES";
			case "double":
				return Double.Parse (element.Value);
			case "float":
				return float.Parse (element.Value);
			case "real":
				return float.Parse (element.Attribute ("value").Value);
			case "bytes":
				//FIXME: figure out the encoding they're using. it's not straight base 64
				return new AppleEvilByteArrayEncoding (element.Value);
			case "reference":
				var refAtt = element.Attribute ("ref");
				IBReference xibRef;
				if (refAtt != null) {
					xibRef = new IBReference (Int32.Parse (refAtt.Value));
					resolver.Add (xibRef);
				} else {
					//FIXME: handle null references more robustly
					xibRef = new IBReference (Int32.MinValue);
				}
				return xibRef;
			case "object":
				string className = element.Attribute ("class").Value;
				Func<IBObject> constructor;
				IBObject obj;
				if (constructors.TryGetValue (className, out constructor))
					obj = constructor ();
				else
					obj = new UnknownIBObject (className);
				return obj;
			default:
				throw new Exception (String.Format ("Cannot handle primitive type {0}", element.Name));
			}
		}
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			switch (name) {
			case "className":
				ClassName = (string) value;
				break;
			case "superclassName":
				SuperclassName = (string) value;
				break;
			case "actions":
				Actions = (NSMutableDictionary) value;
				break;
			case "outlets":
				Outlets = (NSMutableDictionary) value;
				break;
			case "sourceIdentifier":
				SourceIdentifier = new Unref<IBClassDescriptionSource> (value);
				break;
			case "toOneOutletInfosByName":
				ToOneOutletInfosByName = (NSMutableDictionary) value;
				break;
			case "actionInfosByName":
				ActionInfosByName = (NSMutableDictionary) value;
				break;
			default:
				base.OnPropertyDeserialized (name, value, resolver);
				break;
			}
		}
Beispiel #50
0
		protected override void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			if (name == "IBProxiedObjectIdentifier")
				IBProxiedObjectIdentifier = (string) value;
			else if (name == "targetRuntimeIdentifier")
				TargetRuntimeIdentifier = (string) value;
			else
				base.OnPropertyDeserialized (name, value, resolver);
		}
Beispiel #51
0
		protected virtual void OnPropertyDeserialized (string name, object value, IReferenceResolver resolver)
		{
			throw new InvalidOperationException (String.Format ("Unexpected property '{0}' of type '{1}' in type '{2}'",
			                                                    name, value.GetType (), GetType ()));
		}