Packages

package api

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. case class ApexSummary(typeSummary: TypeSummary, diagnostics: List[Diagnostic]) extends Product with Serializable

    Summary of an Apex class with diagnostic information

  2. case class BlockSummary(isStatic: Boolean, dependents: Set[DependentSummary]) extends Product with Serializable

    Summary of a initialiser block

  3. case class ConstructorSummary(idRange: Option[RangeLocation], modifiers: List[String], parameters: List[ParameterSummary], dependents: Set[DependentSummary]) extends Product with Serializable

    Summary of a type constructor

  4. class DefaultLogger extends Logger

    Default logging support, info goes to stdout, error & debug to stderr

  5. sealed trait DependentSummary extends AnyRef

    Dependency information interface for detailing types of dependency

  6. case class Diagnostic(category: String, location: Location, message: String) extends Product with Serializable

    A diagnostic message, category tells us what type of diagnostic this is while location and messages provide details

  7. case class FieldDependentSummary(typeId: TypeIdentifier, name: String) extends DependentSummary with Product with Serializable

    Dependency information for a field

    Dependency information for a field

    Annotations
    @key( "Field" )
  8. case class FieldSummary(idRange: Option[RangeLocation], name: String, modifiers: List[String], typeName: TypeName, readAccess: String, writeAccess: String, dependents: Set[DependentSummary]) extends Product with Serializable

    Summary of a type field (or property)

  9. class IssueOptions extends AnyRef

    Options available when retrieving Org issues.

  10. case class LineLocation(line: Int) extends Location with Product with Serializable

    Single line location

  11. case class LineRangeLocation(start: Int, end: Int) extends Location with Product with Serializable

    Range of lines location

  12. sealed trait Location extends AnyRef

    Location interface for identify a sub-part of a file

  13. trait Logger extends AnyRef

    Logging interface

  14. case class MethodDependentSummary(typeId: TypeIdentifier, name: String, parameters: List[ParameterSummary]) extends DependentSummary with Product with Serializable

    Dependency information for a method

    Dependency information for a method

    Annotations
    @key( "Method" )
  15. case class MethodSummary(idRange: Option[RangeLocation], name: String, modifiers: List[String], typeName: TypeName, parameters: List[ParameterSummary], dependents: Set[DependentSummary]) extends Product with Serializable

    Summary of a type method

  16. case class Name(value: String) extends Product with Serializable

    Case insensitive string for symbol names.

    Case insensitive string for symbol names.

    The value of the Name is stored as is but equality and hashing are performed against a normalised lower case value.

    Annotations
    @key( "Name" )
  17. trait Org extends AnyRef

    A virtual Org used to present the analysis functionality in a familiar way.

    A virtual Org used to present the analysis functionality in a familiar way.

    All analysis works within the context of a virtual Org. You can manage multiple of these at the same time but most use cases just need one creating, see Org.newOrg(). The Org functions as a container of multiple Package objects and maintains a set of discovered issues from the analysis of the package metadata. All orgs have at least one 'unmanaged' package identifiable by having no namespace.

    In the simple case after creating an Org, you should add one or more packages detailing where package metadata is stored. Adding large packages can take considerable CPU and memory resources. Once the packages are loaded the metadata within them can be mutated using the Package methods. At any point you can list of current issues with the packages from getIssues.

    The disk cache that supports quicker loading is only updated by calling flush(). You should call this after all packages have been loaded and periodically after that if mutating metadata to ensure the cache is kept upto date.

    Orgs and Packages are not thread safe, serialise all calls to them.

  18. trait Package extends AnyRef

    A virtual Package constructed from metadata.

    A virtual Package constructed from metadata.

    Packages must be created in the context of a specific Org. Each Package manages a set of Types which are created from the metadata of the package. Once constructed you can use the package APIs to introspect dependency relationships between Types, obtain summary and view information about Types and replace or delete Types.

    A key concept to understand in this API is that a Type may be created from multiple metadata files, e.g. the System.Labels Type is always present but can be constructed from several labels files. The API methods expose Types via the TypeIdentifiers which you don't need to understand to use the API as long as you keep in mind the 1:M mapping between Types and Paths.

    The term dependency can be rather ambiguous, we use it here to mean a 'using' relationship. So if class A calls a method on class B, we say A has a dependency that is B. The reverse relationship is a 'dependency holder', so B has a dependency holder that is A. Transitives of dependencies or dependency holder relationships are not exposed by these APIs but can be easily obtained by recursive iteration.

    The package upsert & deletion model does not support invalidation handling that is typically used to cause dependency holders to be re-analysed when a dependency changes. This again can be handled via recursive iteration of the methods provided.

    Summary and View information provide two different levels of looking at the structure of Types. In summary form only the most important details are provided but it is essentially free to access since it is the same format used in the disk cache. View information requires both more CPU and memory to use but can provide fuller details on the implementations of Apex classes.

    Packages only handle metadata that is important to Apex class analysis, other forms of metadata that might appear in the package directory are ignored.

  19. case class ParameterSummary(name: String, typeName: TypeName) extends Product with Serializable

    Summary of a constructor or method parameters

  20. case class PathLocation(path: String, location: Location) extends Product with Serializable

    Combined path and location within the path

  21. case class PointLocation(position: Position) extends Location with Product with Serializable

    Single position location

  22. case class Position(line: Int, offset: Int) extends Product with Serializable

    Position in a file

  23. case class RangeLocation(start: Position, end: Position) extends Location with Product with Serializable

    Range between to positions

  24. case class TypeDependentSummary(typeId: TypeIdentifier, sourceHash: Int) extends DependentSummary with Product with Serializable

    Dependency information for a type

    Dependency information for a type

    Annotations
    @key( "Type" )
  25. case class TypeIdentifier(namespace: Option[Name], typeName: TypeName) extends Product with Serializable

    Identifier for a specific type within an Org.

    Identifier for a specific type within an Org.

    The provided namespace is used to locate a package which qualifies the meaning of the type name. This is useful when the type name may not contain a namespace or it may be visible across package such as with global classes.

  26. case class TypeName(name: Name, params: Seq[TypeName], outer: Option[TypeName]) extends Product with Serializable

    Representation of a type name with optional type arguments.

    Representation of a type name with optional type arguments.

    The outer value provides an optional enclosing type name to allow for qualifying inner types. The outer may also be used to scope a type to a specific namespace. The mapping between a type name and its toString value is mostly straight forward but for some internally defined types toString will produce better formatted output so it is advised you always use this when displaying a TypeName.

    Annotations
    @key( "TypeName" )
  27. case class TypeSummary(sourceHash: Int, idRange: Option[RangeLocation], name: String, typeName: TypeName, nature: String, modifiers: List[String], superClass: Option[TypeName], interfaces: List[TypeName], blocks: List[BlockSummary], fields: List[FieldSummary], constructors: List[ConstructorSummary], methods: List[MethodSummary], nestedTypes: List[TypeSummary], dependents: Set[DependentSummary]) extends Product with Serializable

    Summary of a type

  28. trait ViewInfo extends AnyRef

    Detailed view of an ApexClass.

    Detailed view of an ApexClass.

    This is currently WIP and will be expanded later.

Value Members

  1. object ApexSummary extends Serializable
  2. object BlockSummary extends Serializable
  3. object ConstructorSummary extends Serializable
  4. object DependentSummary
  5. object Diagnostic extends Serializable
  6. object FieldDependentSummary extends Serializable
  7. object FieldSummary extends Serializable
  8. object LineLocation extends Serializable
  9. object LineRangeLocation extends Serializable
  10. object Location
  11. object MethodDependentSummary extends Serializable
  12. object MethodSummary extends Serializable
  13. object Name extends Serializable
  14. object Org
  15. object ParameterSummary extends Serializable
  16. object PathLocation extends Serializable
  17. object PointLocation extends Serializable
  18. object Position extends Serializable
  19. object RangeLocation extends Serializable
  20. object ServerOps

    Collection of Ops functions for changing global behaviours

  21. object TypeDependentSummary extends Serializable
  22. object TypeIdentifier extends Serializable
  23. object TypeName extends Serializable
  24. object TypeSummary extends Serializable

Ungrouped