예제 #1
0
        public override List <ExplorerItem> GetSchemaAndBuildAssembly(IConnectionInfo cxInfo, AssemblyName assemblyToBuild, ref string nameSpace, ref string typeName)
        {
            var settings          = GetCxSettings(cxInfo);
            var schemaBuilderType = settings.SchemaBuilderType;

            if (schemaBuilderType == null)
            {
                return(null);
            }
            var builder = schemaBuilderType.GetInstance <ISchemaBuilder>();

            if (builder == null)
            {
                return(null);
            }
            var paths = new List <string>()
            {
                Path.Combine(settings.WebRootPath, "bin")
            };

            using (var context = new AssemblyLoadingContext(paths))
            {
                return(builder.BuildAssembly(cxInfo, assemblyToBuild, ref nameSpace, ref typeName));
            }
        }
        /// <summary>
        /// This method reads default values for the following properties:
        /// * ContextDatabaseName
        /// * NamespacesToAdd
        /// * SearchResultType
        /// * AppConfigReaderType
        /// * SchemaBuilderType
        /// * DriverInitializerType
        /// </summary>
        /// <param name="cxInfo"></param>
        /// <param name="cxSettings"></param>
        public virtual void Read(IConnectionInfo cxInfo, ISitecoreConnectionSettings cxSettings)
        {
            if (cxInfo == null)
            {
                throw new ArgumentNullException("cxInfo");
            }
            if (cxSettings == null)
            {
                throw new ArgumentNullException("cxSettings");
            }
            var element = cxInfo.DriverData;

            if (element == null)
            {
                throw new NullReferenceException("DriverData on the IConnectionInfo object is null");
            }
            cxSettings.ClientUrl           = GetStringFromAttribute(element, KEY_CLIENT_URL);
            cxSettings.Username            = GetStringFromAttribute(element, KEY_USERNAME);
            cxSettings.Password            = GetStringFromAttribute(element, KEY_PASSWORD);
            cxSettings.WebRootPath         = GetStringFromAttribute(element, KEY_WEB_ROOT_PATH);
            cxSettings.ContextDatabaseName = GetStringFromAttribute(element, KEY_CONTEXT_DB, DefaultValuesForCxSettings.Current.ContextDatabaseName);
            cxSettings.NamespacesToAdd     = GetHashSetFromElement(element, KEY_NAMESPACES_TO_ADD, DefaultValuesForCxSettings.Current.NamespacesToAdd);

            var paths = GetHashSetFromElement(element, "paths");

            if (paths == null)
            {
                paths = new HashSet <string>();
            }
            var path = (string.IsNullOrEmpty(cxSettings.WebRootPath)) ? null : Path.Combine(cxSettings.WebRootPath, "bin");

            if (!paths.Contains(path))
            {
                paths.Add(path);
            }

            using (var context = new AssemblyLoadingContext(paths))
            {
                //
                cxSettings.SearchResultType = GetSelectedTypeFromElement(element, KEY_SEARCH_RESULT_TYPE, DefaultValuesForCxSettings.Current.SearchResultItemType);
                cxSettings.SearchResultType.GetValidTypesDelegate = DefaultValuesForCxSettings.Current.GetValidTypesForSearchResultItem;
                //
                cxSettings.AppConfigReaderType = GetSelectedTypeFromElement(element, KEY_APP_CONFIG_READER_TYPE, DefaultValuesForCxSettings.Current.AppConfigReaderType);
                cxSettings.AppConfigReaderType.GetValidTypesDelegate = DefaultValuesForCxSettings.Current.GetValidTypesForAppConfigReaderType;
                //
                cxSettings.SchemaBuilderType = GetSelectedTypeFromElement(element, KEY_SCHEMA_BUILDER_TYPE, DefaultValuesForCxSettings.Current.SchemaBuilderType);
                cxSettings.SchemaBuilderType.GetValidTypesDelegate = DefaultValuesForCxSettings.Current.GetValidTypesForSchemaBuilderType;
                //
                cxSettings.DriverInitializerType = GetSelectedTypeFromElement(element, KEY_DRIVER_INITIALIZER_TYPE, DefaultValuesForCxSettings.Current.DriverInitializerType);
                cxSettings.DriverInitializerType.GetValidTypesDelegate = DefaultValuesForCxSettings.Current.GetValidTypesForDriverInitializerType;
            }
        }
        public virtual IEnumerable <Type> GetValidTypesForSearchResultItem(Assembly assembly)
        {
            if (assembly == null)
            {
                return(null);
            }
            var paths = new List <string>();

            using (var context = new AssemblyLoadingContext(paths))
            {
                return(from t in assembly.GetTypes()
                       where
                       (t.IsPublic && !t.IsAbstract) && (t.GetConstructor(System.Type.EmptyTypes) != null)
                       orderby t.AssemblyQualifiedName
                       select t);
            }
        }
        public virtual IEnumerable <Type> GetValidTypesForAppConfigReaderType(Assembly assembly)
        {
            if (assembly == null)
            {
                return(null);
            }
            var paths = new List <string>();

            using (var context = new AssemblyLoadingContext(paths))
            {
                return(from t in assembly.GetTypes()
                       where
                       ((t.IsPublic && !t.IsAbstract) && (t.GetConstructor(System.Type.EmptyTypes) != null)) &&
                       typeof(IAppConfigReader).IsAssignableFrom(t)
                       orderby t.AssemblyQualifiedName
                       select t);
            }
        }