[jboss-cvs] JBossAS SVN: r86443 - projects/spring-int/trunk/weaving/src/main/java/org/jboss/instrument/classloading.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Mar 28 15:09:20 EDT 2009
Author: alesj
Date: 2009-03-28 15:09:19 -0400 (Sat, 28 Mar 2009)
New Revision: 86443
Modified:
projects/spring-int/trunk/weaving/src/main/java/org/jboss/instrument/classloading/JBoss5ClassLoader.java
Log:
Check result.
Modified: projects/spring-int/trunk/weaving/src/main/java/org/jboss/instrument/classloading/JBoss5ClassLoader.java
===================================================================
--- projects/spring-int/trunk/weaving/src/main/java/org/jboss/instrument/classloading/JBoss5ClassLoader.java 2009-03-28 18:38:15 UTC (rev 86442)
+++ projects/spring-int/trunk/weaving/src/main/java/org/jboss/instrument/classloading/JBoss5ClassLoader.java 2009-03-28 19:09:19 UTC (rev 86443)
@@ -59,7 +59,7 @@
try
{
Method getPolicy = getMethod(BaseClassLoader.class, "getPolicy");
- policy = (ClassLoaderPolicy)getPolicy.invoke(classLoader);
+ policy = invokeMethod(getPolicy, classLoader, ClassLoaderPolicy.class);
try
{
// let's check if we have a patched policy, with translator per policy
@@ -70,9 +70,9 @@
log.info("Policy doesn't have setTranslator, falling back to ClassLoaderSystem.");
Method getClassLoaderDomain = getMethod(BaseClassLoaderPolicy.class, "getClassLoaderDomain");
- BaseClassLoaderDomain domain = (BaseClassLoaderDomain)getClassLoaderDomain.invoke(policy);
+ BaseClassLoaderDomain domain = invokeMethod(getClassLoaderDomain, policy, BaseClassLoaderDomain.class);
Method getClassLoaderSystem = getMethod(BaseClassLoaderDomain.class, "getClassLoaderSystem");
- BaseClassLoaderSystem system = (BaseClassLoaderSystem)getClassLoaderSystem.invoke(domain);
+ BaseClassLoaderSystem system = invokeMethod(getClassLoaderSystem, domain, BaseClassLoaderSystem.class);
if (system instanceof ClassLoaderSystem)
{
this.system = ClassLoaderSystem.class.cast(system);
@@ -97,13 +97,32 @@
* @return declared method
* @throws Exception for any error
*/
- private Method getMethod(Class<?> clazz, String name) throws Exception
+ private static Method getMethod(Class<?> clazz, String name) throws Exception
{
Method method = clazz.getDeclaredMethod(name);
method.setAccessible(true);
return method;
}
+ /**
+ * Invoke method and check the result.
+ *
+ * @param method the method
+ * @param target the target
+ * @param expectedType the expected type
+ * @param <T> the exact type
+ * @return invocation's result
+ * @throws Exception for any error
+ */
+ private static <T> T invokeMethod(Method method, Object target, Class<T> expectedType) throws Exception
+ {
+ Object result = method.invoke(target);
+ if (expectedType.isInstance(result) == false)
+ throw new IllegalArgumentException("Returned result must be instance of [" + expectedType.getName() + "]");
+
+ return expectedType.cast(result);
+ }
+
public void addTransformer(ClassFileTransformer transformer)
{
Assert.notNull(transformer, "ClassFileTransformer must not be null");
More information about the jboss-cvs-commits
mailing list