예제 #1
0
 /// <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);
     }));
 }
예제 #2
0
        /// <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.");
                    }
                });
            }));
        }
예제 #3
0
        /// <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()
            }));
        }