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 <[email protected]> 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;
