Class PageModel
- java.lang.Object
-
- com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle
-
- com.inductiveautomation.perspective.gateway.model.PageModel
-
- All Implemented Interfaces:
AuditingContext,LoggingContext,Page,PerspectiveElement,PropertyTreeOwner
- Direct Known Subclasses:
DesignerPageModel
public class PageModel extends AbstractLifecycle implements Page
A page contains a number of views all running within the same web page, or tab. A given session may contain multiple pages running concurrently when the user has opened multiple tabs for the same project.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classPageModel.Handlers
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.atomic.AtomicReference<MessageChannel>channelprotected longcreatedcom.inductiveautomation.ignition.common.gson.Gsongsonprotected PageModel.Handlershandlersprotected java.lang.Stringididentifier of this view group.protected longlastKeepaliveLoggerExlogstatic java.lang.ThreadLocal<PageModel>PAGEprotected PropertyTreepropsprotected longroundtripInternalSessionsessionprotected com.inductiveautomation.perspective.gateway.model.PropertySyncManagersyncManagerprotected java.util.function.Function<java.lang.String,java.util.concurrent.CompletableFuture<java.util.Optional<ViewConfig>>>viewConfigLoaderprotected java.util.Map<ViewInstanceId,ViewModel>views
-
Constructor Summary
Constructors Constructor Description PageModel(InternalSession session, com.inductiveautomation.ignition.common.gson.Gson gson, LoggerEx log, java.lang.String pageId)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description com.inductiveautomation.ignition.common.gson.JsonObjectbriefReport()Generates a brief report of the current views and their values for status pages.voidclose(java.lang.String message)protected PageModel.HandlerscreateHandlers(com.inductiveautomation.ignition.common.gson.Gson gson, LoggerEx log)PropertyReferencecreatePropertyReference(java.lang.String referencePath, java.util.function.Consumer<PropertyTreeChangeEvent> subscriber, java.util.Set<Origin> acceptableOrigins)Create aPropertyReferencewith thisPerspectiveElementas the target.protected java.util.function.Function<java.lang.String,java.util.concurrent.CompletableFuture<java.util.Optional<ViewConfig>>>createViewConfigLoader()voiddisconnect()AuditContext.BuildergetAuditSnapshot()longgetCreated()java.lang.StringgetId()LoggerExgetLogger()LoggingContextgetMdcParent()java.lang.StringgetName()PagegetPage()com.google.common.eventbus.EventBusgetPageEventBus()PropertyTreegetPropertyTreeOf(PropertyType propertyType)Fetch thePropertyTreeassociated with the givenPropertyTypeInternalSessiongetSession()ViewgetView()java.util.List<ViewModel>getViews()booleanisConnected()protected booleanisViewAuthorized(ViewInstanceId viewInstanceId, ViewConfig viewConfig)voidmdcSetup()Set up the MDC keys for this contextvoidmdcTeardown()Tear down the MDC keys that are added in #mdcSetupvoidnotifyConnected(MessageChannel channel)voidnotifyDisconnected(MessageChannel channel)voidnotifyProjectUpdated()voidonKeepaliveReceived(long timestamp)When the route /data/perspective/keepalive is fetched, it will route back to herevoidonSessionPropertyChange(PropertyType propertyType, PropertyTreeChangeEvent changeEvent)Called from the session when the session properties change.protected voidonShutdown()protected voidonStartup()voidreceive(MessageChannel channel, java.lang.String protocol, java.io.Reader payload)com.inductiveautomation.ignition.common.gson.JsonObjectreport()Generates a full report of the current views and their values.voidsend(java.lang.String protocol, com.inductiveautomation.ignition.common.gson.JsonElement payload)voidsend(java.lang.String protocol, java.lang.String payload)voidsendGatewayLastActiveTime(long timestamp, long idleTime)voidsendKeepalive()Sends a keepalive message down the websocket channel.voidsetPageTimeout(java.util.concurrent.ScheduledFuture<?> pageTimeout)voidupdateModulesInfo(java.util.List<GatewayModule> modules)-
Methods inherited from class com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle
isRunning, shutdown, startup
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.inductiveautomation.perspective.gateway.api.AuditingContext
audit
-
Methods inherited from interface com.inductiveautomation.perspective.gateway.api.LoggingContext
mdc, mdcSetupTree, mdcTeardownTree, mdcWrap
-
Methods inherited from interface com.inductiveautomation.perspective.gateway.api.PerspectiveElement
getAuditProfile, getQualifiedPath
-
-
-
-
Field Detail
-
PAGE
public static final java.lang.ThreadLocal<PageModel> PAGE
-
session
public final InternalSession session
-
gson
public final com.inductiveautomation.ignition.common.gson.Gson gson
-
log
public final LoggerEx log
-
id
protected final java.lang.String id
identifier of this view group. will be unique per tab open for a project
-
created
protected final long created
-
views
protected final java.util.Map<ViewInstanceId,ViewModel> views
-
syncManager
protected final com.inductiveautomation.perspective.gateway.model.PropertySyncManager syncManager
-
channel
protected final java.util.concurrent.atomic.AtomicReference<MessageChannel> channel
-
handlers
protected final PageModel.Handlers handlers
-
viewConfigLoader
protected final java.util.function.Function<java.lang.String,java.util.concurrent.CompletableFuture<java.util.Optional<ViewConfig>>> viewConfigLoader
-
props
protected final PropertyTree props
-
lastKeepalive
protected volatile long lastKeepalive
-
roundtrip
protected volatile long roundtrip
-
-
Constructor Detail
-
PageModel
public PageModel(@Nonnull InternalSession session, @Nonnull com.inductiveautomation.ignition.common.gson.Gson gson, @Nonnull LoggerEx log, @Nonnull java.lang.String pageId)
-
-
Method Detail
-
getPage
@Nullable public Page getPage()
- Specified by:
getPagein interfacePerspectiveElement- Returns:
- The Page that this element is part of. Will return null if this is the Session
-
getView
@Nullable public View getView()
- Specified by:
getViewin interfacePerspectiveElement- Returns:
- The view within which this element exists, or null if this is a Page or Session
-
getName
@Nonnull public java.lang.String getName()
- Specified by:
getNamein interfacePerspectiveElement- Returns:
- The name of the element. If this is a component, it will be the name of the component. If this is a View, the name will be "view". If this is a Page, the name will be "page". If this is the session, the name will be "session".
-
getSession
@Nonnull public InternalSession getSession()
- Specified by:
getSessionin interfacePerspectiveElement- Returns:
- The session that this element is a part of.
-
createPropertyReference
@Nonnull public PropertyReference createPropertyReference(java.lang.String referencePath, java.util.function.Consumer<PropertyTreeChangeEvent> subscriber, java.util.Set<Origin> acceptableOrigins)
Description copied from interface:PerspectiveElementCreate aPropertyReferencewith thisPerspectiveElementas the target.- Specified by:
createPropertyReferencein interfacePerspectiveElement- Parameters:
referencePath- the path to the propertysubscriber- the subscriber - aConsumerofPropertyTreeChangeEventsacceptableOrigins- theSetofOrigins in which the subscriber is interested- Returns:
- the
PropertyReference
-
getPropertyTreeOf
@Nullable public PropertyTree getPropertyTreeOf(@Nullable PropertyType propertyType)
Description copied from interface:PropertyTreeOwnerFetch thePropertyTreeassociated with the givenPropertyType- Specified by:
getPropertyTreeOfin interfacePropertyTreeOwner- Parameters:
propertyType- ThePropertyTypeof thePropertyTreewe want to fetch- Returns:
- The PropertyTree or null if this PropertyTreeOwner does not manage a PropertyTree for the given PropertyType or if a null PropertyType is given
-
getPageEventBus
public com.google.common.eventbus.EventBus getPageEventBus()
- Specified by:
getPageEventBusin interfacePage
-
createViewConfigLoader
protected java.util.function.Function<java.lang.String,java.util.concurrent.CompletableFuture<java.util.Optional<ViewConfig>>> createViewConfigLoader()
-
createHandlers
protected PageModel.Handlers createHandlers(com.inductiveautomation.ignition.common.gson.Gson gson, LoggerEx log)
-
getCreated
public long getCreated()
- Specified by:
getCreatedin interfacePage
-
getLogger
public LoggerEx getLogger()
- Specified by:
getLoggerin interfaceLoggingContext
-
getMdcParent
@Nullable public LoggingContext getMdcParent()
- Specified by:
getMdcParentin interfaceLoggingContext
-
mdcSetup
public void mdcSetup()
Description copied from interface:LoggingContextSet up the MDC keys for this context- Specified by:
mdcSetupin interfaceLoggingContext
-
mdcTeardown
public void mdcTeardown()
Description copied from interface:LoggingContextTear down the MDC keys that are added in #mdcSetup- Specified by:
mdcTeardownin interfaceLoggingContext
-
notifyProjectUpdated
public void notifyProjectUpdated()
-
send
public void send(java.lang.String protocol, com.inductiveautomation.ignition.common.gson.JsonElement payload) throws java.io.IOException- Throws:
java.io.IOException
-
send
public void send(java.lang.String protocol, java.lang.String payload) throws java.io.IOException
-
receive
public void receive(MessageChannel channel, java.lang.String protocol, java.io.Reader payload)
-
isConnected
public boolean isConnected()
- Specified by:
isConnectedin interfacePage
-
notifyConnected
public void notifyConnected(MessageChannel channel)
-
notifyDisconnected
public void notifyDisconnected(MessageChannel channel)
-
setPageTimeout
public void setPageTimeout(java.util.concurrent.ScheduledFuture<?> pageTimeout)
-
onSessionPropertyChange
public void onSessionPropertyChange(PropertyType propertyType, PropertyTreeChangeEvent changeEvent)
Called from the session when the session properties change. Puts the changes into the accumulator inside the sync manager.- Parameters:
propertyType- ThePropertyTypeof the session'sPropertyTreewhich fired thePropertyTreeChangeEventchangeEvent- ThePropertyTreeChangeEventfired from the session'sPropertyTree
-
report
public com.inductiveautomation.ignition.common.gson.JsonObject report()
Generates a full report of the current views and their values.- Returns:
- a json object containing the full property tree for the current executing project/session
-
briefReport
public com.inductiveautomation.ignition.common.gson.JsonObject briefReport()
Generates a brief report of the current views and their values for status pages.- Returns:
- a json array containing brief info on the current executing project/session
-
sendKeepalive
public void sendKeepalive()
Sends a keepalive message down the websocket channel. This will provoke the page's frontend code to HTTP GET the route at /data/perspective/keepalive
-
sendGatewayLastActiveTime
public void sendGatewayLastActiveTime(long timestamp, long idleTime)
-
onKeepaliveReceived
public void onKeepaliveReceived(long timestamp)
When the route /data/perspective/keepalive is fetched, it will route back to here
-
isViewAuthorized
protected boolean isViewAuthorized(@Nonnull ViewInstanceId viewInstanceId, @Nonnull ViewConfig viewConfig)
-
updateModulesInfo
public void updateModulesInfo(java.util.List<GatewayModule> modules)
-
onStartup
protected void onStartup()
- Specified by:
onStartupin classAbstractLifecycle
-
onShutdown
protected void onShutdown()
- Specified by:
onShutdownin classAbstractLifecycle
-
disconnect
public void disconnect()
-
getAuditSnapshot
@Nonnull public AuditContext.Builder getAuditSnapshot()
- Specified by:
getAuditSnapshotin interfaceAuditingContext- Returns:
- A new, or extended,
AuditContext.Builder, with qualified information about the current scope.
-
-