Class VirtualSpace

All Implemented Interfaces:
IPrivateStorage, EventListener, IFocusComp, IMessageBox, IClassReferenceOwner, ICustomDataProvider, IGProp<GProp<?>[]>, IPropCnr, IVSAccessor, IVSClassReferenceOwner, IVSComponent, IVSComponentListener, IVSComponentState, IVSMessageComponent, Cloneable
Direct Known Subclasses:
EditorVirtualSpace

public class VirtualSpace extends PropCnr implements IVSMessageComponent, IVSClassReferenceOwner, IPrivateStorage, IVSAccessor
This VirtualSpace property container holds the fields and tables in the VirtualSpace.
  • Field Details

    • MAP_CLASS_PROP_ATOM

      public static final Atom MAP_CLASS_PROP_ATOM
      The focus mapper class property atom: "$mapClass".
    • participantsHolder

      protected VSParticipantsHolder participantsHolder
      The participants holder.
  • Constructor Details

    • VirtualSpace

      public VirtualSpace()
      Creates the VirtualSpace property container without a name. The name must be set in all cases using the setPropertyAtom call.
    • VirtualSpace

      public VirtualSpace(Atom propertyAtom)
      Creates the VirtualSpace property container with the specified name. All system-reserved names for components begins with "$".
      Parameters:
      propertyAtom - the name of the component, unique within it's parent.
  • Method Details

    • initPropCnr

      protected final void initPropCnr()
      Method called at the earliest possible stage in the constructor of a container property or it's extending classes, before possible initialization of other properties, etc.

      The VirtualSpace use the named property hash map for lookup of properties fast.

      Overrides:
      initPropCnr in class PropCnr
    • convertLoadedProp

      protected GProp<?> convertLoadedProp(GProp<?> childProp) throws PropException
      Enables conversion or omission of a property loaded from XML.

      This method is typically used to process changes of e.g. property types, e.g. from IntProp to NumberProp, in case of a change of property definitions.

      Overrides:
      convertLoadedProp in class PropCnr
      Parameters:
      childProp - The child property that is about to be added.
      Returns:
      The property to add, null to omit it. The default processing is to return the same property, i.e. childProp.
      Throws:
      PropException - for property errors.
    • getVirtualSpace

      public VirtualSpace getVirtualSpace()
      Gets the VirtualSpace.
      Specified by:
      getVirtualSpace in interface IVSAccessor
      Specified by:
      getVirtualSpace in interface IVSComponent
      Returns:
      This instance.
    • getVSReference

      public VSReference getVSReference(Atom refAtom)
      Gets the VSReference to this VirtualSpace.
      Specified by:
      getVSReference in interface IGProp<GProp<?>[]>
      Overrides:
      getVSReference in class PropCnr
      Parameters:
      refAtom - The reference atom (unused).
      Returns:
      A fake VSReference that references this VirtualSpace instance.
    • createVSReference

      public VSReference createVSReference(Atom refAtom, PropCnr[] returnParent)
      Creates a VSReference instance from the container or any parent containers. The method is used in the Designer to create a VirtualSpace connection for VSRelativeReference to look up the VSReference instance in order to resolve the relative path to the target property.

      This method needs to be overridden by subclasses of PropCnr that has a VSReference as property, and *SHOULD* match getVSReference(Atom).

      The default is to re-target the call to the parent container, and if the root, a folder or a file property is reached, null is returned.

      Overrides:
      createVSReference in class PropCnr
      Parameters:
      refAtom - The property asking for the VSReference.
      returnParent - An array of PropCnr [1] that will be filled in with the parent property of the VSRefernce.
      Returns:
      The instance of the VSReference or null if unassigned. The returned instance could also be a VSParticipant and should therefore be processed accordingly.

      For this method, it's always null!

    • createVSParticipantsHolder

      protected VSParticipantsHolder createVSParticipantsHolder()
      Creates a new instance of the VSParticipantsHolder.
    • addPredefinedProps

      protected void addPredefinedProps() throws PropException
      Adds the predefined properties for this container. This method is called once just after construction of the property container and sometimes population of it.

      The method should add properties to create or get reference to using the maybeAddProp method. When the PropCnr instance is cloned, the method getPredefinedProps() is called in order for the subclass to be able to retrieve the new instances to these properties, if stored in instance variables.

      Overrides:
      addPredefinedProps in class PropCnr
      Throws:
      PropException - for property exceptions.
    • getPredefinedProps

      protected void getPredefinedProps()
      Gets potential references to predefined properties for this container. This method is called once just after cloning of the property container.

      The method should get reference to using the getProp(...) methods. This allows the subclass to be able to retrieve the new instances to the properties created during addPredefinedProps() if stored in instance variables.

      Overrides:
      getPredefinedProps in class PropCnr
    • isFree

      public boolean isFree(Runnable callback, boolean callbackIfFree, VSComponent component)
      Verifies if the component is included in a work unit currently in progress in this VirtualSpace.
      Parameters:
      callback - The callback to call when work completes, or null for none.
      callbackIfFree - Performs a call to the callback if free when true.
      component - The component to verify.
      Returns:
      true if it's OK to process, false means the component is included in this work unit and if callback is non-null, it will be called. The callback is called if free and the flag callbackIfFree is true.
    • areFree

      public boolean areFree(Runnable callback, boolean callbackIfFree, VSComponent... components)
      Verifies if the component(s) is/are included in a work unit currently in progress in this VirtualSpace.
      Parameters:
      callback - The callback to call when work completes, or null for none.
      callbackIfFree - Performs a call to the callback if free when true.
      components - The components to verify.
      Returns:
      true if it's OK to process, false means the component is included in this work unit and if callback is non-null, it will be called. The callback is called if free and the flag callbackIfFree is true.
    • areFree2

      public boolean areFree2(Runnable callback, boolean callbackIfFree, VSComponent component, VSComponent... components)
      Verifies if the components are included in a work unit currently in progress in this VirtualSpace.
      Parameters:
      callback - The callback to call when work completes, or null for none.
      callbackIfFree - Performs a call to the callback if free when true.
      component - A component to verify.
      components - The components to verify.
      Returns:
      true if it's OK to process, false means the component is included in this work unit and if callback is non-null, it will be called. The callback is called if free and the flag callbackIfFree is true.
    • onEventSelf

      public void onEventSelf(GEvent event)
      Checks for state change events and fires it to listeners.
      Specified by:
      onEventSelf in interface IGProp<GProp<?>[]>
      Overrides:
      onEventSelf in class GProp<GProp<?>[]>
      Parameters:
      event - The property event.
    • onParentStateChanged

      public void onParentStateChanged(IVSComponent parent, IVSComponentState.State state, boolean on)
      Called when the column changes state.
      Specified by:
      onParentStateChanged in interface IVSComponentListener
      Parameters:
      parent - The parent who's state was changed.
      state - The state change, possible values PARENT_ENABLED, PARENT_READONLY, PARENT_VISIBLE.
      on - New state.
    • canRequestFocus

      public String canRequestFocus()
      Returns if this component can receive focus. Focus capable components may override to return null for success, or other error message.

      Default processing is to return "Component not focusable" if the component doesn't implement the IFocusComp interface, "Not virtualized" if the component is not in a virtualized state, "Component is hidden" if IVSComponent.isVisible() is false or "Component is disabled" if IVSComponent.isEnabled() is false.

      Specified by:
      canRequestFocus in interface IPropCnr
      Returns:
      null focus is possible to this component, or an error message describing why focus cannot be requested.
    • couldRequestFocusIfVirtualized

      public String couldRequestFocusIfVirtualized(boolean ignoreStates)
      Returns if this component could receive focus if it would be virtualized. Focus capable components may override to return null for success, or other error message.

      Default processing is to return "Component not focusable" if the component doesn't implement the IFocusComp interface, "Component is hidden" if IVSComponent.isVisible() is false or "Component is disabled" if IVSComponent.isEnabled() is false.

      Specified by:
      couldRequestFocusIfVirtualized in interface IPropCnr
      Parameters:
      ignoreStates - Flag indicating that states should be ignored, such as visible or enabled. If false, hidden or disabled components return an error message.
      Returns:
      null focus is possible to this component, or an error message describing why focus cannot be requested.
    • onFocusGained

      public void onFocusGained(IFocusComp opposite, IGProp<?> trigger, boolean isRemoteInduced)
      Called to the component when it receives focus.

      Focus components override this method if they need to process focus lost.

      Specified by:
      onFocusGained in interface IFocusComp
      Parameters:
      opposite - Component losing focus, null for none.
      trigger - The trigger property, null for none.
      isRemoteInduced - Flag indicating this event is due to a remote event.
    • onFocusLost

      public void onFocusLost(IFocusComp focusComp, IGProp<?> trigger, boolean isRemoteInduced)
      Called to the focused component when it loses focus.

      Focus components override this method if they need to process focus lost.

      Specified by:
      onFocusLost in interface IFocusComp
      Parameters:
      focusComp - Component receiving focus, null for none.
      trigger - The trigger property, null for none.
      isRemoteInduced - Flag indicating this event is due to a remote event.
    • onRemoteEvent

      public void onRemoteEvent(RemoteEvent event)
      Called when a remote property event should be processed by this property.

      A subclass can override this method to perform appropriate processing and is not required to call super.onRemoteEvent(e).

      The onRemoteEvent is NOT called when in a proxied property container, but rather the normal onEventSelf method.

      Specified by:
      onRemoteEvent in interface IGProp<GProp<?>[]>
      Overrides:
      onRemoteEvent in class GProp<GProp<?>[]>
      Parameters:
      event - The remote event.
    • forbiddenGetCustomDataMap

      @Deprecated public Map<String,Object> forbiddenGetCustomDataMap(boolean doCreate)
      Deprecated.
      Gets or creates the provider map. This method is not intended to be called by user code, it is used by the system.

      Do not call this method!

      Specified by:
      forbiddenGetCustomDataMap in interface ICustomDataProvider
      Parameters:
      doCreate - Creates the map if required.
      Returns:
      The map or newly created map, null if not created.

      Note: the map returned is NOT synchronized thus not thread safe. It is up to the caller to synchronize on it to ensure thread safety.

    • clone

      public VirtualSpace clone()
      Clones the property.
      Overrides:
      clone in class PropCnr
    • virtualize

      public final VirtualSpace virtualize(IAppSessionGyro appGyro)
      Call this method to "virtualize" a property tree. This method is used at runtime in the Server for the application session of virtual instances of v, but also virtual instances of panels, for the individual client session. The v is virtualized once for the application session and is shared for parallel client sessions.

      This method is similar to cloning, but enables references that are already resolved to remain if they point to a shared instance, e.g. the v pointing to its participants in the application property container shared instance, or a panel with references to text IDs, assets, etc.

      It is up to the property class to handle this by overriding this method.

      Parameters:
      appGyro - The application gyro instance performing the virtualization.
      Throws:
      NullPointerException - If appGyro is null.
    • virtualize

      protected final VirtualSpace virtualize(IAppSessionGyro appGyro, IClientSessionGyro clientGyro, VirtualSpace virtualSpace) throws PropException
      Call this method to "virtualize" a property tree. This method is used at runtime in the Server for the application session of virtual instances of VirtualSpace, but also virtual instances of panels, for the individual client session. The VirtualSpace is virtualized once for the application session and is shared for parallel client sessions.

      This method is similar to cloning, but enables references that are already resolved to remain if they point to a shared instance, e.g. the VirtualSpace pointing to its participants in the application property container shared instance, or a panel with references to text IDs, assets, etc.

      NEVER CALL THIS METHOD: it will always throw PropException.

      Overrides:
      virtualize in class PropCnr
      Parameters:
      appGyro - The application gyro instance performing the virtualization.
      clientGyro - The client gyro session, can be null if not initialized from the client gyro.
      virtualSpace - The virtualized VirtualSpace.
      Returns:
      Never returns anything: the PropException is always thrown.
      Throws:
      PropException - For property errors during the virtualization.
    • getNonVirtualized

      public VirtualSpace getNonVirtualized()
      Gets the non-virtualized instance of this component, i.e. a VirtualSpace.
      Specified by:
      getNonVirtualized in interface IVSComponent
      Returns:
      The non-virtualized VirtualSpace, always non-null.
    • getVirtualized

      public VirtualSpace getVirtualized()
      Gets the virtualized instance of this component, i.e. a VirtualSpace.

      If this VirtualSpace already is virtualized, the same instance is returned.

      If the VirtualSpace in the application session is not virtualized, this method returns null. Use the method getVirtualized(boolean) with true as parameter to also perform the virtualization.

      This method can return null, but not when called from an application session context, i.e. any kind of threads running in the server for an application. This means that you should not require to test for null in the code.

      Returns:
      The virtualized VirtualSpace, null if Application Session Gyro cannot be found for current thread.
    • getVirtualized

      public VirtualSpace getVirtualized(boolean doVirtualize)
      Gets the virtualized instance of this component, i.e. a VirtualSpace.

      If this VirtualSpace already is virtualized, the same instance is returned.

      This method can return null, but not when called from an application session context, i.e. any kind of threads running in the server for an application. This means that you should not require to test for null in the code.

      Parameters:
      doVirtualize - Flag to virtualize the VirtualSpace if not yet virtualized in the application session.
      Returns:
      The virtualized VirtualSpace, null if Application Session Gyro cannot be found for current thread.
    • getAppSessionGyro

      public IAppSessionGyro getAppSessionGyro()
      Returns the Application Session Gyro instance of this virtualized property.

      NOTE: Use the code IAppSessionGyro.getSessionInstance() to get the application session gyro derived from the current thread (and thread group). This will work for all threads in an application session environment in the server.

      Specified by:
      getAppSessionGyro in interface IGProp<GProp<?>[]>
      Overrides:
      getAppSessionGyro in class GProp<GProp<?>[]>
      Returns:
      The Application Session Gyro if this instance is virtualized, null otherwise.
    • getClientSessionGyro

      public IClientSessionGyro getClientSessionGyro()
      Returns the Client Session Gyro instance.

      This method calls IClientSessionGyro.getSessionInstance() to retrieve the instance from the current thread.

      Specified by:
      getClientSessionGyro in interface IGProp<GProp<?>[]>
      Overrides:
      getClientSessionGyro in class GProp<GProp<?>[]>
      Returns:
      The Client Session Gyro if found for the current thread, null otherwise.
    • onPanelVirualized

      public boolean onPanelVirualized(UIPanelBase panel)
      Called when a panel has been virtualized. Do no call this method, it is intended for the framework.
      Parameters:
      panel - The panel virtualized.
      Returns:
      Success flag.
    • onPanelDestroyed

      public boolean onPanelDestroyed(UIPanelBase panel)
      Called when a panel is destroyed after being virtualized and attached to the VirtualSpace.
      Parameters:
      panel - The panel virtualized being destroyed.
      Returns:
      Success flag.
    • getAttachedVirtualizedPanels

      public UIPanelBase[] getAttachedVirtualizedPanels()
      Gets the attached panels of this current instance of the VirtualSpace.
      Returns:
      The array of panels for all client sessions connected to this VirtualSpace of the same user and app session.
    • getVirtualizedVirtualSpace

      public VirtualSpace getVirtualizedVirtualSpace(@FullVSRef String path)
      Gets a virtualized VirtualSpace for the application session from this virtualized VirtualSpace. The VirtualSpace to get MUST already have been virtualized prior to this call.
      Specified by:
      getVirtualizedVirtualSpace in interface IVSComponent
      Parameters:
      path - The path of the VirtualSpace name relative the parent of the current VirtualSpace. This path can be e.g. just a plain name for a direct sibling of this VirtualSpace, a folder based path such as "folder/virtualSpaceB" or a full reference path as "module:/vs/[folderPath/]virtualSpace".
      Returns:
      The VirtualSpace with the specified path, never null.
      Throws:
      NotFoundException - If the VirtualSpace is not found within the virtualized VirtualSpaces.
      IllegalStateException - If this VirtualSpace is not virtualized or the application session gyro is not found.
      IllegalArgumentException - If path is invalid.
    • getParticipantsHolder

      public VSParticipantsHolder getParticipantsHolder()
      Gets participants holder container.
    • onPrepare

      protected void onPrepare(IAppOwner appOwner, IModuleOwner moduleOwner, boolean isPostCall, List<Throwable> errors) throws PropException
      Called when the application is being prepared. The order of onPrepare calls is always parent first, the children. The method is called twice, first time with isPostCall set to false, then a second time with true.
      Overrides:
      onPrepare in class GProp<GProp<?>[]>
      Parameters:
      appOwner - The application owner.
      moduleOwner - The Module owner.
      isPostCall - Flag indicating this is a post-call.
      errors - A list of errors that occurred but did not cause an abort.
      Throws:
      PropException - For property errors during the application preparation to need to abort.
    • onVirtualizationCompleted

      protected void onVirtualizationCompleted(IAppSessionGyro appGyro, IClientSessionGyro clientGyro, VirtualSpace virtualSpace, boolean isPostResolve)
      Called when virtualization completed.

      This method is called to the entire tree of the newly virtualized property container.

      Overrides:
      onVirtualizationCompleted in class PropCnr
      Parameters:
      appGyro - The application gyro instance performing the virtualization.
      clientGyro - The client gyro session, can be null if not initialized from the client gyro.
      virtualSpace - The virtualized VirtualSpace.
      isPostResolve - Flag indicating this call is done after references are attempted to be resolved.
    • onPropDispose

      protected void onPropDispose()
      Called when a property is disposed of by delete/remove in a container, or by the dispose method.

      The Property Container clears the structure of unsent communication requests to clear memory.

      This call is done just at the end of the delete/remove routine in the container, without synchronization.

      During this call, whatever components that e.g. the client needs to disposed of is done.

      Subclasses needing to perform some intelligent operations upon deletion should do it by overloading this method and always call the super.onPropDispose() method.

      Overrides:
      onPropDispose in class PropCnr
    • getFocusHandler

      public IVSFocusHandler getFocusHandler()
      Returns the instance for the VirtualSpace focus handler.
      Returns:
      The instance to use for this VirtualSpace, null for none.
    • getField

      public VSField getField(@VSRef String path) throws NotFoundException
      Gets the field with the specified path.
      Specified by:
      getField in interface IVSComponent
      Parameters:
      path - The path to the field in the VirtualSpace, cannot start with '/' or contain ':'.
      Returns:
      The field, never null.
      Throws:
      NotFoundException - If the field is not found.
    • getFieldNull

      public VSField getFieldNull(@VSRef String path)
      Gets the field with the specified path.
      Specified by:
      getFieldNull in interface IVSComponent
      Parameters:
      path - The path to the field in the VirtualSpace, cannot start with '/' or contain ':'.
      Returns:
      The field, null if not found.
    • getField2

      public VSField getField2(@FullVSRef String fullVSRef) throws NotFoundException
      Gets the field with the specified full VS reference path.
      Specified by:
      getField2 in interface IVSComponent
      Parameters:
      fullVSRef - The full VS reference to the field in the VirtualSpace, as "module:/vs/path".
      Returns:
      The field, never null.
      Throws:
      NotFoundException - If the field is not found.
    • getFieldNull2

      public VSField getFieldNull2(@FullVSRef String fullVSRef)
      Gets the field with the specified full VS reference path.

      It is preferable to use getField2(String) instead of this method if the field always should be present because it will throw and log errors.

      Specified by:
      getFieldNull2 in interface IVSComponent
      Parameters:
      fullVSRef - The full VS reference to the field in the VirtualSpace, as "module:/vs/path".
      Returns:
      The field, null if not found.
    • getTable

      public VSTable getTable(@VSRef String path) throws NotFoundException
      Gets the table with the specified path.
      Specified by:
      getTable in interface IVSComponent
      Parameters:
      path - The path to the table in the VirtualSpace, cannot start with '/' or contain ':'.
      Returns:
      The table, never null.
      Throws:
      NotFoundException - If the table is not found.
    • getTableNull

      public VSTable getTableNull(@VSRef String path)
      Gets the table with the specified path.
      Specified by:
      getTableNull in interface IVSComponent
      Parameters:
      path - The path to the table in the VirtualSpace, cannot start with '/' or contain ':'.
      Returns:
      The table, null if not found.
    • getTable2

      public VSTable getTable2(@FullVSRef String fullVSRef) throws NotFoundException
      Gets the table with the specified full VS reference path.
      Specified by:
      getTable2 in interface IVSComponent
      Parameters:
      fullVSRef - The full VS reference to the table in the VirtualSpace, as "module:/vs/path".
      Returns:
      The table, never null.
      Throws:
      NotFoundException - If the table is not found.
    • getTableNull2

      public VSTable getTableNull2(@FullVSRef String fullVSRef)
      Gets the table with the specified full VS reference path.

      It is preferable to use getTable2(String) instead of this method if the table always should be present because it will throw and log errors.

      Specified by:
      getTableNull2 in interface IVSComponent
      Parameters:
      fullVSRef - The full VS reference to the table in the VirtualSpace, as "module:/vs/path".
      Returns:
      The field, null if not found.
    • getAction

      public VSAction getAction(@VSRef String path) throws NotFoundException
      Gets the action with the specified path.
      Specified by:
      getAction in interface IVSComponent
      Parameters:
      path - The path to the action in the VirtualSpace, cannot start with '/' or contain ':'.
      Returns:
      The action, never null.
      Throws:
      NotFoundException - If the action is not found.
    • getActionNull

      public VSAction getActionNull(@VSRef String path)
      Gets the action with the specified path.
      Specified by:
      getActionNull in interface IVSComponent
      Parameters:
      path - The path to the action in the VirtualSpace, cannot start with '/' or contain ':'.
      Returns:
      The action, null if not found.
    • getAction2

      public VSAction getAction2(@FullVSRef String fullVSRef) throws NotFoundException
      Gets the action with the specified full VS reference path.
      Specified by:
      getAction2 in interface IVSComponent
      Parameters:
      fullVSRef - The full VS reference to the action in the VirtualSpace, as "module:/vs/path".
      Returns:
      The action, never null.
      Throws:
      NotFoundException - If the action is not found.
    • getActionNull2

      public VSAction getActionNull2(@FullVSRef String fullVSRef)
      Gets the action with the specified full VS reference path.

      It is preferable to use getAction2(String) instead of this method if the action always should be present because it will throw and log errors.

      Specified by:
      getActionNull2 in interface IVSComponent
      Parameters:
      fullVSRef - The full VS reference to the field in the VirtualSpace, as "module:/vs/path".
      Returns:
      The action, null if not found.
    • getGroup

      public VSGroup getGroup(@VSRef String path) throws NotFoundException
      Gets the group with the specified path.
      Specified by:
      getGroup in interface IVSComponent
      Parameters:
      path - The path to the group in the VirtualSpace, cannot start with '/' or contain ':'.
      Returns:
      The group, never null.
      Throws:
      NotFoundException - If the action is not found.
    • getGroupNull

      public VSGroup getGroupNull(@VSRef String path)
      Gets the group with the specified path.

      It is preferable to use getGroup(String) instead of this method if the group always should be present because it will throw and log errors.

      Specified by:
      getGroupNull in interface IVSComponent
      Parameters:
      path - The path to the group in the VirtualSpace, cannot start with '/' or contain ':'.
      Returns:
      The group, null if not found.
    • getGroup2

      public VSGroup getGroup2(@FullVSRef String fullVSRef) throws NotFoundException
      Gets the group with the specified full VS reference path.
      Specified by:
      getGroup2 in interface IVSComponent
      Parameters:
      fullVSRef - The full VS reference to the group in the VirtualSpace, as "module:/vs/path".
      Returns:
      The group, never null.
      Throws:
      NotFoundException - If the group is not found.
    • getGroupNull2

      public VSGroup getGroupNull2(@FullVSRef String fullVSRef)
      Gets the group with the specified full VS reference path.

      It is preferable to use getGroup2(String) instead of this method if the group always should be present because it will throw and log errors.

      Specified by:
      getGroupNull2 in interface IVSComponent
      Parameters:
      fullVSRef - The full VS reference to the group the VirtualSpace, as "module:/vs/path".
      Returns:
      The group, null if not found.
    • getVSComponent

      public <COMP extends IVSComponent> COMP getVSComponent(@VSRef String path, Class<COMP> clazz) throws NotFoundException
      Gets the VS component with the specified path.
      Specified by:
      getVSComponent in interface IVSComponent
      Parameters:
      path - The path to the VS component in the VirtualSpace, cannot start with '/' or contain ':'.
      clazz - The requested VS component class.
      Returns:
      The component, never null or wrong class.
      Throws:
      NotFoundException - If the component is not found or wrong class.
    • getVSComponentNull

      public <COMP extends IVSComponent> COMP getVSComponentNull(@VSRef String path, Class<COMP> clazz)
      Gets the VS component with the specified path.
      Specified by:
      getVSComponentNull in interface IVSComponent
      Parameters:
      path - The path to the VS component in the VirtualSpace, cannot start with '/' or contain ':'.
      clazz - The requested VS component class.
      Returns:
      The component, null if not found or wrong class.
    • getVSComponent2

      public <COMP extends IVSComponent> COMP getVSComponent2(@FullVSRef String fullVSRef, Class<COMP> clazz) throws NotFoundException
      Gets the VS component with the specified full reference path.
      Specified by:
      getVSComponent2 in interface IVSComponent
      Parameters:
      fullVSRef - The full reference path to the VS component in the VirtualSpace, as "module:/vs/path".
      clazz - The requested VS component class.
      Returns:
      The component, never null or wrong class.
      Throws:
      NotFoundException - If the component is not found or wrong class.
    • getVSComponentNull2

      public <COMP extends IVSComponent> COMP getVSComponentNull2(@FullVSRef String fullVSRef, Class<COMP> clazz)
      Gets the VS component with the specified full reference path.
      Specified by:
      getVSComponentNull2 in interface IVSComponent
      Parameters:
      fullVSRef - The full reference path to the VS component in the VirtualSpace, as "module:/vs/path".
      clazz - The requested VS component class.
      Returns:
      The component, null if not found or wrong class.
    • getPrivateStorageMap

      public Map<String,Object> getPrivateStorageMap()
      Gets the concurrent hash map used to store the private data.
      Specified by:
      getPrivateStorageMap in interface IPrivateStorage
      Returns:
      The private storage map.