org.bsf.smartValueObject.tools
Interface Instrumentor

All Known Implementing Classes:
ASMInstrumentor, JavaAssistInstrumentor

public interface Instrumentor

Minimal set of methods for instrumenting classes.

A Class implementing instrumentor is seen as a "black-box" which makes passed in classes versionable and hands out the bytecode needed.

The general idea is to be independent of the underlying implementation.


Nested Class Summary
static class Instrumentor.SmartReplacements
           
 
Field Summary
static java.lang.String CLEANMETHOD
          Method to clean flags.
static java.lang.String CREATEDMETHOD
          To verify if object has newly created.
static java.lang.String CREATEMETHOD
          Mark object as freshly created.
static java.lang.String DELETEDMETHOD
          To verify if object is marked for deletion.
static java.lang.String DELETEMETHOD
          Mark object for deletion.
static java.lang.String DIRTYMETHOD
          To verify is object has been altered.
static java.lang.String SMARTCOLLECTION
          A replacement for java.util.Collection.
static java.util.Properties SMARTCONTAINERS
          A map containing container classes and their smart replacements.
static java.lang.String SMARTLIST
          A replacement for java.util.List.
static java.lang.String SMARTMAP
          A replacement for java.util.Map.
static java.lang.String SMARTSET
          A replacement for java.util.Set.
static java.lang.String VERSIONCLASS
          Default implementation for VERSIONINTERFACE.
static java.lang.String VERSIONFIELD
          Name of the field in versionable classes.
static java.lang.String VERSIONHELPER
          The helper class used by instrumentors + TOs (on runtime)
static java.lang.String VERSIONINTERFACE
          Interface to be used for versionable objects.
static java.lang.String VERSIONMETHOD
          Method to call upon field write access.
 
Method Summary
 java.lang.Class defineClass()
          Use internal classloader to build class object.
 byte[] getBytecode()
          Get modified class as byte array.
 void modifyClass(java.lang.String name)
          Modifies this class.
 void modifyClass(java.lang.String basedir, java.lang.String file)
           
 

Field Detail

VERSIONINTERFACE

public static final java.lang.String VERSIONINTERFACE
Interface to be used for versionable objects.

See Also:
Constant Field Values

VERSIONCLASS

public static final java.lang.String VERSIONCLASS
Default implementation for VERSIONINTERFACE.

See Also:
Constant Field Values

VERSIONHELPER

public static final java.lang.String VERSIONHELPER
The helper class used by instrumentors + TOs (on runtime)

See Also:
Constant Field Values

VERSIONFIELD

public static final java.lang.String VERSIONFIELD
Name of the field in versionable classes.

See Also:
Constant Field Values

VERSIONMETHOD

public static final java.lang.String VERSIONMETHOD
Method to call upon field write access.

See Also:
Constant Field Values

DIRTYMETHOD

public static final java.lang.String DIRTYMETHOD
To verify is object has been altered.

See Also:
Constant Field Values

CLEANMETHOD

public static final java.lang.String CLEANMETHOD
Method to clean flags.

See Also:
Constant Field Values

DELETEDMETHOD

public static final java.lang.String DELETEDMETHOD
To verify if object is marked for deletion.

See Also:
Constant Field Values

CREATEDMETHOD

public static final java.lang.String CREATEDMETHOD
To verify if object has newly created.

See Also:
Constant Field Values

DELETEMETHOD

public static final java.lang.String DELETEMETHOD
Mark object for deletion.

See Also:
Constant Field Values

CREATEMETHOD

public static final java.lang.String CREATEMETHOD
Mark object as freshly created.

See Also:
Constant Field Values

SMARTCOLLECTION

public static final java.lang.String SMARTCOLLECTION
A replacement for java.util.Collection.

See Also:
Constant Field Values

SMARTMAP

public static final java.lang.String SMARTMAP
A replacement for java.util.Map.

See Also:
Constant Field Values

SMARTLIST

public static final java.lang.String SMARTLIST
A replacement for java.util.List.

See Also:
Constant Field Values

SMARTSET

public static final java.lang.String SMARTSET
A replacement for java.util.Set.

See Also:
Constant Field Values

SMARTCONTAINERS

public static final java.util.Properties SMARTCONTAINERS
A map containing container classes and their smart replacements.

Method Detail

modifyClass

public void modifyClass(java.lang.String name)
                 throws InstrumentorException
Modifies this class.

Parameters:
name - class to modify, package notation or filename.
Throws:
InstrumentorException - in case of errors

modifyClass

public void modifyClass(java.lang.String basedir,
                        java.lang.String file)
                 throws InstrumentorException
InstrumentorException

getBytecode

public byte[] getBytecode()
                   throws InstrumentorException
Get modified class as byte array.

Returns:
versionable class as bytecode.
Throws:
InstrumentorException

defineClass

public java.lang.Class defineClass()
Use internal classloader to build class object.

Exists rather for testing purposes, as classes won't be compatible !

Returns:
Versionable class.