1 16 17 package org.springframework.instrument.classloading.oc4j; 18 19 import oracle.classloader.util.ClassPreprocessor; 20 import org.springframework.util.Assert; 21 22 import java.lang.instrument.ClassFileTransformer ; 23 import java.lang.instrument.IllegalClassFormatException ; 24 import java.security.ProtectionDomain ; 25 26 36 class OC4JClassPreprocessorAdapter implements ClassPreprocessor { 37 38 private final ClassFileTransformer transformer; 39 40 41 46 public OC4JClassPreprocessorAdapter(ClassFileTransformer transformer) { 47 Assert.notNull(transformer, "Transformer must not be null"); 48 this.transformer = transformer; 49 } 50 51 52 public ClassPreprocessor initialize(ClassLoader loader) { 53 return this; 54 } 55 56 public byte[] processClass(String className, byte origClassBytes[], int offset, int length, ProtectionDomain pd, 57 ClassLoader loader) { 58 try { 59 byte[] tempArray = new byte[length]; 60 System.arraycopy(origClassBytes, offset, tempArray, 0, length); 61 62 byte[] result = this.transformer.transform(loader, className.replace('.', '/'), null, pd, tempArray); 65 return (result != null ? result : origClassBytes); 66 } 67 catch (IllegalClassFormatException ex) { 68 throw new IllegalStateException ("Cannot transform because of illegal class format", ex); 69 } 70 } 71 72 73 @Override 74 public String toString() { 75 StringBuilder builder = new StringBuilder (getClass().getName()); 76 builder.append(" for transformer: "); 77 builder.append(this.transformer); 78 return builder.toString(); 79 } 80 81 } 82 | Popular Tags |