Table of Contents
Last updated: 5/15/2025

SAs Toolbox


The SasToolbox is extending the abstract classes Repository, StreamImporter and StreamExporter but the implementation is Nova itself, in a way the SasToolbox is a pocket version of Nova. The SasRepository that is the Repository implementation of the SasToolbox is also an implementation of the Nova interface IStorageProvider.

SAs Repository


When a SasRepository is instantiated a storage folder will be created in the temp folder for the machine. The storage folder will be deleted when the SasRepository is disposed, so it is important to dispose a SasRepository when it is no longer used.

Import Data

The SasToolbox has an implementation for StreamImporter used to read data from a Stream into the SasRepository. It is not possible to use the importer directly instead a Read method is created on the SasRepository that takes a fileName i.e. a path to the binary file to be read into the repository. Before reading a file into a repository call the BeginCommit method and right after the file is read into the repository the Commit method should be called.

Export Data

The SasToolbox has an implementation for StreamExporter used to write data to a Stream from the SasRepository. It is not possible to use the exporter directly instead a Write method is created on the SasRepository that takes a fileName i.e. a path where to write the binary file to disc.

Create Data

When creating data you must always start with the BeginCommit method and finish with the Commit method unless the data is created in a mapper since the mapper will do that for you.

The SasToolbox is a bit different from other toolboxes. One difference is that data created with any of the toolbox Create methods must be subtypes to RootObject, i.e. a UnitOfInformation, e.g. Part, Document, ZoneElement etc. and not e.g. PartVersion etc. Subtypes to EntryObject such as DocumentReference, DateTimeAssignment, PartVersion etc. have to be created from an instance with the New method e.g. NewDocumentReference to create a DocumentReference. This can make mapping more complicated since it is not possible to make a mapping to an EntryObject a PublicMapping i.e. a mapping that the mapping framework does without being called as a sub-mapping from another mapping.

Repository Methods Not Implemented

Since the SasToolbox is bit different the implementation is also different e.g some of the mandatory methods to implement from the abstract Repository is not implemented.

  • The mandatory method NextKey is not implemented and will throw a NotImplementedException
  • The mandatory method SetKey is not implemented with any logic but will not throw a NotImplementedException

A couple of the Repository virtual methods have been overridden without any logic added.

  • AddedObjectTrigger method is overridden but has no logic and the base method is not called.
  • DeleteObjectTrigger method is overridden but has no logic and the base method is not called.
  • RegisterEntityForChangeEvent method is overridden but has no logic and the base method is not called.
  • UpdateObjectTrigger method is overridden but has no logic and the base method is not called.

IStorageProvider Methods Not To Be Used

Even though the implementation of the SasToolbox resembles ShareAspace, some functions in the implementation of IStorageProvider in the SasRepository is different from ShareAspace in general.

The SasToolbox does not use the access engine so any HasPermission method will always return true. It is not possible to add access rights and not possible to have different owners, all data will be owned by the same Participant that the Role of the user has when scheduling the job.

Working with files is something that might work but is not an intended function in the SasRepository so the following methods are not recommended to use in any way:

  • GetMyFiles
  • GetCollaborationContainer
  • GetParticipantContainer
  • GetFileVaultBlob
  • GetBlob