org.seasar.framework.jpa.util
クラス TransformClassLoader

java.lang.Object
  上位を拡張 java.lang.ClassLoader
      上位を拡張 org.seasar.framework.jpa.util.AbstractClassLoader
          上位を拡張 org.seasar.framework.jpa.util.TransformClassLoader

public class TransformClassLoader
extends AbstractClassLoader

未ロードのクラスをトランスフォームし、トランスフォーム後のクラスのクラスを適切なクラスローダーにロードするクラスローダです。

作成者:
taedium

フィールドの概要
protected  PersistenceClassTransformer persistenceClassTransformer
          永続クラスのトランスフォーマ
protected  PersistenceUnitInfo persistenceUnitInfo
          永続ユニット情報
protected  java.util.List<ClassTransformer> transformers
          クラストランスフォーマのリスト
 
クラス org.seasar.framework.jpa.util.AbstractClassLoader から継承されたフィールド
includedNames
 
コンストラクタの概要
TransformClassLoader()
          インスタンスを構築します。
TransformClassLoader(java.lang.ClassLoader parent)
          インスタンスを構築します。
TransformClassLoader(java.lang.ClassLoader parent, java.util.Set<java.lang.String> includedNames)
          インスタンスを構築します。
 
メソッドの概要
 void addTransformer(ClassTransformer transformer)
          クラストランスフォーマを登録します。
protected  java.lang.Class<?> doDefineClass(java.lang.String className, byte[] bytes)
          クラスを定義します。
 void registerPersistenceClassTransformer(PersistenceClassTransformer persistenceClassTransformer)
          永続クラスのトランスフォーマを登録します。
 void registerPersistenceUnitInfo(PersistenceUnitInfo persistenceUnitInfo)
          永続ユニット情報を登録します。
 
クラス org.seasar.framework.jpa.util.AbstractClassLoader から継承されたメソッド
findClass, getSystemClass, isIncludedClass, loadClass, resolveClass
 
クラス java.lang.ClassLoader から継承されたメソッド
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

persistenceClassTransformer

protected PersistenceClassTransformer persistenceClassTransformer
永続クラスのトランスフォーマ


persistenceUnitInfo

protected PersistenceUnitInfo persistenceUnitInfo
永続ユニット情報


transformers

protected java.util.List<ClassTransformer> transformers
クラストランスフォーマのリスト

コンストラクタの詳細

TransformClassLoader

public TransformClassLoader()
インスタンスを構築します。

コンテキストクラスローダからロードされるクラス及び、java.またはjavax.で始まるクラスを除いて 親クラスローダに委譲せず、PersistenceClassTransformer.transform(PersistenceUnitInfo, String, byte[]) を呼び出してロードするように構成します。


TransformClassLoader

public TransformClassLoader(java.lang.ClassLoader parent)
インスタンスを構築します。

ブートストラップクラスローダからロードされるクラス及び、java.またはjavax.で始まるクラスを除いて 親クラスローダに委譲せず、PersistenceClassTransformer.transform(PersistenceUnitInfo, String, byte[]) を呼び出してロードするように構成します。

パラメータ:
parent - 親クラスローダ

TransformClassLoader

public TransformClassLoader(java.lang.ClassLoader parent,
                            java.util.Set<java.lang.String> includedNames)
インスタンスを構築します。

includedNamesに含まれる名前のクラスのみ、 親クラスローダに委譲せず、 PersistenceClassTransformer.transform(PersistenceUnitInfo, String, byte[])を呼び出してロードするように構成します。 ただし、ブートストラップクラスローダからロードされるクラス及び、 java.またはjavax.で始まるクラスを除きます。

パラメータ:
parent - 親クラスローダ
includedNames - 親より先にロードする対象となるクラス名のセット
メソッドの詳細

registerPersistenceClassTransformer

public void registerPersistenceClassTransformer(PersistenceClassTransformer persistenceClassTransformer)
永続クラスのトランスフォーマを登録します。

パラメータ:
persistenceClassTransformer - 永続クラスのトランスフォーマ

registerPersistenceUnitInfo

public void registerPersistenceUnitInfo(PersistenceUnitInfo persistenceUnitInfo)
永続ユニット情報を登録します。

パラメータ:
persistenceUnitInfo - 永続ユニット情報

addTransformer

public void addTransformer(ClassTransformer transformer)
クラストランスフォーマを登録します。

パラメータ:
transformer - クラストランスフォーマ

doDefineClass

protected java.lang.Class<?> doDefineClass(java.lang.String className,
                                           byte[] bytes)
クラス AbstractClassLoader の記述:
クラスを定義します。

定義:
クラス AbstractClassLoader 内の doDefineClass
パラメータ:
className - クラス名
bytes - クラスファイル形式のバイト列
戻り値:
定義されたクラス


Copyright © 2004-2014 The Seasar Foundation. All Rights Reserved.