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. 
 
 - 
 
 -