public DatasetModuleId datasetModule(String module) { return new DatasetModuleId(namespace, module); }
public static DatasetModule fromEntityId(DatasetModuleId moduleId) { return from(Id.Namespace.fromEntityId(moduleId.getNamespaceId()), moduleId.getModule()); } }
@Override public void deleteModule(DatasetModuleId moduleId) throws DatasetManagementException { clientCache.getUnchecked(moduleId.getParent()).deleteModule(moduleId.getEntityName()); }
@SuppressWarnings("unused") public static DatasetModuleId fromIdParts(Iterable<String> idString) { Iterator<String> iterator = idString.iterator(); return new DatasetModuleId(next(iterator, "namespace"), nextAndEnd(iterator, "module")); }
/** * Retrieves a module from the given namespace * * @param datasetModuleId the {@link DatasetModuleId} for the module to retrieve * @return {@link DatasetModuleMeta} for the module if found in the specified namespace, null otherwise */ @Nullable public DatasetModuleMeta getModule(DatasetModuleId datasetModuleId) { return get(getModuleKey(datasetModuleId.getNamespace(), datasetModuleId.getEntityName()), DatasetModuleMeta.class); }
datasetModuleId.getParent(), ImmutableSet.copyOf(module.getTypes())); DatasetModuleId usedModuleId = new DatasetModuleId(datasetModuleId.getNamespace(), usedModuleName); usedModule = datasetTypeMDS.getModule(usedModuleId); Preconditions.checkState(usedModule != null, "Could not find a module %s that the module %s uses.", usedModuleName, datasetModuleId.getEntityName()); usedModule.removeUsedByModule(datasetModuleId.getEntityName()); datasetTypeMDS.writeModule(usedModuleId.getParent(), usedModule);
/** * Checks if a dataset module exists. * * @param module the dataset module to check * @throws IOException if a network error occurred * @throws UnauthenticatedException if the request is not authorized successfully in the gateway server */ public boolean exists(DatasetModuleId module) throws IOException, UnauthenticatedException, UnauthorizedException { URL url = config.resolveNamespacedURLV3(module.getParent(), String.format("data/modules/%s", module.getModule())); HttpResponse response = restClient.execute(HttpMethod.GET, url, config.getAccessToken(), HttpURLConnection.HTTP_NOT_FOUND); return response.getResponseCode() != HttpURLConnection.HTTP_NOT_FOUND; }
/** * Deletes the specified {@link DatasetModuleId} */ @Override public void delete(DatasetModuleId datasetModuleId) throws Exception { NamespaceId namespaceId = datasetModuleId.getParent(); if (NamespaceId.SYSTEM.equals(namespaceId)) { throw new UnsupportedOperationException( String.format("Cannot delete module '%s' from '%s' namespace.", datasetModuleId.getModule(), datasetModuleId.getNamespace())); } ensureNamespaceExists(namespaceId); DatasetModuleMeta moduleMeta = typeManager.getModule(datasetModuleId); if (moduleMeta == null) { throw new DatasetModuleNotFoundException(datasetModuleId); } try { typeManager.deleteModule(datasetModuleId); } catch (DatasetModuleConflictException e) { throw new DatasetModuleCannotBeDeletedException(datasetModuleId, e.getMessage()); } }
@Override public String getEntityName() { return getModule(); }
/** * Tries to find a module in the specified namespace first. If it fails, tries to find it in the system namespace * * @param datasetModuleId {@link DatasetModuleId} for the module to retrieve * @return {@link DatasetModuleMeta} for the module if found either in the specified namespace or in the system * namespace, null otherwise */ @Nullable public DatasetModuleMeta getModuleWithFallback(DatasetModuleId datasetModuleId) { // Try to find module in the specified namespace first DatasetModuleMeta moduleMeta = getModule(datasetModuleId); // if not found, try to load it from system namespace if (moduleMeta == null) { moduleMeta = getModule(NamespaceId.SYSTEM.datasetModule(datasetModuleId.getEntityName())); } return moduleMeta; }
@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(); } }
private AbstractBodyConsumer createModuleConsumer(final DatasetModuleId datasetModuleId, final String className, final boolean forceUpdate) throws IOException, NotFoundException { final NamespaceId namespaceId = datasetModuleId.getParent(); final Location namespaceHomeLocation; try { File localDataDir = new File(cConf.get(Constants.CFG_LOCAL_DATA_DIR)); File namespaceBase = new File(localDataDir, namespacesDir); File tempDir = new File(new File(namespaceBase, datasetModuleId.getNamespace()), cConf.get(Constants.AppFabric.TEMP_DIR)).getAbsoluteFile(); if (!DirUtils.mkdirs(tempDir)) {
public NamespaceId getNamespaceId() { return new NamespaceId(moduleBeingAdded.getNamespace()); }
@Override public DatasetModuleMeta getModule(DatasetModuleId datasetModuleId) throws Exception { // No authorization for system modules if (!NamespaceId.SYSTEM.equals(datasetModuleId.getNamespaceId())) { AuthorizationUtil.ensureOnePrivilege(datasetModuleId, EnumSet.allOf(Action.class), authorizationEnforcer, authenticationContext.getPrincipal()); } return delegate.getModule(datasetModuleId); }
public DatasetModuleId(String namespace, String module) { super(namespace, EntityType.DATASET_MODULE); if (module == null) { throw new NullPointerException("Module ID cannot be null."); } ensureValidDatasetId("dataset module", module); this.module = module; }
datasetModuleId.getParent(), ImmutableSet.copyOf(module.getTypes())); DatasetModuleId usedModuleId = new DatasetModuleId(datasetModuleId.getNamespace(), usedModuleName); usedModule = datasetTypeMDS.getModule(usedModuleId); Preconditions.checkState(usedModule != null, "Could not find a module %s that the module %s uses.", usedModuleName, datasetModuleId.getEntityName()); usedModule.removeUsedByModule(datasetModuleId.getEntityName()); datasetTypeMDS.writeModule(usedModuleId.getParent(), usedModule);
/** * Retrieves a module from the given namespace * * @param datasetModuleId the {@link DatasetModuleId} for the module to retrieve * @return {@link DatasetModuleMeta} for the module if found in the specified namespace, null otherwise */ @Nullable public DatasetModuleMeta getModule(DatasetModuleId datasetModuleId) { return get(getModuleKey(datasetModuleId.getNamespace(), datasetModuleId.getEntityName()), DatasetModuleMeta.class); }
/** * Gets information about a dataset module. * * @param module the dataset module * @return {@link DatasetModuleMeta} of the dataset module * @throws DatasetModuleNotFoundException if the dataset module with the specified name was not found * @throws IOException if a network error occurred * @throws UnauthenticatedException if the request is not authorized successfully in the gateway server */ public DatasetModuleMeta get(DatasetModuleId module) throws DatasetModuleNotFoundException, IOException, UnauthenticatedException, UnauthorizedException { URL url = config.resolveNamespacedURLV3(module.getParent(), String.format("data/modules/%s", module.getModule())); HttpResponse response = restClient.execute(HttpMethod.GET, url, config.getAccessToken(), HttpURLConnection.HTTP_NOT_FOUND); if (response.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) { throw new DatasetModuleNotFoundException(module); } return ObjectResponse.fromJsonBody(response, DatasetModuleMeta.class).getResponseObject(); } }
/** * Deletes the specified {@link DatasetModuleId} */ @Override public void delete(DatasetModuleId datasetModuleId) throws Exception { NamespaceId namespaceId = datasetModuleId.getParent(); if (NamespaceId.SYSTEM.equals(namespaceId)) { throw new UnsupportedOperationException( String.format("Cannot delete module '%s' from '%s' namespace.", datasetModuleId.getModule(), datasetModuleId.getNamespace())); } ensureNamespaceExists(namespaceId); DatasetModuleMeta moduleMeta = typeManager.getModule(datasetModuleId); if (moduleMeta == null) { throw new DatasetModuleNotFoundException(datasetModuleId); } try { typeManager.deleteModule(datasetModuleId); } catch (DatasetModuleConflictException e) { throw new DatasetModuleCannotBeDeletedException(datasetModuleId, e.getMessage()); } }
@SuppressWarnings("unused") public static DatasetModuleId fromIdParts(Iterable<String> idString) { Iterator<String> iterator = idString.iterator(); return new DatasetModuleId(next(iterator, "namespace"), nextAndEnd(iterator, "module")); }