sofya.mutator.verifier
Class JustIceVerifier

java.lang.Object
  extended by sofya.mutator.verifier.JustIceVerifier
All Implemented Interfaces:
Verifier

public final class JustIceVerifier
extends java.lang.Object
implements Verifier

Wrapper for BCEL's JustIce verifier.

This verifier has significant limitations. It is incomplete, and thus will report verification failures on classes generated by the Sun compiler, a behavior that has been observed so far on pass 3a. It also does not report verification failures in a manner easily handled programmatically, though it does produce understandable messages. Finally, it cannot report the pass on which verification failed if it is a verification pass that precedes the requested pass.

Version:
06/09/2006
Author:
Alex Kinneer

Nested Class Summary
 
Nested classes/interfaces inherited from interface sofya.mutator.verifier.Verifier
Verifier.Pass
 
Constructor Summary
JustIceVerifier()
           
 
Method Summary
 void loadClass(org.apache.bcel.classfile.JavaClass clazz)
          Loads a class, overriding any existing definition of the class.
 void loadClass(java.lang.String className, byte[] classBytes)
          Loads a class, overriding any existing definition of the class.
 VerificationResult verify(java.lang.String className, java.lang.String methodName, java.lang.String signature, Verifier.Pass level)
          Verifies a method.
 VerificationResult verify(java.lang.String className, Verifier.Pass level)
          Verifies a class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JustIceVerifier

public JustIceVerifier()
Method Detail

loadClass

public void loadClass(org.apache.bcel.classfile.JavaClass clazz)
Description copied from interface: Verifier
Loads a class, overriding any existing definition of the class.

This method is used to instruct the verifier to load the mutated bytecode of the class to be verified. The verifier should therefore ensure that no subsequent requests to verify the given class will operate on any cached version of the class.

Specified by:
loadClass in interface Verifier
Parameters:
clazz - BCEL representation of the class to be loaded.

loadClass

public void loadClass(java.lang.String className,
                      byte[] classBytes)
               throws VerifierException
Description copied from interface: Verifier
Loads a class, overriding any existing definition of the class.

This method is used to instruct the verifier to load the mutated bytecode of the class to be verified. The verifier should therefore ensure that no subsequent requests to verify the given class will operate on any cached version of the class.

Specified by:
loadClass in interface Verifier
Parameters:
className - Name of the class to be loaded.
classBytes - The bytes comprising the class to be loaded.
Throws:
VerifierException - If an error prevents the class from being loaded.

verify

public VerificationResult verify(java.lang.String className,
                                 java.lang.String methodName,
                                 java.lang.String signature,
                                 Verifier.Pass level)
                          throws VerifierException
Description copied from interface: Verifier
Verifies a method.

Specified by:
verify in interface Verifier
Parameters:
className - Name of the class implementing the method to be verified.
methodName - Name of the method to be verified.
signature - Signature of the method to be verified.
level - Verification pass to be applied. Only passes 3a and 3b will actually verify the specific method.
Returns:
A verification result, containing information about the cause of failure if the method did not verify.
Throws:
VerifierException - If the verifier is unable to execute on the method for any reason, such as if requested method cannot be found in the given class.

verify

public VerificationResult verify(java.lang.String className,
                                 Verifier.Pass level)
                          throws VerifierException
Description copied from interface: Verifier
Verifies a class.

Specified by:
verify in interface Verifier
Parameters:
className - Name of the class to be verified.
level - Verification pass to be applied. When chosen, passes 3a and 3b will be applied to every method in the class.
Returns:
A verification result, containing information about the cause of failure if the class did not verify.
Throws:
VerifierException - If the verifier is unable to execute on the class for any reason.