Пример #1
0
        public ChannelProvider <TChannel> GetChannelProvider <TChannel>(ChannelAccessor <T, TChannel> channelAccessor,
                                                                        KeyAccessor <TChannel, TKey> messageKeyAccessor,
                                                                        InstanceChannelPolicy <T, TChannel> channelPolicy)
        {
            Guard.AgainstNull(channelAccessor, "channelAccessor");
            Guard.AgainstNull(messageKeyAccessor, "messageKeyAccessor");
            Guard.AgainstNull(channelPolicy, "channelPolicy");

            FiberProvider <TKey> fiberProvider = _configurator.GetConfiguredProvider();

            if (_sessionProvider == null)
            {
                throw new ChannelConfigurationException(typeof(TChannel),
                                                        "No NHibernate ISession provider specified for NHibernate instance: "
                                                        + typeof(T).ToShortTypeName());
            }

            SessionProvider <TChannel> sessionProvider = m => _sessionProvider.GetSession(m);

            var channelProvider = new NHibernateInstanceChannelProvider <T, TChannel, TKey>(fiberProvider,
                                                                                            sessionProvider,
                                                                                            messageKeyAccessor,
                                                                                            channelAccessor,
                                                                                            channelPolicy);

            return(channelProvider);
        }
        public ChannelProvider <TChannel> GetChannelProvider(ChannelBuilder <TChannel> builder)
        {
            if (_accessor == null)
            {
                throw new ChannelConfigurationException(typeof(TChannel),
                                                        "No channel accessor was specified for NHibernate instance: "
                                                        + typeof(TInstance).ToShortTypeName());
            }
            if (_keyAccessor == null)
            {
                throw new ChannelConfigurationException(typeof(TChannel),
                                                        "No message key accessor was specified for NHibernate instance: "
                                                        + typeof(TInstance).ToShortTypeName());
            }
            if (_instanceChannelPolicy == null)
            {
                throw new ChannelConfigurationException(typeof(TChannel),
                                                        "No missing instance provider specified for NHibernate instance: "
                                                        + typeof(TInstance).ToShortTypeName());
            }
            if (_sessionProvider == null)
            {
                throw new ChannelConfigurationException(typeof(TChannel),
                                                        "No NHibernate ISession provider specified for NHibernate instance: "
                                                        + typeof(TInstance).ToShortTypeName());
            }

            FiberProvider <TKey> fiberProvider = _configurator.GetConfiguredProvider(builder);

            var channelProvider = new NHibernateInstanceChannelProvider <TInstance, TChannel, TKey>(fiberProvider,
                                                                                                    _sessionProvider,
                                                                                                    _keyAccessor,
                                                                                                    _accessor,
                                                                                                    _instanceChannelPolicy());

            return(channelProvider);
        }