You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2021/08/23 09:55:20 UTC
[wicket] branch wicket-9.x updated: WICKET-6916 replace proxies
with StandardMBean
This is an automated email from the ASF dual-hosted git repository.
svenmeier pushed a commit to branch wicket-9.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/wicket-9.x by this push:
new 04b3440 WICKET-6916 replace proxies with StandardMBean
04b3440 is described below
commit 04b3440df6affbd11b0286de5ed54f587ff55f52
Author: Sven Meier <sv...@apache.org>
AuthorDate: Fri Aug 20 19:34:33 2021 +0200
WICKET-6916 replace proxies with StandardMBean
---
wicket-jmx/pom.xml | 8 --
wicket-jmx/src/main/java/module-info.java | 1 -
.../java/org/apache/wicket/jmx/Initializer.java | 93 ++++++++++------------
3 files changed, 42 insertions(+), 60 deletions(-)
diff --git a/wicket-jmx/pom.xml b/wicket-jmx/pom.xml
index 15c050c..9c6facb 100644
--- a/wicket-jmx/pom.xml
+++ b/wicket-jmx/pom.xml
@@ -30,16 +30,8 @@
<dependencies>
<dependency>
- <groupId>cglib</groupId>
- <artifactId>cglib</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
</dependency>
- <dependency>
- <groupId>org.ow2.asm</groupId>
- <artifactId>asm</artifactId>
- </dependency>
</dependencies>
</project>
diff --git a/wicket-jmx/src/main/java/module-info.java b/wicket-jmx/src/main/java/module-info.java
index d07942d..b646aaf 100644
--- a/wicket-jmx/src/main/java/module-info.java
+++ b/wicket-jmx/src/main/java/module-info.java
@@ -20,7 +20,6 @@ module org.apache.wicket.jmx {
requires org.apache.wicket.util;
requires org.apache.wicket.core;
requires org.slf4j;
- requires cglib;
provides org.apache.wicket.IInitializer with org.apache.wicket.jmx.Initializer;
exports org.apache.wicket.jmx;
diff --git a/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java b/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java
index ca990ac..6b896ba 100644
--- a/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java
+++ b/wicket-jmx/src/main/java/org/apache/wicket/jmx/Initializer.java
@@ -17,10 +17,12 @@
package org.apache.wicket.jmx;
import java.lang.management.ManagementFactory;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.Callable;
+import javax.management.Attribute;
+import javax.management.AttributeList;
import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanRegistrationException;
@@ -29,10 +31,7 @@ import javax.management.MBeanServerFactory;
import javax.management.MalformedObjectNameException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
-
-import net.sf.cglib.core.DefaultNamingPolicy;
-import net.sf.cglib.core.Predicate;
-import net.sf.cglib.proxy.Enhancer;
+import javax.management.StandardMBean;
import org.apache.wicket.IInitializer;
import org.apache.wicket.ThreadContext;
@@ -229,24 +228,39 @@ public class Initializer implements IInitializer
* @throws MBeanRegistrationException
* @throws InstanceAlreadyExistsException
*/
- private void register(final org.apache.wicket.Application application, final Object o,
+ private <T> void register(final org.apache.wicket.Application application, final T o,
final ObjectName objectName) throws InstanceAlreadyExistsException,
MBeanRegistrationException, NotCompliantMBeanException
{
- Object proxy = createProxy(application, o);
- mbeanServer.registerMBean(proxy, objectName);
- registered.add(objectName);
- }
-
- private Object createProxy(final org.apache.wicket.Application application, final Object o)
- {
- Enhancer e = new Enhancer();
- e.setInterfaces(o.getClass().getInterfaces());
- e.setSuperclass(Object.class);
- e.setCallback(new net.sf.cglib.proxy.InvocationHandler()
- {
+ StandardMBean bean = new StandardMBean(o, (Class<T>)o.getClass().getInterfaces()[0]) {
+ @Override
+ public Object getAttribute(String attribute)
+ {
+ return withApplication(() -> super.getAttribute(attribute));
+ }
+
@Override
- public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
+ public void setAttribute(Attribute attribute)
+ {
+ withApplication(() -> {
+ super.setAttribute(attribute);
+ return null;
+ });
+ }
+
+ @Override
+ public AttributeList setAttributes(AttributeList attributes)
+ {
+ return withApplication(() -> super.setAttributes(attributes));
+ }
+
+ @Override
+ public Object invoke(String actionName, Object[] params, String[] signature)
+ {
+ return withApplication(() -> super.invoke(actionName, params, signature));
+ }
+
+ private <R> R withApplication(Callable<R> callable)
{
boolean existed = ThreadContext.exists();
@@ -257,7 +271,11 @@ public class Initializer implements IInitializer
try
{
- return method.invoke(o, args);
+ return callable.call();
+ }
+ catch (Exception ex)
+ {
+ throw new WicketRuntimeException(ex);
}
finally
{
@@ -267,35 +285,8 @@ public class Initializer implements IInitializer
}
}
}
- });
- e.setNamingPolicy(new DefaultNamingPolicy()
- {
- @Override
- public String getClassName(final String prefix, final String source, final Object key,
- final Predicate names)
- {
- return o.getClass().getName().replace(".wrapper", "");
- }
- });
- e.setClassLoader(resolveClassLoader());
-
- return e.create();
- }
-
- private static ClassLoader resolveClassLoader()
- {
- ClassLoader classLoader = null;
- if (org.apache.wicket.Application.exists())
- {
- classLoader = org.apache.wicket.Application.get().getApplicationSettings()
- .getClassResolver().getClassLoader();
- }
-
- if (classLoader == null) {
- classLoader = Thread.currentThread().getContextClassLoader();
- }
-
- return classLoader;
+ };
+ mbeanServer.registerMBean(bean, objectName);
+ registered.add(objectName);
}
-
-}
+}
\ No newline at end of file