You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by gg...@apache.org on 2023/06/24 03:48:40 UTC

[juneau] 04/29: [juneau-config] Use lambdas

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

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

commit cbe8e2af4608bd6629b3b1f7523956d64f7bd73d
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Jun 23 22:46:31 2023 -0400

    [juneau-config] Use lambdas
---
 .../java/org/apache/juneau/config/Section.java     | 38 +++++++++-------------
 .../apache/juneau/config/internal/ConfigMap.java   | 26 +++++----------
 2 files changed, 25 insertions(+), 39 deletions(-)

diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Section.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Section.java
index 0717113c8..3fdd90566 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Section.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Section.java
@@ -204,30 +204,24 @@ public class Section {
 	 * @return The proxy interface.
 	 */
 	@SuppressWarnings("unchecked")
-	public <T> Optional<T> asInterface(final Class<T> c) {
-		assertArgNotNull("c", c);
-
-		if (! c.isInterface())
-			throw new IllegalArgumentException("Class '"+c.getName()+"' passed to toInterface() is not an interface.");
+    public <T> Optional<T> asInterface(final Class<T> c) {
+        assertArgNotNull("c", c);
 
-		InvocationHandler h = new InvocationHandler() {
+        if (!c.isInterface())
+            throw new IllegalArgumentException("Class '" + c.getName() + "' passed to toInterface() is not an interface.");
 
-			@Override
-			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-				BeanInfo bi = Introspector.getBeanInfo(c, null);
-				for (PropertyDescriptor pd : bi.getPropertyDescriptors()) {
-					Method rm = pd.getReadMethod(), wm = pd.getWriteMethod();
-					if (method.equals(rm))
-						return config.get(name + '/' + pd.getName()).as(rm.getGenericReturnType()).orElse(null);
-					if (method.equals(wm))
-						return config.set(name + '/' + pd.getName(), args[0]);
-				}
-				throw new UnsupportedOperationException("Unsupported interface method.  method='"+method+"'");
-			}
-		};
-
-		return optional((T)Proxy.newProxyInstance(c.getClassLoader(), new Class[] { c }, h));
-	}
+        return optional((T) Proxy.newProxyInstance(c.getClassLoader(), new Class[] { c }, (InvocationHandler) (proxy, method, args) -> {
+            BeanInfo bi = Introspector.getBeanInfo(c, null);
+            for (PropertyDescriptor pd : bi.getPropertyDescriptors()) {
+                Method rm = pd.getReadMethod(), wm = pd.getWriteMethod();
+                if (method.equals(rm))
+                    return config.get(name + '/' + pd.getName()).as(rm.getGenericReturnType()).orElse(null);
+                if (method.equals(wm))
+                    return config.set(name + '/' + pd.getName(), args[0]);
+            }
+            throw new UnsupportedOperationException("Unsupported interface method.  method='" + method + "'");
+        }));
+    }
 
 	/**
 	 * Copies the entries in this section to the specified bean by calling the public setters on that bean.
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
index 6d28f131b..e11ee8df3 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
@@ -477,16 +477,11 @@ public class ConfigMap implements ConfigStoreListener {
 
 		if (synchronous) {
 			final CountDownLatch latch = new CountDownLatch(1);
-			ConfigStoreListener l = new ConfigStoreListener() {
-				@Override
-				public void onChange(String contents) {
-					latch.countDown();
-				}
-			};
-			store.register(name, l);
+			ConfigStoreListener listener = contents1 -> latch.countDown();
+			store.register(name, listener);
 			store.write(name, null, contents);
 			latch.await(30, TimeUnit.SECONDS);
-			store.unregister(name, l);
+			store.unregister(name, listener);
 		} else {
 			store.write(name, null, contents);
 		}
@@ -914,15 +909,12 @@ public class ConfigMap implements ConfigStoreListener {
 		}
 
 		synchronized Import register(final ConfigEventListener listener) {
-			ConfigEventListener l2 = new ConfigEventListener() {
-				@Override
-				public void onConfigChange(ConfigEvents events) {
-					ConfigEvents events2 = new ConfigEvents();
-					events.stream().filter(x -> ! hasEntry(x.getSection(), x.getKey())).forEach(x -> events2.add(x));
-					if (events2.size() > 0)
-						listener.onConfigChange(events2);
-				}
-			};
+			ConfigEventListener l2 = events -> {
+            	ConfigEvents events2 = new ConfigEvents();
+            	events.stream().filter(x -> ! hasEntry(x.getSection(), x.getKey())).forEach(x -> events2.add(x));
+            	if (events2.size() > 0)
+            		listener.onConfigChange(events2);
+            };
 			listenerMap.put(listener, l2);
 			configMap.register(l2);
 			return this;