Interface ITypeLoader

All Superinterfaces:
IPluginHost, IService
All Known Subinterfaces:
IDefaultTypeLoader, IExtendedTypeLoader
All Known Implementing Classes:
DefaultTypeLoader, DynamicTypeLoader, GosuClassTypeLoader, PackageTypeLoader, PropertiesTypeLoader, SimpleTypeLoader, TypeInPackageTypeLoader, TypeLoaderBase

public interface ITypeLoader extends IService
  • Field Details

    • NO_TYPES

      static final String[] NO_TYPES
  • Method Details

    • getModule

      IModule getModule()
      Returns:
      The module to which this type loader belongs.
    • getType

      IType getType(String fullyQualifiedName)
      Gets a type based on a fully-qualified name. This could either be the name of an entity, like "entity.User", the name of a typekey, like "typekey.SystemPermission", or a class name, like "java.lang.String". Names can have [] appended to them to create arrays, and multi-dimensional arrays are supported.

      If the type can be successfully resolved by the typeloader, it will be returned, otherwise it will return null. The sole exception to this rule is the top-level TypeLoaderAccess, which will throw a ClassNotFoundException if none of its composite typeloaders can load the type.

      There is a global lock in TypeLoaderAccess that is acquired when this method is called. Basically one type at a time can be loaded from the system. This method is free to release that lock during this call. This is needed to deal with reentrant type loaders. It is the responsibility of this method to make sure the lock is reacquired before this method returns.

      Type loader access will guarentee that no duplicate types are put into the type loader.

      Parameters:
      fullyQualifiedName - the fully qualified name of the type
      Returns:
      the corresponding IType or null
    • getAllTypeNames

      Set<? extends CharSequence> getAllTypeNames()
      Returns:
      the set of fully qualified type names this loader is responsible for loading. Note due to the dynamic nature of some type loaders, there is no guarantee that all types for a given loader are known at the time this method is called.
    • showTypeNamesInIDE

      boolean showTypeNamesInIDE()
    • getAllNamespaces

      Set<? extends CharSequence> getAllNamespaces()
      Don't call this method unless you really know what you're doing.
      Returns:
      the set of package (aka namespace) names in which this loader's types reside.
    • getResource

      URL getResource(String name)
      Finds the resource with the given name. A resource is some data that can be accessed by class code in a way that may be independent of the location of the code. The exact location of the resource is dependent upon the loader implementation

      The name of a resource is a '/'-separated path name that identifies the resource.

      Parameters:
      name - The resource name
      Returns:
      A URL object for reading the resource, or null if the resource could not be found or the invoker doesn't have adequate privileges to get the resource.
    • isCaseSensitive

      boolean isCaseSensitive()
    • getHandledPrefixes

      List<String> getHandledPrefixes()
    • handlesNonPrefixLoads

      boolean handlesNonPrefixLoads()
    • handlesFile

      boolean handlesFile(IFile file)
    • getTypesForFile

      String[] getTypesForFile(IFile file)
      Returns ALL type names associated with the given file whether or not the types have been loaded yet. Type loading should NOT be used in the implementation of this method.
      Parameters:
      file - The file in question
      Returns:
      All known types derived from that file
    • refreshedFile

      RefreshKind refreshedFile(IFile file, String[] types, RefreshKind kind)
      Notifies the type loader that a file has been refreshed. The type loader should return all types that it knows need to be refreshed based on the given file.
      Parameters:
      file - The file that was refreshed
      types -
      kind -
      Returns:
      All known types affected by the file change
    • refreshedNamespace

      void refreshedNamespace(String namespace, IDirectory dir, RefreshKind kind)
    • refreshedTypes

      void refreshedTypes(RefreshRequest request)
      Fired when an existing type is refreshed, i.e. there are potential changes
      Parameters:
      request -
    • refreshed

      void refreshed()
      Fired when the typesystem is fully refreshed
    • handlesDirectory

      boolean handlesDirectory(IDirectory dir)
    • getNamespaceForDirectory

      String getNamespaceForDirectory(IDirectory dir)
    • hasNamespace

      boolean hasNamespace(String namespace)
    • getTypeNames

      Set<TypeName> getTypeNames(String namespace)
    • computeTypeNames

      Set<String> computeTypeNames()
    • shutdown

      void shutdown()