Example #1
0
        protected virtual void Dispose(bool disposing)
        {
            if (Disposed)
            {
                return;
            }

            if (disposing)
            {
                if (EventListeners.Count != 0)
                {
                    EventListeners.Dispose();
                    if (_isDisposableType)
                    {
                        foreach (var unknown in CurrentCollection)
                        {
                            var i = (IDisposable)unknown;
                            i.Dispose();
                        }
                    }
                    CurrentCollection.Clear();
                }
            }
            Disposed = true;
        }
Example #2
0
 public void Register(EventListeners eventListeners)
 {
     foreach (IEventHandler handler in this.handlers)
     {
         handler.Register(eventListeners);
     }
 }
Example #3
0
    private static void AddListenerInternal(string messageName, GameObject lifecycleObject, Delegate handler)
    {
#if LOG_ADD_LISTENER
        Debug.Log(string.Format("MESSENGER add listener {0} at {1}", handler, messageName), lifecycleObject);
#endif

        // don't add dead listeners
        if (lifecycleObject == null)
        {
            return;
        }

        // prepare
        if (!eventTable.ContainsKey(messageName))
        {
            eventTable[messageName] = new EventListeners();
        }

        // add
        eventTable[messageName].Listeners.Add(new ListenerLifecyclePair()
        {
            Listener        = handler,
            LifecycleObject = lifecycleObject,
        });
    }
        /**
         * Create an audit reader associated with an open session.
         * @param session An open session.
         * @return An audit reader associated with the given sesison. It shouldn't be used
         * after the session is closed.
         * @throws AuditException When the given required listeners aren't installed.
         */
        public static IAuditReader Get(ISession session)
        {
            ISessionImplementor sessionImpl;

            if (!(session is ISessionImplementor))
            {
                sessionImpl = (ISessionImplementor)session.SessionFactory.GetCurrentSession();
            }
            else
            {
                sessionImpl = (ISessionImplementor)session;
            }

            EventListeners listeners = sessionImpl.Listeners;

            foreach (IPostInsertEventListener listener in listeners.PostInsertEventListeners)
            {
                if (listener is AuditEventListener)
                {
                    if (ArraysTools.ArrayIncludesInstanceOf(listeners.PostUpdateEventListeners, typeof(AuditEventListener)) &&
                        ArraysTools.ArrayIncludesInstanceOf(listeners.PostDeleteEventListeners, typeof(AuditEventListener)))
                    {
                        return(new AuditReader(((AuditEventListener)listener).getVerCfg(), session,
                                               sessionImpl));
                    }
                }
            }

            throw new AuditException("You need to install the org.hibernate.envers.event.AuditEventListener " +
                                     "class as post insert, update and delete event listener.");
        }
Example #5
0
        public static EventListener CreateEventListener(ConsoleOptions options)
        {
            var eventListeners = new List <EventListener>();

            if (options.HasStoryOutput)
            {
                eventListeners.Add(EventListeners.FileOutputEventListener(options.StoryOutput));
            }

            if (options.HasStoryXmlOutput)
            {
                eventListeners.Add(EventListeners.XmlWriterEventListener(options.Xml));
            }

            if (options.Console)
            {
                eventListeners.Add(EventListeners.ColorfulConsoleOutputEventListener());
            }

            if (eventListeners.Count == 0)
            {
                eventListeners.Add(EventListeners.ColorfulConsoleOutputEventListener());
            }

            if (options.Codegen)
            {
                eventListeners.Add(EventListeners.CodeGenEventListener(System.Console.Out));
            }

            return(new MultiOutputEventListener(eventListeners.ToArray()));
        }
Example #6
0
 public FormViewModel(Form model)
 {
     Model = model;
     Name  = Model.Name;
     Title = Model.Title;
     EventListeners.AddRange(Model.EventListeners);
     RootElement = FormElementViewModelFactory.CreateComposite(Model.RootElement);
     EventListeners.CollectionChanged += EventListenersOnCollectionChanged;
 }
            public void addEventListener(String Event, object function)
            {
                System.Diagnostics.Debug.WriteLine(String.Format("addEventListener(Event = {0}, Function = {1})", Event, function.ToString()));

                if (EventListeners.ContainsKey(Event))
                {
                    EventListeners.Remove(Event);
                }
                EventListeners.Add(Event, function);
            }
Example #8
0
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
     else
     {
         Destroy(this.gameObject);
     }
 }
Example #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DrawAreaCircle"/> class.
        /// </summary>
        /// <param name="document">The document.</param>
        /// <param name="cx">The cx.</param>
        /// <param name="cy">The cy.</param>
        /// <param name="radius">The radius.</param>
        /// <param name="listeners">The listeners.</param>
        public DrawAreaCircle(IDocument document,
                              string cx, string cy, string radius, EventListeners listeners)
            : base(document)
        {
            this.CX     = cx;
            this.CY     = cy;
            this.Radius = radius;

            if (listeners != null)
            {
                this.Content.Add(listeners);
            }
        }
Example #10
0
    private static void PurgeDeadListeners(EventListeners l)
    {
        var listeners = l.Listeners;

        for (int i = 0; i < listeners.Count; ++i)
        {
            if (listeners[i].LifecycleObject == null)
            {
                // dead listener found -> remove
                listeners.RemoveAt(i);
                --i;
            }
        }
    }
Example #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DrawAreaRectangle"/> class.
        /// </summary>
        /// <param name="document">The document.</param>
        /// <param name="x">The x.</param>
        /// <param name="y">The y.</param>
        /// <param name="width">The width.</param>
        /// <param name="height">The height.</param>
        /// <param name="listeners">The listeners.</param>
        public DrawAreaRectangle(IDocument document,
                                 string x, string y, string width, string height,
                                 EventListeners listeners)
            : base(document)
        {
            this.X      = x;
            this.Y      = y;
            this.Width  = width;
            this.Height = height;

            if (listeners != null)
            {
                this.Content.Add(listeners);
            }
        }
Example #12
0
        public static NHibernate.Cfg.Configuration RegisterEntityNameResolver(this NHibernate.Cfg.Configuration configuration)
        {
            EventListeners listeners          = configuration.EventListeners;
            var            entityNameResolver = new EntityNameResolver();

            listeners.MergeEventListeners =
                new[] { entityNameResolver }.Concat(listeners.MergeEventListeners).ToArray();
            listeners.UpdateEventListeners =
                new[] { entityNameResolver }.Concat(listeners.UpdateEventListeners).ToArray();
            listeners.SaveOrUpdateEventListeners =
                new[] { entityNameResolver }.Concat(listeners.SaveOrUpdateEventListeners).ToArray();
            listeners.SaveEventListeners =
                new[] { entityNameResolver }.Concat(listeners.SaveEventListeners).ToArray();
            listeners.PersistEventListeners =
                new[] { entityNameResolver }.Concat(listeners.PersistEventListeners).ToArray();

            configuration.Interceptor = new EntityNameInterceptor();
            return(configuration);
        }
Example #13
0
        public void FrameWriteTest()
        {
            try
            {
                TextDocument textdocument = new TextDocument();
                textdocument.New();

                // Create a frame incl. graphic file
                Frame frame = FrameBuilder.BuildStandardGraphicFrame(
                    textdocument, "frame1", "graphic1", _imagefile);

                // Create some event listeners (using OpenOffice friendly syntax).
                EventListener script1 = new EventListener(textdocument,
                                                          "dom:mouseover", "javascript",
                                                          "vnd.sun.star.script:HelloWorld.helloworld.js?language=JavaScript&location=share");
                EventListener script2 = new EventListener(textdocument,
                                                          "dom:mouseout", "javascript",
                                                          "vnd.sun.star.script:HelloWorld.helloworld.js?language=JavaScript&location=share");
                EventListeners listeners = new EventListeners(textdocument, new EventListener[] { script1, script2 });

                // Create and add some area rectangles
                DrawAreaRectangle[] rects = new DrawAreaRectangle[2];
                rects[0]      = new DrawAreaRectangle(textdocument, "4cm", "4cm", "2cm", "2cm");
                rects[0].Href = @"http://www.eduworks.com";
                rects[1]      = new DrawAreaRectangle(textdocument, "1cm", "1cm", "2cm", "2cm", listeners);

                // Create and add an image map, referencing the area rectangles
                ImageMap map = new ImageMap(textdocument, rects);
                frame.Content.Add(map);

                // Add the frame to the text document
                textdocument.Content.Add(frame);

                // Save the document
                textdocument.SaveTo(_framefile3);
                textdocument.Dispose();
            }
            catch (Exception ex)
            {
                //Console.Write(ex.Message);
            }
        }
Example #14
0
        public void EventListenerTest()
        {
            try
            {
                TextDocument textdocument = new TextDocument();
                textdocument.New();

                // Create a frame (GraphicName == name property of frame)
                Frame frame = new Frame(textdocument, "frame1", "img1", _imagefile);

                // Create some event listeners (using OpenOffice friendly syntax).
                EventListener script1 = new EventListener(textdocument,
                                                          "dom:mouseover", "javascript",
                                                          "vnd.sun.star.script:HelloWorld.helloworld.js?language=JavaScript&location=share");
                EventListener script2 = new EventListener(textdocument,
                                                          "dom:mouseout", "javascript",
                                                          "vnd.sun.star.script:HelloWorld.helloworld.js?language=JavaScript&location=share");
                EventListeners listeners = new EventListeners(textdocument, new EventListener[] { script1, script2 });

                // Create and add some area rectangles; reuse event listeners
                DrawAreaRectangle[] rects = new DrawAreaRectangle[2];
                rects[0] = new DrawAreaRectangle(textdocument, "4cm", "4cm", "2cm", "2cm", listeners);
                //Reuse a clone of the EventListener
                rects[1] = new DrawAreaRectangle(textdocument, "1cm", "1cm", "2cm", "2cm", (EventListeners)listeners.Clone());

                // Create and add an image map, referencing the area rectangles
                ImageMap map = new ImageMap(textdocument, rects);
                frame.Content.Add(map);

                // Add the frame to the text document
                textdocument.Content.Add(frame);

                // Save the document
                textdocument.SaveTo(_framefile);
                textdocument.Dispose();
            }
            catch (Exception ex)
            {
                //Console.Write(ex.Message);
            }
        }
Example #15
0
 public bool _LoadTextureResource(TPF tex, int index, AccessLevel al, GameType type)
 {
     lock (LoadingLock)
     {
         if (IsLoaded)
         {
             Unload();
         }
         AccessLevel = AccessLevel.AccessLoading;
         Resource    = new TextureResource(tex, index);
         Resource._LoadTexture(al);
         // Prevent any new completion handlers from being added while executing them all
         // Any subsequent pending handlers will be executed after this is done
         WeakReference <IResourceEventListener>[] listeners;
         lock (HandlerLock)
         {
             IsLoaded  = true;
             listeners = EventListeners.ToArray();
         }
         foreach (var listener in listeners)
         {
             try
             {
                 IResourceEventListener l;
                 bool succ = listener.TryGetTarget(out l);
                 if (succ)
                 {
                     l.OnResourceLoaded(this);
                 }
             }
             catch (Exception e)
             {
                 System.Console.WriteLine("blah");
             }
         }
         AccessLevel = al;
     }
     return(true);
 }
Example #16
0
        public override bool Execute()
        {
            if (TestAssemblies.Length == 0)
            {
                throw new ArgumentException("At least one test assembly is required");
            }

            var        logString        = new StringBuilder();
            TextWriter msbuildLogWriter = new StringWriter(logString);
            var        output           = new PlainTextOutput(msbuildLogWriter);

            WriteHeaderInto(output);

            var config = NBehaveConfiguration.New
                         .DontIsolateInAppDomain()
                         .SetScenarioFiles(ScenarioFiles)
                         .SetDryRun(DryRun)
                         .SetAssemblies(TestAssemblies)
                         .SetEventListener(EventListeners.CreateEventListenerUsing(msbuildLogWriter, TextOutputFile, XmlOutputFile));
            var runner = RunnerFactory.CreateTextRunner(config);

            FeatureResults = runner.Run();

            if (DryRun)
            {
                return(true);
            }

            var message = logString.ToString();

            Log.LogMessage(message);

            if (FailBuild && FailBuildBasedOn(FeatureResults))
            {
                return(false);
            }

            return(true);
        }
Example #17
0
        public void Start(TflProcess process)
        {
            if (_started)
            {
                return;
            }

            _started = true;
            Name     = process.Name;
            foreach (var log in process.Log)
            {
                switch (log.Provider)
                {
                case "file":
                    log.Folder = log.Folder.Replace('/', '\\');
                    log.File   = log.File.Replace('/', '\\');
                    log.Folder = (log.Folder.Equals(Common.DefaultValue) ? "logs" : log.Folder).TrimEnd('\\') + "\\";
                    log.File   = (log.File.Equals(Common.DefaultValue) ? "tfl-" + process.Name + ".log" : log.File).TrimStart('\\');

                    var fileListener = new ObservableEventListener();
                    fileListener.EnableEvents(TflEventSource.Log, (EventLevel)Enum.Parse(typeof(EventLevel), log.Level));
                    SinkSubscriptions.Add(fileListener.LogToRollingFlatFile(log.Folder + log.File, 5000, "yyyy-MM-dd", RollFileExistsBehavior.Increment, RollInterval.Day, new LegacyLogFormatter(), 0, log.Async));
                    EventListeners.Add(fileListener);
                    break;

                case "mail":
                    if (log.Subject.Equals(Common.DefaultValue))
                    {
                        log.Subject = process.Name + " " + log.Level;
                    }
                    var mailListener = new ObservableEventListener();
                    mailListener.EnableEvents(TflEventSource.Log, EventLevel.Error);
                    SinkSubscriptions.Add(mailListener.LogToEmail(log));
                    EventListeners.Add(mailListener);
                    break;
                }
            }
        }
Example #18
0
        public static Configuration RegisterDisableAutoDirtyCheckListeners(this Configuration configuration)
        {
            EventListeners listeners = configuration.EventListeners;
            var            readOnlyEntityListener     = new ResetReadOnlyEntityListener();
            var            readOnlyEntityLoadListener = new SetReadOnlyEntityPostLoadListener();

            listeners.PersistEventListeners =
                new[] { readOnlyEntityListener }.Concat(listeners.PersistEventListeners).ToArray();
            listeners.MergeEventListeners =
                new[] { readOnlyEntityListener }.Concat(listeners.MergeEventListeners).ToArray();
            listeners.UpdateEventListeners =
                new[] { readOnlyEntityListener }.Concat(listeners.UpdateEventListeners).ToArray();
            listeners.SaveOrUpdateEventListeners =
                new[] { readOnlyEntityListener }.Concat(listeners.SaveOrUpdateEventListeners).ToArray();
            listeners.DeleteEventListeners =
                new[] { new ResetReadOnlyEntityDeleteListener() }.Concat(listeners.DeleteEventListeners).ToArray();
            listeners.PostLoadEventListeners =
                new[] { readOnlyEntityLoadListener }.Concat(listeners.PostLoadEventListeners).ToArray();
            listeners.LockEventListeners =
                listeners.LockEventListeners.Concat(new[] { readOnlyEntityLoadListener }).ToArray();

            return(configuration);
        }
Example #19
0
        protected override void ExecuteTask()
        {
            if (TestAssemblies.FileNames.Count == 0)
            {
                throw new BuildException("At least one test assembly is required");
            }

            var nantLogWriter = new LogWriter(this, Level.Info, CultureInfo.InvariantCulture);
            var output        = new PlainTextOutput(nantLogWriter);

            WriteHeaderInto(output);

            var listener = EventListeners.CreateEventListenerUsing(nantLogWriter,
                                                                   TextOutputFile,
                                                                   XmlOutputFile);

            var runner = NBehaveConfiguration
                         .New
                         .SetDryRun(DryRun)
                         .SetScenarioFiles(ScenarioFiles.FileNames.Cast <string>().ToList())
                         .SetAssemblies(TestAssemblies.FileNames.Cast <string>().ToList())
                         .SetEventListener(listener)
                         .Build();

            var results = runner.Run();

            if (DryRun)
            {
                return;
            }

            if (FailBuild)
            {
                FailBuildBasedOn(results);
            }
        }
Example #20
0
        /// <summary>
        /// Validate if all listeners are properly registered, if a listener
        /// is properly setup, copy its non-replay counterpart's settings over to the
        /// replay listener.
        /// </summary>
        protected virtual void ValidateReplayListeners()
        {
            if (EventListeners.Count != ReplayListeners.Count)
            {
                Logger.LogCritical("Amount of Event listeners is not equal to the amount of Replay listeners");

                throw new BusConfigurationException(
                          $"There are {EventListeners.Count} event listeners but {ReplayListeners.Count} replay listeners");
            }

            foreach (MicroserviceReplayListener listener in ReplayListeners)
            {
                MicroserviceListener normalListener = EventListeners.Find(e => listener.Queue == e.Queue);

                if (normalListener == null)
                {
                    Logger.LogCritical($"ReplayListener of {listener.Queue} has no non-replay counterpart.");
                    throw new BusConfigurationException($"ReplayListener of {listener.Queue} has no non-replay counterpart.");
                }

                Logger.LogDebug($"Applying configuration of listener for queue {listener.Queue} to replay listener");
                listener.ApplyListenerSettings(normalListener);
            }
        }
Example #21
0
        public void Scenario(TestExecution testExecution)
        {
            var featureBuilder = new StringBuilder();

            featureBuilder.AppendLine(string.Format(SCENARIO_FORMAT, testExecution.Summary, testExecution.IssueKey));

            string description = Regex.Replace(testExecution.IssueDescription, HTML_TAG_PATTERN, "");

            description = description.Substring(0, description.IndexOf(END_OF_TEST));
            featureBuilder.AppendLine(description);

            List <IEventListener> eventListeners = new List <IEventListener>();

            eventListeners.Add(EventListeners.ColorfulConsoleOutputEventListener());

            eventListeners.Add(new LoggingStoryReporter());
            if (Settings.UpdateExecutionStatus)
            {
                eventListeners.Add(new ZapiStoryReporter(ZapiClient, testExecution.Id, Settings.PassExecutionStatus, Settings.FailExecutionStatus, Settings.unexecutedStatus, Settings.workInProgress));
            }
            eventListeners.Add(new InconclusiveStoryReporter());

            featureBuilder.ToString().ExecuteText(typeof(GeneralSteps).Assembly, eventListeners.ToArray());
        }
Example #22
0
        /// <summary>
        /// Initialize the SessionFactory for the given or the
        /// default location.
        /// </summary>
        public virtual void AfterPropertiesSet()
        {
            // Create Configuration instance.
            Configuration config = NewConfiguration();

            if (this.dbProvider != null)
            {
                config.SetProperty(Environment.ConnectionString, dbProvider.ConnectionString);
                config.SetProperty(Environment.ConnectionProvider, typeof(DbProviderWrapper).AssemblyQualifiedName);
                configTimeDbProvider = this.dbProvider;
            }

            if (ExposeTransactionAwareSessionFactory)
            {
                // Set ICurrentSessionContext implementation,
                // providing the Spring-managed ISession s current Session.
                // Can be overridden by a custom value for the corresponding Hibernate property
                // config.SetProperty(Environment.CurrentSessionContextClass, typeof(SpringSessionContext).AssemblyQualifiedName);
                config.SetProperty(Environment.CurrentSessionContextClass, typeof(WcfOperationSessionContext).AssemblyQualifiedName);
            }

            if (this.entityInterceptor != null)
            {
                // Set given entity interceptor at SessionFactory level.
                config.SetInterceptor(this.entityInterceptor);
            }

            if (this.namingStrategy != null)
            {
                // Pass given naming strategy to Hibernate Configuration.
                config.SetNamingStrategy(this.namingStrategy);
            }



            if (this.filterDefinitions != null)
            {
                // Register specified NHibernate FilterDefinitions.
                for (int i = 0; i < this.filterDefinitions.Length; i++)
                {
                    config.AddFilterDefinition(this.filterDefinitions[i]);
                }
            }

            if (this.hibernateProperties != null)
            {
                if (config.GetProperty(Environment.ConnectionProvider) != null &&
                    hibernateProperties.Contains(Environment.ConnectionProvider))
                {
                    #region Logging
                    if (log.IsInfoEnabled)
                    {
                        log.Info("Overriding use of Spring's Hibernate Connection Provider with [" +
                                 hibernateProperties[Environment.ConnectionProvider] + "]");
                    }
                    #endregion
                    config.Properties.Remove(Environment.ConnectionProvider);
                }

                Dictionary <string, string> genericHibernateProperties = new Dictionary <string, string>();
                foreach (DictionaryEntry entry in hibernateProperties)
                {
                    genericHibernateProperties.Add((string)entry.Key, (string)entry.Value);
                }
                config.AddProperties(genericHibernateProperties);
            }
            if (this.mappingAssemblies != null)
            {
                foreach (string assemblyName in mappingAssemblies)
                {
                    config.AddAssembly(assemblyName);
                }
            }

            if (this.mappingResources != null)
            {
                IResourceLoader loader = this.ResourceLoader;
                if (loader == null)
                {
                    loader = this.applicationContext;
                }
                foreach (string resourceName in mappingResources)
                {
                    config.AddInputStream(loader.GetResource(resourceName).InputStream);
                }
            }

            if (configFilenames != null)
            {
                foreach (string configFilename in configFilenames)
                {
                    config.Configure(configFilename);
                }
            }

            if (this.eventListeners != null)
            {
                // Register specified NHibernate event listeners.
                foreach (DictionaryEntry entry in eventListeners)
                {
                    ListenerType listenerType;
                    try
                    {
                        listenerType = (ListenerType)Enum.Parse(typeof(ListenerType), (string)entry.Key);
                    }
                    catch
                    {
                        throw new ArgumentException(string.Format("Unable to parse string '{0}' as valid {1}", entry.Key, typeof(ListenerType)));
                    }

                    object listenerObject = entry.Value;
                    if (listenerObject is ICollection)
                    {
                        ICollection    listeners        = (ICollection)listenerObject;
                        EventListeners listenerRegistry = config.EventListeners;

                        // create the array and check that types are valid at the same time
                        ArrayList items         = new ArrayList(listeners);
                        object[]  listenerArray = (object[])items.ToArray(listenerRegistry.GetListenerClassFor(listenerType));
                        config.SetListeners(listenerType, listenerArray);
                    }
                    else
                    {
                        config.SetListener(listenerType, listenerObject);
                    }
                }
            }

            // Perform custom post-processing in subclasses.
            PostProcessConfiguration(config);

            // Build SessionFactory instance.
            log.Info("Building new Hibernate SessionFactory");
            this.configuration  = config;
            this.sessionFactory = NewSessionFactory(config);

            AfterSessionFactoryCreation();

            // set config time DB provider back to null
            configTimeDbProvider = null;
        }
Example #23
0
        public SessionFactoryImpl(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners)
        {
            Init();
            log.Info("building session factory");

            properties          = new Dictionary <string, string>(cfg.Properties);
            interceptor         = cfg.Interceptor;
            this.settings       = settings;
            sqlFunctionRegistry = new SQLFunctionRegistry(settings.Dialect, cfg.SqlFunctions);
            eventListeners      = listeners;
            filters             = new Dictionary <string, FilterDefinition>(cfg.FilterDefinitions);
            if (log.IsDebugEnabled)
            {
                log.Debug("Session factory constructed with filter configurations : " + CollectionPrinter.ToString(filters));
            }

            if (log.IsDebugEnabled)
            {
                log.Debug("instantiating session factory with properties: " + CollectionPrinter.ToString(properties));
            }

            try
            {
                if (settings.IsKeywordsImportEnabled)
                {
                    SchemaMetadataUpdater.Update(this);
                }
                if (settings.IsAutoQuoteEnabled)
                {
                    SchemaMetadataUpdater.QuoteTableAndColumns(cfg);
                }
            }
            catch (NotSupportedException)
            {
                // Ignore if the Dialect does not provide DataBaseSchema
            }

            #region Caches
            settings.CacheProvider.Start(properties);
            #endregion

            #region Generators
            identifierGenerators = new Dictionary <string, IIdentifierGenerator>();
            foreach (PersistentClass model in cfg.ClassMappings)
            {
                if (!model.IsInherited)
                {
                    IIdentifierGenerator generator =
                        model.Identifier.CreateIdentifierGenerator(settings.Dialect, settings.DefaultCatalogName,
                                                                   settings.DefaultSchemaName, (RootClass)model);

                    identifierGenerators[model.EntityName] = generator;
                }
            }
            #endregion

            #region Persisters

            Dictionary <string, ICacheConcurrencyStrategy> caches = new Dictionary <string, ICacheConcurrencyStrategy>();
            entityPersisters        = new Dictionary <string, IEntityPersister>();
            implementorToEntityName = new Dictionary <System.Type, string>();

            Dictionary <string, IClassMetadata> classMeta = new Dictionary <string, IClassMetadata>();

            foreach (PersistentClass model in cfg.ClassMappings)
            {
                model.PrepareTemporaryTables(mapping, settings.Dialect);
                string cacheRegion = model.RootClazz.CacheRegionName;
                ICacheConcurrencyStrategy cache;
                if (!caches.TryGetValue(cacheRegion, out cache))
                {
                    cache =
                        CacheFactory.CreateCache(model.CacheConcurrencyStrategy, cacheRegion, model.IsMutable, settings, properties);
                    if (cache != null)
                    {
                        caches.Add(cacheRegion, cache);
                        allCacheRegions.Add(cache.RegionName, cache.Cache);
                    }
                }
                IEntityPersister cp = PersisterFactory.CreateClassPersister(model, cache, this, mapping);
                entityPersisters[model.EntityName] = cp;
                classMeta[model.EntityName]        = cp.ClassMetadata;

                if (model.HasPocoRepresentation)
                {
                    implementorToEntityName[model.MappedClass] = model.EntityName;
                }
            }
            classMetadata = new UnmodifiableDictionary <string, IClassMetadata>(classMeta);

            Dictionary <string, ISet <string> > tmpEntityToCollectionRoleMap = new Dictionary <string, ISet <string> >();
            collectionPersisters = new Dictionary <string, ICollectionPersister>();
            foreach (Mapping.Collection model in cfg.CollectionMappings)
            {
                ICacheConcurrencyStrategy cache =
                    CacheFactory.CreateCache(model.CacheConcurrencyStrategy, model.CacheRegionName, model.Owner.IsMutable, settings,
                                             properties);
                if (cache != null)
                {
                    allCacheRegions[cache.RegionName] = cache.Cache;
                }
                ICollectionPersister persister = PersisterFactory.CreateCollectionPersister(cfg, model, cache, this);
                collectionPersisters[model.Role] = persister;
                IType indexType = persister.IndexType;
                if (indexType != null && indexType.IsAssociationType && !indexType.IsAnyType)
                {
                    string        entityName = ((IAssociationType)indexType).GetAssociatedEntityName(this);
                    ISet <string> roles;
                    if (!tmpEntityToCollectionRoleMap.TryGetValue(entityName, out roles))
                    {
                        roles = new HashSet <string>();
                        tmpEntityToCollectionRoleMap[entityName] = roles;
                    }
                    roles.Add(persister.Role);
                }
                IType elementType = persister.ElementType;
                if (elementType.IsAssociationType && !elementType.IsAnyType)
                {
                    string        entityName = ((IAssociationType)elementType).GetAssociatedEntityName(this);
                    ISet <string> roles;
                    if (!tmpEntityToCollectionRoleMap.TryGetValue(entityName, out roles))
                    {
                        roles = new HashSet <string>();
                        tmpEntityToCollectionRoleMap[entityName] = roles;
                    }
                    roles.Add(persister.Role);
                }
            }
            Dictionary <string, ICollectionMetadata> tmpcollectionMetadata = new Dictionary <string, ICollectionMetadata>(collectionPersisters.Count);
            foreach (KeyValuePair <string, ICollectionPersister> collectionPersister in collectionPersisters)
            {
                tmpcollectionMetadata.Add(collectionPersister.Key, collectionPersister.Value.CollectionMetadata);
            }
            collectionMetadata = new UnmodifiableDictionary <string, ICollectionMetadata>(tmpcollectionMetadata);
            collectionRolesByEntityParticipant = new UnmodifiableDictionary <string, ISet <string> >(tmpEntityToCollectionRoleMap);
            #endregion

            #region Named Queries
            namedQueries         = new Dictionary <string, NamedQueryDefinition>(cfg.NamedQueries);
            namedSqlQueries      = new Dictionary <string, NamedSQLQueryDefinition>(cfg.NamedSQLQueries);
            sqlResultSetMappings = new Dictionary <string, ResultSetMappingDefinition>(cfg.SqlResultSetMappings);
            #endregion

            imports = new Dictionary <string, string>(cfg.Imports);

            #region after *all* persisters and named queries are registered
            foreach (IEntityPersister persister in entityPersisters.Values)
            {
                persister.PostInstantiate();
            }
            foreach (ICollectionPersister persister in collectionPersisters.Values)
            {
                persister.PostInstantiate();
            }
            #endregion

            #region Serialization info

            name = settings.SessionFactoryName;
            try
            {
                uuid = (string)UuidGenerator.Generate(null, null);
            }
            catch (Exception)
            {
                throw new AssertionFailure("Could not generate UUID");
            }

            SessionFactoryObjectFactory.AddInstance(uuid, name, this, properties);

            #endregion

            log.Debug("Instantiated session factory");

            #region Schema management
            if (settings.IsAutoCreateSchema)
            {
                new SchemaExport(cfg).Create(false, true);
            }

            if (settings.IsAutoUpdateSchema)
            {
                new SchemaUpdate(cfg).Execute(false, true);
            }
            if (settings.IsAutoValidateSchema)
            {
                new SchemaValidator(cfg, settings).Validate();
            }
            if (settings.IsAutoDropSchema)
            {
                schemaExport = new SchemaExport(cfg);
            }
            #endregion

            #region Obtaining TransactionManager
            // not ported yet
            #endregion

            currentSessionContext = BuildCurrentSessionContext();

            if (settings.IsQueryCacheEnabled)
            {
                updateTimestampsCache = new UpdateTimestampsCache(settings, properties);
                queryCache            = settings.QueryCacheFactory.GetQueryCache(null, updateTimestampsCache, settings, properties);
                queryCaches           = new ThreadSafeDictionary <string, IQueryCache>(new Dictionary <string, IQueryCache>());
            }
            else
            {
                updateTimestampsCache = null;
                queryCache            = null;
                queryCaches           = null;
            }

            #region Checking for named queries
            if (settings.IsNamedQueryStartupCheckingEnabled)
            {
                IDictionary <string, HibernateException> errors = CheckNamedQueries();
                if (errors.Count > 0)
                {
                    StringBuilder failingQueries = new StringBuilder("Errors in named queries: ");
                    foreach (KeyValuePair <string, HibernateException> pair in errors)
                    {
                        failingQueries.Append('{').Append(pair.Key).Append('}');
                        log.Error("Error in named query: " + pair.Key, pair.Value);
                    }
                    throw new HibernateException(failingQueries.ToString());
                }
            }
            #endregion

            Statistics.IsStatisticsEnabled = settings.IsStatisticsEnabled;

            // EntityNotFoundDelegate
            IEntityNotFoundDelegate enfd = cfg.EntityNotFoundDelegate;
            if (enfd == null)
            {
                enfd = new DefaultEntityNotFoundDelegate();
            }
            entityNotFoundDelegate = enfd;
        }
Example #24
0
 public abstract void Register(EventListeners eventListeners);
Example #25
0
        /// <summary>
        /// Initialize the SessionFactory for the given or the
        /// default location.
        /// </summary>
        public virtual void AfterPropertiesSet()
        {
            // Create Configuration instance.
            Configuration config = NewConfiguration();

            if (this.dbProvider != null)
            {
                config.SetProperty(Environment.ConnectionString, dbProvider.ConnectionString);
                config.SetProperty(Environment.ConnectionProvider, typeof(DbProviderWrapper).AssemblyQualifiedName);
                configTimeDbProvider = this.dbProvider;
            }

            if (ExposeTransactionAwareSessionFactory)
            {
                // Set ICurrentSessionContext implementation,
                // providing the Spring-managed ISession s current Session.
                // Can be overridden by a custom value for the corresponding Hibernate property
                config.SetProperty(Environment.CurrentSessionContextClass, typeof(SpringSessionContext).AssemblyQualifiedName);
            }

            if (this.entityInterceptor != null)
            {
                // Set given entity interceptor at SessionFactory level.
                config.SetInterceptor(this.entityInterceptor);
            }

            if (this.namingStrategy != null)
            {
                // Pass given naming strategy to Hibernate Configuration.
                config.SetNamingStrategy(this.namingStrategy);
            }

#if NH_2_1
            if (this.typeDefinitions != null)
            {
                // Register specified Hibernate type definitions.
                IDictionary <string, string> typedProperties = new  Dictionary <string, string>();
                foreach (DictionaryEntry entry in hibernateProperties)
                {
                    typedProperties.Add((string)entry.Key, (string)entry.Value);
                }

                Dialect  dialect  = Dialect.GetDialect(typedProperties);
                Mappings mappings = config.CreateMappings(dialect);
                for (int i = 0; i < this.typeDefinitions.Length; i++)
                {
                    IObjectDefinition           typeDef       = this.typeDefinitions[i];
                    Dictionary <string, string> typedParamMap = new Dictionary <string, string>();
                    foreach (DictionaryEntry entry in typeDef.PropertyValues)
                    {
                        typedParamMap.Add((string)entry.Key, (string)entry.Value);
                    }
                    mappings.AddTypeDef(typeDef.ObjectTypeName, typeDef.ObjectTypeName, typedParamMap);
                }
            }
#endif

            if (this.filterDefinitions != null)
            {
                // Register specified NHibernate FilterDefinitions.
                for (int i = 0; i < this.filterDefinitions.Length; i++)
                {
                    config.AddFilterDefinition(this.filterDefinitions[i]);
                }
            }

#if NH_2_1
            // check whether proxy factory has been initialized
            if (config.GetProperty(Environment.ProxyFactoryFactoryClass) == null &&
                (hibernateProperties == null || !hibernateProperties.Contains(Environment.ProxyFactoryFactoryClass)))
            {
                // nothing set by user, lets use Spring.NET's proxy factory factory
                #region Logging
                if (log.IsInfoEnabled)
                {
                    log.Info("Setting proxy factory to Spring provided one as user did not specify any");
                }
                #endregion
                config.Properties.Add(
                    Environment.ProxyFactoryFactoryClass, typeof(Bytecode.ProxyFactoryFactory).AssemblyQualifiedName);
            }
#endif

            if (this.hibernateProperties != null)
            {
                if (config.GetProperty(Environment.ConnectionProvider) != null &&
                    hibernateProperties.Contains(Environment.ConnectionProvider))
                {
                    #region Logging
                    if (log.IsInfoEnabled)
                    {
                        log.Info("Overriding use of Spring's Hibernate Connection Provider with [" +
                                 hibernateProperties[Environment.ConnectionProvider] + "]");
                    }
                    #endregion
                    config.Properties.Remove(Environment.ConnectionProvider);
                }

                Dictionary <string, string> genericHibernateProperties = new Dictionary <string, string>();
                foreach (DictionaryEntry entry in hibernateProperties)
                {
                    genericHibernateProperties.Add((string)entry.Key, (string)entry.Value);
                }
                config.AddProperties(genericHibernateProperties);
            }
            if (this.mappingAssemblies != null)
            {
                foreach (string assemblyName in mappingAssemblies)
                {
                    config.AddAssembly(assemblyName);
                }
            }

            if (this.mappingResources != null)
            {
                IResourceLoader loader = this.ResourceLoader;
                if (loader == null)
                {
                    loader = this.applicationContext;
                }
                foreach (string resourceName in mappingResources)
                {
                    config.AddInputStream(loader.GetResource(resourceName).InputStream);
                }
            }

            if (configFilenames != null)
            {
                foreach (string configFilename in configFilenames)
                {
                    config.Configure(configFilename);
                }
            }

#if NH_2_1
            // Tell Hibernate to eagerly compile the mappings that we registered,
            // for availability of the mapping information in further processing.
            PostProcessMappings(config);
            config.BuildMappings();

            if (this.entityCacheStrategies != null)
            {
                // Register cache strategies for mapped entities.
                foreach (string className in this.entityCacheStrategies.Keys)
                {
                    String[] strategyAndRegion = StringUtils.CommaDelimitedListToStringArray(this.entityCacheStrategies.GetProperty(className));
                    if (strategyAndRegion.Length > 1)
                    {
                        config.SetCacheConcurrencyStrategy(className, strategyAndRegion[0], strategyAndRegion[1]);
                    }
                    else if (strategyAndRegion.Length > 0)
                    {
                        config.SetCacheConcurrencyStrategy(className, strategyAndRegion[0]);
                    }
                }
            }

            if (this.collectionCacheStrategies != null)
            {
                // Register cache strategies for mapped collections.
                foreach (string collRole in collectionCacheStrategies.Keys)
                {
                    string[] strategyAndRegion = StringUtils.CommaDelimitedListToStringArray(this.collectionCacheStrategies.GetProperty(collRole));
                    if (strategyAndRegion.Length > 1)
                    {
                        throw new Exception("Collection cache concurrency strategy region definition not supported yet");
                        //config.SetCollectionCacheConcurrencyStrategy(collRole, strategyAndRegion[0], strategyAndRegion[1]);
                    }
                    else if (strategyAndRegion.Length > 0)
                    {
                        config.SetCollectionCacheConcurrencyStrategy(collRole, strategyAndRegion[0]);
                    }
                }
            }
#endif

            if (this.eventListeners != null)
            {
                // Register specified NHibernate event listeners.
                foreach (DictionaryEntry entry in eventListeners)
                {
                    ListenerType listenerType;
                    try
                    {
                        listenerType = (ListenerType)Enum.Parse(typeof(ListenerType), (string)entry.Key);
                    }
                    catch
                    {
                        throw new ArgumentException(string.Format("Unable to parse string '{0}' as valid {1}", entry.Key, typeof(ListenerType)));
                    }

                    object listenerObject = entry.Value;
                    if (listenerObject is ICollection)
                    {
                        ICollection    listeners        = (ICollection)listenerObject;
                        EventListeners listenerRegistry = config.EventListeners;

                        // create the array and check that types are valid at the same time
                        ArrayList items         = new ArrayList(listeners);
                        object[]  listenerArray = (object[])items.ToArray(listenerRegistry.GetListenerClassFor(listenerType));
                        config.SetListeners(listenerType, listenerArray);
                    }
                    else
                    {
                        config.SetListener(listenerType, listenerObject);
                    }
                }
            }

            // Perform custom post-processing in subclasses.
            PostProcessConfiguration(config);

#if NH_2_1
            if (BytecodeProvider != null)
            {
                // set custom IBytecodeProvider
                Environment.BytecodeProvider = BytecodeProvider;
            }
            else
            {
                // use Spring's as default
                // Environment.BytecodeProvider = new Bytecode.BytecodeProvider(this.applicationContext);
            }
#endif

            // Build SessionFactory instance.
            log.Info("Building new Hibernate SessionFactory");
            this.configuration  = config;
            this.sessionFactory = NewSessionFactory(config);

            AfterSessionFactoryCreation();

            // set config time DB provider back to null
            configTimeDbProvider = null;
        }
        /// <summary>
        /// Register a listener for a specific event with topic expressions
        /// </summary>
        protected virtual void RegisterEventListener(TypeInfo type, MethodInfo method)
        {
            Logger.LogDebug($"Checking if method {method.Name} is a suitable event listener");

            if (!IsMethodSuitableEvent(method, false))
            {
                Logger.LogCritical($"Method {method.Name} does not have a proper event listener signature in type {type.Name}");
                throw new BusConfigurationException($"Method {method.Name} does not have a proper eventlistener signature in type {type.Name}");
            }

            Logger.LogDebug($"Evaluating parameter type {type.Name} of method {method.Name}");
            Type parameterType = method.GetParameters().FirstOrDefault()?.ParameterType;

            TopicAttribute[] topicAttributes = method.GetCustomAttributes <TopicAttribute>()
                                               .ToArray();

            string[] topicPatterns = topicAttributes
                                     .Select(e => e.TopicPattern)
                                     .ToArray();

            Regex[] topicRegularExpressions = topicAttributes
                                              .Select(e => e.TopicRegularExpression)
                                              .ToArray();

            Logger.LogDebug($"Found topic patterns {string.Join(", ", topicPatterns)} on method {method.Name} in type {type.Name}");

            Logger.LogTrace($"Adding MicroserviceListener with type {type.Name} and method {method.Name}");
            EventListeners.Add(new MicroserviceListener
            {
                TopicExpressions        = topicPatterns,
                TopicRegularExpressions = topicRegularExpressions,
                Callback = message =>
                {
                    Logger.LogDebug($"Attempting to instantiate type {type.Name}");
                    object instance = InstantiatePopulatedType(type);

                    Logger.LogTrace($"Retrieving string data from message with id {message.CorrelationId}");
                    string text = Encoding.Unicode.GetString(message.Body);

                    Logger.LogTrace("Checking if parameter type is equal to a string");
                    if (parameterType == StringType)
                    {
                        Logger.LogTrace($"Parameter type is a string, invoking method for message {message.CorrelationId} with body {text}");
                        method.Invoke(instance, new object[] { text });
                        return;
                    }

                    try
                    {
                        Logger.LogTrace($"Deserialized object from message with id {message.CorrelationId} and body {text}");
                        object jsonObject = JsonConvert.DeserializeObject(text, parameterType);

                        Logger.LogTrace($"Invoking method {method.Name} with message id {message.CorrelationId} and instance " +
                                        $"of supposed type {type.Name} and actual type {jsonObject?.GetType().Name} with data {text}");

                        method.Invoke(instance, new[] { jsonObject });
                    }
                    catch (JsonReaderException readerException)
                    {
                        Logger.LogCritical($"JsonReaderException occured while deserializing message with type {message.EventType} and topic {message.Topic}," +
                                           $" consider changing the parameter type of method {method.Name} of type {type.Name} to string. Data: {text}, exception: {readerException.Message}");
                        throw;
                    }
                }
            });
        }
 public override void Register(EventListeners eventListeners)
 {
     eventListeners.UpdateEventListeners = new[] { this };
 }
Example #28
0
        public void Dispose()
        {
            EventListeners eventListeners = _session.GetSessionImplementation().Listeners;

            switch (_type)
            {
            case ListenerType.Autoflush:
                eventListeners.AutoFlushEventListeners = _autoFlushEventListeners;
                break;

            case ListenerType.Merge:
                eventListeners.MergeEventListeners = _mergeEventListeners;
                break;

            case ListenerType.Create:
                eventListeners.PersistEventListeners = _persistEventListeners;
                break;

            case ListenerType.CreateOnFlush:
                eventListeners.PersistOnFlushEventListeners = _persistOnFlushEventListeners;
                break;

            case ListenerType.Delete:
                eventListeners.DeleteEventListeners = _deleteEventListeners;
                break;

            case ListenerType.DirtyCheck:
                eventListeners.DirtyCheckEventListeners = _dirtyCheckEventListeners;
                break;

            case ListenerType.Evict:
                eventListeners.EvictEventListeners = _evictEventListeners;
                break;

            case ListenerType.Flush:
                eventListeners.FlushEventListeners = _flushEventListeners;
                break;

            case ListenerType.FlushEntity:
                eventListeners.FlushEntityEventListeners = _flushEntityEventListeners;
                break;

            case ListenerType.Load:
                eventListeners.LoadEventListeners = _loadEventListeners;
                break;

            case ListenerType.LoadCollection:
                eventListeners.InitializeCollectionEventListeners = _initializeCollectionEventListeners;
                break;

            case ListenerType.Lock:
                eventListeners.LockEventListeners = _lockEventListeners;
                break;

            case ListenerType.Refresh:
                eventListeners.RefreshEventListeners = _refreshEventListeners;
                break;

            case ListenerType.Replicate:
                eventListeners.ReplicateEventListeners = _replicateEventListeners;
                break;

            case ListenerType.SaveUpdate:
                eventListeners.SaveOrUpdateEventListeners = _saveOrUpdateEventListeners;
                break;

            case ListenerType.Save:
                eventListeners.SaveEventListeners = _saveEventListeners;
                break;

            case ListenerType.PreUpdate:
                eventListeners.PreUpdateEventListeners = _preUpdateEventListeners;
                break;

            case ListenerType.Update:
                eventListeners.UpdateEventListeners = _updateEventListeners;
                break;

            case ListenerType.PreLoad:
                eventListeners.PreLoadEventListeners = _preLoadEventListeners;
                break;

            case ListenerType.PreDelete:
                eventListeners.PreDeleteEventListeners = _preDeleteEventListeners;
                break;

            case ListenerType.PreInsert:
                eventListeners.PreInsertEventListeners = _preInsertEventListeners;
                break;

            case ListenerType.PostLoad:
                eventListeners.PostLoadEventListeners = _postLoadEventListeners;
                break;

            case ListenerType.PostInsert:
                eventListeners.PostInsertEventListeners = _postInsertEventListeners;
                break;

            case ListenerType.PostUpdate:
                eventListeners.PostUpdateEventListeners = _postUpdateEventListeners;
                break;

            case ListenerType.PostDelete:
                eventListeners.PostDeleteEventListeners = _postDeleteEventListeners;
                break;

            case ListenerType.PostCommitUpdate:
                eventListeners.PostCommitUpdateEventListeners = _postCommitUpdateEventListeners;
                break;

            case ListenerType.PostCommitInsert:
                eventListeners.PostCommitInsertEventListeners = _postCommitInsertEventListeners;
                break;

            case ListenerType.PostCommitDelete:
                eventListeners.PostCommitDeleteEventListeners = _postCommitDeleteEventListeners;
                break;

            case ListenerType.PreCollectionRecreate:
                eventListeners.PreCollectionRecreateEventListeners = _preCollectionRecreateEventListeners;
                break;

            case ListenerType.PreCollectionRemove:
                eventListeners.PreCollectionRemoveEventListeners = _preCollectionRemoveEventListeners;
                break;

            case ListenerType.PreCollectionUpdate:
                eventListeners.PreCollectionUpdateEventListeners = _preCollectionUpdateEventListeners;
                break;

            case ListenerType.PostCollectionRecreate:
                eventListeners.PostCollectionRecreateEventListeners = _postCollectionRecreateEventListeners;
                break;

            case ListenerType.PostCollectionRemove:
                eventListeners.PostCollectionRemoveEventListeners = _postCollectionRemoveEventListeners;
                break;

            case ListenerType.PostCollectionUpdate:
                eventListeners.PostCollectionUpdateEventListeners = _postCollectionUpdateEventListeners;
                break;
            }
        }
Example #29
0
        public ListenerDisabler(ISession session, ListenerType type, object listener)
        {
            _session = session;
            _type    = type;
            EventListeners eventListeners = _session.GetSessionImplementation().Listeners;

            switch (type)
            {
            case ListenerType.Autoflush:
                _autoFlushEventListeners = eventListeners.AutoFlushEventListeners;
                eventListeners.AutoFlushEventListeners =
                    _autoFlushEventListeners.Where(eventListener => eventListeners != listener).ToArray();
                break;

            case ListenerType.Merge:
                _mergeEventListeners = eventListeners.MergeEventListeners;
                eventListeners.MergeEventListeners =
                    _mergeEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Create:
                _persistEventListeners = eventListeners.PersistEventListeners;
                eventListeners.PersistEventListeners =
                    _persistEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.CreateOnFlush:
                _persistOnFlushEventListeners = eventListeners.PersistOnFlushEventListeners;
                eventListeners.PersistOnFlushEventListeners =
                    _persistOnFlushEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Delete:
                _deleteEventListeners = eventListeners.DeleteEventListeners;
                eventListeners.DeleteEventListeners =
                    _deleteEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.DirtyCheck:
                _dirtyCheckEventListeners = eventListeners.DirtyCheckEventListeners;
                eventListeners.DirtyCheckEventListeners =
                    _dirtyCheckEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Evict:
                _evictEventListeners = eventListeners.EvictEventListeners;
                eventListeners.EvictEventListeners =
                    _evictEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Flush:
                _flushEventListeners = eventListeners.FlushEventListeners;
                eventListeners.FlushEventListeners =
                    _flushEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.FlushEntity:
                _flushEntityEventListeners = eventListeners.FlushEntityEventListeners;
                eventListeners.FlushEntityEventListeners =
                    _flushEntityEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Load:
                _loadEventListeners = eventListeners.LoadEventListeners;
                eventListeners.LoadEventListeners =
                    _loadEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.LoadCollection:
                _initializeCollectionEventListeners = eventListeners.InitializeCollectionEventListeners;
                eventListeners.InitializeCollectionEventListeners =
                    _initializeCollectionEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Lock:
                _lockEventListeners = eventListeners.LockEventListeners;
                eventListeners.LockEventListeners =
                    _lockEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Refresh:
                _refreshEventListeners = eventListeners.RefreshEventListeners;
                eventListeners.RefreshEventListeners =
                    _refreshEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Replicate:
                _replicateEventListeners = eventListeners.ReplicateEventListeners;
                eventListeners.ReplicateEventListeners =
                    _replicateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.SaveUpdate:
                _saveOrUpdateEventListeners = eventListeners.SaveOrUpdateEventListeners;
                eventListeners.SaveOrUpdateEventListeners =
                    _saveOrUpdateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Save:
                _saveEventListeners = eventListeners.SaveEventListeners;
                eventListeners.SaveEventListeners =
                    _saveEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PreUpdate:
                _preUpdateEventListeners = eventListeners.PreUpdateEventListeners;
                eventListeners.PreUpdateEventListeners =
                    _preUpdateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.Update:
                _updateEventListeners = eventListeners.UpdateEventListeners;
                eventListeners.UpdateEventListeners =
                    _updateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PreLoad:
                _preLoadEventListeners = eventListeners.PreLoadEventListeners;
                eventListeners.PreLoadEventListeners =
                    _preLoadEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PreDelete:
                _preDeleteEventListeners = eventListeners.PreDeleteEventListeners;
                eventListeners.PreDeleteEventListeners =
                    _preDeleteEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PreInsert:
                _preInsertEventListeners = eventListeners.PreInsertEventListeners;
                eventListeners.PreInsertEventListeners =
                    _preInsertEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostLoad:
                _postLoadEventListeners = eventListeners.PostLoadEventListeners;
                eventListeners.PostLoadEventListeners =
                    _postLoadEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostInsert:
                _postInsertEventListeners = eventListeners.PostInsertEventListeners;
                eventListeners.PostInsertEventListeners =
                    _postInsertEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostUpdate:
                _postUpdateEventListeners = eventListeners.PostUpdateEventListeners;
                eventListeners.PostUpdateEventListeners =
                    _postUpdateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostDelete:
                _postDeleteEventListeners = eventListeners.PostDeleteEventListeners;
                eventListeners.PostDeleteEventListeners =
                    _postDeleteEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostCommitUpdate:
                _postCommitUpdateEventListeners = eventListeners.PostCommitUpdateEventListeners;
                eventListeners.PostCommitUpdateEventListeners =
                    _postCommitUpdateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostCommitInsert:
                _postCommitInsertEventListeners = eventListeners.PostCommitInsertEventListeners;
                eventListeners.PostCommitInsertEventListeners =
                    _postCommitInsertEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostCommitDelete:
                _postCommitDeleteEventListeners = eventListeners.PostCommitDeleteEventListeners;
                eventListeners.PostCommitDeleteEventListeners =
                    _postCommitDeleteEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PreCollectionRecreate:
                _preCollectionRecreateEventListeners = eventListeners.PreCollectionRecreateEventListeners;
                eventListeners.PreCollectionRecreateEventListeners =
                    _preCollectionRecreateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PreCollectionRemove:
                _preCollectionRemoveEventListeners = eventListeners.PreCollectionRemoveEventListeners;
                eventListeners.PreCollectionRemoveEventListeners =
                    _preCollectionRemoveEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PreCollectionUpdate:
                _preCollectionUpdateEventListeners = eventListeners.PreCollectionUpdateEventListeners;
                eventListeners.PreCollectionUpdateEventListeners =
                    _preCollectionUpdateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostCollectionRecreate:
                _postCollectionRecreateEventListeners = eventListeners.PostCollectionRecreateEventListeners;
                eventListeners.PostCollectionRecreateEventListeners =
                    _postCollectionRecreateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostCollectionRemove:
                _postCollectionRemoveEventListeners = eventListeners.PostCollectionRemoveEventListeners;
                eventListeners.PostCollectionRemoveEventListeners =
                    _postCollectionRemoveEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;

            case ListenerType.PostCollectionUpdate:
                _postCollectionUpdateEventListeners = eventListeners.PostCollectionUpdateEventListeners;
                eventListeners.PostCollectionUpdateEventListeners =
                    _postCollectionUpdateEventListeners.Where(eventListener => eventListener != listener).ToArray();
                break;
            }
        }
Example #30
0
 public void Raise()
 {
     EventListeners.Invoke();
 }