diff --git a/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/open-api/patch-mongodb-annotations.yaml b/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/open-api/patch-mongodb-annotations.yaml index 61502cae4..a33266a7e 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/open-api/patch-mongodb-annotations.yaml +++ b/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/open-api/patch-mongodb-annotations.yaml @@ -1,7 +1,4 @@ --- -- op: add - path: /components/schemas/AssetAdministrationShellDescriptor/x-class-extra-annotation - value: '@org.springframework.data.mongodb.core.mapping.Document(collection = "aasdescriptors")' - op: add path: /components/schemas/AssetAdministrationShellDescriptor/allOf/1/properties/id/x-field-extra-annotation value: '@org.springframework.data.annotation.Id' diff --git a/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/configuration/MongoDbConfiguration.java b/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/configuration/MongoDbConfiguration.java index e4819ec01..c7f73e6b9 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/configuration/MongoDbConfiguration.java +++ b/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/aasregistry/service/configuration/MongoDbConfiguration.java @@ -32,6 +32,7 @@ import org.eclipse.digitaltwin.basyx.aasregistry.service.storage.AasRegistryStorageFeature; import org.eclipse.digitaltwin.basyx.aasregistry.service.storage.CursorEncodingRegistryStorage; import org.eclipse.digitaltwin.basyx.aasregistry.service.storage.mongodb.MongoDbAasRegistryStorage; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -51,12 +52,15 @@ @Log4j2 public class MongoDbConfiguration { + @Value("${basyx.aasregistry.mongodb.collectionName:submodeldescriptors}") + private String collectionName; + @Bean public AasRegistryStorage createStorage(MongoTemplate template, List features) { log.info("Creating mongodb storage"); log.info("Creating mongodb indices"); initializeIndices(template); - AasRegistryStorage storage = new CursorEncodingRegistryStorage(new MongoDbAasRegistryStorage(template)); + AasRegistryStorage storage = new CursorEncodingRegistryStorage(new MongoDbAasRegistryStorage(template, collectionName)); return applyFeatures(storage, features); } @@ -70,7 +74,7 @@ private AasRegistryStorage applyFeatures(AasRegistryStorage storage, List> getAllAasDescriptors(@NonNull PaginationInfo pRequest, @NonNull DescriptorFilter filter) { List allAggregations = new LinkedList<>(); applyFilter(filter, allAggregations); applySorting(allAggregations); applyPagination(pRequest, allAggregations); - AggregationResults results = template.aggregate(Aggregation.newAggregation(allAggregations), AssetAdministrationShellDescriptor.class, AssetAdministrationShellDescriptor.class); + AggregationResults results = template.aggregate(Aggregation.newAggregation(allAggregations), collectionName, AssetAdministrationShellDescriptor.class); List foundDescriptors = results.getMappedResults(); String cursor = resolveCursor(pRequest, foundDescriptors, AssetAdministrationShellDescriptor::getId); return new CursorResult<>(cursor, foundDescriptors); @@ -146,7 +148,7 @@ public Optional createFilterCriteria(DescriptorFilter filter) { @Override public AssetAdministrationShellDescriptor getAasDescriptor(@NonNull String aasDescriptorId) throws AasDescriptorNotFoundException { - AssetAdministrationShellDescriptor descriptor = template.findById(aasDescriptorId, AssetAdministrationShellDescriptor.class); + AssetAdministrationShellDescriptor descriptor = template.findById(aasDescriptorId, AssetAdministrationShellDescriptor.class, collectionName); if (descriptor == null) { throw new AasDescriptorNotFoundException(aasDescriptorId); } @@ -156,7 +158,7 @@ public AssetAdministrationShellDescriptor getAasDescriptor(@NonNull String aasDe @Override public void insertAasDescriptor(@Valid AssetAdministrationShellDescriptor descr) throws AasDescriptorAlreadyExistsException { try { - template.insert(descr); + template.insert(descr, collectionName); } catch (org.springframework.dao.DuplicateKeyException ex) { throw new AasDescriptorAlreadyExistsException(descr.getId()); } @@ -169,7 +171,7 @@ public void replaceAasDescriptor(@NonNull String aasDescriptorId, @NonNull Asset moveInTransaction(aasDescriptorId, descriptor); } else { Query query = Query.query(Criteria.where(ID).is(aasDescriptorId)); - AssetAdministrationShellDescriptor replaced = template.findAndReplace(query, descriptor); + AssetAdministrationShellDescriptor replaced = template.findAndReplace(query, descriptor, collectionName); if (replaced == null) { throw new AasDescriptorNotFoundException(aasDescriptorId); } @@ -180,10 +182,10 @@ private void moveInTransaction(@NonNull String aasDescriptorId, @NonNull AssetAd SessionScoped scoped = template.withSession(ClientSessionOptions.builder().build()); boolean removed = scoped.execute(operations -> { Query query = Query.query(Criteria.where(ID).is(aasDescriptorId)); - if (operations.remove(query, AssetAdministrationShellDescriptor.class).getDeletedCount() == 0) { + if (operations.remove(query, AssetAdministrationShellDescriptor.class, collectionName).getDeletedCount() == 0) { return false; } - operations.save(descriptor); + operations.save(descriptor, collectionName); return true; }); if (!removed) { @@ -194,14 +196,14 @@ private void moveInTransaction(@NonNull String aasDescriptorId, @NonNull AssetAd @Override public void removeAasDescriptor(@NonNull String aasDescriptorId) throws AasDescriptorNotFoundException { Query query = Query.query(Criteria.where(ID).is(aasDescriptorId)); - if (template.remove(query, AssetAdministrationShellDescriptor.class).getDeletedCount() == 0) { + if (template.remove(query, AssetAdministrationShellDescriptor.class, collectionName).getDeletedCount() == 0) { throw new AasDescriptorNotFoundException(aasDescriptorId); } } @Override public CursorResult> getAllSubmodels(@NonNull String aasDescriptorId, @NonNull PaginationInfo pRequest) throws AasDescriptorNotFoundException { - if (!template.exists(Query.query(Criteria.where(ID).is(aasDescriptorId)), AssetAdministrationShellDescriptor.class)) { + if (!template.exists(Query.query(Criteria.where(ID).is(aasDescriptorId)), collectionName)) { throw new AasDescriptorNotFoundException(aasDescriptorId); } List allAggregations = new LinkedList<>(); @@ -210,7 +212,7 @@ public CursorResult> getAllSubmodels(@NonNull String aa allAggregations.add(Aggregation.replaceRoot(SUBMODEL_DESCRIPTORS)); this.applySorting(allAggregations); this.applyPagination(pRequest, allAggregations); - AggregationResults results = template.aggregate(Aggregation.newAggregation(allAggregations), AssetAdministrationShellDescriptor.class, SubmodelDescriptor.class); + AggregationResults results = template.aggregate(Aggregation.newAggregation(allAggregations), collectionName, SubmodelDescriptor.class); List submodels = results.getMappedResults(); String cursor = resolveCursor(pRequest, submodels, SubmodelDescriptor::getId); return new CursorResult<>(cursor, submodels); @@ -222,7 +224,7 @@ public SubmodelDescriptor getSubmodel(@NonNull String aasDescriptorId, @NonNull all.add(Aggregation.match(Criteria.where(ID).is(aasDescriptorId))); ArrayOperators.Filter filter = ArrayOperators.arrayOf(SUBMODEL_DESCRIPTORS).filter().as(SUBMODEL_DESCRIPTORS).by(ComparisonOperators.valueOf(SUBMODEL_DESCRIPTORS_ID).equalToValue(submodelId)); all.add(Aggregation.project().and(filter).as(SUBMODEL_DESCRIPTORS)); - AggregationResults results = template.aggregate(Aggregation.newAggregation(all), AssetAdministrationShellDescriptor.class, AssetAdministrationShellDescriptor.class); + AggregationResults results = template.aggregate(Aggregation.newAggregation(all), collectionName, AssetAdministrationShellDescriptor.class); List aasDescriptors = results.getMappedResults(); if (aasDescriptors.isEmpty()) { throw new AasDescriptorNotFoundException(aasDescriptorId); @@ -239,7 +241,7 @@ public void insertSubmodel(@NonNull String aasDescriptorId, @NonNull SubmodelDes Criteria criteria = Criteria.where(ID).is(aasDescriptorId).and(SUBMODEL_DESCRIPTORS_ID).ne(submodel.getId()); Query query = Query.query(criteria); UpdateDefinition def = new Update().push(SUBMODEL_DESCRIPTORS, submodel); - AssetAdministrationShellDescriptor descr = template.findAndModify(query, def, AssetAdministrationShellDescriptor.class); + AssetAdministrationShellDescriptor descr = template.findAndModify(query, def, AssetAdministrationShellDescriptor.class, collectionName); assertInsertPerformed(descr, aasDescriptorId, submodel.getId()); } @@ -248,7 +250,7 @@ public void replaceSubmodel(@NonNull String aasDescriptorId, @NonNull String sub Criteria criteria = Criteria.where(ID).is(aasDescriptorId).and(SUBMODEL_DESCRIPTORS).elemMatch(Criteria.where(ID).is(submodelId)); Query query = Query.query(criteria); UpdateDefinition def = Update.update(MATCHING_SUBMODEL_DESCRIPTORS, submodel); - AssetAdministrationShellDescriptor descr = template.findAndModify(query, def, AssetAdministrationShellDescriptor.class); + AssetAdministrationShellDescriptor descr = template.findAndModify(query, def, AssetAdministrationShellDescriptor.class, collectionName); assertReplacePerformed(descr, aasDescriptorId, submodelId); } @@ -271,7 +273,7 @@ public void removeSubmodel(@NonNull String aasDescriptorId, @NonNull String subm AggregationExpression notEquals = ComparisonOperators.valueOf(SUBMODEL_DESCRIPTORS_ID).notEqualToValue(submodelId); AggregationExpression filterArray = ArrayOperators.arrayOf(SUBMODEL_DESCRIPTORS).filter().as(SUBMODEL_DESCRIPTORS).by(notEquals); AggregationUpdate update = AggregationUpdate.update().set(SUBMODEL_DESCRIPTORS).toValue(filterArray); - AssetAdministrationShellDescriptor old = template.findAndModify(Query.query(Criteria.where(ID).is(aasDescriptorId)), update, AssetAdministrationShellDescriptor.class); + AssetAdministrationShellDescriptor old = template.findAndModify(Query.query(Criteria.where(ID).is(aasDescriptorId)), update, AssetAdministrationShellDescriptor.class, collectionName); if (old == null) { throw new AasDescriptorNotFoundException(submodelId); } @@ -298,7 +300,7 @@ private boolean containsSubmodel(AssetAdministrationShellDescriptor old, String public Set clear() { Query query = Query.query(Criteria.where(ID).exists(true)); query.fields().include(ID); - List list = template.findAllAndRemove(query, AssetAdministrationShellDescriptor.class); + List list = template.findAllAndRemove(query, AssetAdministrationShellDescriptor.class, collectionName); return list.stream().map(AssetAdministrationShellDescriptor::getId).collect(Collectors.toSet()); } @@ -309,7 +311,7 @@ public ShellDescriptorSearchResponse searchAasDescriptors(@NonNull ShellDescript GroupedQueries grouped = ShellDescriptorSearchRequests.groupQueries(dQuery); Criteria mongoCriteria = qBuilder.buildCriteria(grouped); - long total = template.count(Query.query(mongoCriteria), AssetAdministrationShellDescriptor.class); + long total = template.count(Query.query(mongoCriteria), AssetAdministrationShellDescriptor.class, collectionName); List aggregationOps = new LinkedList<>(); MatchOperation matchOp = Aggregation.match(mongoCriteria); @@ -319,7 +321,7 @@ public ShellDescriptorSearchResponse searchAasDescriptors(@NonNull ShellDescript qBuilder.withProjection(grouped.getQueriesInsideSubmodel(), aggregationOps); Aggregation aggregation = Aggregation.newAggregation(aggregationOps); - AggregationResults results = template.aggregate(aggregation, AssetAdministrationShellDescriptor.class, AssetAdministrationShellDescriptor.class); + AggregationResults results = template.aggregate(aggregation, collectionName, AssetAdministrationShellDescriptor.class); List descriptors = results.getMappedResults(); return new ShellDescriptorSearchResponse(total, descriptors); diff --git a/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/MongoDbAasRegistryStorageTest.java b/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/MongoDbAasRegistryStorageTest.java index 957c78951..e3a4bf5c3 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/MongoDbAasRegistryStorageTest.java +++ b/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/MongoDbAasRegistryStorageTest.java @@ -112,7 +112,7 @@ public void whenGetByAasID_NotAllDocumentsScannedButIndexUsed() { } private void testIndexFilter(AssetKind kind, String type) { - MongoDbAasRegistryStorage storage = new MongoDbAasRegistryStorage(template); + MongoDbAasRegistryStorage storage = new MongoDbAasRegistryStorage(template, "aasdescriptors"); Optional criteriaOpt = storage.createFilterCriteria(new DescriptorFilter(kind, type)); assertThat(criteriaOpt).isNotEmpty(); Criteria criteria = criteriaOpt.get(); diff --git a/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/TestConfiguration.java b/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/TestConfiguration.java index 958f1d854..6e9dbd4c8 100644 --- a/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/TestConfiguration.java +++ b/basyx.aasregistry/basyx.aasregistry-service-mongodb-storage/src/test/java/org/eclipse/digitaltwin/basyx/aasregistry/service/tests/TestConfiguration.java @@ -41,7 +41,7 @@ public class TestConfiguration extends AbstractMongoClientConfiguration { @Bean public AasRegistryStorage storage(MongoTemplate template) { - return new CursorEncodingRegistryStorage(new MongoDbAasRegistryStorage(template)); + return new CursorEncodingRegistryStorage(new MongoDbAasRegistryStorage(template, "aasdescriptors")); } @Bean diff --git a/basyx.aasregistry/pom.xml b/basyx.aasregistry/pom.xml index b08a4ae37..2896dcc57 100644 --- a/basyx.aasregistry/pom.xml +++ b/basyx.aasregistry/pom.xml @@ -116,6 +116,24 @@ + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + org.projectlombok + lombok + ${lombok.maven-plugin.lombok.version} + + + + + diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/pom.xml b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/pom.xml index 7c68a4b74..4457354f9 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/pom.xml +++ b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/pom.xml @@ -80,6 +80,7 @@ org.eclipse.digitaltwin.basyx basyx.authorization tests + compile org.eclipse.digitaltwin.basyx diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/AuthorizedSubmodelRegistryTestSuite.java b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/AuthorizedSubmodelRegistryTestSuite.java index 5c20a12b7..cfad5f76e 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/AuthorizedSubmodelRegistryTestSuite.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service-basetests/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/tests/integration/AuthorizedSubmodelRegistryTestSuite.java @@ -39,6 +39,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.http.HttpStatus; + import org.eclipse.digitaltwin.basyx.authorization.AccessTokenProvider; import org.eclipse.digitaltwin.basyx.authorization.DummyCredential; import org.eclipse.digitaltwin.basyx.authorization.DummyCredentialStore; @@ -494,4 +495,4 @@ private AccessTokenProvider getAccessTokenProvider() { return new AccessTokenProvider(authenticaltionServerTokenEndpoint, clientId); } -} +} \ No newline at end of file diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/open-api/patch-mongodb-annotations.yaml b/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/open-api/patch-mongodb-annotations.yaml index 771f15c1a..ea764346d 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/open-api/patch-mongodb-annotations.yaml +++ b/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/open-api/patch-mongodb-annotations.yaml @@ -1,6 +1,3 @@ -- op: add - path: /components/schemas/SubmodelDescriptor/x-class-extra-annotation - value: '@org.springframework.data.mongodb.core.mapping.Document(collection = "submodeldescriptors")' - op: add path: /components/schemas/SubmodelDescriptor/allOf/1/properties/id/x-field-extra-annotation value: '@org.springframework.data.annotation.Id' diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/configuration/MongoDbConfiguration.java b/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/configuration/MongoDbConfiguration.java index 0f8df5801..767c10306 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/configuration/MongoDbConfiguration.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/configuration/MongoDbConfiguration.java @@ -29,6 +29,7 @@ import org.eclipse.digitaltwin.basyx.submodelregistry.service.storage.SubmodelRegistryStorage; import org.eclipse.digitaltwin.basyx.submodelregistry.service.storage.SubmodelRegistryStorageFeature; import org.eclipse.digitaltwin.basyx.submodelregistry.service.storage.mongodb.MongoDbSubmodelRegistryStorage; +import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -45,11 +46,15 @@ @Log4j2 public class MongoDbConfiguration { + + @Value("${basyx.submodelregistry.mongodb.collectionName:submodeldescriptors}") + public String collectionName; + @Bean public SubmodelRegistryStorage createSubmodelRegistryStorage(MongoTemplate template, List features) { log.info("Creating mongodb storage"); - SubmodelRegistryStorage storage = new CursorEncodingRegistryStorage(new MongoDbSubmodelRegistryStorage(template)); + SubmodelRegistryStorage storage = new CursorEncodingRegistryStorage(new MongoDbSubmodelRegistryStorage(template, collectionName)); return applyFeatures(storage, features); } diff --git a/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/storage/mongodb/MongoDbSubmodelRegistryStorage.java b/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/storage/mongodb/MongoDbSubmodelRegistryStorage.java index 590c815ab..b06b6c098 100644 --- a/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/storage/mongodb/MongoDbSubmodelRegistryStorage.java +++ b/basyx.submodelregistry/basyx.submodelregistry-service-mongodb-storage/src/main/java/org/eclipse/digitaltwin/basyx/submodelregistry/service/storage/mongodb/MongoDbSubmodelRegistryStorage.java @@ -36,6 +36,7 @@ import org.eclipse.digitaltwin.basyx.submodelregistry.service.errors.SubmodelAlreadyExistsException; import org.eclipse.digitaltwin.basyx.submodelregistry.service.errors.SubmodelNotFoundException; import org.eclipse.digitaltwin.basyx.submodelregistry.service.storage.SubmodelRegistryStorage; +import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DuplicateKeyException; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.mongodb.core.MongoTemplate; @@ -59,13 +60,15 @@ public class MongoDbSubmodelRegistryStorage implements SubmodelRegistryStorage { private static final String ID = "_id"; private final MongoTemplate template; + + private final String collectionName; @Override public CursorResult> getAllSubmodelDescriptors(@NonNull PaginationInfo pRequest) { List allAggregations = new LinkedList<>(); applySorting(allAggregations); applyPagination(pRequest, allAggregations); - AggregationResults results = template.aggregate(Aggregation.newAggregation(allAggregations), SubmodelDescriptor.class, SubmodelDescriptor.class); + AggregationResults results = template.aggregate(Aggregation.newAggregation(allAggregations), collectionName, SubmodelDescriptor.class); List foundDescriptors = results.getMappedResults(); String cursor = resolveCursor(pRequest, foundDescriptors); return new CursorResult>(cursor, foundDescriptors); @@ -75,13 +78,13 @@ public CursorResult> getAllSubmodelDescriptors(@NonNull public Set clear() { Query query = Query.query(Criteria.where(ID).exists(true)); query.fields().include(ID); - List list = template.findAllAndRemove(query, SubmodelDescriptor.class); + List list = template.findAllAndRemove(query, SubmodelDescriptor.class, collectionName); return list.stream().map(SubmodelDescriptor::getId).collect(Collectors.toSet()); } @Override public SubmodelDescriptor getSubmodelDescriptor(@NonNull String submodelId) throws SubmodelNotFoundException { - SubmodelDescriptor descriptor = template.findById(submodelId, SubmodelDescriptor.class); + SubmodelDescriptor descriptor = template.findById(submodelId, SubmodelDescriptor.class, collectionName); if (descriptor == null) { throw new SubmodelNotFoundException(submodelId); } @@ -91,7 +94,7 @@ public SubmodelDescriptor getSubmodelDescriptor(@NonNull String submodelId) thro @Override public void insertSubmodelDescriptor(@NonNull SubmodelDescriptor descr) throws SubmodelAlreadyExistsException { try { - template.insert(descr); + template.insert(descr, collectionName); } catch (DuplicateKeyException ex) { throw new SubmodelAlreadyExistsException(descr.getId()); } @@ -104,7 +107,7 @@ public void replaceSubmodelDescriptor(@NonNull String submodelId, @NonNull Submo moveInTransaction(submodelId, descr); } else { Query query = Query.query(Criteria.where(ID).is(submodelId)); - SubmodelDescriptor replaced = template.findAndReplace(query, descr); + SubmodelDescriptor replaced = template.findAndReplace(query, descr, collectionName); if (replaced == null) { throw new SubmodelNotFoundException(submodelId); } @@ -114,7 +117,7 @@ public void replaceSubmodelDescriptor(@NonNull String submodelId, @NonNull Submo @Override public void removeSubmodelDescriptor(@NonNull String submodelId) throws SubmodelNotFoundException { Query query = Query.query(Criteria.where(ID).is(submodelId)); - if (template.remove(query, SubmodelDescriptor.class).getDeletedCount() == 0) { + if (template.remove(query, SubmodelDescriptor.class, collectionName).getDeletedCount() == 0) { throw new SubmodelNotFoundException(submodelId); } } @@ -123,10 +126,10 @@ private void moveInTransaction(String submodelId, SubmodelDescriptor descriptor) SessionScoped scoped = template.withSession(ClientSessionOptions.builder().build()); boolean removed = scoped.execute(operations -> { Query query = Query.query(Criteria.where(ID).is(submodelId)); - if (operations.remove(query, SubmodelDescriptor.class).getDeletedCount() == 0) { + if (operations.remove(query, SubmodelDescriptor.class, collectionName).getDeletedCount() == 0) { return false; } - operations.save(descriptor); + operations.save(descriptor, collectionName); return true; }); if (!removed) { diff --git a/basyx.submodelregistry/pom.xml b/basyx.submodelregistry/pom.xml index cc29de59d..da44bb939 100644 --- a/basyx.submodelregistry/pom.xml +++ b/basyx.submodelregistry/pom.xml @@ -54,8 +54,8 @@ basyx.submodelregistry-feature-authorization basyx.submodelregistry-feature-hierarchy basyx.submodelregistry-feature-hierarchy-example - basyx.submodelregistry-feature-search - + basyx.submodelregistry-feature-search + @@ -102,6 +102,23 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + org.projectlombok + lombok + ${lombok.maven-plugin.lombok.version} + + + + + @@ -301,7 +318,8 @@ ${project.basedir}/src/main/docker - ${docker.target.platforms} + + ${docker.target.platforms}