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)); }
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); }
private DataModel(IOpenSearchClientDataModelExtension modelExtension) { this.modelExtension = modelExtension; }
private DataModel(IOpenSearchClientDataModelExtension modelExtension) { this.modelExtension = modelExtension; }