001 package org.shiftone.jrat.inject.bytecode; 002 003 004 /** 005 * JRat can swap out bytecode manipulation libraries - each supported library 006 * must have a InjectorStrategy implementation. 007 * 008 * @author jeff@shiftone.org (Jeff Drost) 009 */ 010 public interface InjectorStrategy { 011 012 /** 013 * when a class is injected, a magic field is added that contains a comment. 014 * this field's existance tells the injector that "jrat was here". 015 */ 016 public static final String METHOD_POSTFIX = "_$jrat"; 017 public static final String HANDLER_PREFIX = "jrat$"; 018 public static final String COMMENT_FIELD_NAME = "$hiftOne_JRat_was_here"; 019 020 /** 021 * this method takes a byte array containing the data of a class, transforms 022 * the class, and returns a new byte array containing the data of a 023 * transformed / injected class. 024 */ 025 byte[] inject(byte[] inputClassData, TransformerOptions options) throws Exception; 026 }