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); } }
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; }
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"; });; }
/// <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); }
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); } }
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); }
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()); }
/// <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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }
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); }
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); }