Esempio n. 1
0
        /// <summary>
        /// This constructors sets the underlying respository.
        /// </summary>
        /// <param name="respository">The aynsc repository.</param>
        protected ApiPersistenceControllerAsyncBase(IRepositoryAsync <K, E> respository)
        {
            mRespository = respository;
            mSerializers = TransportSerializer.GetSerializers <E>(GetType())
                           .ToDictionary((p) => p.MediaType.ToLowerInvariant());

            //If we have no serializers set on this controller, check the entity.
            if (mSerializers == null || mSerializers.Count == 0)
            {
                mSerializers = TransportSerializer.GetSerializers <E>(typeof(E))
                               .ToDictionary((p) => p.MediaType.ToLowerInvariant());
            }

            mKeyMapper = (KeyMapper <K>)KeyMapper.Resolve <K>();

            mODataValidate = ODataValidationSettingsCreate();
        }
Esempio n. 2
0
        /// <summary>
        /// This method resolves the specific serializer for the entity transport.
        /// </summary>
        protected virtual TransportSerializer <E> ResolveSerializer()
        {
            mTransports = TransportSerializer.GetSerializers <E>(GetType()).ToDictionary((s) => s.MediaType.ToLowerInvariant());

            if (mTransports == null || mTransports.Count == 0)
            {
                mTransports = TransportSerializer.GetSerializers <E>(typeof(E)).ToDictionary((s) => s.MediaType.ToLowerInvariant());
            }

            if (mTransports == null || mTransports.Count == 0)
            {
                throw new TransportSerializerResolutionException("The default TransportSerializer cannot be resolved.");
            }

            //Get the transport serializer with the highest priority.
            return(mTransports.Values.OrderByDescending((t) => t.Priority).First());
        }
Esempio n. 3
0
        /// <summary>
        /// This method resolves the specific serializer for the entity transport.
        /// </summary>
        protected virtual void ResolveTransport(TransportSerializer <E> primaryTransport, bool useDefaultJsonSerializer)
        {
            var transportSerializers = TransportSerializer.GetSerializers <E>(GetType()).ToDictionary((s) => s.MediaType.ToLowerInvariant());

            if (transportSerializers == null || transportSerializers.Count == 0)
            {
                transportSerializers = TransportSerializer.GetSerializers <E>(typeof(E)).ToDictionary((s) => s.MediaType.ToLowerInvariant());
            }

            if (transportSerializers == null || transportSerializers.Count == 0)
            {
                if (primaryTransport == null && !useDefaultJsonSerializer)
                {
                    throw new TransportSerializerResolutionException("No TransportSerializers can be resolved for the entity.");
                }

                transportSerializers = new Dictionary <string, TransportSerializer <E> >();

                if (primaryTransport == null)
                {
                    primaryTransport = new JsonTransportSerializer <E>();
                }
            }

            if (primaryTransport != null && !transportSerializers.ContainsKey(primaryTransport.MediaType))
            {
                transportSerializers.Add(primaryTransport.MediaType, primaryTransport);
            }

            mTransportSerializers = transportSerializers;

            //Get the transport serializer with the highest priority.
            if (primaryTransport != null)
            {
                mPrimaryTransport = primaryTransport.MediaType;
            }
            else
            {
                mPrimaryTransport = mTransportSerializers.OrderByDescending((t) => t.Value.Priority).First().Key;
            }
        }