/// <summary>
        /// Configures the storage with the user supplied persistence configuration
        /// DB schema is updated if requested by the user
        /// </summary>
        /// <param name="config"></param>
        /// <param name="nhibernateProperties"></param>
        /// <param name="autoUpdateSchema"></param>
        /// <returns></returns>
        public static Configure DBSubcriptionStorage(this Configure config,
            IDictionary<string, string> nhibernateProperties,
            bool autoUpdateSchema)
        {
            var fluentConfiguration = Fluently.Configure(new Configuration().SetProperties(nhibernateProperties))
              .Mappings(m => m.FluentMappings.Add(typeof(SubscriptionMap)));

            var cfg = fluentConfiguration.BuildConfiguration();

            if (autoUpdateSchema)
                new SchemaUpdate(cfg).Execute(false, true);

            //default to LinFu if not specifed by user
            if (!cfg.Properties.Keys.Contains(PROXY_FACTORY_KEY))
                fluentConfiguration.ExposeConfiguration(
                    x =>
                    x.SetProperty(PROXY_FACTORY_KEY, typeof(ProxyFactoryFactory).AssemblyQualifiedName));

            var sessionSource = new SubscriptionStorageSessionProvider(fluentConfiguration.BuildSessionFactory());

            config.Configurer.RegisterSingleton<ISubscriptionStorageSessionProvider>(sessionSource);
            config.Configurer.ConfigureComponent<SubscriptionStorage>(ComponentCallModelEnum.Singlecall);

            return config;
        }
        /// <summary>
        /// Configures the storage with the user supplied persistence configuration
        /// DB schema is updated if requested by the user
        /// </summary>
        /// <param name="config"></param>
        /// <param name="nhibernateProperties"></param>
        /// <param name="autoUpdateSchema"></param>
        /// <returns></returns>
        public static Configure DBSubcriptionStorage(this Configure config,
            Configuration configuration,
            bool autoUpdateSchema)
        {
            var mapper = new ModelMapper();
              mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());
              HbmMapping faultMappings = mapper.CompileMappingForAllExplicitlyAddedEntities();

              configuration.AddMapping(faultMappings);

            if (autoUpdateSchema)
                new SchemaUpdate(configuration).Execute(false, true);

            var sessionSource = new SubscriptionStorageSessionProvider(configuration.BuildSessionFactory());

            config.Configurer.RegisterSingleton<ISubscriptionStorageSessionProvider>(sessionSource);
            config.Configurer.ConfigureComponent<SubscriptionStorage>(DependencyLifecycle.InstancePerCall);

            return config;
        }
 public CachedSubscriptionPersister(SubscriptionStorageSessionProvider subscriptionStorageSessionProvider, TimeSpan expiration) : base(subscriptionStorageSessionProvider)
 {
     this.expiration = expiration;
 }
 public SubscriptionPersister(SubscriptionStorageSessionProvider subscriptionStorageSessionProvider)
 {
     this.subscriptionStorageSessionProvider = subscriptionStorageSessionProvider;
 }
 public CachedSubscriptionPersister(SubscriptionStorageSessionProvider subscriptionStorageSessionProvider, TimeSpan expiration) : base(subscriptionStorageSessionProvider)
 {
     this.expiration = expiration;
 }
 public SubscriptionPersister(SubscriptionStorageSessionProvider subscriptionStorageSessionProvider)
 {
     this.subscriptionStorageSessionProvider = subscriptionStorageSessionProvider;
 }