Search in sources :

Example 1 with DatasetDefinition

use of co.cask.cdap.api.dataset.DatasetDefinition in project cdap by caskdata.

the class DatasetsUtilTest method testFix.

private void testFix(String type, DatasetProperties props) {
    DatasetDefinition def = DatasetFrameworkTestUtil.getDatasetDefinition(inMemoryDatasetFramework, NamespaceId.DEFAULT, type);
    Assert.assertNotNull(def);
    DatasetSpecification spec = def.configure("nn", props);
    Map<String, String> originalProperties = DatasetsUtil.fixOriginalProperties(spec).getOriginalProperties();
    Assert.assertEquals(props.getProperties(), originalProperties);
}
Also used : DatasetSpecification(co.cask.cdap.api.dataset.DatasetSpecification) DatasetDefinition(co.cask.cdap.api.dataset.DatasetDefinition)

Example 2 with DatasetDefinition

use of co.cask.cdap.api.dataset.DatasetDefinition in project cdap by caskdata.

the class TestDatasetModule method register.

@Override
public void register(DatasetDefinitionRegistry registry) {
    DatasetDefinition<KeyValueTable, DatasetAdmin> kvTableDef = registry.get("keyValueTable");
    DatasetDefinition definition = new TestDatasetDefinition("testDataset", kvTableDef);
    registry.add(definition);
}
Also used : KeyValueTable(co.cask.cdap.api.dataset.lib.KeyValueTable) DatasetAdmin(co.cask.cdap.api.dataset.DatasetAdmin) DatasetDefinition(co.cask.cdap.api.dataset.DatasetDefinition)

Example 3 with DatasetDefinition

use of co.cask.cdap.api.dataset.DatasetDefinition in project cdap by caskdata.

the class InMemoryDatasetFramework method addInstance.

@Override
public void addInstance(String datasetType, DatasetId datasetInstanceId, DatasetProperties props) throws DatasetManagementException, IOException {
    writeLock.lock();
    try {
        if (instances.contains(datasetInstanceId.getParent(), datasetInstanceId)) {
            throw new InstanceConflictException(String.format("Dataset instance '%s' already exists.", datasetInstanceId));
        }
        DatasetDefinition def = getDefinitionForType(datasetInstanceId.getParent(), datasetType);
        if (def == null) {
            throw new DatasetManagementException(String.format("Dataset type '%s' is neither registered in the '%s' namespace nor in the system namespace", datasetType, datasetInstanceId.getParent()));
        }
        DatasetSpecification spec = def.configure(datasetInstanceId.getEntityName(), props);
        spec = spec.setOriginalProperties(props);
        if (props.getDescription() != null) {
            spec = spec.setDescription(props.getDescription());
        }
        def.getAdmin(DatasetContext.from(datasetInstanceId.getNamespace()), spec, null).create();
        instances.put(datasetInstanceId.getParent(), datasetInstanceId, spec);
        publishAudit(datasetInstanceId, AuditType.CREATE);
        LOG.info("Created dataset {} of type {}", datasetInstanceId, datasetType);
    } finally {
        writeLock.unlock();
    }
}
Also used : DatasetManagementException(co.cask.cdap.api.dataset.DatasetManagementException) InstanceConflictException(co.cask.cdap.api.dataset.InstanceConflictException) DatasetSpecification(co.cask.cdap.api.dataset.DatasetSpecification) AbstractDatasetDefinition(co.cask.cdap.api.dataset.lib.AbstractDatasetDefinition) DatasetDefinition(co.cask.cdap.api.dataset.DatasetDefinition)

Example 4 with DatasetDefinition

use of co.cask.cdap.api.dataset.DatasetDefinition in project cdap by caskdata.

the class InMemoryDatasetFramework method updateInstance.

@Override
public void updateInstance(DatasetId datasetInstanceId, DatasetProperties props) throws DatasetManagementException, IOException {
    writeLock.lock();
    try {
        DatasetSpecification oldSpec = instances.get(datasetInstanceId.getParent(), datasetInstanceId);
        if (oldSpec == null) {
            throw new InstanceNotFoundException(datasetInstanceId.getEntityName());
        }
        DatasetDefinition def = getDefinitionForType(datasetInstanceId.getParent(), oldSpec.getType());
        if (def == null) {
            throw new DatasetManagementException(String.format("Dataset type '%s' is neither registered in the '%s' namespace nor in the system namespace", oldSpec.getType(), datasetInstanceId.getParent()));
        }
        DatasetSpecification spec = AbstractDatasetDefinition.reconfigure(def, datasetInstanceId.getEntityName(), props, oldSpec).setOriginalProperties(props);
        if (props.getDescription() != null) {
            spec = spec.setDescription(props.getDescription());
        }
        instances.put(datasetInstanceId.getParent(), datasetInstanceId, spec);
        DatasetAdmin admin = def.getAdmin(DatasetContext.from(datasetInstanceId.getNamespace()), spec, null);
        if (admin instanceof Updatable) {
            ((Updatable) admin).update(oldSpec);
        } else {
            admin.upgrade();
        }
        publishAudit(datasetInstanceId, AuditType.UPDATE);
    } catch (IncompatibleUpdateException e) {
        throw new InstanceConflictException("Update failed for dataset instance " + datasetInstanceId, e);
    } finally {
        writeLock.unlock();
    }
}
Also used : DatasetManagementException(co.cask.cdap.api.dataset.DatasetManagementException) InstanceConflictException(co.cask.cdap.api.dataset.InstanceConflictException) InstanceNotFoundException(co.cask.cdap.api.dataset.InstanceNotFoundException) Updatable(co.cask.cdap.api.dataset.Updatable) DatasetSpecification(co.cask.cdap.api.dataset.DatasetSpecification) DatasetAdmin(co.cask.cdap.api.dataset.DatasetAdmin) AbstractDatasetDefinition(co.cask.cdap.api.dataset.lib.AbstractDatasetDefinition) DatasetDefinition(co.cask.cdap.api.dataset.DatasetDefinition) IncompatibleUpdateException(co.cask.cdap.api.dataset.IncompatibleUpdateException)

Example 5 with DatasetDefinition

use of co.cask.cdap.api.dataset.DatasetDefinition in project cdap by caskdata.

the class InMemoryDatasetFramework method deleteInstance.

@Override
public void deleteInstance(DatasetId instanceId) throws DatasetManagementException, IOException {
    writeLock.lock();
    try {
        DatasetSpecification spec = instances.remove(instanceId.getParent(), instanceId);
        if (spec == null) {
            throw new InstanceNotFoundException(instanceId.getEntityName());
        }
        DatasetDefinition def = getDefinitionForType(instanceId.getParent(), spec.getType());
        if (def == null) {
            throw new DatasetManagementException(String.format("Dataset type '%s' is neither registered in the '%s' namespace nor in the system namespace", spec.getType(), instanceId.getParent()));
        }
        def.getAdmin(DatasetContext.from(instanceId.getNamespace()), spec, null).drop();
        publishAudit(instanceId, AuditType.DELETE);
    } finally {
        writeLock.unlock();
    }
}
Also used : DatasetManagementException(co.cask.cdap.api.dataset.DatasetManagementException) InstanceNotFoundException(co.cask.cdap.api.dataset.InstanceNotFoundException) DatasetSpecification(co.cask.cdap.api.dataset.DatasetSpecification) AbstractDatasetDefinition(co.cask.cdap.api.dataset.lib.AbstractDatasetDefinition) DatasetDefinition(co.cask.cdap.api.dataset.DatasetDefinition)

Aggregations

DatasetDefinition (co.cask.cdap.api.dataset.DatasetDefinition)13 DatasetSpecification (co.cask.cdap.api.dataset.DatasetSpecification)11 AbstractDatasetDefinition (co.cask.cdap.api.dataset.lib.AbstractDatasetDefinition)7 DatasetManagementException (co.cask.cdap.api.dataset.DatasetManagementException)5 DatasetAdmin (co.cask.cdap.api.dataset.DatasetAdmin)3 IncompatibleUpdateException (co.cask.cdap.api.dataset.IncompatibleUpdateException)3 InstanceNotFoundException (co.cask.cdap.api.dataset.InstanceNotFoundException)3 DatasetProperties (co.cask.cdap.api.dataset.DatasetProperties)2 InstanceConflictException (co.cask.cdap.api.dataset.InstanceConflictException)2 Reconfigurable (co.cask.cdap.api.dataset.Reconfigurable)2 Nullable (javax.annotation.Nullable)2 Test (org.junit.Test)2 Dataset (co.cask.cdap.api.dataset.Dataset)1 DatasetContext (co.cask.cdap.api.dataset.DatasetContext)1 Updatable (co.cask.cdap.api.dataset.Updatable)1 CompositeDatasetDefinition (co.cask.cdap.api.dataset.lib.CompositeDatasetDefinition)1 KeyValueTable (co.cask.cdap.api.dataset.lib.KeyValueTable)1 DatasetType (co.cask.cdap.api.dataset.module.DatasetType)1 EmbeddedDataset (co.cask.cdap.api.dataset.module.EmbeddedDataset)1 IOException (java.io.IOException)1