Class SessionImpl

    • Field Detail

      • MAX_NEW_SESSION_REQUESTS

        public static final int MAX_NEW_SESSION_REQUESTS
        The maximum number of "new session requests" to send per session.
        See Also:
        Constant Field Values
    • Method Detail

      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
      • enterAction

        public RootAction enterAction​(java.lang.String actionName)
        Description copied from interface: Session
        Enters an Action with a specified name in this Session.

        If the given actionName is null or an empty string, no reporting will happen on that RootAction.

        Specified by:
        enterAction in interface Session
        Parameters:
        actionName - name of the Action
        Returns:
        Action instance to work with
      • identifyUser

        public void identifyUser​(java.lang.String userTag)
        Description copied from interface: Session
        Tags a session with the provided userTag.

        If the given userTag is null or an empty string, this is equivalent to logging off the user.

        The last non-empty userTag is re-applied to split sessions. Details are described in https://github.com/Dynatrace/openkit-java/blob/main/docs/internals.md#identify-users-on-split-sessions.

        Specified by:
        identifyUser in interface Session
        Parameters:
        userTag - id of the user or null/"" to simulate a log off.
      • reportCrash

        public void reportCrash​(java.lang.String errorName,
                                java.lang.String reason,
                                java.lang.String stacktrace)
        Description copied from interface: Session
        Reports a crash with a specified error name, crash reason and a stacktrace.

        If the given errorName is null or an empty string, no crash report will be sent to the server. If the reason is longer than 1000 characters, it is truncated to this value. If the stacktrace is longer than 128.000 characters, it is truncated according to the last line break.

        Specified by:
        reportCrash in interface Session
        Parameters:
        errorName - name of the error leading to the crash (e.g. Exception class)
        reason - reason or description of that error
        stacktrace - stacktrace leading to that crash
      • reportCrash

        public void reportCrash​(java.lang.Throwable throwable)
        Description copied from interface: Session
        Reports a crash with error name, crash reason and stacktrace determined from given Throwable.

        This method is offered as convenience method for Session.reportCrash(Throwable).

        Specified by:
        reportCrash in interface Session
        Parameters:
        throwable - The Throwable causing the crash.
      • reportNetworkTechnology

        public void reportNetworkTechnology​(java.lang.String technology)
        Description copied from interface: Session
        Reports the network technology in use (e.g. 2G, 3G, 802.11x, offline, ...) Use null to clear the value again and it will no longer be sent with the next beacon.
        Specified by:
        reportNetworkTechnology in interface Session
        Parameters:
        technology - the used network technology
      • reportConnectionType

        public void reportConnectionType​(ConnectionType connectionType)
        Description copied from interface: Session
        Reports the type of connection with which the device is connected to the network. Use null to clear the value again and it will no longer be sent with the next beacon.
        Specified by:
        reportConnectionType in interface Session
        Parameters:
        connectionType - the type of connection
      • reportCarrier

        public void reportCarrier​(java.lang.String carrier)
        Description copied from interface: Session
        Reports the name of the cellular network carrier. Use null to clear the value again and it will no longer be sent with the next beacon.

        The given value will be truncated to 250 characters.

        Specified by:
        reportCarrier in interface Session
        Parameters:
        carrier - the cellular network carrier
      • traceWebRequest

        public WebRequestTracer traceWebRequest​(java.net.URLConnection connection)
        Description copied from interface: Session
        Traces a web request - which is provided as a URLConnection - and allows adding timing information to this request. If the web request is continued on a server-side Agent (e.g. Java, .NET, ...) this Session will be correlated to the resulting server-side PurePath.
        Specified by:
        traceWebRequest in interface Session
        Parameters:
        connection - the URLConnection of the HTTP request to be tagged and timed
        Returns:
        a WebRequestTracer which allows adding timing information
      • traceWebRequest

        public WebRequestTracer traceWebRequest​(java.lang.String url)
        Description copied from interface: Session
        Allows tracing and timing of a web request handled by any 3rd party HTTP Client (e.g. Apache, Google, Jetty, ...). In this case the Dynatrace HTTP header (OpenKitConstants.WEBREQUEST_TAG_HEADER) has to be set manually to the tag value of this WebRequestTracer.
        If the web request is continued on a server-side Agent (e.g. Java, .NET, ...) this Session will be correlated to the resulting server-side PurePath.
        Specified by:
        traceWebRequest in interface Session
        Parameters:
        url - the URL of the web request to be tagged and timed
        Returns:
        a WebRequestTracer which allows getting the tag value and adding timing information
      • sendBizEvent

        public void sendBizEvent​(java.lang.String type,
                                 java.util.Map<java.lang.String,​JSONValue> attributes)
        Description copied from interface: Session
        Send a Business Event With sendBizEvent, you can report a business event. These standalone events are being sent detached from user actions or sessions. Note: The 'dt' key, as well as all 'dt.' prefixed keys are considered reserved by Dynatrace and will be stripped from the passed in attributes. Note: Business events are only supported on Dynatrace SaaS deployments currently.
        Specified by:
        sendBizEvent in interface Session
        Parameters:
        type - Mandatory event type
        attributes - Must be a valid JSON object. The resulting event will be populated with the 'attributes'-parameter and enriched with additional properties. Therefore, even empty objects are valid.
      • end

        public void end()
        Description copied from interface: Session
        Ends this Session and marks it as ready for immediate sending.
        Specified by:
        end in interface Session
      • end

        public void end​(boolean sendSessionEndEvent)
      • tryEnd

        public boolean tryEnd()
        Tries to end the current session by checking if there are no more child objects (actions / web request tracers) open. In case no more child objects are open the session is ended otherwise it is kept open.
        Returns:
        true if the session was successfully ended (or was already ended before). false in case there are / were still open child objects (actions / web request tracers).
      • setSplitByEventsGracePeriodEndTimeInMillis

        public void setSplitByEventsGracePeriodEndTimeInMillis​(long endTime)
        Sets the end time when the session is to be actually ended after a session split by event count. It might occur that a session is not yet ready to be finished (e.g. open actions, tracers) when the session split happens. In this case the session is kept open and closed at a later time. The given end time is the point in time at which the session will be closed forcefully by the SessionWatchdog thread.
        Parameters:
        endTime - the time when the session is to be closed for good.
      • getSplitByEventsGracePeriodEndTimeInMillis

        public long getSplitByEventsGracePeriodEndTimeInMillis()
        Returns the time when the session is to be ended (after it was not possible to end the session after splitting events e.g. due to actions still being open). The returned time already includes a grace period.
      • sendBeacon

        public StatusResponse sendBeacon​(HTTPClientProvider clientProvider,
                                         AdditionalQueryParameters additionalParameters)
        Sends the current beacon state.
        Parameters:
        clientProvider - Provider class providing the client for data transmission.
        additionalParameters - additional parameters that will be appended to the beacon request (can be null).
        Returns:
        Response from client.
      • clearCapturedData

        public void clearCapturedData()
        Clears data that has been captured so far.

        This is called, when capturing is turned off to avoid having too much data.

      • isEmpty

        public boolean isEmpty()
        Test if this Session is empty or not.

        A session is considered to be empty, if it does not contain any action or event data.

        Returns:
        true if the session is empty, false otherwise.
      • isDataSendingAllowed

        public boolean isDataSendingAllowed()
        Indicates whether sending data for this session is allowed or not.
      • enableCapture

        public void enableCapture()
        Enables capturing for this session.

        Will implicitly also set the session state to configured.

      • disableCapture

        public void disableCapture()
        Disables capturing for this session.

        Will implicitly also set the session state to configured.

      • canSendNewSessionRequest

        public boolean canSendNewSessionRequest()
        Indicates whether new session requests can be sent or not.

        This is directly related to decreaseNumRemainingSessionRequests().

      • decreaseNumRemainingSessionRequests

        public void decreaseNumRemainingSessionRequests()
        Decreases the number of remaining new session requests.

        In case no more new session requests remain, canSendNewSessionRequest() will return false

      • toString

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