Class ClassSource

  • All Implemented Interfaces:
    java.io.Serializable, TestSource

    @API(status=STABLE,
         since="1.0")
    public class ClassSource
    extends java.lang.Object
    implements TestSource
    Class based TestSource with an optional file position.

    If a Java Class reference is provided, the ClassSource will contain that Class and its class name accordingly. If a class name is provided, the ClassSource will contain the class name and will only attempt to lazily load the Class if getJavaClass() is invoked.

    In this context, Java Class means anything that can be referenced as a Class on the JVM — for example, classes from other JVM languages such Groovy, Scala, etc.

    Since:
    1.0
    See Also:
    ClassSelector, Serialized Form
    • Field Detail

      • CLASS_SCHEME

        @API(status=STABLE,
             since="1.8")
        public static final java.lang.String CLASS_SCHEME
        URI scheme for class sources: "class"
        Since:
        1.8
        See Also:
        Constant Field Values
      • className

        private final java.lang.String className
      • javaClass

        private java.lang.Class<?> javaClass
    • Constructor Detail

      • ClassSource

        private ClassSource​(java.lang.String className)
      • ClassSource

        private ClassSource​(java.lang.String className,
                            FilePosition filePosition)
      • ClassSource

        private ClassSource​(java.lang.Class<?> javaClass)
      • ClassSource

        private ClassSource​(java.lang.Class<?> javaClass,
                            FilePosition filePosition)
    • Method Detail

      • from

        public static ClassSource from​(java.lang.String className)
        Create a new ClassSource using the supplied class name.
        Parameters:
        className - the class name; must not be null or blank
      • from

        public static ClassSource from​(java.lang.String className,
                                       FilePosition filePosition)
        Create a new ClassSource using the supplied class name and file position.
        Parameters:
        className - the class name; must not be null or blank
        filePosition - the position in the source file; may be null
      • from

        public static ClassSource from​(java.lang.Class<?> javaClass)
        Create a new ClassSource using the supplied class.
        Parameters:
        javaClass - the Java class; must not be null
      • from

        public static ClassSource from​(java.lang.Class<?> javaClass,
                                       FilePosition filePosition)
        Create a new ClassSource using the supplied class and file position.
        Parameters:
        javaClass - the Java class; must not be null
        filePosition - the position in the Java source file; may be null
      • from

        @API(status=STABLE,
             since="1.8")
        public static ClassSource from​(java.net.URI uri)
        Create a new ClassSource from the supplied URI.

        URIs should be formatted as class:fully.qualified.class.Name. The query component of the URI, if present, will be used to retrieve the FilePosition via FilePosition.fromQuery(String). For example, line 42 and column 13 can be referenced in class org.example.MyType via the following URI: class:com.example.MyType?line=42&column=13. The URI fragment, if present, will be ignored.

        Parameters:
        uri - the URI for the class source; never null
        Returns:
        a new ClassSource; never null
        Throws:
        PreconditionViolationException - if the supplied URI is null, if the scheme of the supplied URI is not equal to the CLASS_SCHEME, or if the specified class name is empty
        Since:
        1.8
        See Also:
        CLASS_SCHEME
      • getClassName

        public final java.lang.String getClassName()
        Get the class name of this source.
        See Also:
        getJavaClass(), getPosition()
      • getJavaClass

        public final java.lang.Class<?> getJavaClass()
        Get the Java class of this source.

        If the Class was not provided, but only the name, this method attempts to lazily load the Class based on its name and throws a PreconditionViolationException if the class cannot be loaded.

        See Also:
        getClassName(), getPosition()
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object