?? classpreverifier.java
字號(hào):
/**
* Copyright (c) 2003-2004 Craig Setera
* All Rights Reserved.
* Licensed under the Eclipse Public License - v 1.0
* For more information see http://www.eclipse.org/legal/epl-v10.html
*/
package eclipseme.preverifier;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.List;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import eclipseme.preverifier.internal.PreverificationClassNode;
import eclipseme.preverifier.results.PreverificationError;
import eclipseme.preverifier.results.PreverificationResults;
/**
* A class preverifier implementation
* <p />
* Copyright (c) 2003-2004 Craig Setera<br>
* All Rights Reserved.<br>
* Licensed under the Eclipse Public License - v 1.0<p/>
* <br>
* $Revision: 1.2 $
* <br>
* $Date: 2005/09/27 02:02:24 $
* <br>
* @author Craig Setera
*/
public class ClassPreverifier {
private IPreverificationPolicy preverificationPolicy;
/**
* Construct a new preverifier that uses the specified
* policy during preverification processing.
*
* @param preverificationPolicy
*/
public ClassPreverifier(IPreverificationPolicy preverificationPolicy) {
this.preverificationPolicy = preverificationPolicy;
}
/**
* Preverify the specified class file.
*
* @param classStream
* @param classloader
* @return
* @throws IOException
*/
public PreverificationResults preverify(InputStream classStream, URL[] classpath)
throws IOException
{
ClassLoader classLoader =
new URLClassLoader(classpath, Thread.currentThread().getContextClassLoader());
return preverify(classStream, classLoader);
}
/**
* Preverify the specified class file.
*
* @param classStream
* @param classloader
* @return
* @throws IOException
*/
public PreverificationResults preverify(InputStream classStream, ClassLoader classloader)
throws IOException
{
if (classStream == null) {
throw new IllegalArgumentException("Class byte stream must not be null");
}
PreverificationClassNode classNode =
new PreverificationClassNode(preverificationPolicy, classloader);
// Do the visitation
ClassReader classReader = new ClassReader(classStream);
classReader.accept(classNode, false);
classStream.close();
// Collect the errors
List errorList = classNode.getErrorList();
PreverificationError[] errorArray =
(PreverificationError[]) errorList.toArray(new PreverificationError[errorList.size()]);
// Generate the results object
PreverificationResults results = null;
if (errorArray.length > 0) {
results = new PreverificationResults(null, null, errorArray);
} else {
// The preverification writer does the real work
ClassWriter classWriter = new ClassWriter(false);
classNode.accept(classWriter);
byte[] bytecode = classWriter.toByteArray();
results = new PreverificationResults(classNode, bytecode, errorArray);
}
return results;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -