org.codehaus.groovy.reflection
Class ClassInfo

java.lang.Object
  extended by org.codehaus.groovy.util.ManagedReference<K>
      extended by org.codehaus.groovy.util.ManagedConcurrentMap.Entry<java.lang.Class,ClassInfo>
          extended by org.codehaus.groovy.reflection.ClassInfo
All Implemented Interfaces:
AbstractConcurrentMap.Entry<java.lang.Class,ClassInfo>, AbstractConcurrentMapBase.Entry<ClassInfo>, Finalizable

public class ClassInfo
extends ManagedConcurrentMap.Entry<java.lang.Class,ClassInfo>

Handle for all information we want to keep about the class

Author:
Alex.Tkachman

Nested Class Summary
static class ClassInfo.ClassInfoSet
           
private static class ClassInfo.DebugRef
           
private static class ClassInfo.LazyCachedClassRef
           
private static class ClassInfo.LazyClassLoaderRef
           
private static class ClassInfo.LocalMap
           
private static class ClassInfo.ThreadLocalMapHandler
           
 
Field Summary
private  ClassInfo.LazyClassLoaderRef artifactClassLoader
           
private  ClassInfo.LazyCachedClassRef cachedClassRef
           
(package private)  MetaMethod[] dgmMetaMethods
           
private static ClassInfo.ClassInfoSet globalClassSet
           
 int hash
           
private static java.lang.ref.WeakReference<ClassInfo.ThreadLocalMapHandler> localMapRef
           
private  LockableObject lock
           
private static java.util.HashSet<ClassInfo> modifiedExpandos
           
(package private)  MetaMethod[] newMetaMethods
           
private  ManagedConcurrentMap perInstanceMetaClassMap
           
private static ReferenceBundle softBundle
           
private  MetaClass strongMetaClass
           
private  int version
           
private static ReferenceBundle weakBundle
           
private  ManagedReference<MetaClass> weakMetaClass
           
 
Constructor Summary
ClassInfo(ManagedConcurrentMap.Segment segment, java.lang.Class klazz, int hash)
           
 
Method Summary
static void clearModifiedExpandos()
           
private static CachedClass createCachedClass(java.lang.Class klazz, ClassInfo classInfo)
           
 void finalizeRef()
           
static int fullSize()
           
 ClassLoaderForClassArtifacts getArtifactClassLoader()
           
 CachedClass getCachedClass()
           
static ClassInfo getClassInfo(java.lang.Class cls)
           
 MetaClass getMetaClass()
           
 MetaClass getMetaClass(java.lang.Object obj)
           
 MetaClass getMetaClassForClass()
           
private  MetaClass getMetaClassUnderLock()
           
 ExpandoMetaClass getModifiedExpando()
           
 MetaClass getPerInstanceMetaClass(java.lang.Object obj)
           
 MetaClass getStrongMetaClass()
           
 int getVersion()
           
 MetaClass getWeakMetaClass()
           
 boolean hasPerInstanceMetaClasses()
           
 void incVersion()
           
 void lock()
           
 void setPerInstanceMetaClass(java.lang.Object obj, MetaClass metaClass)
           
 void setStrongMetaClass(MetaClass answer)
           
 void setWeakMetaClass(MetaClass answer)
           
static int size()
           
 void unlock()
           
 
Methods inherited from class org.codehaus.groovy.util.ManagedConcurrentMap.Entry
getHash, getValue, isEqual, isValid, setValue
 
Methods inherited from class org.codehaus.groovy.util.ManagedReference
clear, finalizeReference, get
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

modifiedExpandos

private static final java.util.HashSet<ClassInfo> modifiedExpandos

cachedClassRef

private final ClassInfo.LazyCachedClassRef cachedClassRef

artifactClassLoader

private final ClassInfo.LazyClassLoaderRef artifactClassLoader

lock

private final LockableObject lock

hash

public final int hash

version

private volatile int version

strongMetaClass

private MetaClass strongMetaClass

weakMetaClass

private ManagedReference<MetaClass> weakMetaClass

dgmMetaMethods

MetaMethod[] dgmMetaMethods

newMetaMethods

MetaMethod[] newMetaMethods

perInstanceMetaClassMap

private ManagedConcurrentMap perInstanceMetaClassMap

softBundle

private static ReferenceBundle softBundle

weakBundle

private static ReferenceBundle weakBundle

globalClassSet

private static final ClassInfo.ClassInfoSet globalClassSet

localMapRef

private static final java.lang.ref.WeakReference<ClassInfo.ThreadLocalMapHandler> localMapRef
Constructor Detail

ClassInfo

ClassInfo(ManagedConcurrentMap.Segment segment,
          java.lang.Class klazz,
          int hash)
Method Detail

getVersion

public int getVersion()

incVersion

public void incVersion()

getModifiedExpando

public ExpandoMetaClass getModifiedExpando()

clearModifiedExpandos

public static void clearModifiedExpandos()

getCachedClass

public CachedClass getCachedClass()

getArtifactClassLoader

public ClassLoaderForClassArtifacts getArtifactClassLoader()

getClassInfo

public static ClassInfo getClassInfo(java.lang.Class cls)

getStrongMetaClass

public MetaClass getStrongMetaClass()

setStrongMetaClass

public void setStrongMetaClass(MetaClass answer)

getWeakMetaClass

public MetaClass getWeakMetaClass()

setWeakMetaClass

public void setWeakMetaClass(MetaClass answer)

getMetaClassForClass

public MetaClass getMetaClassForClass()

getMetaClassUnderLock

private MetaClass getMetaClassUnderLock()

getMetaClass

public final MetaClass getMetaClass()

getMetaClass

public MetaClass getMetaClass(java.lang.Object obj)

size

public static int size()

fullSize

public static int fullSize()

finalizeRef

public void finalizeRef()
Overrides:
finalizeRef in class ManagedConcurrentMap.Entry<java.lang.Class,ClassInfo>

createCachedClass

private static CachedClass createCachedClass(java.lang.Class klazz,
                                             ClassInfo classInfo)

lock

public void lock()

unlock

public void unlock()

getPerInstanceMetaClass

public MetaClass getPerInstanceMetaClass(java.lang.Object obj)

setPerInstanceMetaClass

public void setPerInstanceMetaClass(java.lang.Object obj,
                                    MetaClass metaClass)

hasPerInstanceMetaClasses

public boolean hasPerInstanceMetaClasses()


Copyright © ${year} The Codehaus. All Rights Reserved.