jodd.proxetta.asm
Class ClassProcessor

java.lang.Object
  extended by jodd.proxetta.asm.ClassProcessor
Direct Known Subclasses:
InvokeCreator, ProxettaCreator

public abstract class ClassProcessor
extends java.lang.Object

Base class processor.


Field Summary
protected  java.lang.String classNameSuffix
           
protected  org.objectweb.asm.ClassWriter destClassWriter
           
protected  boolean proxyApplied
           
protected  java.lang.String proxyClassName
           
protected static int suffixCounter
          Number appended to proxy class name, incremented on each use to make classnames unique in the system (e.g. classloader).
protected  boolean useSuffix
           
 
Constructor Summary
ClassProcessor()
           
 
Method Summary
protected  ClassProcessor accept(org.objectweb.asm.ClassReader cr, java.lang.String reqProxyClassName)
          Single point of class reader acceptance.
 ClassProcessor accept(java.lang.Class target, java.lang.String reqProxyClassName)
           
 ClassProcessor accept(java.io.InputStream in, java.lang.String reqProxyClassName)
           
 ClassProcessor accept(java.lang.String targetName, java.lang.String reqProxyClassName)
           
protected  void checkAccepted()
          Checks if proxy is created and throws an exception if not.
protected  java.lang.String classNameSuffix()
          Returns new suffix or null if suffix is not in use.
 java.lang.String getProxyClassName()
          Returns proxy class name.
 boolean isProxyApplied()
          Returns true if at least one method was wrapped.
protected abstract  jodd.proxetta.asm.WorkData process(org.objectweb.asm.ClassReader cr, java.lang.String reqProxyClassName, TargetClassInfoReader targetClassInfoReader)
          Creates custom class builder and process the target class with it.
 void setClassNameSuffix(java.lang.String classNameSuffix)
          Specifies class name suffix for created class.
 void setUseVariableClassName(boolean useVariableClassName)
          Specifies class name will vary on each creation.
 byte[] toByteArray()
          Returns raw bytecode.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

suffixCounter

protected static int suffixCounter
Number appended to proxy class name, incremented on each use to make classnames unique in the system (e.g. classloader).

See Also:
setUseVariableClassName(boolean)

useSuffix

protected boolean useSuffix

classNameSuffix

protected java.lang.String classNameSuffix

destClassWriter

protected org.objectweb.asm.ClassWriter destClassWriter

proxyApplied

protected boolean proxyApplied

proxyClassName

protected java.lang.String proxyClassName
Constructor Detail

ClassProcessor

public ClassProcessor()
Method Detail

setUseVariableClassName

public void setUseVariableClassName(boolean useVariableClassName)
Specifies class name will vary on each creation. This prevents java.lang.LinkageError: duplicate class definition.


setClassNameSuffix

public void setClassNameSuffix(java.lang.String classNameSuffix)
Specifies class name suffix for created class. If set to null suffix is not used.


classNameSuffix

protected java.lang.String classNameSuffix()
Returns new suffix or null if suffix is not in use.


process

protected abstract jodd.proxetta.asm.WorkData process(org.objectweb.asm.ClassReader cr,
                                                      java.lang.String reqProxyClassName,
                                                      TargetClassInfoReader targetClassInfoReader)
Creates custom class builder and process the target class with it.


accept

protected ClassProcessor accept(org.objectweb.asm.ClassReader cr,
                                java.lang.String reqProxyClassName)
Single point of class reader acceptance. Reads the target and creates destination class.


accept

public ClassProcessor accept(java.io.InputStream in,
                             java.lang.String reqProxyClassName)

accept

public ClassProcessor accept(java.lang.String targetName,
                             java.lang.String reqProxyClassName)

accept

public ClassProcessor accept(java.lang.Class target,
                             java.lang.String reqProxyClassName)

checkAccepted

protected void checkAccepted()
Checks if proxy is created and throws an exception if not.


toByteArray

public byte[] toByteArray()
Returns raw bytecode.


isProxyApplied

public boolean isProxyApplied()
Returns true if at least one method was wrapped.


getProxyClassName

public java.lang.String getProxyClassName()
Returns proxy class name.



Copyright © 2003-2011 Jodd Team