Skip to content

Commit 4988a13

Browse files
Build(deps): Bump aas4j-version from 2.0.1 to 2.0.2 (#1011)
* Build(deps): Bump aas4j-version from 2.0.1 to 2.0.2 Bumps `aas4j-version` from 2.0.1 to 2.0.2. Updates `org.eclipse.digitaltwin.aas4j:aas4j-model` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/eclipse-digitaltwin/aas4j/releases) - [Commits](eclipse-aas4j/aas4j@2.0.1...2.0.2) Updates `org.eclipse.digitaltwin.aas4j:aas4j-dataformat-json` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/eclipse-digitaltwin/aas4j/releases) - [Commits](eclipse-aas4j/aas4j@2.0.1...2.0.2) Updates `org.eclipse.digitaltwin.aas4j:aas4j-dataformat-xml` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/eclipse-digitaltwin/aas4j/releases) - [Commits](eclipse-aas4j/aas4j@2.0.1...2.0.2) Updates `org.eclipse.digitaltwin.aas4j:aas4j-dataformat-core` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/eclipse-digitaltwin/aas4j/releases) - [Commits](eclipse-aas4j/aas4j@2.0.1...2.0.2) Updates `org.eclipse.digitaltwin.aas4j:aas4j-dataformat-aasx` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/eclipse-digitaltwin/aas4j/releases) - [Commits](eclipse-aas4j/aas4j@2.0.1...2.0.2) --- updated-dependencies: - dependency-name: org.eclipse.digitaltwin.aas4j:aas4j-dataformat-aasx dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.eclipse.digitaltwin.aas4j:aas4j-dataformat-core dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.eclipse.digitaltwin.aas4j:aas4j-dataformat-json dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.eclipse.digitaltwin.aas4j:aas4j-dataformat-xml dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.eclipse.digitaltwin.aas4j:aas4j-model dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Fixes failing tests * Enhance AAS Environment Authorization and Testing - Added support for concept description IDs in AAS environment target information and authorization checks. - Implemented new tests for verifying concept description ID handling in permission verification. - Updated AasEnvironmentLoaderTest to include scenarios for environments with and without shells, submodels, and concept descriptions. - Enhanced AuthorizedAasEnvironment to handle concept descriptions in permission checks and serialization. - Introduced new test classes for verifying the behavior of the AasEnvironmentTargetPermissionVerifier and AuthorizedAasEnvironment. - Refactored existing tests to ensure compatibility with the new concept description handling. - Removed unused dependency from pom.xml. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aaron Zielstorff <aaron.zielstorff@iese.fraunhofer.de>
1 parent 27c5f09 commit 4988a13

20 files changed

Lines changed: 637 additions & 179 deletions

File tree

.github/workflows/scripts/build_example_images.sh

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,31 @@ if [ "$#" -ne 1 ]; then
66
exit 1
77
fi
88

9+
aas_discovery_modules=(
10+
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice-core"
11+
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice-backend"
12+
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice-backend-h2"
13+
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice-backend-mongodb"
14+
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice-http"
15+
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice-feature-authorization"
16+
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice.component"
17+
)
18+
919
case "$1" in
1020
mem)
1121
modules=(
1222
"org.eclipse.digitaltwin.basyx:basyx.aasenvironment.component"
1323
"org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-log-mem"
1424
"org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-log-mem"
15-
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice.component"
25+
"${aas_discovery_modules[@]}"
1626
)
1727
;;
1828
mongodb)
1929
modules=(
2030
"org.eclipse.digitaltwin.basyx:basyx.aasenvironment.component"
2131
"org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-log-mongodb"
2232
"org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-log-mongodb"
23-
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice.component"
33+
"${aas_discovery_modules[@]}"
2434
)
2535
;;
2636
dynamic-rbac)
@@ -29,7 +39,7 @@ case "$1" in
2939
"org.eclipse.digitaltwin.basyx:basyx.aasregistry-service-release-log-mongodb"
3040
"org.eclipse.digitaltwin.basyx:basyx.submodelregistry-service-release-log-mongodb"
3141
"org.eclipse.digitaltwin.basyx:basyx.submodelrepository.component"
32-
"org.eclipse.digitaltwin.basyx:basyx.aasdiscoveryservice.component"
42+
"${aas_discovery_modules[@]}"
3343
)
3444
;;
3545
kafka)

basyx.aasenvironment/basyx.aasenvironment-core/src/main/java/org/eclipse/digitaltwin/basyx/aasenvironment/base/DefaultAASEnvironment.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,10 @@ public byte[] createAASXAASEnvironmentSerialization(@Valid List<String> aasIds,
107107
List<InMemoryFile> relatedFiles = new ArrayList<>();
108108
HashMap<String, List<File>> fileSubmodelElements = new HashMap<>();
109109

110-
aasEnvironment.getSubmodels().forEach(sm-> fileSubmodelElements.put(sm.getId(),getAllFileSubmodelElements(sm)));
110+
getEnvironmentSubmodels(aasEnvironment).forEach(sm -> fileSubmodelElements.put(sm.getId(), getAllFileSubmodelElements(sm)));
111111

112112
addFilesToRelatedFiles(fileSubmodelElements, relatedFiles);
113-
aasEnvironment.getAssetAdministrationShells().forEach(aas->addThumbnailToRelatedFiles(aas.getId(),aas.getAssetInformation().getDefaultThumbnail(),relatedFiles));
113+
getEnvironmentAssetAdministrationShells(aasEnvironment).forEach(aas -> addThumbnailToRelatedFiles(aas.getId(), aas.getAssetInformation().getDefaultThumbnail(), relatedFiles));
114114

115115
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
116116
aasxSerializer.write(aasEnvironment, relatedFiles, outputStream);
@@ -164,14 +164,14 @@ private void createConceptDescriptionsOnRepositoryFromEnvironment(Environment en
164164
IdentifiableRepository<ConceptDescription> repo = new DelegatingIdentifiableRepository<ConceptDescription>(conceptDescriptionRepository::getConceptDescription, conceptDescriptionRepository::updateConceptDescription,
165165
conceptDescriptionRepository::createConceptDescription);
166166
IdentifiableUploader<ConceptDescription> uploader = new IdentifiableUploader<ConceptDescription>(repo);
167-
for (ConceptDescription conceptDescription : environment.getConceptDescriptions()) {
167+
for (ConceptDescription conceptDescription : getEnvironmentConceptDescriptions(environment)) {
168168
boolean success = uploader.upload(conceptDescription);
169169
logSuccessConceptDescription(conceptDescription.getId(), success);
170170
}
171171
}
172172

173173
private void createSubmodelsOnRepositoryFromEnvironment(Environment environment, List<InMemoryFile> relatedFiles) {
174-
List<Submodel> submodels = environment.getSubmodels();
174+
List<Submodel> submodels = getEnvironmentSubmodels(environment);
175175

176176
createSubmodelsOnRepository(submodels);
177177

@@ -219,7 +219,7 @@ private InMemoryFile getAssociatedInMemoryFile(List<InMemoryFile> relatedFiles,
219219
private void createShellsOnRepositoryFromEnvironment(Environment environment, List<InMemoryFile> relatedFiles) {
220220
IdentifiableRepository<AssetAdministrationShell> repo = new DelegatingIdentifiableRepository<AssetAdministrationShell>(aasRepository::getAas, aasRepository::updateAas, aasRepository::createAas);
221221
IdentifiableUploader<AssetAdministrationShell> uploader = new IdentifiableUploader<>(repo);
222-
for (AssetAdministrationShell shell : environment.getAssetAdministrationShells()) {
222+
for (AssetAdministrationShell shell : getEnvironmentAssetAdministrationShells(environment)) {
223223
boolean success = uploader.upload(shell);
224224
setThumbnail(shell.getId(), relatedFiles);
225225
logSuccess("shell", shell.getId(), success);
@@ -306,11 +306,11 @@ private Environment createEnvironment(List<String> aasIds, List<String> submodel
306306
}
307307

308308
private void includeConceptDescriptions(Environment aasEnvironment) {
309-
List<ConceptDescription> conceptDescriptions = cloneCreator.cloneConceptDescriptions(getConceptDescriptions(aasEnvironment));
309+
List<ConceptDescription> conceptDescriptions = cloneCreator.cloneConceptDescriptions(getReferencedConceptDescriptions(aasEnvironment));
310310
aasEnvironment.setConceptDescriptions(conceptDescriptions);
311311
}
312312

313-
private List<ConceptDescription> getConceptDescriptions(Environment env) {
313+
private List<ConceptDescription> getReferencedConceptDescriptions(Environment env) {
314314
if (conceptDescriptionRepository == null) {
315315
throw new NullPointerException("The parameter includeConceptDescriptions is set to true but ConceptDescriptionRepository is null");
316316
}
@@ -329,6 +329,22 @@ private ConceptDescription fetchConceptDescriptionFromRepo(String conceptDescrip
329329
}
330330
}
331331

332+
private List<AssetAdministrationShell> getEnvironmentAssetAdministrationShells(Environment environment) {
333+
return emptyIfNull(environment.getAssetAdministrationShells());
334+
}
335+
336+
private List<Submodel> getEnvironmentSubmodels(Environment environment) {
337+
return emptyIfNull(environment.getSubmodels());
338+
}
339+
340+
private List<ConceptDescription> getEnvironmentConceptDescriptions(Environment environment) {
341+
return emptyIfNull(environment.getConceptDescriptions());
342+
}
343+
344+
private <T> List<T> emptyIfNull(List<T> elements) {
345+
return elements == null ? Collections.emptyList() : elements;
346+
}
347+
332348
private void addFilesToRelatedFiles(HashMap<String, List<File>> submodelFileSMEMap, List<InMemoryFile> relatedFiles) {
333349
submodelFileSMEMap.forEach((submodelId, fileSubmodelElementList) -> fileSubmodelElementList.forEach(file -> {
334350
try {

basyx.aasenvironment/basyx.aasenvironment-core/src/test/java/org/eclipse/digitaltwin/basyx/aasenvironment/AasEnvironmentLoaderTest.java

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727

2828
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
2929
import org.eclipse.digitaltwin.aas4j.v3.dataformat.core.DeserializationException;
30+
import org.eclipse.digitaltwin.aas4j.v3.model.Environment;
31+
import org.eclipse.digitaltwin.aas4j.v3.model.impl.DefaultEnvironment;
3032
import org.eclipse.digitaltwin.basyx.aasenvironment.base.DefaultAASEnvironment;
3133
import org.eclipse.digitaltwin.basyx.aasenvironment.environmentloader.CompleteEnvironment;
3234
import org.eclipse.digitaltwin.basyx.aasrepository.AasRepository;
@@ -98,6 +100,37 @@ public void testWithResourceFile_AllElementsAreDeployed() throws InvalidFormatEx
98100
Assert.assertEquals(2, conceptDescriptionRepository.getAllConceptDescriptions(PaginationInfo.NO_LIMIT).getResult().size());
99101
}
100102

103+
@Test
104+
public void testEnvironmentWithoutShells_LoadsOtherElements() {
105+
Environment environment = new DefaultEnvironment();
106+
environment.setSubmodels(List.copyOf(TestAASEnvironmentSerialization.createDummySubmodels()));
107+
108+
loadEnvironment(environment);
109+
110+
assertRepositorySizes(0, 2, 0);
111+
}
112+
113+
@Test
114+
public void testEnvironmentWithoutSubmodels_LoadsOtherElements() {
115+
Environment environment = new DefaultEnvironment();
116+
environment.setAssetAdministrationShells(List.copyOf(TestAASEnvironmentSerialization.createDummyShells()));
117+
118+
loadEnvironment(environment);
119+
120+
assertRepositorySizes(2, 0, 0);
121+
}
122+
123+
@Test
124+
public void testEnvironmentWithoutConceptDescriptions_LoadsOtherElements() {
125+
Environment environment = new DefaultEnvironment();
126+
environment.setAssetAdministrationShells(List.copyOf(TestAASEnvironmentSerialization.createDummyShells()));
127+
environment.setSubmodels(List.copyOf(TestAASEnvironmentSerialization.createDummySubmodels()));
128+
129+
loadEnvironment(environment);
130+
131+
assertRepositorySizes(2, 2, 0);
132+
}
133+
101134
@Test
102135
public void testDeployedTwiceNoVersion_AllDeployedButNotOverriden() throws InvalidFormatException, IOException, DeserializationException, ZipBombException {
103136
loadRepositories(List.of(TEST_ENVIRONMENT_JSON));
@@ -199,6 +232,17 @@ private void loadRepositoriesWithEnvironment(List<String> pathsToLoad, AasEnviro
199232
aasEnvironment.loadEnvironment(CompleteEnvironment.fromFile(file));
200233
}
201234
}
235+
236+
private void loadEnvironment(Environment environment) {
237+
AasEnvironment envLoader = new DefaultAASEnvironment(aasRepository, submodelRepository, conceptDescriptionRepository);
238+
envLoader.loadEnvironment(new CompleteEnvironment(environment, null));
239+
}
240+
241+
private void assertRepositorySizes(int expectedAasCount, int expectedSubmodelCount, int expectedConceptDescriptionCount) {
242+
Assert.assertEquals(expectedAasCount, aasRepository.getAllAas(null, null, PaginationInfo.NO_LIMIT).getResult().size());
243+
Assert.assertEquals(expectedSubmodelCount, submodelRepository.getAllSubmodels(PaginationInfo.NO_LIMIT).getResult().size());
244+
Assert.assertEquals(expectedConceptDescriptionCount, conceptDescriptionRepository.getAllConceptDescriptions(PaginationInfo.NO_LIMIT).getResult().size());
245+
}
202246

203247
private void deleteElementsFromRepos() {
204248
aasRepository.getAllAas(null, null, PaginationInfo.NO_LIMIT).getResult().stream().forEach(aas -> aasRepository.deleteAas(aas.getId()));
@@ -210,4 +254,4 @@ private void deleteElementsFromRepos() {
210254
Assert.assertEquals(0, conceptDescriptionRepository.getAllConceptDescriptions(PaginationInfo.NO_LIMIT).getResult().size());
211255
}
212256

213-
}
257+
}

basyx.aasenvironment/basyx.aasenvironment-feature-authorization/src/main/java/org/eclipse/digitaltwin/basyx/aasenvironment/feature/authorization/AasEnvironmentTargetInformation.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,25 @@ public class AasEnvironmentTargetInformation implements TargetInformation {
4545

4646
private List<String> aasIds;
4747
private List<String> submodelIds;
48+
private List<String> conceptDescriptionIds;
4849

4950
@JsonCreator
50-
public AasEnvironmentTargetInformation(final @JsonProperty("aasIds") List<String> aasIds, final @JsonProperty("submodelIds") List<String> submodelIds) {
51+
public AasEnvironmentTargetInformation(final @JsonProperty("aasIds") List<String> aasIds, final @JsonProperty("submodelIds") List<String> submodelIds, final @JsonProperty("conceptDescriptionIds") List<String> conceptDescriptionIds) {
5152
this.aasIds = aasIds;
5253
this.submodelIds = submodelIds;
54+
this.conceptDescriptionIds = conceptDescriptionIds;
55+
}
56+
57+
public AasEnvironmentTargetInformation(final List<String> aasIds, final List<String> submodelIds) {
58+
this(aasIds, submodelIds, null);
5359
}
5460

5561
@Override
5662
public Map<String, Object> toMap() {
5763
final Map<String, Object> map = new HashMap<>();
5864
map.put("aasIds", aasIds);
5965
map.put("submodelIds", submodelIds);
66+
map.put("conceptDescriptionIds", conceptDescriptionIds);
6067

6168
return map;
6269
}
@@ -69,9 +76,13 @@ public List<String> getSubmodelIds() {
6976
return submodelIds;
7077
}
7178

79+
public List<String> getConceptDescriptionIds() {
80+
return conceptDescriptionIds;
81+
}
82+
7283
@Override
7384
public int hashCode() {
74-
return Objects.hash(aasIds, submodelIds);
85+
return Objects.hash(aasIds, submodelIds, conceptDescriptionIds);
7586
}
7687

7788
@Override
@@ -83,12 +94,12 @@ public boolean equals(Object obj) {
8394
if (getClass() != obj.getClass())
8495
return false;
8596
AasEnvironmentTargetInformation other = (AasEnvironmentTargetInformation) obj;
86-
return Objects.equals(aasIds, other.aasIds) && Objects.equals(submodelIds, other.submodelIds);
97+
return Objects.equals(aasIds, other.aasIds) && Objects.equals(submodelIds, other.submodelIds) && Objects.equals(conceptDescriptionIds, other.conceptDescriptionIds);
8798
}
8899

89100
@Override
90101
public String toString() {
91-
return "AasEnvironmentTargetInformation [aasIds=" + aasIds + ", submodelIds=" + submodelIds;
102+
return "AasEnvironmentTargetInformation [aasIds=" + aasIds + ", submodelIds=" + submodelIds + ", conceptDescriptionIds=" + conceptDescriptionIds + "]";
92103
}
93104

94105
}

basyx.aasenvironment/basyx.aasenvironment-feature-authorization/src/main/java/org/eclipse/digitaltwin/basyx/aasenvironment/feature/authorization/AuthorizedAasEnvironment.java

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@
2626
package org.eclipse.digitaltwin.basyx.aasenvironment.feature.authorization;
2727

2828
import java.io.IOException;
29+
import java.util.Collections;
2930
import java.util.List;
3031
import java.util.stream.Collectors;
3132

3233
import org.eclipse.digitaltwin.aas4j.v3.dataformat.core.SerializationException;
3334
import org.eclipse.digitaltwin.aas4j.v3.model.AssetAdministrationShell;
35+
import org.eclipse.digitaltwin.aas4j.v3.model.ConceptDescription;
3436
import org.eclipse.digitaltwin.aas4j.v3.model.Environment;
3537
import org.eclipse.digitaltwin.aas4j.v3.model.Identifiable;
3638
import org.eclipse.digitaltwin.aas4j.v3.model.Submodel;
@@ -48,6 +50,8 @@
4850
*/
4951
public class AuthorizedAasEnvironment implements AasEnvironment {
5052

53+
private static final String ALL_ALLOWED_WILDCARD = "*";
54+
5155
private AasEnvironment decorated;
5256
private RbacPermissionResolver<AasEnvironmentTargetInformation> permissionResolver;
5357

@@ -58,7 +62,7 @@ public AuthorizedAasEnvironment(AasEnvironment decorated, RbacPermissionResolver
5862

5963
@Override
6064
public String createJSONAASEnvironmentSerialization(List<String> aasIds, List<String> submodelIds, boolean includeConceptDescriptions) throws SerializationException {
61-
boolean isAuthorized = permissionResolver.hasPermission(Action.READ, new AasEnvironmentTargetInformation(aasIds, submodelIds));
65+
boolean isAuthorized = permissionResolver.hasPermission(Action.READ, new AasEnvironmentTargetInformation(aasIds, submodelIds, getConceptDescriptionIds(includeConceptDescriptions)));
6266

6367
throwExceptionIfInsufficientPermission(isAuthorized);
6468

@@ -67,7 +71,7 @@ public String createJSONAASEnvironmentSerialization(List<String> aasIds, List<St
6771

6872
@Override
6973
public String createXMLAASEnvironmentSerialization(List<String> aasIds, List<String> submodelIds, boolean includeConceptDescriptions) throws SerializationException {
70-
boolean isAuthorized = permissionResolver.hasPermission(Action.READ, new AasEnvironmentTargetInformation(aasIds, submodelIds));
74+
boolean isAuthorized = permissionResolver.hasPermission(Action.READ, new AasEnvironmentTargetInformation(aasIds, submodelIds, getConceptDescriptionIds(includeConceptDescriptions)));
7175

7276
throwExceptionIfInsufficientPermission(isAuthorized);
7377

@@ -76,7 +80,7 @@ public String createXMLAASEnvironmentSerialization(List<String> aasIds, List<Str
7680

7781
@Override
7882
public byte[] createAASXAASEnvironmentSerialization(List<String> aasIds, List<String> submodelIds, boolean includeConceptDescriptions) throws SerializationException, IOException {
79-
boolean isAuthorized = permissionResolver.hasPermission(Action.READ, new AasEnvironmentTargetInformation(aasIds, submodelIds));
83+
boolean isAuthorized = permissionResolver.hasPermission(Action.READ, new AasEnvironmentTargetInformation(aasIds, submodelIds, getConceptDescriptionIds(includeConceptDescriptions)));
8084

8185
throwExceptionIfInsufficientPermission(isAuthorized);
8286

@@ -92,7 +96,7 @@ private void throwExceptionIfInsufficientPermission(boolean isAuthorized) {
9296
public void loadEnvironment(CompleteEnvironment completeEnvironment, boolean ignoreDuplicates) {
9397
Environment environment = completeEnvironment.getEnvironment();
9498

95-
boolean isAuthorized = permissionResolver.hasPermission(Action.CREATE, new AasEnvironmentTargetInformation(getAasIds(environment.getAssetAdministrationShells()), getSubmodelIds(environment.getSubmodels())));
99+
boolean isAuthorized = permissionResolver.hasPermission(Action.CREATE, new AasEnvironmentTargetInformation(getAasIds(environment.getAssetAdministrationShells()), getSubmodelIds(environment.getSubmodels()), getConceptDescriptionIds(environment.getConceptDescriptions())));
96100

97101
throwExceptionIfInsufficientPermission(isAuthorized);
98102

@@ -105,13 +109,35 @@ public void loadEnvironment(CompleteEnvironment completeEnvironment) {
105109
}
106110

107111
private List<String> getSubmodelIds(List<Submodel> submodels) {
112+
if (submodels == null) {
113+
return Collections.emptyList();
114+
}
108115

109116
return submodels.stream().map(Identifiable::getId).collect(Collectors.toList());
110117
}
111118

112119
private List<String> getAasIds(List<AssetAdministrationShell> assetAdministrationShells) {
120+
if (assetAdministrationShells == null) {
121+
return Collections.emptyList();
122+
}
113123

114124
return assetAdministrationShells.stream().map(Identifiable::getId).collect(Collectors.toList());
115125
}
116126

127+
private List<String> getConceptDescriptionIds(List<ConceptDescription> conceptDescriptions) {
128+
if (conceptDescriptions == null) {
129+
return Collections.emptyList();
130+
}
131+
132+
return conceptDescriptions.stream().map(Identifiable::getId).collect(Collectors.toList());
133+
}
134+
135+
private List<String> getConceptDescriptionIds(boolean includeConceptDescriptions) {
136+
if (!includeConceptDescriptions) {
137+
return Collections.emptyList();
138+
}
139+
140+
return Collections.singletonList(ALL_ALLOWED_WILDCARD);
141+
}
142+
117143
}

0 commit comments

Comments
 (0)