This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 94f33e93b405fca3ff5ce069a8d93d91a4caf5ee
Author: Shad Storhaug <[email protected]>
AuthorDate: Mon Dec 16 00:25:18 2019 +0700

    Lucene.Net.TestFramework, 
Lucene.Net.Tests.Index.TestIndexWriterWithThreads: Factored out AtomicObject 
and replaced with J2N.Threading.Atomic.AtomicReference
---
 .../Index/BaseStoredFieldsFormatTestCase.cs        |  7 +--
 .../Index/BaseTermVectorsFormatTestCase.cs         |  7 +--
 .../Lucene.Net.TestFramework.csproj                |  1 +
 .../Index/TestIndexWriterWithThreads.cs            | 18 ++++---
 src/Lucene.Net/Support/AtomicObject.cs             | 59 ----------------------
 5 files changed, 19 insertions(+), 73 deletions(-)

diff --git 
a/src/Lucene.Net.TestFramework/Index/BaseStoredFieldsFormatTestCase.cs 
b/src/Lucene.Net.TestFramework/Index/BaseStoredFieldsFormatTestCase.cs
index 616b0cb..8423aed 100644
--- a/src/Lucene.Net.TestFramework/Index/BaseStoredFieldsFormatTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Index/BaseStoredFieldsFormatTestCase.cs
@@ -13,6 +13,7 @@ using System.Text;
 using Console = Lucene.Net.Support.SystemConsole;
 using Assert = Lucene.Net.TestFramework.Assert;
 using Lucene.Net.TestFramework;
+using J2N.Threading.Atomic;
 
 #if TESTFRAMEWORK_MSTEST
 using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
@@ -533,7 +534,7 @@ namespace Lucene.Net.Index
                     }
                     iw.Commit();
 
-                    AtomicObject<Exception> ex = new AtomicObject<Exception>();
+                    AtomicReference<Exception> ex = new 
AtomicReference<Exception>();
                     using (DirectoryReader rd = DirectoryReader.Open(dir))
                     {
                         IndexSearcher searcher = new IndexSearcher(rd);
@@ -569,11 +570,11 @@ namespace Lucene.Net.Index
             private readonly DirectoryReader rd;
             private readonly IndexSearcher searcher;
             private int readsPerThread;
-            private AtomicObject<Exception> ex;
+            private AtomicReference<Exception> ex;
             private int i;
             private readonly int[] queries;
 
-            public ThreadAnonymousInnerClassHelper(int numDocs, 
DirectoryReader rd, IndexSearcher searcher, int readsPerThread, 
AtomicObject<Exception> ex, int i)
+            public ThreadAnonymousInnerClassHelper(int numDocs, 
DirectoryReader rd, IndexSearcher searcher, int readsPerThread, 
AtomicReference<Exception> ex, int i)
             {
                 this.numDocs = numDocs;
                 this.rd = rd;
diff --git 
a/src/Lucene.Net.TestFramework/Index/BaseTermVectorsFormatTestCase.cs 
b/src/Lucene.Net.TestFramework/Index/BaseTermVectorsFormatTestCase.cs
index c7d752a..efc8fa9 100644
--- a/src/Lucene.Net.TestFramework/Index/BaseTermVectorsFormatTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Index/BaseTermVectorsFormatTestCase.cs
@@ -1,3 +1,4 @@
+using J2N.Threading.Atomic;
 using Lucene.Net.Analysis.TokenAttributes;
 using Lucene.Net.Codecs;
 using Lucene.Net.Documents;
@@ -928,7 +929,7 @@ namespace Lucene.Net.Index
                 {
                     docs[i] = 
docFactory.NewDocument(TestUtil.NextInt32(Random, 1, 3), AtLeast(10), options);
                 }
-                AtomicObject<Exception> exception = new 
AtomicObject<Exception>();
+                AtomicReference<Exception> exception = new 
AtomicReference<Exception>();
                 using (Directory dir = NewDirectory())
                 using (RandomIndexWriter writer = new RandomIndexWriter(
 #if FEATURE_INSTANCE_TESTDATA_INITIALIZATION
@@ -974,10 +975,10 @@ namespace Lucene.Net.Index
             private int numDocs;
             private RandomDocument[] docs;
             private IndexReader reader;
-            private AtomicObject<Exception> exception;
+            private AtomicReference<Exception> exception;
             private int i;
 
-            public 
ThreadAnonymousInnerClassHelper(BaseTermVectorsFormatTestCase outerInstance, 
int numDocs, RandomDocument[] docs, IndexReader reader, AtomicObject<Exception> 
exception, int i)
+            public 
ThreadAnonymousInnerClassHelper(BaseTermVectorsFormatTestCase outerInstance, 
int numDocs, RandomDocument[] docs, IndexReader reader, 
AtomicReference<Exception> exception, int i)
             {
                 this.outerInstance = outerInstance;
                 this.numDocs = numDocs;
diff --git a/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj 
b/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
index eb65fa4..a137af3 100644
--- a/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
+++ b/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
@@ -54,6 +54,7 @@
   </ItemGroup>
 
   <ItemGroup>
+    <PackageReference Include="J2N" Version="$(J2NPackageVersion)" />
     <PackageReference Include="NUnit" Version="$(NUnitPackageVersion)" />
   </ItemGroup>
 
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
index 0ed4afa..41dcb0f 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
@@ -1,3 +1,4 @@
+using J2N.Threading.Atomic;
 using Lucene.Net.Attributes;
 using Lucene.Net.Documents;
 using Lucene.Net.Randomized.Generators;
@@ -9,6 +10,7 @@ using NUnit.Framework;
 using System;
 using System.IO;
 using System.Threading;
+using AtomicBoolean = J2N.Threading.Atomic.AtomicBoolean;
 using Console = Lucene.Net.Support.SystemConsole;
 
 namespace Lucene.Net.Index
@@ -674,13 +676,13 @@ namespace Lucene.Net.Index
 
             MockAnalyzer analyzer = new MockAnalyzer(Random);
             analyzer.MaxTokenLength = TestUtil.NextInt32(Random, 1, 
IndexWriter.MAX_TERM_LENGTH);
-            AtomicObject<IndexWriter> writerRef =
-                new AtomicObject<IndexWriter>(new IndexWriter(d, 
NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)));
+            AtomicReference<IndexWriter> writerRef =
+                new AtomicReference<IndexWriter>(new IndexWriter(d, 
NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)));
 
             LineFileDocs docs = new LineFileDocs(Random);
             ThreadClass[] threads = new ThreadClass[threadCount];
             int iters = AtLeast(100);
-            AtomicBoolean failed = new AtomicBoolean();
+            AtomicBoolean failed = new J2N.Threading.Atomic.AtomicBoolean();
             ReentrantLock rollbackLock = new ReentrantLock();
             ReentrantLock commitLock = new ReentrantLock();
             for (int threadID = 0; threadID < threadCount; threadID++)
@@ -701,7 +703,7 @@ namespace Lucene.Net.Index
                 }
             }
 
-            Assert.IsTrue(!failed.Get());
+            Assert.IsTrue(!failed.Value);
             writerRef.Value.Dispose();
             d.Dispose();
         }
@@ -711,14 +713,14 @@ namespace Lucene.Net.Index
             private readonly TestIndexWriterWithThreads OuterInstance;
 
             private BaseDirectoryWrapper d;
-            private AtomicObject<IndexWriter> WriterRef;
+            private AtomicReference<IndexWriter> WriterRef;
             private LineFileDocs Docs;
             private int Iters;
             private AtomicBoolean Failed;
             private ReentrantLock RollbackLock;
             private ReentrantLock CommitLock;
 
-            public ThreadAnonymousInnerClassHelper(TestIndexWriterWithThreads 
outerInstance, BaseDirectoryWrapper d, AtomicObject<IndexWriter> writerRef, 
LineFileDocs docs, int iters, AtomicBoolean failed, ReentrantLock rollbackLock, 
ReentrantLock commitLock)
+            public ThreadAnonymousInnerClassHelper(TestIndexWriterWithThreads 
outerInstance, BaseDirectoryWrapper d, AtomicReference<IndexWriter> writerRef, 
LineFileDocs docs, int iters, AtomicBoolean failed, ReentrantLock rollbackLock, 
ReentrantLock commitLock)
             {
                 this.OuterInstance = outerInstance;
                 this.d = d;
@@ -732,7 +734,7 @@ namespace Lucene.Net.Index
 
             public override void Run()
             {
-                for (int iter = 0; iter < Iters && !Failed.Get(); iter++)
+                for (int iter = 0; iter < Iters && !Failed.Value; iter++)
                 {
                     //final int x = Random().nextInt(5);
                     int x = Random.Next(3);
@@ -820,7 +822,7 @@ namespace Lucene.Net.Index
                     }
                     catch (Exception t)
                     {
-                        Failed.Set(true);
+                        Failed.Value = (true);
                         throw new Exception(t.Message, t);
                     }
                 }
diff --git a/src/Lucene.Net/Support/AtomicObject.cs 
b/src/Lucene.Net/Support/AtomicObject.cs
deleted file mode 100644
index 84c8c0d..0000000
--- a/src/Lucene.Net/Support/AtomicObject.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System;
-using System.Threading;
-
-namespace Lucene.Net.Support
-{
-    /*
-        * Licensed to the Apache Software Foundation (ASF) under one or more
-        * contributor license agreements.  See the NOTICE file distributed with
-        * this work for additional information regarding copyright ownership.
-        * The ASF licenses this file to You under the Apache License, Version 
2.0
-        * (the "License"); you may not use this file except in compliance with
-        * the License.  You may obtain a copy of the License at
-        *
-        *     http://www.apache.org/licenses/LICENSE-2.0
-        *
-        * Unless required by applicable law or agreed to in writing, software
-        * distributed under the License is distributed on an "AS IS" BASIS,
-        * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
implied.
-        * See the License for the specific language governing permissions and
-        * limitations under the License.
-        */
-
-#if FEATURE_SERIALIZABLE
-    [Serializable]
-#endif
-    public class AtomicObject<T> where T : class
-    {
-        private T _value;
-        private ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();
-
-        public AtomicObject() : this(default(T))
-        { }
-
-        public AtomicObject(T initial)
-        {
-            _value = initial;
-        }
-
-        public T Value
-        {
-            get
-            {
-                try
-                {
-                    _lock.EnterReadLock();
-                    return _value;
-                }
-                finally
-                {
-                    _lock.ExitReadLock();
-                }
-            }
-            set
-            {
-                Interlocked.Exchange(ref _value, value);
-            }
-        }
-    }
-}

Reply via email to