protected void Page_Load(object sender, EventArgs e)
        {
            Dictionary <string, string> param = PluginBuilderFactory.getProperties(Request);
            PluginBuilder pb = PluginBuilderFactory.newPluginBuilder(Request);

            // Adding - if necessary - CORS headers
            com.wiris.system.service.HttpResponse res = new com.wiris.system.service.HttpResponse(this.Response);
            String origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);

            Response.ContentType = "application/x-javascript";

            string r = pb.getConfiguration().getJavaScriptConfiguration();

            outVar(Response, "createimagePath", "createimage");
            outVar(Response, "showimagePath", "showimage");
            outVar(Response, "editorPath", "editor");
            outVar(Response, "CASPath", "cas");
            outVar(Response, "createimagePath", "createimage");
            outVar(Response, "createcasimagePath", "createcasimage");
            outVar(Response, "getmathmlPath", "getmathml");
            outVar(Response, "servicePath", "service");
            this.Response.Write(r);
        }
        private void AddRoslynMetadata(string baseTempDirectory, PluginBuilder builder, IPackage package)
        {
            string sourcesDir = CreateSubDirectory(baseTempDirectory, "src");

            this.logger.LogDebug(UIResources.APG_CreatingRoslynSources, sourcesDir);

            SourceGenerator.CreateSourceFiles(typeof(AnalyzerPluginGenerator).Assembly, RoslynResourcesRoot, sourcesDir, new Dictionary <string, string>());

            string[] sourceFiles = Directory.GetFiles(sourcesDir, "*.java", SearchOption.AllDirectories);
            Debug.Assert(sourceFiles.Any(), "Failed to correctly unpack the Roslyn analyzer specific source files");

            foreach (string sourceFile in sourceFiles)
            {
                builder.AddSourceFile(sourceFile);
            }

            builder.SetSourceCodeTokenReplacement(PackageId_Token, package.Id);
            builder.SetSourceCodeTokenReplacement(PackageVersion_Token, package.Version.ToString());
            builder.SetSourceCodeTokenReplacement(AnalyzerId_Token, package.Id);
            builder.SetSourceCodeTokenReplacement(RuleNamespace_Token, package.Id);

            foreach (string extension in Extensions)
            {
                builder.AddExtension(extension);
            }
        }
Example #3
0
        static int Main(string[] args)
        {
            ILogger logger = new ConsoleLogger();

            Utilities.LogAssemblyVersion(typeof(Program).Assembly, UIResources.AssemblyDescription, logger);

            if (args.Length != 2 && args.Length != 3)
            {
                logger.LogError(UIResources.Cmd_Error_IncorrectArguments);
                return ERROR_CODE;
            }

            string pluginDefnFilePath = args[0];
            string rulesFilePath = args[1];
                        
            PluginManifest defn = PluginManifest.Load(pluginDefnFilePath);
            string fullNewJarFilePath = Path.Combine(Directory.GetCurrentDirectory(),
                Path.GetFileNameWithoutExtension(pluginDefnFilePath) + ".jar");

            string sqaleFilePath = null;
            if (args.Length == 3)
            {
                sqaleFilePath = args[2];
            }

            //TODO: support multiple languages
            string language = "cs";

            PluginBuilder builder = new PluginBuilder(logger);
            RulesPluginBuilder.ConfigureBuilder(builder, defn, language, rulesFilePath, sqaleFilePath);
            builder.SetJarFilePath(fullNewJarFilePath);
            builder.Build();

            return SUCCESS_CODE;
        }
Example #4
0
        public void Startup(PluginBuilder pluginBuilder)
        {
            pluginBuilder.ConfigureServices(services =>
            {
                services.AddTransient <CarouselSlideService>();

                // register migrations
                services.AddTransient <IAppMigration, P810000_CreateInitialDocumentTables>();
            });

            pluginBuilder.AddDbContext <CarouselDbContext>();

            pluginBuilder.RegisterWidget <CarouselWidgetService, CarouselWidget>(widget =>
            {
                widget.WidgetType = "carousel";
                widget.WidgetName = "Carousel";
                widget.Category   = "Text";
            })

            //these addForms below must have a parameter named "model"
            .AddForm <CarouselSlides>(f =>
            {
                f.Title     = "Manage Carousel Slides";
                f.AjaxFlags = AjaxFlags.POST | AjaxFlags.DELETE;
            })
            .AddView(v => {
                v.Id        = "carousel";
                v.Title     = "Carousel";
                v.Path      = "~/UI/Views/Widgets/Carousel.cshtml";
                v.IconClass = "fa fa-file-text-o";
            });;
        }
Example #5
0
        /// <summary>
        /// Converts file paths to absolute paths.
        /// </summary>
        private static bool ResolveFilePath(PluginBuilder builder, string builderFilePath)
        {
            string builderDirectory = Path.GetDirectoryName(builderFilePath);

            bool success = true;

            foreach (var file in builder.files)
            {
                if (File.Exists(file.source))
                {
                    if (!Path.IsPathRooted(file.source))
                    {
                        file.source = Path.GetFullPath(file.source);
                    }
                }
                else
                {
                    string fromBuildDir = PathExtensions.Combine(builderDirectory, file.source);
                    if (File.Exists(fromBuildDir))
                    {
                        file.source = Path.GetFullPath(fromBuildDir);
                    }
                    else
                    {
                        success = false;
                        Logger.WriteLine("Could not locate the file: " + Path.GetFileName(file.source), logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                        Logger.WriteLine("\tNot at " + Path.GetFullPath(file.source), logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                        Logger.WriteLine("\tNot at " + Path.GetFullPath(fromBuildDir), logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                    }
                }
            }

            return(success);
        }
        private void BuildAndCheckCompileFails(PluginBuilder builder, TestLogger logger)
        {
            AssertException.Expect <JavaCompilerException>(() => builder.Build());

            Assert.IsNotNull(builder.JarFilePath, "Expecting the jar file path to be set");
            TestUtils.AssertFileDoesNotExist(builder.JarFilePath);
            logger.AssertErrorsLogged();
        }
        public void PluginBuilder_Simple()
        {
            // Arrange
            TestLogger    logger  = new TestLogger();
            PluginBuilder builder = CreateValidBuilder(logger);

            // Act and assert
            BuildAndCheckSucceeds(builder, logger);
        }
Example #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PluginBuilder  pb       = PluginBuilderFactory.newPluginBuilder(Request, Response);
            ParamsProvider provider = pb.getCustomParamsProvider();
            String         digest   = provider.getParameter("formula", null);
            String         mml      = provider.getParameter("mml", null);

            if (digest == null && mml == null)
            {
                throw new Exception("Missing parameters 'formula' or 'mml'.");
            }
            // Backwards compatibility
            // showimage.php?formula.png --> showimage.php?formula
            // because formula is md5 string, remove all extensions.
            if (digest != null && digest.LastIndexOf(".") >= 0)
            {
                digest = digest.Substring(0, digest.LastIndexOf("."));
            }
            Dictionary <string, string> param = PluginBuilderFactory.getProperties(Request);
            // Adding - if necessary - CORS headers
            HttpResponse res    = new HttpResponse(this.Response);
            String       origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);
            if (pb.getConfiguration().getProperty("wirispluginperformance", "xml").IndexOf("true") != -1)
            {
                String useragent = provider.getParameter("useragent", "");
                if (useragent.IndexOf("IE") != -1)
                {
                    pb.getConfiguration().setProperty("wirisimageformat", "png");
                }
                else
                {
                    pb.getConfiguration().setProperty("wirisimageformat", "svg");
                }

                Response.ContentType = "application/json";
                Response.AddHeader("Cache-Control", "public, max-age=3600");
                if (digest == null)
                {
                    pb.newRender().showImage(digest, mml, provider);
                    digest = pb.newRender().computeDigest(mml, provider.getParameters());
                }
                string r = pb.newRender().showImageJson(digest, "en");
                if (r.IndexOf("warning") != -1)
                {
                    Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate");
                }
                Response.Write(r);
            }
            else
            {
                byte [] bs = pb.newRender().showImage(digest, mml, provider);
                Response.ContentType = pb.getImageFormatController().getContentType();
                Response.OutputStream.Write(bs, 0, bs.Length);
            }
        }
Example #9
0
        public void Startup(PluginBuilder pluginBuilder)
        {
            pluginBuilder.ConfigureServices(services => {
                // register migrations
                services.AddTransient <IAppMigration, P710000_CreateInitialVideoTables>();
                services.AddTransient <IAppMigration, P710005_CreateVideoBackgroundTable>();

                // internal services
                services.AddTransient <VideoStreamLinkService>();

                // framework services
                services.AddTransient <IMenuItemProvider, ClientMenu>();
            });

            pluginBuilder.AddDbContext <VideoDbContext>();

            //-- Video Player Widget --
            pluginBuilder.RegisterWidget <VideoWidgetService, VideoWidgetViewModel>(widget =>
            {
                widget.Category   = "Media";
                widget.WidgetType = "video";
                widget.WidgetName = "Video Player";
            })
            .AddForm <VideoWidgetConfigForm>(f =>
            {
                f.Title     = "General Settings";
                f.AjaxFlags = AjaxFlags.ALL;
            })
            .AddForm <VideoWidgetSummaryForm>(f =>
            {
                f.Title = "Serialization";
            })
            .AddView(view =>
            {
                view.Id        = "video-player";
                view.Title     = "Video";
                view.Path      = "~/UI/Views/Widgets/VideoPlayer.cshtml";
                view.IconClass = IconType.VideoCamera.ToString();
            });

            //-- Video Background Widget --
            pluginBuilder.RegisterWidget <VideoBackgroundWidgetService, VideoBackgroundWidgetViewModel>(widget => {
                widget.Category   = "Media";
                widget.WidgetType = "video-background";
                widget.WidgetName = "Video Background";
            })
            .AddForm <VideoBackgroundWidgetConfigForm>(f => {
                f.Title = "Default Settings";
            })
            .AddView(v => {
                v.Id        = "video-background";
                v.Title     = "Video Background";
                v.Path      = "~/UI/Views/Widgets/VideoBackground.cshtml";
                v.IconClass = IconType.VideoCamera.ToString();
            });
        }
        private void BuildAndCheckSucceeds(PluginBuilder builder, TestLogger logger)
        {
            builder.Build();

            Assert.IsNotNull(builder.JarFilePath, "Expecting the jar file path to be set");
            TestUtils.AssertFileExists(builder.JarFilePath);
            this.TestContext.AddResultFile(builder.JarFilePath);

            logger.AssertErrorsLogged(0);
        }
Example #11
0
        public void Startup(PluginBuilder pluginBuilder)
        {
            pluginBuilder.ConfigureServices(services =>
            {
                services.AddTransient <AutoNavViewService>();
                services.AddTransient <NavMenuViewService>();
                services.AddTransient <IWidgetNamedModelProvider, NavMenuNamedModelProvider>();
            });

            pluginBuilder.AddDbContext <NavMenuDbContext>(db => {
                NavMenuDbActions.CreateSchemas(db);
                NavMenuDbActions.CreateTables(db);
                NavMenuDbActions.InsertSeedData(db);
            });

            pluginBuilder.RegisterWidget <NavMenuWidgetService, NavMenuWidget>(widget =>
            {
                widget.Category   = "Menus";
                widget.WidgetType = "navmenu";
                widget.WidgetName = "Navigation Menu";
            })
            .AddForm <NavMenuWidgetConfigForm>(f =>
            {
                f.Title     = "Settings";
                f.AjaxFlags = AjaxFlags.ALL;
            })
            .AddView(view =>
            {
                view.Id        = "h-nav-menu";
                view.Title     = "Horizontal Navigation";
                view.Path      = "~/UI/Views/Widgets/HorizontalNavMenuWidget.cshtml";
                view.IconClass = "fa fa-bars";
            })
            .AddView(view =>
            {
                view.Id        = "v-nav-menu";
                view.Title     = "Vertical Navigation";
                view.Path      = "~/UI/Views/Widgets/VerticalNavMenuWidget.cshtml";
                view.IconClass = "fa fa-bars";
            });


            // Auto Child Navigation Widget
            pluginBuilder.RegisterWidget <StaticWidgetService, StaticWidget>(widget => {
                widget.Category   = "Menus";
                widget.WidgetType = "navauto";
                widget.WidgetName = "Auto Child Navigation";
            })
            .AddView(view => {
                view.Id        = "v-nav-auto";
                view.Title     = "Child Page Navigation";
                view.Path      = "~/UI/Views/Widgets/AutoNavWidget.cshtml";
                view.IconClass = "fa fa-bars";
            });
        }
        public void PluginBuilder_PluginNameIsRequired()
        {
            // Arrange
            TestLogger    logger  = new TestLogger();
            PluginBuilder builder = CreateValidBuilder(logger);

            builder.SetProperty(WellKnownPluginProperties.PluginName, null);

            // Act and assert
            AssertException.Expect <System.InvalidOperationException>(() => builder.Build());
        }
Example #13
0
 /// <summary>
 /// Helper method to retrieve the plugin builder
 /// </summary>
 /// <param name="properties">IDictionary</param>
 /// <param name="pluginBuilder">IPluginBuilder out value</param>
 /// <returns>bool if there was a matcher</returns>
 private static bool TryRetrievePluginBuilder(this IDictionary <object, object> properties, out IPluginBuilder pluginBuilder)
 {
     if (properties.TryGetValue(PluginBuilderKey, out var pluginBuilderObject))
     {
         pluginBuilder = (IPluginBuilder)pluginBuilderObject;
         return(true);
     }
     pluginBuilder = new PluginBuilder();
     properties[PluginBuilderKey] = pluginBuilder;
     return(false);
 }
Example #14
0
 private static void WriteFile(string filePath, bool json, PluginBuilder builder)
 {
     if (json)
     {
         Serialization.WriteJson(filePath, builder, true);
     }
     else
     {
         Serialization.WriteXml(filePath, builder, true);
     }
 }
        public void PluginBuilder_InvalidSource()
        {
            // Arrange
            TestLogger    logger  = new TestLogger();
            PluginBuilder builder = CreateValidBuilder(logger);

            string invalidSource = this.CreateInputSourceFile("Program.java", "invalid java code");

            builder.AddSourceFile(invalidSource);

            // Act
            BuildAndCheckCompileFails(builder, logger);
        }
Example #16
0
    public static void buildPS4()
    {
        var success = PluginBuilder.BuildPluginPS4();

        if (!success)
        {
            return;
        }
        BuildPipeline.BuildPlayer(EditorBuildSettings.scenes,
                                  "build/PS4",
                                  BuildTarget.PS4,
                                  BuildOptions.AcceptExternalModificationsToPlayer | BuildOptions.AutoRunPlayer);
        // BuildOptions.None);
    }
Example #17
0
        public static IServiceCollection AddPlugins <TPlugin>(this IServiceCollection services,
                                                              Func <PluginBuilder <TPlugin>, PluginBuilder <TPlugin> > func = null) where TPlugin : IPlugin
        {
            var builder = new PluginBuilder <TPlugin>();

            if (func != null)
            {
                builder = func(builder);
            }

            var loaders = builder.BuildServices(services);

            return(loaders);
        }
Example #18
0
        public static IServiceCollection AddPlugins <TPlugin, TOption>(this IServiceCollection services,
                                                                       IConfiguration config, Func <PluginBuilder <TPlugin, TOption>, PluginBuilder <TPlugin, TOption> > func = null)
            where TPlugin : IPlugin where TOption : IPluginOptions, new()
        {
            var builder = new PluginBuilder <TPlugin, TOption>();

            if (func != null)
            {
                builder = func(builder);
            }

            var loaders = builder.BuildServices(services, config);

            return(loaders);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            PluginBuilder pb = PluginBuilderFactory.newPluginBuilder(Request, Response);

            // Adding - if necessary - CORS headers
            HttpResponse res    = new HttpResponse(this.Response);
            String       origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);

            string test = pb.newTest().getTestPage();

            Response.ContentType = "text/html; charset=utf-8";
            Response.Write(test);
        }
Example #20
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Dictionary <string, string> param = PluginBuilderFactory.getProperties(Request);
            PluginBuilder pb = PluginBuilderFactory.newPluginBuilder(Request, Response);

            // Adding - if necessary - CORS headers
            HttpResponse res    = new HttpResponse(this.Response);
            String       origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);

            string r = pb.newCas().createCasImage(param["image"]);

            this.Response.Write(r);
        }
Example #21
0
        private static bool TryDeserialize(string filePath, out PluginBuilder builder)
        {
            string jsonExcept, xmlExcept;
            string extension = Path.GetExtension(filePath);

            if (extension == ".json")
            {
                if (TryDeserialize(filePath, true, out builder, out jsonExcept))
                {
                    return(true);
                }
                Logger.WriteLine("Failed to deserialize as json: " + filePath, logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine(logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine("json exception: " + jsonExcept, logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine(logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                return(false);
            }
            else if (extension == ".xml")
            {
                if (TryDeserialize(filePath, false, out builder, out xmlExcept))
                {
                    return(true);
                }
                Logger.WriteLine("Failed to deserialize as xml: " + filePath, logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine(logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine("xml exception: " + xmlExcept, logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine(logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                return(false);
            }
            else
            {
                if (TryDeserialize(filePath, true, out builder, out jsonExcept))
                {
                    return(true);
                }
                if (TryDeserialize(filePath, false, out builder, out xmlExcept))
                {
                    return(true);
                }
                Logger.WriteLine("Failed to deserialize as json or xml: " + filePath, logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine(logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine("json exception: " + jsonExcept, logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine(logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine("xml exception: " + xmlExcept, logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                Logger.WriteLine(logTo: Logger.LogTo.File | Logger.LogTo.StandardOut);
                return(false);
            }
        }
        public void PluginBuilder_Extensions_MultipleValid()
        {
            // Arrange
            TestLogger    logger  = new TestLogger();
            PluginBuilder builder = CreateValidBuilder(logger);

            string secondValidSource = this.CreateInputSourceFile("MyClass2.java",
                                                                  @"package myPackage1;
public class MyClass2{}");

            builder.AddSourceFile(secondValidSource);
            builder.AddExtension("myPackage1.MyClass2.class");

            // Act and assert
            BuildAndCheckSucceeds(builder, logger);
        }
Example #23
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PluginBuilder  pb       = PluginBuilderFactory.newPluginBuilder(Request, Response);
            ParamsProvider provider = pb.getCustomParamsProvider();
            String         service  = provider.getRequiredParameter("service");
            String         r        = pb.newTextService().service(service, provider);

            // Adding - if necessary - CORS headers
            HttpResponse res    = new HttpResponse(this.Response);
            String       origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);

            Response.ContentType = "application/json";
            Response.Write(r);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            PluginBuilder  pb       = PluginBuilderFactory.newPluginBuilder(Request, Response);
            ParamsProvider provider = pb.getCustomParamsProvider();
            String         formula  = provider.getRequiredParameter("formula");

            // Adding - if necessary - CORS headers
            HttpResponse res    = new HttpResponse(this.Response);
            String       origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);

            byte[] bs = pb.newCas().showCasImage(formula, provider);
            Response.ContentType = "image/png";
            Response.OutputStream.Write(bs, 0, bs.Length);
        }
Example #25
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PluginBuilder  pb       = PluginBuilderFactory.newPluginBuilder(Request);
            ParamsProvider provider = pb.getCustomParamsProvider();
            String         resource = provider.getRequiredParameter("resourcefile");

            // Adding - if necessary - CORS headers
            HttpResponse res    = new HttpResponse(this.Response);
            String       origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);

            ServiceResourceLoader resourceLoader = pb.newResourceLoader();

            Response.ContentType = resourceLoader.getContentType(resource);
            Response.Write(resourceLoader.getContent(resource));
        }
Example #26
0
        protected void Page_Load(object sender, EventArgs e)
        {
            PluginBuilder  pb       = PluginBuilderFactory.newPluginBuilder(Request);
            ParamsProvider provider = pb.getCustomParamsProvider();

            // Adding - if necessary - CORS headers
            com.wiris.system.service.HttpResponse res = new com.wiris.system.service.HttpResponse(this.Response);
            String origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);

            Response.ContentType = "application/json";
            String variableKeys = provider.getRequiredParameter("variablekeys");
            String r            = pb.getConfiguration().getJsonConfiguration(variableKeys);

            this.Response.Write(r);
        }
Example #27
0
        public void Startup(PluginBuilder pluginBuilder)
        {
            pluginBuilder.ConfigureServices(services => {
                // register migrations
                services.AddTransient <IAppMigration, P410000_CreateInitialBlogTables>();
                services.AddTransient <IAppMigration, P410005_AddIsPrivateColumn>();
                services.AddTransient <IAppMigration, P410006_AddActiveColumn>();
                services.AddTransient <IAppMigration, P410015_AddPublishedColumn>();
                services.AddTransient <IAppMigration, P410020_AddVersioningColumns>();
                services.AddTransient <IAppMigration, P410025_InsertMissingVersionInfo>();

                // internal services
                services.AddTransient <BlogManager>();
                services.AddTransient <BlogQueryService>();
                services.AddTransient <BlogSecurityService>();

                // framework services
                services.AddTransient <ISecurityPermissionProvider, BlogClientPermissionProvider>();
                services.AddTransient <ISecurityPermissionProvider, BlogSitePermissionProvider>();
                services.AddTransient <IMenuItemProvider, ContentMenu>();
                services.AddTransient <IMenuItemProvider, OptionsMenu>();

                // userconsole snap-in
                services.AddTransient <IUserConsoleCustomComponent, BlogConsole>();
            });

            pluginBuilder.AddDbContext <BlogDbContext>();

            pluginBuilder.RegisterWidget <BlogWidgetService, BlogWidget>(widget => {
                widget.WidgetType = "blog";
                widget.WidgetName = "Blog Posts";
                widget.Category   = "Advanced";
            })
            .AddForm <BlogWidgetForm>(form => {
                form.Title = "Default Settings";
            })
            .AddForm <BlogWidgetCategoryBase>(form => {
                form.Title = "Categories";
            })
            .AddView(view => {
                view.Id        = "blog-posts-normal";
                view.Title     = "Blog";
                view.Path      = "~/UI/Views/Widgets/PostsNormal.cshtml";
                view.IconClass = IconType.List2.ToString();
            });
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            PluginBuilder  pb       = PluginBuilderFactory.newPluginBuilder(Request, Response);
            ParamsProvider provider = pb.getCustomParamsProvider();
            String         lang     = provider.getParameter("lang", "en");

            // Adding - if necessary - CORS headers
            HttpResponse res    = new HttpResponse(this.Response);
            String       origin = this.Request.Headers.Get("origin");

            pb.addCorsHeaders(res, origin);

            String r = pb.newEditor().editor(lang, provider);

            Response.ContentType = "text/html; charset=utf-8";
            Response.Write(r);
        }
Example #29
0
        public void Startup(PluginBuilder pluginBuilder)
        {
            pluginBuilder.ConfigureServices(services =>
            {
                //services.Configure<ClientMenu>(menu =>
                //{
                //    menu.MenuItems.Add(new MenuItemStatic
                //    {
                //        Icon = IconType.Briefcase,
                //        Title = "Live Streams",
                //        Url = "/Admin/VideoStreamLink",
                //    });
                //});
                services.AddTransient <AssignmentManager>();
            });

            pluginBuilder.AddDbContext <AssignmentsDbContext>(db => {
                AssignmentsDbActions.CreateSchemas(db);
                AssignmentsDbActions.CreateTables(db);
                AssignmentsDbActions.InsertSeedData(db);
                //AssignmentsAutomapper.ConfigureAutomapper();
            });

            pluginBuilder.RegisterWidget <AssignmentsWidgetService, AssignmentsWidgetViewModel>(widget =>
            {
                widget.Category   = "Apps";
                widget.WidgetType = "assignments";
                widget.WidgetName = "Assignments List";
            })
            .AddForm <AssignmentsWidgetConfigForm>(f =>
            {
                f.Title     = "Settings";
                f.AjaxFlags = AjaxFlags.ALL;
            })
            .AddView(view =>
            {
                view.Id    = "assignments-list";
                view.Title = "Assignments List";
                view.Path  = "~/UI/Views/Widgets/AssignmentsList.cshtml";
                //view.IconImage = "Assignments.svg";
                view.IconClass = "icon-Assignments";
            });
        }
        private void BuildPlugin(IPackage package, string language, string rulesFilePath, string sqaleFilePath, PluginManifest pluginDefn, string baseTempDirectory)
        {
            this.logger.LogInfo(UIResources.APG_GeneratingPlugin);

            // Make the .jar name match the format [artefactid]-[version].jar
            // i.e. the format expected by Maven
            string fullJarPath = Path.Combine(Directory.GetCurrentDirectory(),
                                              package.Id + "-plugin-" + pluginDefn.Version + ".jar");

            PluginBuilder builder = new PluginBuilder(logger);

            RulesPluginBuilder.ConfigureBuilder(builder, pluginDefn, language, rulesFilePath, sqaleFilePath);

            AddRoslynMetadata(baseTempDirectory, builder, package);

            builder.SetJarFilePath(fullJarPath);
            builder.Build();

            this.logger.LogInfo(UIResources.APG_PluginGenerated, fullJarPath);
        }
        public void PluginBuilder_Extensions_UnknownExtension_Invalid()
        {
            // Checks compilation fails if one of the specified extensions
            // cannot be found i.e. wrong class name

            // Arrange
            TestLogger    logger  = new TestLogger();
            PluginBuilder builder = CreateValidBuilder(logger);

            string secondValidSource = this.CreateInputSourceFile("AnotherValidClass.java",
                                                                  @"package myPackage1;
public class AnotherValidClass{}");

            builder.AddSourceFile(secondValidSource);

            builder.AddExtension("myPackage1.unknownExtensionClass");

            // Act and assert
            BuildAndCheckCompileFails(builder, logger);
        }
        public void PluginBuilder_Extensions_Required()
        {
            string inputDir = TestUtils.CreateTestDirectory(this.TestContext, "input");
            string outputDir = TestUtils.CreateTestDirectory(this.TestContext, "output");

            string pluginFilePath = Path.Combine(outputDir, "plugin1.jar");
            string source1 = TestUtils.CreateTextFile("Program.java", inputDir,
@"package myorg.app1;
public final class Program {}
");
            TestLogger logger = new TestLogger();
            PluginBuilder builder = new PluginBuilder(logger);

            builder
                .AddSourceFile(source1)
                .SetJarFilePath(pluginFilePath)
                .SetPluginKey("dummy.key")
                .SetPluginName("dummy name");

            //Act and assert
            AssertException.Expect<System.InvalidOperationException>(() => builder.Build());
        }
        private PluginBuilder CreateValidBuilder(TestLogger logger)
        {
            string outputDir = TestUtils.CreateTestDirectory(this.TestContext, "output");

            string pluginFilePath = Path.Combine(outputDir, "plugin1.jar");

            string source1 = CreateInputSourceFile("MyExtensionClass",
@"package myorg.app1;
public final class MyExtensionClass
{
}
");
            PluginBuilder builder = new PluginBuilder(logger);

            builder
                .AddSourceFile(source1)
                .SetJarFilePath(pluginFilePath)
                .SetProperty("Property1", "prop 1 value")
                .AddExtension("myorg.app1.MyExtensionClass.class")
                .SetPluginKey("dummy.key")
                .SetPluginName("plugin name");

            return builder;
        }
        private void BuildAndCheckCompileFails(PluginBuilder builder, TestLogger logger)
        {
            AssertException.Expect<JavaCompilerException>(() => builder.Build());

            Assert.IsNotNull(builder.JarFilePath, "Expecting the jar file path to be set");
            TestUtils.AssertFileDoesNotExist(builder.JarFilePath);
            logger.AssertErrorsLogged();
        }
        private void BuildPlugin(NuGetReference analyzeRef, string sqaleFilePath, string language, PluginManifest pluginDefn, string rulesFilePath, string tempDirectory, IPackage package)
        {
            this.logger.LogInfo(UIResources.APG_GeneratingPlugin);

            string fullJarPath = Path.Combine(Directory.GetCurrentDirectory(),
                analyzeRef.PackageId + "-plugin." + pluginDefn.Version + ".jar");

            PluginBuilder builder = new PluginBuilder(logger);
            RulesPluginBuilder.ConfigureBuilder(builder, pluginDefn, language, rulesFilePath, sqaleFilePath);

            AddRoslynMetadata(tempDirectory, builder, package);

            builder.SetJarFilePath(fullJarPath);
            builder.Build();

            this.logger.LogInfo(UIResources.APG_PluginGenerated, fullJarPath);
        }
        private void AddRoslynMetadata(string baseTempDirectory, PluginBuilder builder, IPackage package)
        {
            string sourcesDir = CreateSubDirectory(baseTempDirectory, "src");
            this.logger.LogDebug(UIResources.APG_CreatingRoslynSources, sourcesDir);

            SourceGenerator.CreateSourceFiles(typeof(AnalyzerPluginGenerator).Assembly, RoslynResourcesRoot, sourcesDir, new Dictionary<string, string>());

            string[] sourceFiles = Directory.GetFiles(sourcesDir, "*.java", SearchOption.AllDirectories);
            Debug.Assert(sourceFiles.Any(), "Failed to correctly unpack the Roslyn analyzer specific source files");

            foreach (string sourceFile in sourceFiles)
            {
                builder.AddSourceFile(sourceFile);
            }

            builder.SetSourceCodeTokenReplacement(PackageId_Token, package.Id);
            builder.SetSourceCodeTokenReplacement(PackageVersion_Token, package.Version.ToString());
            builder.SetSourceCodeTokenReplacement(AnalyzerId_Token, package.Id);
            builder.SetSourceCodeTokenReplacement(RuleNamespace_Token, package.Id);

            foreach (string extension in Extensions)
            {
                builder.AddExtension(extension);
            }
        }
        private void BuildPlugin(IPackage package, string language, string rulesFilePath, string sqaleFilePath, PluginManifest pluginDefn, string baseTempDirectory, string outputDirectory)
        {
            this.logger.LogInfo(UIResources.APG_GeneratingPlugin);

            // Make the .jar name match the format [artefactid]-[version].jar
            // i.e. the format expected by Maven
            Directory.CreateDirectory(outputDirectory);
            string fullJarPath = Path.Combine(outputDirectory,
                package.Id + "-plugin-" + pluginDefn.Version + ".jar");

            PluginBuilder builder = new PluginBuilder(logger);
            RulesPluginBuilder.ConfigureBuilder(builder, pluginDefn, language, rulesFilePath, sqaleFilePath);

            AddRoslynMetadata(baseTempDirectory, builder, package);
            
            builder.SetJarFilePath(fullJarPath);
            builder.Build();

            this.logger.LogInfo(UIResources.APG_PluginGenerated, fullJarPath);
        }
        private void BuildAndCheckSucceeds(PluginBuilder builder, TestLogger logger)
        {
            builder.Build();

            Assert.IsNotNull(builder.JarFilePath, "Expecting the jar file path to be set");
            TestUtils.AssertFileExists(builder.JarFilePath);
            this.TestContext.AddResultFile(builder.JarFilePath);

            logger.AssertErrorsLogged(0);
        }