001 package org.shiftone.jrat.jvmti;
002
003 import org.shiftone.jrat.util.log.Logger;
004
005 import java.lang.instrument.ClassFileTransformer;
006 import java.lang.instrument.IllegalClassFormatException;
007 import java.security.ProtectionDomain;
008
009 /**
010 * @author jeff@shiftone.org (Jeff Drost)
011 */
012 public class TryCatchClassFileTransformer implements ClassFileTransformer {
013
014 private static final Logger LOG = Logger.getLogger(TryCatchClassFileTransformer.class);
015 private final ClassFileTransformer transformer;
016
017 public TryCatchClassFileTransformer(ClassFileTransformer transform) {
018 this.transformer = transform;
019 }
020
021 public byte[] transform(
022 ClassLoader loader,
023 String className,
024 Class/*<?>*/ classBeingRedefined,
025 ProtectionDomain protectionDomain,
026 byte[] classfileBuffer) throws IllegalClassFormatException {
027
028 try {
029
030 return transformer.transform(
031 loader,
032 className,
033 classBeingRedefined,
034 protectionDomain,
035 classfileBuffer);
036
037 } catch (Exception e) {
038
039 LOG.error("failed to transform : " + className, e);
040 return classfileBuffer;
041
042 }
043 }
044
045
046 public String toString() {
047 return "TryCatchClassFileTransformer[" + transformer + "]";
048 }
049 }