You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by so...@apache.org on 2023/01/18 09:04:33 UTC
[wicket] branch master updated: [WICKET-7025] package private methods are intercepted by ByteBuddy (#552)
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/master by this push:
new 4affb7b184 [WICKET-7025] package private methods are intercepted by ByteBuddy (#552)
4affb7b184 is described below
commit 4affb7b18424e40663239ac9c93d9ec33a432541
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Jan 18 16:04:26 2023 +0700
[WICKET-7025] package private methods are intercepted by ByteBuddy (#552)
[WICKET-7025] package private methods are intercepted by ByteBuddy, tests were added
---
.../wicket/proxy/bytebuddy/ByteBuddyProxyFactory.java | 14 +++++++-------
.../proxy/packageprivate/PackagePrivateConcreteObject.java | 7 +++++++
.../wicket/proxy/packageprivate/PackagePrivateTest.java | 7 +++++--
.../java/org/apache/wicket/proxy/util/ConcreteObject.java | 6 +++---
4 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/wicket-ioc/src/main/java/org/apache/wicket/proxy/bytebuddy/ByteBuddyProxyFactory.java b/wicket-ioc/src/main/java/org/apache/wicket/proxy/bytebuddy/ByteBuddyProxyFactory.java
index 4d53be283b..9cc5cf419b 100644
--- a/wicket-ioc/src/main/java/org/apache/wicket/proxy/bytebuddy/ByteBuddyProxyFactory.java
+++ b/wicket-ioc/src/main/java/org/apache/wicket/proxy/bytebuddy/ByteBuddyProxyFactory.java
@@ -60,13 +60,13 @@ public class ByteBuddyProxyFactory implements IProxyFactory
/**
* Create a lazy init proxy for the specified type. The target object will be located using the
* provided locator upon first method invocation.
- *
+ *
* @param type
* type that proxy will represent
- *
+ *
* @param locator
* object locator that will locate the object the proxy represents
- *
+ *
* @return lazily initializable proxy
*/
@Override
@@ -75,7 +75,7 @@ public class ByteBuddyProxyFactory implements IProxyFactory
Class<T> proxyClass = createOrGetProxyClass(type);
T instance;
-
+
if (!hasNoArgConstructor(type))
{
instance = INSTANTIATOR.newInstance(proxyClass);
@@ -91,10 +91,10 @@ public class ByteBuddyProxyFactory implements IProxyFactory
throw new WicketRuntimeException(e);
}
}
-
+
ByteBuddyInterceptor interceptor = new ByteBuddyInterceptor(type, locator);
((InterceptorMutator) instance).setInterceptor(interceptor);
-
+
return instance;
}
@@ -106,7 +106,7 @@ public class ByteBuddyProxyFactory implements IProxyFactory
new TypeCache.SimpleKey(type),
() -> BYTE_BUDDY
.subclass(type)
- .method(ElementMatchers.isPublic())
+ .method(ElementMatchers.isPublic().or(ElementMatchers.isPackagePrivate()))
.intercept(
MethodDelegation
.withDefaultConfiguration()
diff --git a/wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateConcreteObject.java b/wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateConcreteObject.java
index bc27e03cc6..4fd63cb4fe 100644
--- a/wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateConcreteObject.java
+++ b/wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateConcreteObject.java
@@ -51,4 +51,11 @@ class PackagePrivateConcreteObject
return message;
}
+ /**
+ * @return message
+ */
+ String internalGetMessage()
+ {
+ return message;
+ }
}
diff --git a/wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateTest.java b/wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateTest.java
index 69dec9b364..948352ef75 100644
--- a/wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateTest.java
+++ b/wicket-ioc/src/test/java/org/apache/wicket/proxy/packageprivate/PackagePrivateTest.java
@@ -34,9 +34,9 @@ import org.junit.jupiter.api.Test;
/**
* Tests lazy init proxy factory
- *
+ *
* @author Igor Vaynberg (ivaynberg)
- *
+ *
*/
class PackagePrivateTest
{
@@ -74,6 +74,9 @@ class PackagePrivateTest
// test method invocation
assertEquals("package-private-concrete", proxy.getMessage());
+ // test method invocation
+ assertEquals("package-private-concrete", proxy.internalGetMessage());
+
// test serialization
PackagePrivateConcreteObject proxy2 = WicketObjects.cloneObject(proxy);
assertNotSame(proxy, proxy2);
diff --git a/wicket-ioc/src/test/java/org/apache/wicket/proxy/util/ConcreteObject.java b/wicket-ioc/src/test/java/org/apache/wicket/proxy/util/ConcreteObject.java
index cb45c4797f..9288cceeaf 100644
--- a/wicket-ioc/src/test/java/org/apache/wicket/proxy/util/ConcreteObject.java
+++ b/wicket-ioc/src/test/java/org/apache/wicket/proxy/util/ConcreteObject.java
@@ -18,9 +18,9 @@ package org.apache.wicket.proxy.util;
/**
* Mock dependency that does not implement an interface
- *
+ *
* @author Igor Vaynberg (ivaynberg)
- *
+ *
*/
public class ConcreteObject
{
@@ -36,7 +36,7 @@ public class ConcreteObject
/**
* Constructor
- *
+ *
* @param message
*/
public ConcreteObject(final String message)