Search in sources :

Example 1 with DatasetDefinitionRegistry

use of io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry in project cdap by caskdata.

the class AbstractDatasetFrameworkTest method setup.

@BeforeClass
public static void setup() throws Exception {
    cConf = CConfiguration.create();
    File dataDir = new File(TMP_FOLDER.newFolder(), "data");
    cConf.set(Constants.CFG_LOCAL_DATA_DIR, dataDir.getAbsolutePath());
    final Injector injector = Guice.createInjector(new ConfigModule(cConf), new NonCustomLocationUnitTestModule(), new TransactionInMemoryModule(), new NamespaceAdminTestModule(), new AuditTestModule(), new AbstractModule() {

        @Override
        protected void configure() {
            bind(OwnerStore.class).to(InMemoryOwnerStore.class).in(Scopes.SINGLETON);
            bind(OwnerAdmin.class).to(DefaultOwnerAdmin.class);
        }
    });
    locationFactory = injector.getInstance(LocationFactory.class);
    namespacePathLocator = injector.getInstance(NamespacePathLocator.class);
    txExecutorFactory = injector.getInstance(TransactionExecutorFactory.class);
    registryFactory = new DatasetDefinitionRegistryFactory() {

        @Override
        public DatasetDefinitionRegistry create() {
            DefaultDatasetDefinitionRegistry registry = new DefaultDatasetDefinitionRegistry();
            injector.injectMembers(registry);
            return registry;
        }
    };
    namespaceAdmin = injector.getInstance(NamespaceAdmin.class);
    namespaceQueryAdmin = injector.getInstance(NamespaceQueryAdmin.class);
    ownerAdmin = injector.getInstance(OwnerAdmin.class);
    inMemoryAuditPublisher = injector.getInstance(InMemoryAuditPublisher.class);
}
Also used : TransactionInMemoryModule(org.apache.tephra.runtime.TransactionInMemoryModule) NamespaceAdminTestModule(io.cdap.cdap.common.guice.NamespaceAdminTestModule) ConfigModule(io.cdap.cdap.common.guice.ConfigModule) DefaultOwnerAdmin(io.cdap.cdap.security.impersonation.DefaultOwnerAdmin) OwnerAdmin(io.cdap.cdap.security.impersonation.OwnerAdmin) NamespaceAdmin(io.cdap.cdap.common.namespace.NamespaceAdmin) NamespacePathLocator(io.cdap.cdap.common.namespace.NamespacePathLocator) DatasetDefinitionRegistry(io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry) NonCustomLocationUnitTestModule(io.cdap.cdap.common.guice.NonCustomLocationUnitTestModule) DefaultOwnerAdmin(io.cdap.cdap.security.impersonation.DefaultOwnerAdmin) OwnerStore(io.cdap.cdap.security.impersonation.OwnerStore) InMemoryOwnerStore(io.cdap.cdap.security.impersonation.InMemoryOwnerStore) AbstractModule(com.google.inject.AbstractModule) LocationFactory(org.apache.twill.filesystem.LocationFactory) TransactionExecutorFactory(org.apache.tephra.TransactionExecutorFactory) InMemoryAuditPublisher(io.cdap.cdap.data2.audit.InMemoryAuditPublisher) Injector(com.google.inject.Injector) NamespaceQueryAdmin(io.cdap.cdap.common.namespace.NamespaceQueryAdmin) AuditTestModule(io.cdap.cdap.data2.audit.AuditTestModule) File(java.io.File) BeforeClass(org.junit.BeforeClass)

Example 2 with DatasetDefinitionRegistry

use of io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry in project cdap by caskdata.

the class InMemoryDatasetFramework method deleteModule.

@Override
public void deleteModule(DatasetModuleId moduleId) {
    // TODO (CDAP-6297): check if existing datasets or modules use this module
    writeLock.lock();
    try {
        moduleClasses.remove(moduleId.getParent(), moduleId);
        LinkedHashSet<String> availableModuleClasses = getAvailableModuleClasses(moduleId.getParent());
        // this will cleanup types
        DatasetDefinitionRegistry registry = createRegistry(availableModuleClasses, registries.getClass().getClassLoader());
        registries.put(moduleId.getParent(), registry);
    } finally {
        writeLock.unlock();
    }
}
Also used : DatasetDefinitionRegistry(io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry)

Example 3 with DatasetDefinitionRegistry

use of io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry in project cdap by caskdata.

the class InMemoryDatasetFramework method addModule.

@Override
public void addModule(DatasetModuleId moduleId, DatasetModule module) throws ModuleConflictException {
    // TODO (CDAP-6297): check if existing modules overlap, or if this removes a type other modules depend on
    writeLock.lock();
    try {
        DatasetDefinitionRegistry registry = registries.get(moduleId.getParent());
        if (registry == null) {
            registry = registryFactory.create();
            registries.put(moduleId.getParent(), registry);
        }
        TypesTrackingRegistry trackingRegistry = new TypesTrackingRegistry(registry);
        module.register(trackingRegistry);
        String moduleClassName = DatasetModules.getDatasetModuleClass(module).getName();
        moduleClasses.put(moduleId.getParent(), moduleId, moduleClassName);
        List<String> types = trackingRegistry.getTypes();
        nonDefaultTypes.putAll(moduleId.getParent(), types);
        for (String type : types) {
            this.types.put(moduleId.getParent().datasetType(type), new DatasetTypeMeta(type, Collections.singletonList(new DatasetModuleMeta(moduleId.getEntityName(), moduleClassName, null, types, Collections.<String>emptyList()))));
        }
    } finally {
        writeLock.unlock();
    }
}
Also used : DatasetModuleMeta(io.cdap.cdap.proto.DatasetModuleMeta) DatasetTypeMeta(io.cdap.cdap.proto.DatasetTypeMeta) DatasetDefinitionRegistry(io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry)

Example 4 with DatasetDefinitionRegistry

use of io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry in project cdap by caskdata.

the class InMemoryDatasetFramework method getDefinitionForType.

@Nullable
@VisibleForTesting
DatasetDefinition getDefinitionForType(NamespaceId namespaceId, String datasetType) {
    DatasetDefinitionRegistry registry = registries.get(namespaceId);
    if (registry != null && registry.hasType(datasetType)) {
        return registry.get(datasetType);
    }
    registry = registries.get(NamespaceId.SYSTEM);
    if (registry != null && registry.hasType(datasetType)) {
        return registry.get(datasetType);
    }
    return null;
}
Also used : DatasetDefinitionRegistry(io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry) VisibleForTesting(com.google.common.annotations.VisibleForTesting) Nullable(javax.annotation.Nullable)

Aggregations

DatasetDefinitionRegistry (io.cdap.cdap.api.dataset.module.DatasetDefinitionRegistry)4 VisibleForTesting (com.google.common.annotations.VisibleForTesting)1 AbstractModule (com.google.inject.AbstractModule)1 Injector (com.google.inject.Injector)1 ConfigModule (io.cdap.cdap.common.guice.ConfigModule)1 NamespaceAdminTestModule (io.cdap.cdap.common.guice.NamespaceAdminTestModule)1 NonCustomLocationUnitTestModule (io.cdap.cdap.common.guice.NonCustomLocationUnitTestModule)1 NamespaceAdmin (io.cdap.cdap.common.namespace.NamespaceAdmin)1 NamespacePathLocator (io.cdap.cdap.common.namespace.NamespacePathLocator)1 NamespaceQueryAdmin (io.cdap.cdap.common.namespace.NamespaceQueryAdmin)1 AuditTestModule (io.cdap.cdap.data2.audit.AuditTestModule)1 InMemoryAuditPublisher (io.cdap.cdap.data2.audit.InMemoryAuditPublisher)1 DatasetModuleMeta (io.cdap.cdap.proto.DatasetModuleMeta)1 DatasetTypeMeta (io.cdap.cdap.proto.DatasetTypeMeta)1 DefaultOwnerAdmin (io.cdap.cdap.security.impersonation.DefaultOwnerAdmin)1 InMemoryOwnerStore (io.cdap.cdap.security.impersonation.InMemoryOwnerStore)1 OwnerAdmin (io.cdap.cdap.security.impersonation.OwnerAdmin)1 OwnerStore (io.cdap.cdap.security.impersonation.OwnerStore)1 File (java.io.File)1 Nullable (javax.annotation.Nullable)1