com.advancedpwr.record
Class BeanRecorder

java.lang.Object
  extended by com.advancedpwr.record.ClassWriter
      extended by com.advancedpwr.record.AbstractRecorder
          extended by com.advancedpwr.record.BeanRecorder
All Implemented Interfaces:
ObjectRecorder
Direct Known Subclasses:
MockBeanRecorder, MockBehaviorRecorder

public class BeanRecorder
extends AbstractRecorder

An ObjectRecorder that records the state of an object tree as a Java class file. This recorder uses reflection to inspect an object tree for Java Bean style setter / getter accessor methods, therefore it is only capable of reconstructing an object tree through that convention. Many web service return data structures adhere to the Java Bean accessor convention, so this class may be of use in recording a web service response for use in unit testing.

Recording example:

        Person person = new Person();
        person.setName( "Jim" );
        Person dad = new Person();
        dad.setName( "John" );
        person.setDad( dad );

        BeanRecorder recorder = new BeanRecorder();
        recorder.setDestination( "recordings" );
        recorder.record( person );
 

The above example will record the object tree of the "person" instance as a Java class:

        public class PersonFactory
        {

                protected Person person;

                public Person buildPerson()
                {
                        person = new Person();
                        person.setDad( buildPerson_1_1() );
                        person.setName( "Jim" );
                        return person;
                }

                protected Person person_1_1;

                protected Person buildPerson_1_1()
                {
                        dad_1_1 = new Person();
                        dad_1_1.setName( "John" );
                        return person_1_1;
                }

        }
 

To reconstruct the instance of "person" in a unit test:

        Person person = new PersonFactory().buildPerson();
 

The BeanRecorder is "instance aware" and supports Collection and Map objects.

Author:
Matthew Avery, mavery@advancedpwr.com on Jun 22, 2010

Field Summary
protected  MethodBuilderFactory fieldFactoryBuilder
           
protected  InstanceTree fieldInstanceTree
           
protected  Set<Class> fieldStopClasses
           
 
Fields inherited from class com.advancedpwr.record.AbstractRecorder
fieldDestinationDirectory, fieldJavaFileWriter
 
Fields inherited from class com.advancedpwr.record.ClassWriter
CLASS, fieldDescriptor, fieldObject, fieldPrintWriter, fieldSuperClass, IMPORT, PACKAGE, PRIVATE, PROTECTED, PUBLIC, SPACE, tabDepth
 
Constructor Summary
BeanRecorder()
           
 
Method Summary
 void addBuilderFactory(MethodWriterFactory inFactory)
           
protected  Set<Class> classes()
           
protected  void closeFile()
           
protected  InstanceTree createInstanceTree(Object object)
           
protected  BuildMethodWriter createMethodBuilder(AccessPath result)
           
protected  MethodBuilderFactory createMethodBuilderFactory()
           
protected  MethodBuilderFactory getFactoryBuilder()
           
protected  InstanceTree getInstanceTree()
           
protected  Object getObject()
           
 PrintWriter getPrintWriter()
           
 Set getStopClasses()
           
<T> T
record(T inObject)
           
protected  void setObject(Object object)
           
 void stopDescent(Class inClass)
           
protected  void writeObjectBuilderMethod()
           
 
Methods inherited from class com.advancedpwr.record.AbstractRecorder
close, createDefaultDescriptor, createFileWriter, getDestination, getJavaFileWriter, javaFile, objectClass, packagePath, parentDirectory, setDestination, setDestination
 
Methods inherited from class com.advancedpwr.record.ClassWriter
closeBrace, extendClass, getClassName, getDescriptor, getPackageName, getSuperClass, newLine, openBrace, packageName, setClassName, setDescriptor, setSuperClass, setWriter, tab, tabs, write, writeClassDeclaration, writeImports, writeLine, writeObject, writePackage
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fieldInstanceTree

protected InstanceTree fieldInstanceTree

fieldFactoryBuilder

protected MethodBuilderFactory fieldFactoryBuilder

fieldStopClasses

protected Set<Class> fieldStopClasses
Constructor Detail

BeanRecorder

public BeanRecorder()
Method Detail

setObject

protected void setObject(Object object)
Overrides:
setObject in class ClassWriter

createInstanceTree

protected InstanceTree createInstanceTree(Object object)

record

public <T> T record(T inObject)

closeFile

protected void closeFile()

writeObjectBuilderMethod

protected void writeObjectBuilderMethod()
Specified by:
writeObjectBuilderMethod in class ClassWriter

createMethodBuilder

protected BuildMethodWriter createMethodBuilder(AccessPath result)

getObject

protected Object getObject()
Overrides:
getObject in class ClassWriter

getInstanceTree

protected InstanceTree getInstanceTree()

classes

protected Set<Class> classes()
Specified by:
classes in class ClassWriter

getFactoryBuilder

protected MethodBuilderFactory getFactoryBuilder()

createMethodBuilderFactory

protected MethodBuilderFactory createMethodBuilderFactory()

addBuilderFactory

public void addBuilderFactory(MethodWriterFactory inFactory)

getPrintWriter

public PrintWriter getPrintWriter()
Overrides:
getPrintWriter in class ClassWriter

stopDescent

public void stopDescent(Class inClass)

getStopClasses

public Set getStopClasses()


Copyright © 2011 Advanced Power Co. All Rights Reserved.