org.apache.ibatis.javassist.ClassClassPath Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mybatis Show documentation
Show all versions of mybatis Show documentation
The MyBatis SQL mapper framework makes it easier to use a relational database with object-oriented
applications. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or
annotations. Simplicity is the biggest advantage of the MyBatis data mapper over object relational mapping
tools.
The newest version!
/*
* Javassist, a Java-bytecode translator toolkit.
* Copyright (C) 1999- 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,
* or the Apache License Version 2.0.
*
* 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 org.apache.ibatis.javassist;
import java.io.InputStream;
import java.net.URL;
/**
* A search-path for obtaining a class file
* by getResourceAsStream()
in java.lang.Class
.
*
* Try adding a ClassClassPath
when a program is running
* with a user-defined class loader and any class files are not found with
* the default ClassPool
. For example,
*
*
* ClassPool cp = ClassPool.getDefault();
* cp.insertClassPath(new ClassClassPath(this.getClass()));
*
*
* This code snippet permanently adds a ClassClassPath
* to the default ClassPool
. Note that the default
* ClassPool
is a singleton. The added
* ClassClassPath
uses a class object representing
* the class including the code snippet above.
*
* Class files in a named module are private to that module.
* This method cannot obtain class files in named modules.
*
*
* @see ClassPool#insertClassPath(ClassPath)
* @see ClassPool#appendClassPath(ClassPath)
* @see LoaderClassPath
*/
public class ClassClassPath implements ClassPath {
private Class> thisClass;
/** Creates a search path.
*
* @param c the Class
object used to obtain a class
* file. getResourceAsStream()
is called on
* this object.
*/
public ClassClassPath(Class> c) {
thisClass = c;
}
ClassClassPath() {
/* The value of thisClass was this.getClass() in early versions:
*
* thisClass = this.getClass();
*
* However, this made openClassfile() not search all the system
* class paths if javassist.jar is put in jre/lib/ext/
* (with JDK1.4).
*/
this(java.lang.Object.class);
}
/**
* Obtains a class file by getResourceAsStream()
.
*/
@Override
public InputStream openClassfile(String classname) throws NotFoundException {
String filename = '/' + classname.replace('.', '/') + ".class";
return thisClass.getResourceAsStream(filename);
}
/**
* Obtains the URL of the specified class file.
*
* @return null if the class file could not be found.
*/
@Override
public URL find(String classname) {
String filename = '/' + classname.replace('.', '/') + ".class";
return thisClass.getResource(filename);
}
@Override
public String toString() {
return thisClass.getName() + ".class";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy