/// <summary> /// /// </summary> /// <param name="config"></param> /// <returns></returns> private Task InitializeJniBridge(CustomConfigReader config) { return(Task.Run(async() => { await CreateRequiredFoldersIfRequired(config); await _jniBridgeManager.LoadJVM(config.JniBridgeOptions.libPath, config.JniBridgeOptions.libConfigFilePath); })); }
/// <summary> /// Creates the required folders if required. /// </summary> private Task CreateRequiredFoldersIfRequired(CustomConfigReader config) { return(Task.Run(() => { var folders = new Dictionary <string, string> { { "JarDropFolder", config.JvmOptions.jarDropFolder }, { "LogFileLocation", config.dotNetOptions.logFileLocation }, { "workingFolder", config.dotNetOptions.workingFolder } }; folders.ToList().ForEach(_ => { if (!string.IsNullOrEmpty(_.Value)) { if (!Directory.Exists(_.Value)) { Directory.CreateDirectory(_.Value); } } else { throw new ArgumentNullException($"{_.Key} is missing. Unable to continue."); } }); })); }
/// <summary> /// Provisions the tables at registration. /// </summary> /// <param name="r">The r.</param> /// <param name="jarFile">The jar file.</param> /// <param name="assembly">The assembly.</param> /// <param name="config">The configuration.</param> /// <param name="libraryId">The library identifier.</param> private void ProvisionTablesAtRegistration(KeyValuePair <string, JniMetadata> r, string jarFile, string assembly, CustomConfigReader config, Guid libraryId) { var metadataId = Guid.NewGuid(); var hostedLibrary = Guid.NewGuid(); var methods = r.Value?.MethodDescriptor?.ToList(); var clazz = r.Key.Substring(r.Key.LastIndexOf('.') + 1); _dataContext.HostedLibrary.Add(new HostedLibrary() { Fk_DynamicLibraryId = libraryId.ToString(), HostedLibraryId = hostedLibrary.ToString(), LibraryURI = $"/{clazz.Replace("$", string.Empty)}" // This is valid in Java ($) }); _dataContext.JavaClassMetadata.Add(new JavaClassMetadata() { ClassName = r.Key.Replace("$", string.Empty), // This is valid in Java ($) Fk_DynamicLibraryId = libraryId.ToString(), MetadataEntryId = metadataId.ToString(), JavaClassDefinition = r.Value?.JavaClassDefinition }); methods?.ForEach(_ => _dataContext.JniMethodInformation.Add(new JniMethodInformation() { JavaMethod = _.Value.Key, JniDescriptor = _.Value.Value, MethodId = Guid.NewGuid().ToString(), Fk_ClassMetadataId = metadataId.ToString() })); }