...
Code Block |
---|
interface RuntimeContext { ... Admin getAdmin(); } interface Admin { boolean datasetExists(String name) throws DatasetManagementException; @Nullable String getDatasetType(String name) throws DatasetManagementException; @Nullable DatasetProperties getDatasetProperties(String name) throws DatasetManagementException; void createDataset(String name, String type, DatasetProperties properties) throws DatasetManagementException; void updateDataset(String name, DatasetProperties properties) throws DatasetManagementException; void dropDataset(String name) throws DatasetManagementException; void truncateDataset(String name) throws DatasetManagementException; } |
All methods throw:
InstanceNotFoundException
if a dataset does not exist - except fordatasetExists()
.InstanceConflictException
if creation of a dataset conflicts with an existing datasetDatasetManagementException
for errors encountered inside the dataset framework, or inside the dataset type'sDatasetAdmin
code.
Why are we adding this to RuntimeContext, and not to DatasetContext? The idea is that DatasetContext represents a way to obtain an instance of a dataset in a transactional context. Admin operations are not transactional, and therefore it seems cleaner to add them separately from DatasetContext. Also, in the future this Admin interface will provide, non-dataset related operations.
...