Skip to content

Instantly share code, notes, and snippets.

@gbadner
Created June 20, 2011 15:57
Show Gist options
  • Save gbadner/1035874 to your computer and use it in GitHub Desktop.
Save gbadner/1035874 to your computer and use it in GitHub Desktop.
MetadataImpl ClassHolder usage
@Override
public ClassHolder getOrCreateClassHolder(String className) {
ClassHolder classHolder = classHoldersByName.get( className );
if ( classHolder == null ) {
classHolder = ClassHolderImpl.createDeferredClassHolder( className, classLoaderService() );
classHoldersByName.put( className, classHolder );
}
return classHolder;
}
@Override
public ClassHolder getOrCreateLoadedClassHolder(Class clazz) {
ClassHolder classHolder = classHoldersByName.get( clazz.getName() );
if ( classHolder == null ) {
classHolder = ClassHolderImpl.createLoadedClassHolder( clazz );
classHoldersByName.put( clazz.getName(), classHolder );
}
else if ( ! classHolder.hasLoadedClass() ) {
// found the ClassHolder, but the class is not resolved; force resolution.
Class loadedClass = classHolder.getLoadedClass();
if ( clazz != loadedClass ) {
throw new AssertionFailure( "Class resolved from ClassHolder is different from the clazz in ResolvedType." );
}
}
return classHolder;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment