lucenenet-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nightowl...@apache.org
Subject [39/50] lucenenet git commit: Lucene.Net.Core.Store.Lock.With: Changed return type to be generic instead of object
Date Thu, 30 Mar 2017 18:00:34 GMT
Lucene.Net.Core.Store.Lock.With: Changed return type to be generic instead of object


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/d850d553
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/d850d553
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/d850d553

Branch: refs/heads/api-work
Commit: d850d553f7617ce79ed35ffdf1b690f5aebb65b2
Parents: 2fe688d
Author: Shad Storhaug <shad@shadstorhaug.com>
Authored: Thu Mar 30 16:40:39 2017 +0700
Committer: Shad Storhaug <shad@shadstorhaug.com>
Committed: Thu Mar 30 16:40:39 2017 +0700

----------------------------------------------------------------------
 src/Lucene.Net.Core/Store/Lock.cs | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/d850d553/src/Lucene.Net.Core/Store/Lock.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Store/Lock.cs b/src/Lucene.Net.Core/Store/Lock.cs
index 2ad477b..c3c66f8 100644
--- a/src/Lucene.Net.Core/Store/Lock.cs
+++ b/src/Lucene.Net.Core/Store/Lock.cs
@@ -25,12 +25,13 @@ namespace Lucene.Net.Store
     /// <para/>Typical use might look like:
     /// 
     /// <code>
-    ///     var result = Lock.With.NewAnonymous(
+    ///     var result = Lock.With.NewAnonymous&lt;string&gt;(
     ///         @lock: directory.MakeLock("my.lock"), 
     ///         lockWaitTimeout: Lock.LOCK_OBTAIN_WAIT_FOREVER, 
     ///         doBody: () =>
     ///     {
     ///         //... code to execute while locked ...
+    ///         return "the result";
     ///     }).Run();
     /// </code>
     /// </summary>
@@ -55,17 +56,19 @@ namespace Lucene.Net.Store
         /// <para/>
         /// Simple example:
         /// <code>
-        ///     var result = Lock.With.NewAnonymous(
+        ///     var result = Lock.With.NewAnonymous&lt;string&gt;(
         ///         @lock: directory.MakeLock("my.lock"), 
         ///         lockWaitTimeout: Lock.LOCK_OBTAIN_WAIT_FOREVER, 
         ///         doBody: () =>
         ///     {
         ///         //... code to execute while locked ...
+        ///         return "the result";
         ///     }).Run();
         /// </code>
         /// <para/>
         /// The result of the operation is the value that is returned from <paramref name="doBody"/>
-        /// (i.e. () => { return theObject; }).
+        /// (i.e. () => { return "the result"; }). The type of <typeparam name="T"/>
determines the
+        /// return type of the operation.
         /// </summary>
         /// <param name="lock"> the <see cref="Lock"/> instance to use </param>
         /// <param name="lockWaitTimeout"> length of time to wait in
@@ -73,9 +76,9 @@ namespace Lucene.Net.Store
         ///        <see cref="LOCK_OBTAIN_WAIT_FOREVER"/> to retry forever </param>
         /// <param name="doBody"> a delegate method that </param>
         /// <returns>The value that is returned from the <paramref name="doBody"/>
delegate method (i.e. () => { return theObject; })</returns>
-        public static With NewAnonymous(Lock @lock, int lockWaitTimeout, Func<object>
doBody)
+        public static With<T> NewAnonymous<T>(Lock @lock, int lockWaitTimeout,
Func<T> doBody)
         {
-            return new AnonymousWith(@lock, lockWaitTimeout, doBody);
+            return new AnonymousWith<T>(@lock, lockWaitTimeout, doBody);
         }
 
         /// <summary>
@@ -171,7 +174,7 @@ namespace Lucene.Net.Store
 
         /// <summary>
         /// Utility class for executing code with exclusive access. </summary>
-        public abstract class With // LUCENENET TODO: API Make generic so we don't have to
return object?
+        public abstract class With<T> // LUCENENET specific - made generic so we don't
need to deal with casting
         {
             private Lock @lock;
             private long lockWaitTimeout;
@@ -190,7 +193,7 @@ namespace Lucene.Net.Store
 
             /// <summary>
             /// Code to execute with exclusive access. </summary>
-            protected abstract object DoBody();
+            protected abstract T DoBody();
 
             /// <summary>
             /// Calls <see cref="DoBody"/> while <i>lock</i> is obtained.
 Blocks if lock
@@ -200,7 +203,7 @@ namespace Lucene.Net.Store
             /// <exception cref="LockObtainFailedException"> if lock could not
             /// be obtained </exception>
             /// <exception cref="System.IO.IOException"> if <see cref="Lock.Obtain()"/>
throws <see cref="System.IO.IOException"/> </exception>
-            public virtual object Run()
+            public virtual T Run()
             {
                 bool locked = false;
                 try
@@ -222,10 +225,10 @@ namespace Lucene.Net.Store
         /// LUCENENET specific class to simulate the anonymous creation of a With class in
Java
         /// by using deletate methods.
         /// </summary>
-        private class AnonymousWith : With
+        private class AnonymousWith<T> : With<T>
         {
-            private readonly Func<object> doBody;
-            public AnonymousWith(Lock @lock, int lockWaitTimeout, Func<object> doBody)
+            private readonly Func<T> doBody;
+            public AnonymousWith(Lock @lock, int lockWaitTimeout, Func<T> doBody)
                 : base(@lock, lockWaitTimeout)
             {
                 if (doBody == null)
@@ -234,7 +237,7 @@ namespace Lucene.Net.Store
                 this.doBody = doBody;
             }
 
-            protected override object DoBody()
+            protected override T DoBody()
             {
                 return doBody();
             }


Mime
View raw message