I kinda imagined AutoCloseableLock to implement both AutoCloseable and Lock.

---------- Forwarded message ----------
From: <[email protected]>
Date: 24 June 2016 at 03:50
Subject: [1/4] logging-log4j2 git commit: Add AutoCloseableLock.
To: [email protected]


Repository: logging-log4j2
Updated Branches:
  refs/heads/AutoCloseableLock [created] 72d9978c6


Add AutoCloseableLock.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit:
http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/40efa80a
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/40efa80a
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/40efa80a

Branch: refs/heads/AutoCloseableLock
Commit: 40efa80a1a9745d7f9162b4f7ce96a7571a1c336
Parents: bc296c5
Author: Gary Gregory <[email protected]>
Authored: Thu Jun 23 21:59:02 2016 -0700
Committer: Gary Gregory <[email protected]>
Committed: Thu Jun 23 21:59:02 2016 -0700

----------------------------------------------------------------------
 .../logging/log4j/util/AutoCloseableLock.java   | 44 ++++++++++++++++++++
 1 file changed, 44 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/40efa80a/log4j-api/src/main/java/org/apache/logging/log4j/util/AutoCloseableLock.java
----------------------------------------------------------------------
diff --git
a/log4j-api/src/main/java/org/apache/logging/log4j/util/AutoCloseableLock.java
b/log4j-api/src/main/java/org/apache/logging/log4j/util/AutoCloseableLock.java
new file mode 100644
index 0000000..65aa581
--- /dev/null
+++
b/log4j-api/src/main/java/org/apache/logging/log4j/util/AutoCloseableLock.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.logging.log4j.util;
+
+import java.util.Objects;
+import java.util.concurrent.locks.Lock;
+
+public class AutoCloseableLock implements AutoCloseable {
+    public static AutoCloseableLock lock(final Lock lock) {
+        Objects.requireNonNull(lock, "lock");
+        lock.lock();
+        return new AutoCloseableLock(lock);
+    }
+
+    private final Lock lock;
+
+    public AutoCloseableLock(final Lock lock) {
+        this.lock = lock;
+    }
+
+    @Override
+    public void close() {
+        this.lock.unlock();
+    }
+
+    public AutoCloseableLock lock() {
+        this.lock.lock();
+        return this;
+    }
+}
\ No newline at end of file




-- 
Matt Sicker <[email protected]>

Reply via email to