org.broadleafcommerce.common.extensibility.jpa.copy
Class DirectCopyClassTransformer
java.lang.Object
org.broadleafcommerce.common.extensibility.jpa.copy.DirectCopyClassTransformer
- All Implemented Interfaces:
- javax.persistence.spi.ClassTransformer, BroadleafClassTransformer
public class DirectCopyClassTransformer
- extends Object
- implements BroadleafClassTransformer
This class transformer will copy fields, methods, and interface definitions from a source class to a target class,
based on the xformTemplates map. It will fail if it encounters any duplicate definitions.
- Author:
- Andre Azzolini (apazzolini), Jeff Fischer
|
Method Summary |
protected void |
buildClassLevelAnnotations(javassist.bytecode.ClassFile classFile,
javassist.bytecode.ClassFile templateClassFile,
javassist.bytecode.ConstPool constantPool)
|
void |
compileJPAProperties(Properties props,
Object key)
|
protected javassist.bytecode.annotation.Annotation |
getEntityListeners(javassist.bytecode.ConstPool constantPool,
javassist.bytecode.annotation.Annotation existingEntityListeners,
javassist.bytecode.annotation.Annotation templateEntityListeners)
|
List<String> |
getIgnorePatterns()
|
protected String |
getImplementationType(String className)
This method will do its best to return an implementation type for a given classname. |
Boolean |
getRenameMethodOverlaps()
|
String |
getRenameMethodPrefix()
|
Boolean |
getSkipOverlaps()
|
Map<String,String> |
getTemplateTokens()
|
Map<String,String> |
getXformTemplates()
|
protected String |
methodDescription(javassist.CtMethod method)
|
void |
setIgnorePatterns(List<String> ignorePatterns)
|
void |
setRenameMethodOverlaps(Boolean renameMethodOverlaps)
|
void |
setRenameMethodPrefix(String renameMethodPrefix)
|
void |
setSkipOverlaps(Boolean skipOverlaps)
|
void |
setTemplateTokens(Map<String,String> templateTokens)
|
void |
setXformTemplates(Map<String,String> xformTemplates)
|
byte[] |
transform(ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
transformedMethods
protected static List<String> transformedMethods
annotationTransformedClasses
protected static List<String> annotationTransformedClasses
logger
protected SupportLogger logger
moduleName
protected String moduleName
xformTemplates
protected Map<String,String> xformTemplates
renameMethodOverlaps
protected Boolean renameMethodOverlaps
renameMethodPrefix
protected String renameMethodPrefix
skipOverlaps
protected Boolean skipOverlaps
templateTokens
protected Map<String,String> templateTokens
ignorePatterns
protected List<String> ignorePatterns
DirectCopyClassTransformer
public DirectCopyClassTransformer(String moduleName)
compileJPAProperties
public void compileJPAProperties(Properties props,
Object key)
throws Exception
- Specified by:
compileJPAProperties in interface BroadleafClassTransformer
- Throws:
Exception
transform
public byte[] transform(ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer)
throws IllegalClassFormatException
- Specified by:
transform in interface javax.persistence.spi.ClassTransformer
- Throws:
IllegalClassFormatException
buildClassLevelAnnotations
protected void buildClassLevelAnnotations(javassist.bytecode.ClassFile classFile,
javassist.bytecode.ClassFile templateClassFile,
javassist.bytecode.ConstPool constantPool)
throws javassist.NotFoundException
- Throws:
javassist.NotFoundException
getEntityListeners
protected javassist.bytecode.annotation.Annotation getEntityListeners(javassist.bytecode.ConstPool constantPool,
javassist.bytecode.annotation.Annotation existingEntityListeners,
javassist.bytecode.annotation.Annotation templateEntityListeners)
getImplementationType
protected String getImplementationType(String className)
- This method will do its best to return an implementation type for a given classname. This will allow weaving
template classes to have initialized values.
We provide default implementations for List, Map, and Set, and will attempt to utilize a default constructor for
other classes.
If the className contains an '[', we will return null.
methodDescription
protected String methodDescription(javassist.CtMethod method)
getXformTemplates
public Map<String,String> getXformTemplates()
setXformTemplates
public void setXformTemplates(Map<String,String> xformTemplates)
getRenameMethodOverlaps
public Boolean getRenameMethodOverlaps()
setRenameMethodOverlaps
public void setRenameMethodOverlaps(Boolean renameMethodOverlaps)
getRenameMethodPrefix
public String getRenameMethodPrefix()
setRenameMethodPrefix
public void setRenameMethodPrefix(String renameMethodPrefix)
getSkipOverlaps
public Boolean getSkipOverlaps()
setSkipOverlaps
public void setSkipOverlaps(Boolean skipOverlaps)
getTemplateTokens
public Map<String,String> getTemplateTokens()
setTemplateTokens
public void setTemplateTokens(Map<String,String> templateTokens)
getIgnorePatterns
public List<String> getIgnorePatterns()
setIgnorePatterns
public void setIgnorePatterns(List<String> ignorePatterns)
Copyright © 2013. All Rights Reserved.