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;