Ejemplo n.º 1
0
        public static DataModel CreateFromArgs(string queryModelArg, NameValueCollection parameters)
        {
            log.DebugFormat("loading model extension for {0}", queryModelArg);

            IOpenSearchClientDataModelExtension modelExtension = DataModel.FindPluginByName(queryModelArg);

            if (modelExtension == null)
            {
                throw new NotSupportedException(string.Format("No data model with name \"{0}\" found", queryModelArg));
            }

            modelExtension.InitModelExtension(parameters);

            return(new DataModel(modelExtension));
        }
Ejemplo n.º 2
0
        public static IOpenSearchClientDataModelExtension FindPluginByName(string name)
        {
            List <Assembly> allAssemblies = new List <Assembly>();
            string          dirpath       = Path.GetDirectoryName((new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath);

            log.Debug(string.Format("Scan {0} for OpenSearch Client plugins", dirpath));
            foreach (string dll in Directory.GetFiles(dirpath, "*.dll"))
            {
                allAssemblies.Add(Assembly.LoadFile(dll));
            }

            foreach (var assembly in allAssemblies)
            {
                foreach (var cl in assembly.GetTypes())
                {
                    var dnAttributes = cl.GetCustomAttributes(typeof(OpenSearchClientExtensionAttribute), true);
                    foreach (OpenSearchClientExtensionAttribute dnAttribute in dnAttributes)
                    {
                        log.Debug(String.Format("Found {0} [{1}] in class {2}", dnAttribute.NodeName, dnAttribute.Description, cl.Name));
                        try
                        {
                            IOpenSearchClientDataModelExtension modelExtension = (IOpenSearchClientDataModelExtension)Activator.CreateInstance(cl);
                            if (modelExtension.Name == name)
                            {
                                return(modelExtension);
                            }
                        }
                        catch (Exception e)
                        {
                            log.Warn(string.Format("Impossible to load {0} : {1}. Skipping extension", cl.FullName, e.Message));
                        }
                    }
                }
            }

            return(null);
        }
Ejemplo n.º 3
0
 private DataModel(IOpenSearchClientDataModelExtension modelExtension)
 {
     this.modelExtension = modelExtension;
 }
Ejemplo n.º 4
0
 private DataModel(IOpenSearchClientDataModelExtension modelExtension)
 {
     this.modelExtension = modelExtension;
 }