private <T> T performDatasetAdmin(final DatasetId datasetInstanceId, Operation<T> operation) throws Exception { try (SystemDatasetInstantiator datasetInstantiator = datasetInstantiatorFactory.create()) { DatasetAdmin admin = impersonator.doAs(datasetInstanceId, (Callable<DatasetAdmin>) () -> { DatasetAdmin admin1 = datasetInstantiator.getDatasetAdmin(datasetInstanceId); if (admin1 == null) { throw new NotFoundException("Couldn't obtain DatasetAdmin for dataset instance " + datasetInstanceId); } // returns a DatasetAdmin that executes operations as a particular user, for a particular namespace return new ImpersonatingDatasetAdmin(admin1, impersonator, datasetInstanceId); }); try { return operation.perform(admin); } finally { Closeables.closeQuietly(admin); } } }
private <T> T performDatasetAdmin(final DatasetId datasetInstanceId, Operation<T> operation) throws Exception { try (SystemDatasetInstantiator datasetInstantiator = datasetInstantiatorFactory.create()) { DatasetAdmin admin = impersonator.doAs(datasetInstanceId, (Callable<DatasetAdmin>) () -> { DatasetAdmin admin1 = datasetInstantiator.getDatasetAdmin(datasetInstanceId); if (admin1 == null) { throw new NotFoundException("Couldn't obtain DatasetAdmin for dataset instance " + datasetInstanceId); } // returns a DatasetAdmin that executes operations as a particular user, for a particular namespace return new ImpersonatingDatasetAdmin(admin1, impersonator, datasetInstanceId); }); try { return operation.perform(admin); } finally { Closeables.closeQuietly(admin); } } }