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); }