/*
* Javassist, a Java-bytecode translator toolkit.
* Copyright (C) 1999-2005 Shigeru Chiba. All Rights Reserved.
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. Alternatively, the contents of this file may be used under
* the terms of the GNU Lesser General Public License Version 2.1 or later.
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*/
package sample.preproc;
import javassist.CtClass;
import javassist.CannotCompileException;
import javassist.ClassPool;
/**
* This is an interface for objects invoked by the
* Javassist preprocessor when the preprocessor encounters an annotated
* import declaration.
*
* @see sample.preproc.Compiler
*/
public interface Assistant {
/**
* Is called when the Javassist preprocessor encounters an
* import declaration annotated with the "by" keyword.
*
* <p>The original import declaration is replaced with new import
* declarations of classes returned by this method. For example,
* the following implementation does not change the original
* declaration:
*
* <ul><pre>
* public CtClass[] assist(ClassPool cp, String importname, String[] args) {
* return new CtClass[] { cp.get(importname) };
* }
* </pre></uL>
*
* @param cp class pool
* @param importname the class imported by the declaration
* @param args the parameters specified by the annotation
* @return the classes imported in the java source
* program produced by the preprocessor.
*/
public CtClass[] assist(ClassPool cp, String importname,
String[] args) throws CannotCompileException;
}