This is an automated email from the ASF dual-hosted git repository.
solomax 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 cbec2da76e [WICKET-7025] package private methods are intercepted by
ByteBuddy (#552)
cbec2da76e is described below
commit cbec2da76e2aafb4ed62be2b94522441598ffaa7
Author: Maxim Solodovnik <[email protected]>
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 e11dc581c1..d85464bcbe 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 e36c269667..3650ef3d17 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)