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)