Lucene.Net.Core.Util.Constants refactor: Renamed JAVA_VERSION > RUNTIME_VERSION, JAVA_VENDOR > RUNTIME_VENDOR, JRE_IS_64BIT > RUNTIME_IS_64BIT. Commented unused JVM_ constants. Refactored RUNTIME_VERSION to pull the correct setting from System.Environment.Version in .NET Framework and parsed from RuntimeInformation.FrameworkDescription in .NET Core. Commented unused JVM_INFO_STRING constant in RamUsageEstimator.
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/45bb8132 Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/45bb8132 Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/45bb8132 Branch: refs/heads/api-work Commit: 45bb8132c3f9385f9caf9d6818f880090599b472 Parents: aef5205 Author: Shad Storhaug <[email protected]> Authored: Wed Feb 8 20:45:35 2017 +0700 Committer: Shad Storhaug <[email protected]> Committed: Wed Feb 8 21:08:25 2017 +0700 ---------------------------------------------------------------------- src/Lucene.Net.Core/Index/IndexWriter.cs | 4 +- src/Lucene.Net.Core/Store/FSDirectory.cs | 2 +- src/Lucene.Net.Core/Store/MMapDirectory.cs | 2 +- src/Lucene.Net.Core/Util/ArrayUtil.cs | 2 +- src/Lucene.Net.Core/Util/Constants.cs | 77 +++++++++++++++----- src/Lucene.Net.Core/Util/Fst/FST.cs | 2 +- src/Lucene.Net.Core/Util/RamUsageEstimator.cs | 21 +++--- .../core/Util/TestRamUsageEstimator.cs | 2 +- 8 files changed, 76 insertions(+), 36 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucenenet/blob/45bb8132/src/Lucene.Net.Core/Index/IndexWriter.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Index/IndexWriter.cs b/src/Lucene.Net.Core/Index/IndexWriter.cs index 2155239..3bc5253 100644 --- a/src/Lucene.Net.Core/Index/IndexWriter.cs +++ b/src/Lucene.Net.Core/Index/IndexWriter.cs @@ -4846,8 +4846,8 @@ namespace Lucene.Net.Index diagnostics["os"] = Constants.OS_NAME; diagnostics["os.arch"] = Constants.OS_ARCH; diagnostics["os.version"] = Constants.OS_VERSION; - diagnostics["java.version"] = Constants.JAVA_VERSION; - diagnostics["java.vendor"] = Constants.JAVA_VENDOR; + diagnostics["java.version"] = Constants.RUNTIME_VERSION; + diagnostics["java.vendor"] = Constants.RUNTIME_VENDOR; diagnostics["timestamp"] = Convert.ToString((DateTime.Now)); if (details != null) { http://git-wip-us.apache.org/repos/asf/lucenenet/blob/45bb8132/src/Lucene.Net.Core/Store/FSDirectory.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Store/FSDirectory.cs b/src/Lucene.Net.Core/Store/FSDirectory.cs index 8a53c23..538d484 100644 --- a/src/Lucene.Net.Core/Store/FSDirectory.cs +++ b/src/Lucene.Net.Core/Store/FSDirectory.cs @@ -177,7 +177,7 @@ namespace Lucene.Net.Store /// </summary> public static FSDirectory Open(DirectoryInfo path, LockFactory lockFactory) { - if ((Constants.WINDOWS || Constants.SUN_OS || Constants.LINUX) && Constants.JRE_IS_64BIT && + if ((Constants.WINDOWS || Constants.SUN_OS || Constants.LINUX) && Constants.RUNTIME_IS_64BIT && MMapDirectory.UNMAP_SUPPORTED) { return new MMapDirectory(path, lockFactory); http://git-wip-us.apache.org/repos/asf/lucenenet/blob/45bb8132/src/Lucene.Net.Core/Store/MMapDirectory.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Store/MMapDirectory.cs b/src/Lucene.Net.Core/Store/MMapDirectory.cs index bc31b73..4bd2868 100644 --- a/src/Lucene.Net.Core/Store/MMapDirectory.cs +++ b/src/Lucene.Net.Core/Store/MMapDirectory.cs @@ -77,7 +77,7 @@ namespace Lucene.Net.Store /// <summary> /// Default max chunk size. </summary> /// <seealso cref= #MMapDirectory(File, LockFactory, int) </seealso> - public static readonly int DEFAULT_MAX_BUFF = Constants.JRE_IS_64BIT ? (1 << 30) : (1 << 28); + public static readonly int DEFAULT_MAX_BUFF = Constants.RUNTIME_IS_64BIT ? (1 << 30) : (1 << 28); private readonly int chunkSizePower; http://git-wip-us.apache.org/repos/asf/lucenenet/blob/45bb8132/src/Lucene.Net.Core/Util/ArrayUtil.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Util/ArrayUtil.cs b/src/Lucene.Net.Core/Util/ArrayUtil.cs index 9fc79e0..2d9ba0c 100644 --- a/src/Lucene.Net.Core/Util/ArrayUtil.cs +++ b/src/Lucene.Net.Core/Util/ArrayUtil.cs @@ -210,7 +210,7 @@ namespace Lucene.Net.Util return int.MaxValue; } - if (Constants.JRE_IS_64BIT) + if (Constants.RUNTIME_IS_64BIT) { // round up to 8 byte alignment in 64bit env switch (bytesPerElement) http://git-wip-us.apache.org/repos/asf/lucenenet/blob/45bb8132/src/Lucene.Net.Core/Util/Constants.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Util/Constants.cs b/src/Lucene.Net.Core/Util/Constants.cs index 4bfc54a..2b853e8 100644 --- a/src/Lucene.Net.Core/Util/Constants.cs +++ b/src/Lucene.Net.Core/Util/Constants.cs @@ -34,17 +34,31 @@ namespace Lucene.Net.Util { } + // LUCENENET NOTE: IMPORTANT - this line must be placed before RUNTIME_VERSION so it can be parsed. + private static Regex VERSION_PARSER = new Regex(@"(\d+\.\d+\.\d+\.\d+)", RegexOptions.Compiled); + /// <summary> - /// The value of <tt>System.getProperty("java.version")</tt>. * </summary> - public static readonly string JAVA_VERSION = AppSettings.Get("java.version", ""); +#if NETSTANDARD + /// The value of the version parsed from <see cref="RuntimeInformation.FrameworkDescription"/>. +#else + /// The value of <see cref="Environment.Version"/>. +#endif + /// <para/> + /// NOTE: This was JAVA_VERSION in Lucene + /// </summary> + public static readonly string RUNTIME_VERSION = GetEnvironmentVariable("RUNTIME_VERSION", "?"); - public static readonly string JAVA_VENDOR = AppSettings.Get("java.vendor", ""); - public static readonly string JVM_VENDOR = AppSettings.Get("java.vm.vendor", ""); - public static readonly string JVM_VERSION = AppSettings.Get("java.vm.version", ""); - public static readonly string JVM_NAME = AppSettings.Get("java.vm.name", ""); /// <summary> - /// The value of <tt>System.getProperty("os.name")</tt>. * </summary> + /// NOTE: This was JAVA_VENDOR in Lucene + /// </summary> + public static readonly string RUNTIME_VENDOR = "Microsoft"; // AppSettings.Get("java.vendor", ""); + //public static readonly string JVM_VENDOR = AppSettings.Get("java.vm.vendor", ""); + //public static readonly string JVM_VERSION = AppSettings.Get("java.vm.version", ""); + //public static readonly string JVM_NAME = AppSettings.Get("java.vm.name", ""); + + /// <summary> + /// The value of <see cref="Environment.GetEnvironmentVariable(string)"/> with parameter "OS".</summary> public static readonly string OS_NAME = GetEnvironmentVariable("OS", "Windows_NT") ?? "Linux"; /// <summary> @@ -70,27 +84,29 @@ namespace Lucene.Net.Util public static readonly string OS_ARCH = GetEnvironmentVariable("PROCESSOR_ARCHITECTURE", "x86"); public static readonly string OS_VERSION = GetEnvironmentVariable("OS_VERSION", "?"); - [Obsolete("We are not running on Java for heavens sake")] - public static readonly bool JRE_IS_MINIMUM_JAVA6 = (bool)new bool?(true); // prevent inlining in foreign class files - - [Obsolete("We are not running on Java for heavens sake")] - public static readonly bool JRE_IS_MINIMUM_JAVA7 = (bool)new bool?(true); // prevent inlining in foreign class files + //[Obsolete("We are not running on Java for heavens sake")] + //public static readonly bool JRE_IS_MINIMUM_JAVA6 = (bool)new bool?(true); // prevent inlining in foreign class files - [Obsolete("We are not running on Java for heavens sake")] - public static readonly bool JRE_IS_MINIMUM_JAVA8; + //[Obsolete("We are not running on Java for heavens sake")] + //public static readonly bool JRE_IS_MINIMUM_JAVA7 = (bool)new bool?(true); // prevent inlining in foreign class files //[Obsolete("We are not running on Java for heavens sake")] - public static readonly bool JRE_IS_64BIT; // LUCENENET NOTE: We still need this constant to indicate 64 bit runtime. + //public static readonly bool JRE_IS_MINIMUM_JAVA8; + + /// <summary> + /// NOTE: This was JRE_IS_64BIT in Lucene + /// </summary> + public static readonly bool RUNTIME_IS_64BIT; // LUCENENET NOTE: We still need this constant to indicate 64 bit runtime. static Constants() { if (IntPtr.Size == 8) { - JRE_IS_64BIT = true;// 64 bit machine + RUNTIME_IS_64BIT = true;// 64 bit machine } else if (IntPtr.Size == 4) { - JRE_IS_64BIT = false;// 32 bit machine + RUNTIME_IS_64BIT = false;// 32 bit machine } try @@ -130,7 +146,7 @@ namespace Lucene.Net.Util } } } - JRE_IS_64BIT = is64Bit; + RUNTIME_IS_64BIT = is64Bit; // this method only exists in Java 8: bool v8 = true; @@ -190,8 +206,9 @@ namespace Lucene.Net.Util } private static Regex MAIN_VERSION_WITHOUT_ALPHA_BETA = new Regex("\\.", RegexOptions.Compiled); + - #region MEDIUM-TRUST Support +#region MEDIUM-TRUST Support private static string GetEnvironmentVariable(string variable, string defaultValueOnSecurityException) { @@ -208,10 +225,20 @@ namespace Lucene.Net.Util #if NETSTANDARD if (variable == "PROCESSOR_ARCHITECTURE") { + return RuntimeInformation.OSArchitecture.ToString(); } #endif + if (variable == "RUNTIME_VERSION") + { +#if NETSTANDARD + return ExtractString(RuntimeInformation.FrameworkDescription, VERSION_PARSER); +#else + return Environment.Version.ToString(); +#endif + } + return System.Environment.GetEnvironmentVariable(variable); } catch (System.Security.SecurityException) @@ -221,5 +248,17 @@ namespace Lucene.Net.Util } #endregion MEDIUM-TRUST Support + + // LUCENENET TODO: Move to Support ? + /// <summary> + /// Extracts the first group matched with the regex as a new string. + /// </summary> + /// <param name="input">The string to examine</param> + /// <param name="pattern">A regex object to use to extract the string</param> + private static string ExtractString(string input, Regex pattern) + { + Match m = pattern.Match(input); + return (m.Groups.Count > 1) ? m.Groups[1].Value : string.Empty; + } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/lucenenet/blob/45bb8132/src/Lucene.Net.Core/Util/Fst/FST.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Util/Fst/FST.cs b/src/Lucene.Net.Core/Util/Fst/FST.cs index 8e187a0..88d4d4c 100644 --- a/src/Lucene.Net.Core/Util/Fst/FST.cs +++ b/src/Lucene.Net.Core/Util/Fst/FST.cs @@ -2070,7 +2070,7 @@ namespace Lucene.Net.Util.Fst /// </summary> public sealed class FST { - public static readonly int DEFAULT_MAX_BLOCK_BITS = Constants.JRE_IS_64BIT ? 30 : 28; + public static readonly int DEFAULT_MAX_BLOCK_BITS = Constants.RUNTIME_IS_64BIT ? 30 : 28; public FST() { } http://git-wip-us.apache.org/repos/asf/lucenenet/blob/45bb8132/src/Lucene.Net.Core/Util/RamUsageEstimator.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Util/RamUsageEstimator.cs b/src/Lucene.Net.Core/Util/RamUsageEstimator.cs index 1f5aaf5..589e10c 100644 --- a/src/Lucene.Net.Core/Util/RamUsageEstimator.cs +++ b/src/Lucene.Net.Core/Util/RamUsageEstimator.cs @@ -36,9 +36,9 @@ namespace Lucene.Net.Util /// @lucene.internal </seealso> public sealed class RamUsageEstimator { - /// <summary> - /// JVM info string for debugging and reports. </summary> - public static readonly string JVM_INFO_STRING; + ///// <summary> + ///// JVM info string for debugging and reports. </summary> + //public static readonly string JVM_INFO_STRING; // LUCENENET specific - this is not being used /// <summary> /// One kilobyte bytes. </summary> @@ -124,12 +124,12 @@ namespace Lucene.Net.Util // Initialize empirically measured defaults. We'll modify them to the current // JVM settings later on if possible. - int referenceSize = Constants.JRE_IS_64BIT ? 8 : 4; - int objectHeader = Constants.JRE_IS_64BIT ? 16 : 8; + int referenceSize = Constants.RUNTIME_IS_64BIT ? 8 : 4; + int objectHeader = Constants.RUNTIME_IS_64BIT ? 16 : 8; // The following is objectHeader + NUM_BYTES_INT32, but aligned (object alignment) // so on 64 bit JVMs it'll be align(16 + 4, @8) = 24. - int arrayHeader = Constants.JRE_IS_64BIT ? 24 : 12; - int objectAlignment = Constants.JRE_IS_64BIT ? 8 : 4; + int arrayHeader = Constants.RUNTIME_IS_64BIT ? 24 : 12; + int objectAlignment = Constants.RUNTIME_IS_64BIT ? 8 : 4; /* LUCENENET TODO @@ -163,8 +163,8 @@ namespace Lucene.Net.Util // "best guess" based on reference size. We will attempt to modify // these to exact values if there is supported infrastructure. - objectHeader = Constants.JRE_IS_64BIT ? (8 + referenceSize) : 8; - arrayHeader = Constants.JRE_IS_64BIT ? (8 + 2 * referenceSize) : 12; + objectHeader = Constants.RUNTIME_IS_64BIT ? (8 + referenceSize) : 8; + arrayHeader = Constants.RUNTIME_IS_64BIT ? (8 + 2 * referenceSize) : 12; /* LUCENENET TODO @@ -234,7 +234,8 @@ namespace Lucene.Net.Util NUM_BYTES_OBJECT_ALIGNMENT = objectAlignment; - JVM_INFO_STRING = "[JVM: " + Constants.JVM_NAME + ", " + Constants.JVM_VERSION + ", " + Constants.JVM_VENDOR + ", " + Constants.JAVA_VENDOR + ", " + Constants.JAVA_VERSION + "]"; + // LUCENENET specific - this is not being used + //JVM_INFO_STRING = "[JVM: " + Constants.JVM_NAME + ", " + Constants.JVM_VERSION + ", " + Constants.JVM_VENDOR + ", " + Constants.JAVA_VENDOR + ", " + Constants.JAVA_VERSION + "]"; } /// <summary> http://git-wip-us.apache.org/repos/asf/lucenenet/blob/45bb8132/src/Lucene.Net.Tests/core/Util/TestRamUsageEstimator.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Tests/core/Util/TestRamUsageEstimator.cs b/src/Lucene.Net.Tests/core/Util/TestRamUsageEstimator.cs index b08739d..dc6fb9b 100644 --- a/src/Lucene.Net.Tests/core/Util/TestRamUsageEstimator.cs +++ b/src/Lucene.Net.Tests/core/Util/TestRamUsageEstimator.cs @@ -109,7 +109,7 @@ namespace Lucene.Net.Util //} Assert.IsTrue(RamUsageEstimator.NUM_BYTES_OBJECT_REF == 4 || RamUsageEstimator.NUM_BYTES_OBJECT_REF == 8); - if (!Constants.JRE_IS_64BIT) + if (!Constants.RUNTIME_IS_64BIT) { assertEquals("For 32bit JVMs, reference size must always be 4?", 4, RamUsageEstimator.NUM_BYTES_OBJECT_REF); }
