Skip to content

Commit 04fe813

Browse files
committed
Merge remote-tracking branch 'origin/issue/8_Duplicated_Packages' into
develop
2 parents d5f55fe + a1b3046 commit 04fe813

File tree

4 files changed

+37
-74
lines changed

4 files changed

+37
-74
lines changed

src/main/java/dev/dsf/fhir/validator/implementation_guide/ValidationPackage.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -169,19 +169,19 @@ private Consumer<ValidationPackageEntry> doParseResources(FhirContext context, L
169169
resourceString = resourceString.replaceAll("<h2>[\\s\\w\\[\\]]*</tt>", "");
170170
IBaseResource resource = context.newJsonParser().parseResource(resourceString);
171171

172-
if (resource instanceof CodeSystem)
173-
codeSystems.add((CodeSystem) resource);
174-
else if (resource instanceof NamingSystem)
175-
namingSystems.add((NamingSystem) resource);
176-
else if (resource instanceof StructureDefinition)
172+
if (resource instanceof CodeSystem c)
173+
codeSystems.add(c);
174+
else if (resource instanceof NamingSystem n)
175+
namingSystems.add(n);
176+
else if (resource instanceof StructureDefinition s)
177177
{
178-
if (!StructureDefinitionKind.LOGICAL.equals(((StructureDefinition) resource).getKind()))
179-
structureDefinitions.add((StructureDefinition) resource);
178+
if (!StructureDefinitionKind.LOGICAL.equals(s.getKind()))
179+
structureDefinitions.add(s);
180180
else
181181
logger.debug("Ignoring StructureDefinition with kind = logical");
182182
}
183-
else if (resource instanceof ValueSet)
184-
valueSets.add((ValueSet) resource);
183+
else if (resource instanceof ValueSet v)
184+
valueSets.add(v);
185185
else
186186
logger.debug("Ignoring resource of type {}", resource.getClass().getName());
187187
}

src/main/java/dev/dsf/fhir/validator/implementation_guide/ValidationPackageClientJersey.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ public ValidationPackage download(ValidationPackageIdentifier identifier)
9797
{
9898
Objects.requireNonNull(identifier, "identifier");
9999

100-
try (InputStream in = getResource().path(identifier.getName()).path(identifier.getVersion())
100+
try (InputStream in = getResource().path(identifier.name()).path(identifier.version())
101101
.request("application/tar+gzip").get(InputStream.class))
102102
{
103-
return ValidationPackage.from(identifier.getName(), identifier.getVersion(), in);
103+
return ValidationPackage.from(identifier.name(), identifier.version(), in);
104104
}
105105
}
106106

Lines changed: 1 addition & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package dev.dsf.fhir.validator.implementation_guide;
22

3-
import java.util.Objects;
4-
5-
public class ValidationPackageIdentifier
3+
public record ValidationPackageIdentifier(String name, String version)
64
{
75
public static ValidationPackageIdentifier fromString(String nameAndVersion)
86
{
@@ -14,65 +12,9 @@ public static ValidationPackageIdentifier fromString(String nameAndVersion)
1412
return new ValidationPackageIdentifier(split[0], split[1]);
1513
}
1614

17-
private final String name;
18-
private final String version;
19-
20-
public ValidationPackageIdentifier(String name, String version)
21-
{
22-
this.name = Objects.requireNonNull(name, "name");
23-
this.version = Objects.requireNonNull(version, "version");
24-
}
25-
26-
public String getName()
27-
{
28-
return name;
29-
}
30-
31-
public String getVersion()
32-
{
33-
return version;
34-
}
35-
3615
@Override
3716
public String toString()
3817
{
3918
return name + "|" + version;
4019
}
41-
42-
@Override
43-
public int hashCode()
44-
{
45-
final int prime = 31;
46-
int result = 1;
47-
result = prime * result + ((name == null) ? 0 : name.hashCode());
48-
result = prime * result + ((version == null) ? 0 : version.hashCode());
49-
return result;
50-
}
51-
52-
@Override
53-
public boolean equals(Object obj)
54-
{
55-
if (this == obj)
56-
return true;
57-
if (obj == null)
58-
return false;
59-
if (getClass() != obj.getClass())
60-
return false;
61-
ValidationPackageIdentifier other = (ValidationPackageIdentifier) obj;
62-
if (name == null)
63-
{
64-
if (other.name != null)
65-
return false;
66-
}
67-
else if (!name.equals(other.name))
68-
return false;
69-
if (version == null)
70-
{
71-
if (other.version != null)
72-
return false;
73-
}
74-
else if (!version.equals(other.version))
75-
return false;
76-
return true;
77-
}
7820
}

src/main/java/dev/dsf/fhir/validator/implementation_guide/ValidationPackageManagerImpl.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import java.util.Map;
99
import java.util.Objects;
1010
import java.util.Optional;
11+
import java.util.stream.Collectors;
12+
import java.util.stream.Stream;
1113

1214
import org.slf4j.Logger;
1315
import org.slf4j.LoggerFactory;
@@ -72,6 +74,11 @@ public List<ValidationPackageWithDepedencies> downloadPackagesWithDependencies(
7274
packages.add(ValidationPackageWithDepedencies.from(packagesByNameAndVersion, identifier));
7375
}
7476

77+
logger.info("Using packages {} for validation",
78+
packages.stream().flatMap(p -> Stream.concat(Stream.of(p), p.getDependencies().stream()))
79+
.map(ValidationPackage::getIdentifier).map(ValidationPackageIdentifier::toString).sorted()
80+
.collect(Collectors.joining(", ", "[", "]")));
81+
7582
return packages;
7683
}
7784

@@ -102,6 +109,20 @@ else if (noDownloadPackages.contains(identifier))
102109
}
103110

104111
ValidationPackage vPackage = downloadAndHandleException(identifier);
112+
identifier = vPackage.getIdentifier();
113+
114+
// check again, as the identifier may have changed from a A.B.x wildcard
115+
if (allPackagesByNameAndVersion.containsKey(identifier))
116+
{
117+
// already downloaded
118+
return;
119+
}
120+
else if (noDownloadPackages.contains(identifier))
121+
{
122+
logger.debug("Not using package {}", identifier.toString());
123+
return;
124+
}
125+
105126
packagesByNameAndVersion.put(identifier, vPackage);
106127
allPackagesByNameAndVersion.put(identifier, vPackage);
107128

@@ -112,15 +133,15 @@ else if (noDownloadPackages.contains(identifier))
112133

113134
private ValidationPackage downloadAndHandleException(ValidationPackageIdentifier identifier)
114135
{
115-
if (identifier.getVersion().matches("\\d+\\.\\d+\\.x"))
136+
if (identifier.version().matches("\\d+\\.\\d+\\.x"))
116137
{
117-
String versoinPrefix = identifier.getVersion().substring(0, identifier.getVersion().length() - 1);
138+
String versoinPrefix = identifier.version().substring(0, identifier.version().length() - 1);
118139

119-
PackageVersions versions = validationPackageClient.list(identifier.getName());
140+
PackageVersions versions = validationPackageClient.list(identifier.name());
120141
Optional<String> latest = versions.getLatest(versoinPrefix);
121142

122143
if (latest.isPresent())
123-
identifier = new ValidationPackageIdentifier(identifier.getName(), latest.get());
144+
identifier = new ValidationPackageIdentifier(identifier.name(), latest.get());
124145
}
125146

126147
try

0 commit comments

Comments
 (0)