zoukankan      html  css  js  c++  java
  • mojoPortalprovider模式学习之1.1之IndexBuilderManager

    第四步 Provider Manager 类

    这个类根据 第三步中的 Provider Configuration类中的配置信息,实例化Provider.

      public sealed class IndexBuilderManager
        
    {
            
    //private static bool isInitialized = false;
            
    //private static Exception initializationException;
            private static object initializationLock = new object();
            
    private static readonly ILog log
                
    = LogManager.GetLogger(typeof(IndexBuilderManager));


            
    //在构造函数中调用初始化方法
            static IndexBuilderManager()
            
    {
                Initialize();
            }


            
    //根据配置文件中的信息,实例化provider,并放到ProviderCollection中
            private static void Initialize()
            
    {
                providerCollection 
    = new IndexBuilderProviderCollection();

                
    try
                
    {
                    IndexBuilderConfiguration config 
                        
    = IndexBuilderConfiguration.GetConfig();

                    
    if (config != null)
                    
    {

                        
    if (
                            (config.Providers 
    == null)
                            
    || (config.Providers.Count < 1)
                            )
                        
    {
                            
    throw new ProviderException("No IndexBuilderProvider found.");
                        }


                        
    //实例化Provider的具体方法
                        ProvidersHelper.InstantiateProviders(
                            config.Providers,
                            providerCollection,
                            
    typeof(IndexBuilderProvider));

                    }

                    
    else
                    
    {
                        
    // config was null, not a good thing
                        log.Error("IndexBuilderConfiguration could not be loaded so empty provider collection was returned");

                    }

                }

                
    catch (NullReferenceException ex)
                
    {
                    log.Error(ex);
                }

                
    catch (TypeInitializationException ex)
                
    {
                    log.Error(ex);
                }

                
    catch (ProviderException ex)
                
    {
                    log.Error(ex);
                }

                
                providerCollection.SetReadOnly();
                    
                
    //}
                
    //catch (Exception ex)
                
    //{
                
    //    log.Error(ex);
                
    //    initializationException = ex;
                
    //    isInitialized = false;
                
    //    //throw ex;
                
    //    return;
                
    //}

                
    //isInitialized = true; 
            }



            
    private static IndexBuilderProviderCollection providerCollection;

            
    public static IndexBuilderProviderCollection Providers
            
    {
                
    get
                
    {
                    
    //try
                    
    //{
                        if (providerCollection == null) Initialize();
                        
    return providerCollection;
                    
    //}
                    
    //catch (NullReferenceException ex)
                    
    //{
                    
    //    log.Error(ex);  
                    
    //}
                    
    //catch (TypeInitializationException ex)
                    
    //{
                    
    //    log.Error(ex);
                    
    //}
                    
    //catch (ProviderException ex)
                    
    //{
                    
    //    log.Error(ex);  
                    
    //}

                    
    return null;
                }

            }

        }
  • 相关阅读:
    循环队列
    UVa10000_Longest Paths(最短路SPFA)
    最新jhost免费jsp云空间会员邀请码
    Vertica: 基于DBMS架构的列存储数据仓库
    java中接口的定义与实现
    【C++知识汇总】运营商 &amp; 运算符重载
    SVN与eclipse整合和利用、SVN与Apache综合
    Java单链逆转
    hdu1115(重力算法的多边形中心)
    高效C++规划
  • 原文地址:https://www.cnblogs.com/wenjie/p/1167562.html
Copyright © 2011-2022 走看看