TemplateWrapper


@CarProtocol
public final class TemplateWrapper


A wrapper for mapping a Template with a unique ID used for implementing task flow restrictions.

This is what is sent to the host, so that the host can determine whether the template is a new template (e.g. a step counts toward the task limit), or an existing template update (e.g. a refresh that does not count towards the task limit), by checking whether the ID have changed.

This class is for use by host implementations and not by apps.

Summary

Public methods

static @NonNull TemplateWrapper

Creates a copy of the given TemplateWrapper.

int

Retrieves the current task step that the template is in.

@NonNull String

Returns the ID associated with the wrapped Template.

@NonNull Template

Returns the wrapped Template.

@NonNull List<TemplateInfo>

Returns a TemplateInfo for the last returned template for each of the screens in the screen stack managed by the screen manager.

boolean

Returns true if the template is a refresh for the previous template.

void
setCurrentTaskStep(int currentTaskStep)

Sets the current task step that the template is in.

void

Updates the ID associated with the wrapped Template.

void
setRefresh(boolean isRefresh)

Sets whether the template is a refresh of the current template.

void

Updates the Template this TemplateWrapper instance wraps.

@NonNull String
static @NonNull TemplateWrapper
wrap(@NonNull Template template)

Creates a TemplateWrapper instance with the given Template.

static @NonNull TemplateWrapper
wrap(@NonNull Template template, @NonNull String id)

Creates a TemplateWrapper instance with the given Template and ID.

Public methods

copyOf

Added in 1.0.0
public static @NonNull TemplateWrapper copyOf(@NonNull TemplateWrapper source)

Creates a copy of the given TemplateWrapper.

getCurrentTaskStep

Added in 1.0.0
public int getCurrentTaskStep()

Retrieves the current task step that the template is in.

getId

Added in 1.0.0
public @NonNull String getId()

Returns the ID associated with the wrapped Template.

getTemplate

Added in 1.0.0
public @NonNull Template getTemplate()

Returns the wrapped Template.

getTemplateInfosForScreenStack

Added in 1.0.0
public @NonNull List<TemplateInfogetTemplateInfosForScreenStack()

Returns a TemplateInfo for the last returned template for each of the screens in the screen stack managed by the screen manager.

The return values are in order, where position 0 is the top of the stack, and position n is the bottom of the stack given n screens on the stack.

isRefresh

Added in 1.0.0
public boolean isRefresh()

Returns true if the template is a refresh for the previous template.

setCurrentTaskStep

Added in 1.0.0
public void setCurrentTaskStep(int currentTaskStep)

Sets the current task step that the template is in.

setId

Added in 1.0.0
public void setId(@NonNull String id)

Updates the ID associated with the wrapped Template.

setRefresh

Added in 1.0.0
public void setRefresh(boolean isRefresh)

Sets whether the template is a refresh of the current template.

setTemplate

Added in 1.0.0
public void setTemplate(@NonNull Template template)

Updates the Template this TemplateWrapper instance wraps.

toString

public @NonNull String toString()

wrap

Added in 1.0.0
public static @NonNull TemplateWrapper wrap(@NonNull Template template)

Creates a TemplateWrapper instance with the given Template.

The host will treat the Template as a new task step, unless it determines through its internal logic that the Template is a refresh of the existing view, in which case the task step will remain the same.

wrap

Added in 1.0.0
public static @NonNull TemplateWrapper wrap(@NonNull Template template, @NonNull String id)

Creates a TemplateWrapper instance with the given Template and ID.

The ID is primarily used to inform the host that the given Template shares the same ID as a previously sent Template, even though their contents differ. In such cases, the host will reset the task step to where the previous Template was.

For example, the client sends template A (task step 1), then move forwards a screen and sends template B (task step 2). Now the client pops the screen and sends template C. By assigning the ID of template A to template C, the client library informs the host that it is a back operation and the task step should be set to 1 again.