[WICKET-7025] package private methods are intercepted by ByteBuddy (#552)
[WICKET-7025] package private methods are intercepted by ByteBuddy, tests were added
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 4d53be2..9cc5cf4 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 @@
/**
* 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 @@
Class<T> proxyClass = createOrGetProxyClass(type);
T instance;
-
+
if (!hasNoArgConstructor(type))
{
instance = INSTANTIATOR.newInstance(proxyClass);
@@ -91,10 +91,10 @@
throw new WicketRuntimeException(e);
}
}
-
+
ByteBuddyInterceptor interceptor = new ByteBuddyInterceptor(type, locator);
((InterceptorMutator) instance).setInterceptor(interceptor);
-
+
return instance;
}
@@ -106,7 +106,7 @@
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 bc27e03..4fd63cb 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 @@
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 69dec9b..948352e 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 @@
/**
* Tests lazy init proxy factory
- *
+ *
* @author Igor Vaynberg (ivaynberg)
- *
+ *
*/
class PackagePrivateTest
{
@@ -74,6 +74,9 @@
// 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 cb45c47..9288cce 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 @@
/**
* Mock dependency that does not implement an interface
- *
+ *
* @author Igor Vaynberg (ivaynberg)
- *
+ *
*/
public class ConcreteObject
{
@@ -36,7 +36,7 @@
/**
* Constructor
- *
+ *
* @param message
*/
public ConcreteObject(final String message)