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 }