Browse Source

avoid NPE if runtimeTest is null (SPR-7032)

pull/23217/head
Juergen Hoeller 15 years ago
parent
commit
10c358718e
  1. 18
      org.springframework.aop/src/main/java/org/springframework/aop/aspectj/RuntimeTestWalker.java

18
org.springframework.aop/src/main/java/org/springframework/aop/aspectj/RuntimeTestWalker.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2008 the original author or authors. * Copyright 2002-2010 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -73,7 +73,7 @@ class RuntimeTestWalker {
catch (IllegalAccessException illegalAccessEx) { catch (IllegalAccessException illegalAccessEx) {
// Famous last words... but I don't see how this can happen given the // Famous last words... but I don't see how this can happen given the
// makeAccessible call above // makeAccessible call above
throw new IllegalStateException("Unable to access ShadowMatchImpl.runtimeTest field."); throw new IllegalStateException("Unable to access ShadowMatchImpl.residualTest field");
} }
} }
@ -83,15 +83,18 @@ class RuntimeTestWalker {
* then it tests subtype sensitive vars. * then it tests subtype sensitive vars.
*/ */
public boolean testsSubtypeSensitiveVars() { public boolean testsSubtypeSensitiveVars() {
return new SubtypeSensitiveVarTypeTestVisitor().testsSubtypeSensitiveVars(this.runtimeTest); return (this.runtimeTest != null &&
new SubtypeSensitiveVarTypeTestVisitor().testsSubtypeSensitiveVars(this.runtimeTest));
} }
public boolean testThisInstanceOfResidue(Class thisClass) { public boolean testThisInstanceOfResidue(Class thisClass) {
return new ThisInstanceOfResidueTestVisitor(thisClass).thisInstanceOfMatches(this.runtimeTest); return (this.runtimeTest != null &&
new ThisInstanceOfResidueTestVisitor(thisClass).thisInstanceOfMatches(this.runtimeTest));
} }
public boolean testTargetInstanceOfResidue(Class targetClass) { public boolean testTargetInstanceOfResidue(Class targetClass) {
return new TargetInstanceOfResidueTestVisitor(targetClass).targetInstanceOfMatches(this.runtimeTest); return (this.runtimeTest != null &&
new TargetInstanceOfResidueTestVisitor(targetClass).targetInstanceOfMatches(this.runtimeTest));
} }
@ -139,8 +142,7 @@ class RuntimeTestWalker {
try { try {
Field varTypeField = ReflectionVar.class.getDeclaredField("varType"); Field varTypeField = ReflectionVar.class.getDeclaredField("varType");
ReflectionUtils.makeAccessible(varTypeField); ReflectionUtils.makeAccessible(varTypeField);
Integer varTypeValue = (Integer) varTypeField.get(v); return (Integer) varTypeField.get(v);
return varTypeValue.intValue();
} }
catch (NoSuchFieldException noSuchFieldEx) { catch (NoSuchFieldException noSuchFieldEx) {
throw new IllegalStateException("the version of aspectjtools.jar / aspectjweaver.jar " + throw new IllegalStateException("the version of aspectjtools.jar / aspectjweaver.jar " +
@ -150,7 +152,7 @@ class RuntimeTestWalker {
catch (IllegalAccessException illegalAccessEx) { catch (IllegalAccessException illegalAccessEx) {
// Famous last words... but I don't see how this can happen given the // Famous last words... but I don't see how this can happen given the
// makeAccessible call above // makeAccessible call above
throw new IllegalStateException("Unable to access ReflectionVar.varType field."); throw new IllegalStateException("Unable to access ReflectionVar.varType field");
} }
} }
} }

Loading…
Cancel
Save