Example #1
0
        private void buildMetaExport(AttributeInfo info, ComponentInfoBuilder builder)
        {
            var isMultiple = info.GetArgument("IsMultiple") == "true";
            var name       = parseObject(info.GetArgument("Name", 0), builder, info.Element) as string;
            var value      = parseObject(info.GetArgument("Value", 1), builder, info.Element);

            builder.AddMeta(name, value, isMultiple);
        }
Example #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="StringExport2"/> class.
        /// </summary>
        public StringExport2()
        {
            FullName = "StringExport2";

            var builder = new ComponentInfoBuilder(GetTypeInfo());

            builder.AddPropertyExport(TypeDescriptor.Create <string>(), "Export");
            ComponentInfo = builder.BuildWithImplicitCtor();
        }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SelfStringExport" /> class.
        /// </summary>
        public SelfStringExport()
        {
            FullName = "SelfStringExport";
            var builder = new ComponentInfoBuilder(GetTypeInfo());

            builder.AddSelfExport(false, typeof(string).FullName);
            builder.SetImportingCtor(TypeDescriptor.Create <string>());
            ComponentInfo = builder.BuildWithImplicitCtor();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ICollectionStringImport"/> class.
        /// </summary>
        public ICollectionStringImport()
        {
            FullName = "ICollectionStringImport";

            var builder = new ComponentInfoBuilder(GetTypeInfo());

            builder.AddManyImport(TypeDescriptor.Create <List <string> >(), TypeDescriptor.Create <string>(), "Import");
            ComponentInfo = builder.BuildWithImplicitCtor();
        }
Example #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LazyStringMetaImport"/> class.
        /// </summary>
        public LazyStringMetaImport()
        {
            FullName = "LazyStringMetaImport";

            var builder = new ComponentInfoBuilder(GetTypeInfo());

            builder.AddPropertyImport(TypeDescriptor.Create("System.Lazy<System.String,MetaInterface>"), "Import");
            builder.SetImportingCtor();

            ComponentInfo = builder.BuildWithImplicitCtor();
        }
Example #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SimpleStringExport"/> class.
        /// </summary>
        public SimpleStringExport()
        {
            FullName = "SimpleStringExport";

            var builder = new ComponentInfoBuilder(GetTypeInfo());

            builder.AddPropertyExport(TypeDescriptor.Create <string>(), "Export");
            builder.AddExplicitCompositionPoint(Naming.Method(TypeInfo, Naming.CtorName, false));

            ComponentInfo = builder.BuildWithImplicitCtor();
        }
Example #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ManyStringImport"/> class.
        /// </summary>
        public ManyStringImport()
        {
            FullName = "ManyStringImport";

            var builder    = new ComponentInfoBuilder(GetTypeInfo());
            var stringInfo = TypeDescriptor.Create <string>();
            var manyInfo   = TypeDescriptor.Create <string[]>();

            builder.AddManyImport(manyInfo, stringInfo, "Import");
            ComponentInfo = builder.BuildWithImplicitCtor();
        }
Example #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LazyStringImport"/> class.
        /// </summary>
        public LazyStringImport()
        {
            FullName = "LazyStringImport";

            var builder = new ComponentInfoBuilder(GetTypeInfo());

            builder.AddPropertyImport(TypeDescriptor.Create <Lazy <string> >(), "Import");
            builder.SetImportingCtor();

            ComponentInfo = builder.BuildWithImplicitCtor();
        }
Example #9
0
        /// <summary>
        /// Get or create <see cref="ComponentInfoBuilder"/> for class owning currently visited element
        /// </summary>
        /// <returns><see cref="ComponentInfoBuilder"/> for currently visited class</returns>
        private ComponentInfoBuilder getOrCreateCurrentBuilder(CodeElement element)
        {
            var currentClass = element.DeclaringClass();

            ComponentInfoBuilder builder;

            if (!_builtComponents.TryGetValue(currentClass, out builder))
            {
                _builtComponents[currentClass] = builder = new ComponentInfoBuilder(_assembly.InfoBuilder.CreateDescriptor(currentClass));
            }

            return(builder);
        }
Example #10
0
        private string parseContract(string rawContract, ComponentInfoBuilder builder, CodeAttribute2 attribute)
        {
            if (rawContract == null)
            {
                return(null);
            }

            var parsed = parseObject(rawContract, builder, attribute);
            var type   = parsed as InstanceInfo;

            if (type != null)
            {
                return(type.TypeName);
            }

            return(parsed as string);
        }
Example #11
0
        private void exploreMetaData(AttributeInfo exportAttribute, ComponentInfoBuilder builder)
        {
            var target = exportAttribute.Element.Parent as CodeElement;

            if (target == null)
            {
                return;
            }

            //check target attributes whether metadata is exported
            var attributes = target.GetAttributes();

            foreach (CodeAttribute2 attribute in attributes)
            {
                if (attribute.FullName == Naming.ExportMetadataAttribute)
                {
                    var info = new AttributeInfo(attribute);
                    buildMetaExport(info, builder);
                }
            }
        }
Example #12
0
        private async Task MainInternalAsync(string[] args)
        {
            _cmdOptions = CommandLineOptions.Parse(args, _console);
            var appdir         = _cmdOptions.MainAppDirectory.Value();
            var staticServe    = _cmdOptions.StaticServe.Value();
            var componentBuild = _cmdOptions.BuildComponent.Value();
            var cleanTemp      = _cmdOptions.CleanTemp.HasValue();

            if (cleanTemp)
            {
                PathUtility.CleanTempDirectory();
            }

            if (!string.IsNullOrEmpty(appdir))
            {
                appdir = NormalizePath(appdir);
                if (Directory.Exists(appdir))
                {
                    _console.Out.WriteLine("Main application directory is: " + appdir);

                    appdir = PathUtility.NormalizeRelavitePath(Directory.GetCurrentDirectory(), appdir);
                    HostingHelper.MainAppDirectory = Path.GetFullPath(appdir);
                }
            }

            if (!string.IsNullOrEmpty(staticServe))
            {
                staticServe = NormalizePath(staticServe);
                if (Directory.Exists(staticServe))
                {
                    _console.Out.WriteLine("Static files directory is: " + staticServe);
                    HostingHelper.StaticServe = staticServe;
                }
            }

            if (!string.IsNullOrEmpty(componentBuild))
            {
                componentBuild = NormalizePath(componentBuild);
                if (Directory.Exists(componentBuild))
                {
                    ComponentInfoBuilder.Build(_console, componentBuild);
                }
                else
                {
                    _console.Out.WriteLine("=====Exiting: Build directory does not exist: " + componentBuild);
                }

                return;
            }

            _cmdOptions.App.ShowHelp();

            _urls = new List <string>()
            {
                $"http://*:{HostingHelper.GetHostingPort()}"
            };

            await Task.Run(() =>
            {
                var contentRoot = Directory.GetCurrentDirectory();

#if RELEASE
                contentRoot = PathUtility.GetRootPath(true);
#endif
                var hostBuilder = new WebHostBuilder()
                                  .UseKestrel(options => options.AddServerHeader = false)
                                  .UseContentRoot(contentRoot)
                                  .UseUrls(_urls.ToArray())
                                  .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    var env = hostingContext.HostingEnvironment;
                    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{env.EnvironmentName}.json",
                                 optional: true, reloadOnChange: true);

                    config.AddEnvironmentVariables();
                })
                                  .ConfigureLogging((webHostBuilderContext, logging) =>
                {
                    IConfiguration configuration  = webHostBuilderContext.Configuration;
                    ILoggingBuilder loggerBuilder = logging;

                    loggerBuilder.AddConfiguration(configuration.GetSection("Logging"));
                    loggerBuilder.AddConsole();
                    loggerBuilder.AddDebug();
                })
                                  .UseStartup <Startup>();
#if RELEASE
                hostBuilder.UseWebRoot(PathUtility.GetRootPath());
#endif

                bool serveStatic = !string.IsNullOrEmpty(HostingHelper.StaticServe);
                if (serveStatic)
                {
                    hostBuilder.UseWebRoot(HostingHelper.StaticServe);
                }

                var host = hostBuilder.Build();

                if (!serveStatic)
                {
                    var applicationLifetime = host.Services.GetService <IApplicationLifetime>();
                    applicationLifetime.ApplicationStarted.Register(ApplicationStarted);
                }

                host.Run();
            });
        }
Example #13
0
 private object parseObject(string data, ComponentInfoBuilder builder, CodeAttribute2 attribute)
 {
     return(_assembly.ParseValue(data, builder.ComponentType, attribute as CodeElement));
 }
 public void RegisterComponentInfoBuilder(ComponentInfoBuilder componentInfoBuilder)
 {
     this.builders.Add(componentInfoBuilder);
 }