Added exposure of uninstall (#4567)

* Added exposure of uninstall

* Add changelog

---------

Co-authored-by: James Agnew <jamesagnew@gmail.com>
This commit is contained in:
Jens Kristian Villadsen 2023-03-23 22:08:11 +01:00 committed by GitHub
parent fb057d4fb1
commit 90895aab57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 4 deletions

View File

@ -0,0 +1,5 @@
---
type: add
issue: 4567
title: "The IPackageInstallerSvc interface for managing NPM packages now exposes an
uninstall method. Thanks to Jens Kristian Villadsen for the pull request!"

View File

@ -23,4 +23,6 @@ public interface IPackageInstallerSvc {
PackageInstallOutcomeJson install(PackageInstallationSpec theSpec); PackageInstallOutcomeJson install(PackageInstallationSpec theSpec);
PackageDeleteOutcomeJson uninstall(PackageInstallationSpec theSpec);
} }

View File

@ -47,7 +47,6 @@ import ca.uhn.fhir.rest.server.util.ISearchParamRegistry;
import ca.uhn.fhir.util.FhirTerser; import ca.uhn.fhir.util.FhirTerser;
import ca.uhn.fhir.util.SearchParameterUtil; import ca.uhn.fhir.util.SearchParameterUtil;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.Validate;
import org.hl7.fhir.instance.model.api.IBase; import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.instance.model.api.IBaseResource;
@ -67,7 +66,6 @@ import javax.annotation.Nonnull;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.io.IOException; import java.io.IOException;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -97,8 +95,6 @@ public class PackageInstallerSvcImpl implements IPackageInstallerSvc {
@Autowired @Autowired
private INpmPackageVersionDao myPackageVersionDao; private INpmPackageVersionDao myPackageVersionDao;
@Autowired @Autowired
private ISearchParamRegistry mySearchParamRegistry;
@Autowired
private ISearchParamRegistryController mySearchParamRegistryController; private ISearchParamRegistryController mySearchParamRegistryController;
@Autowired @Autowired
private PartitionSettings myPartitionSettings; private PartitionSettings myPartitionSettings;
@ -133,6 +129,10 @@ public class PackageInstallerSvcImpl implements IPackageInstallerSvc {
} }
} }
public PackageDeleteOutcomeJson uninstall(PackageInstallationSpec theInstallationSpec) {
return myPackageCacheManager.uninstallPackage(theInstallationSpec.getName(), theInstallationSpec.getVersion());
}
/** /**
* Loads and installs an IG from a file on disk or the Simplifier repo using * Loads and installs an IG from a file on disk or the Simplifier repo using
* the {@link IPackageCacheManager}. * the {@link IPackageCacheManager}.

View File

@ -77,6 +77,22 @@ public class NpmSearchR4Test extends BaseJpaR4Test {
} }
@Test
public void testUninstall(){
// Arrange
byte[] bytes = ClasspathUtil.loadResourceAsByteArray("/packages/hl7.fhir.uv.shorthand-0.11.1.tgz");
PackageInstallationSpec spec = new PackageInstallationSpec().setName("hl7.fhir.uv.shorthand").setVersion("0.11.1").setInstallMode(PackageInstallationSpec.InstallModeEnum.STORE_ONLY).setPackageContents(bytes);
// Act
igInstaller.install(spec);
igInstaller.uninstall(spec);
// Assert
assertEquals(0, myPackageCacheManager.search(new PackageSearchSpec()).getTotal());
}
@Test @Test
public void testSearchByResourceUrl() throws IOException { public void testSearchByResourceUrl() throws IOException {