diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApi.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApi.java index 16c6dc3685d9d381bfab8678f55ba10638a788ee..58f145ce83f98a2be044a782e813f6845ef03326 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApi.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApi.java @@ -338,8 +338,11 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.delete.DeleteVocabula import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.delete.VocabularyTermDeletionOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyTermFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.get.GetVocabulariesOperation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.get.GetVocabulariesOperationResult; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.get.GetVocabularyTermsOperation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.get.GetVocabularyTermsOperationResult; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyTermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyTermPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.search.SearchVocabulariesOperation; @@ -716,6 +719,15 @@ public class ApplicationServerApi extends AbstractServer<IApplicationServerApi> return result.getObjectMap(); } + @Override + @Transactional(readOnly = true) + public Map<IVocabularyId, Vocabulary> getVocabularies(String sessionToken, List<? extends IVocabularyId> vocabularyIds, + VocabularyFetchOptions fetchOptions) + { + GetVocabulariesOperationResult result = executeOperation(sessionToken, new GetVocabulariesOperation(vocabularyIds, fetchOptions)); + return result.getObjectMap(); + } + @Override @Transactional(readOnly = true) public Map<IVocabularyTermId, VocabularyTerm> getVocabularyTerms(String sessionToken, List<? extends IVocabularyTermId> vocabularyTermIds, diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApiLogger.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApiLogger.java index 6ccb34ef19a76a99f669a9186718047c7b365642..fa6d5be93cd0ffdb42ecd0c692cbc24bd1331750 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApiLogger.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/ApplicationServerApiLogger.java @@ -180,6 +180,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.create.VocabularyTerm import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.delete.VocabularyTermDeletionOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyTermFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyTermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyTermPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.search.VocabularySearchCriteria; @@ -487,6 +488,14 @@ public class ApplicationServerApiLogger extends AbstractServerLogger implements return null; } + @Override + public Map<IVocabularyId, Vocabulary> getVocabularies(String sessionToken, List<? extends IVocabularyId> vocabularyIds, + VocabularyFetchOptions fetchOptions) + { + logAccess(sessionToken, "get-vocabularies", "VOCABULARY_IDS(%s) FETCH_OPTIONS(%s)", abbreviate(vocabularyIds), fetchOptions); + return null; + } + @Override public Map<IVocabularyTermId, VocabularyTerm> getVocabularyTerms(String sessionToken, List<? extends IVocabularyTermId> vocabularyTermIds, VocabularyTermFetchOptions fetchOptions) diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java index 6f751e3f4fc74737da030433705f896472241937..81147baa532fb3afb559c982fd7c186a20b904d2 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/OperationsExecutor.java @@ -122,6 +122,7 @@ import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.tag.ISearchTagsOpera import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.tag.IUpdateTagsOperationExecutor; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.vocabulary.ICreateVocabularyTermsOperationExecutor; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.vocabulary.IDeleteVocabularyTermsOperationExecutor; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.vocabulary.IGetVocabulariesOperationExecutor; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.vocabulary.IGetVocabularyTermsOperationExecutor; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.vocabulary.ISearchVocabulariesOperationExecutor; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.vocabulary.ISearchVocabularyTermsOperationExecutor; @@ -328,8 +329,11 @@ public class OperationsExecutor implements IOperationsExecutor private IGetPersonsOperationExecutor getPersonsExecutor; @Autowired - private IGetVocabularyTermsOperationExecutor getVocabularyTermsExecutor; + private IGetVocabulariesOperationExecutor getVocabulariesExecutor; + @Autowired + private IGetVocabularyTermsOperationExecutor getVocabularyTermsExecutor; + @Autowired private IGetExternalDmsOperationExecutor getExternalDmsExecutor; @@ -527,6 +531,7 @@ public class OperationsExecutor implements IOperationsExecutor resultMap.putAll(getAuthorizationGroupsExecutor.execute(context, operations)); resultMap.putAll(getRoleAssignmentsExecutor.execute(context, operations)); resultMap.putAll(getPersonsExecutor.execute(context, operations)); + resultMap.putAll(getVocabulariesExecutor.execute(context, operations)); resultMap.putAll(getVocabularyTermsExecutor.execute(context, operations)); resultMap.putAll(getExternalDmsExecutor.execute(context, operations)); resultMap.putAll(getOperationExecutionsExecutor.execute(context, operations)); diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/GetVocabulariesOperationExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/GetVocabulariesOperationExecutor.java new file mode 100644 index 0000000000000000000000000000000000000000..bf334b5297ef9e2d17df0914ea9f4b66634af596 --- /dev/null +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/GetVocabulariesOperationExecutor.java @@ -0,0 +1,75 @@ +/* + * Copyright 2018 ETH Zuerich, SIS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.vocabulary; + +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.get.GetObjectsOperation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.get.GetObjectsOperationResult; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.Vocabulary; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.get.GetVocabulariesOperation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.get.GetVocabulariesOperationResult; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyId; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.get.GetObjectsPEOperationExecutor; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.get.IMapObjectByIdExecutor; +import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.ITranslator; +import ch.ethz.sis.openbis.generic.server.asapi.v3.translator.vocabulary.IVocabularyTranslator; +import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyPE; + +/** + * @author Franz-Josef Elmer + */ +@Component +public class GetVocabulariesOperationExecutor + extends GetObjectsPEOperationExecutor<IVocabularyId, VocabularyPE, Vocabulary, VocabularyFetchOptions> + implements IGetVocabulariesOperationExecutor +{ + @Autowired + private IMapVocabularyByIdExecutor mapExecutor; + + @Autowired + private IVocabularyTranslator translator; + + @Override + protected Class<? extends GetObjectsOperation<IVocabularyId, VocabularyFetchOptions>> getOperationClass() + { + return GetVocabulariesOperation.class; + } + + @Override + protected IMapObjectByIdExecutor<IVocabularyId, VocabularyPE> getExecutor() + { + return mapExecutor; + } + + @Override + protected ITranslator<Long, Vocabulary, VocabularyFetchOptions> getTranslator() + { + return translator; + } + + @Override + protected GetObjectsOperationResult<IVocabularyId, Vocabulary> getOperationResult(Map<IVocabularyId, Vocabulary> objectMap) + { + return new GetVocabulariesOperationResult(objectMap); + } + +} diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/IGetVocabulariesOperationExecutor.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/IGetVocabulariesOperationExecutor.java new file mode 100644 index 0000000000000000000000000000000000000000..a4a26c21d7f1e1a49368e67699675317c63c4ab3 --- /dev/null +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/vocabulary/IGetVocabulariesOperationExecutor.java @@ -0,0 +1,28 @@ +/* + * Copyright 2018 ETH Zuerich, SIS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.vocabulary; + +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.common.IOperationExecutor; + +/** + * @author Franz-Josef Elmer + * + */ +public interface IGetVocabulariesOperationExecutor extends IOperationExecutor +{ + +} diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetVocabulariesTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetVocabulariesTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c283bb939ef76badef17fb610a86a9b55880765a --- /dev/null +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/GetVocabulariesTest.java @@ -0,0 +1,71 @@ +/* + * Copyright 2018 ETH Zuerich, SIS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.ethz.sis.openbis.systemtest.asapi.v3; + +import static org.testng.Assert.assertEquals; + +import java.util.Arrays; +import java.util.Map; + +import org.testng.annotations.Test; + +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.Vocabulary; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyPermId; + +/** + * @author Franz-Josef Elmer + * + */ +public class GetVocabulariesTest extends AbstractTest +{ + @Test + public void testGetVocabularyWithTerms() + { + // Given + String sessionToken = v3api.login(TEST_USER, PASSWORD); + VocabularyPermId id1 = new VocabularyPermId("ORGANISM"); + VocabularyPermId id2 = new VocabularyPermId("$STORAGE_FORMAT"); + VocabularyFetchOptions fetchOptions = new VocabularyFetchOptions(); + fetchOptions.withTerms(); + + // When + Map<IVocabularyId, Vocabulary> result = v3api.getVocabularies(sessionToken, Arrays.asList(id1, id2), fetchOptions); + + // Then + Vocabulary v1 = result.get(id1); + assertEquals(v1.getCode(), id1.getPermId()); + assertEquals(v1.getDescription(), "available-organism"); + assertEquals(v1.isInternalNameSpace(), false); + assertEquals(v1.isManagedInternally(), false); + assertEquals(v1.getTerms().toString(), + "[VocabularyTerm DOG, VocabularyTerm FLY, VocabularyTerm GORILLA, VocabularyTerm HUMAN, VocabularyTerm RAT]"); + Vocabulary v2 = result.get(id2); + assertEquals(v2.getCode(), id2.getPermId()); + assertEquals(v2.getDescription(), "The on-disk storage format of a data set"); + assertEquals(v2.isInternalNameSpace(), true); + assertEquals(v2.isManagedInternally(), true); + assertEquals(v2.getTerms().toString(), "[VocabularyTerm BDS_DIRECTORY, VocabularyTerm PROPRIETARY]"); + assertEquals(v2.getTerms().get(1).getLabel(), "proprietary label"); + assertEquals(v2.getTerms().get(1).getDescription(), "proprietary description"); + assertEquals(v2.getTerms().get(1).getOrdinal().longValue(), 1); + assertEquals(v2.getTerms().get(1).isOfficial(), Boolean.TRUE); + assertEquals(result.size(), 2); + v3api.logout(sessionToken); + } +} diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchVocabularyTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchVocabularyTest.java index e893ba0acfcb6926de57c797be394a3aa1cd5680..2eb794579a88cb6ebea8c874a05faec9b97b54b9 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchVocabularyTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchVocabularyTest.java @@ -46,6 +46,8 @@ public class SearchVocabularyTest extends AbstractTest // Then assertEquals(vocabularies.get(0).getCode(), "ORGANISM"); assertEquals(vocabularies.get(0).getDescription(), "available-organism"); + assertEquals(vocabularies.get(0).isManagedInternally(), false); + assertEquals(vocabularies.get(0).isInternalNameSpace(), false); } @Test diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.java index c903dfe09a430a31f30c03d2d8cc59d1d54dd937..199af3060a764eef64c6f198d3890d441f294188 100644 --- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.java +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/IApplicationServerApi.java @@ -179,6 +179,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.create.VocabularyTerm import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.delete.VocabularyTermDeletionOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyTermFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyTermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.VocabularyTermPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.search.VocabularySearchCriteria; @@ -303,9 +304,12 @@ public interface IApplicationServerApi extends IRpcService public Map<IMaterialId, Material> getMaterials(String sessionToken, List<? extends IMaterialId> materialIds, MaterialFetchOptions fetchOptions); + public Map<IVocabularyId, Vocabulary> getVocabularies(String sessionToken, List<? extends IVocabularyId> vocabularyIds, + VocabularyFetchOptions fetchOptions); + public Map<IVocabularyTermId, VocabularyTerm> getVocabularyTerms(String sessionToken, List<? extends IVocabularyTermId> vocabularyTermIds, VocabularyTermFetchOptions fetchOptions); - + public Map<ITagId, Tag> getTags(String sessionToken, List<? extends ITagId> tagIds, TagFetchOptions fetchOptions); public Map<IAuthorizationGroupId, AuthorizationGroup> getAuthorizationGroups(String sessionToken, List<? extends IAuthorizationGroupId> groupIds, AuthorizationGroupFetchOptions fetchOptions); diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/vocabulary/get/GetVocabulariesOperation.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/vocabulary/get/GetVocabulariesOperation.java new file mode 100644 index 0000000000000000000000000000000000000000..a852ed8f8053f14024840c85601b729a55fd8d3d --- /dev/null +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/vocabulary/get/GetVocabulariesOperation.java @@ -0,0 +1,40 @@ +/* + * Copyright 2018 ETH Zuerich, SIS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.get; + +import java.util.List; + +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.get.GetObjectsOperation; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.fetchoptions.VocabularyFetchOptions; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyId; +import ch.systemsx.cisd.base.annotation.JsonObject; + +@JsonObject("as.dto.vocabulary.get.GetVocabulariesOperation") +public class GetVocabulariesOperation extends GetObjectsOperation<IVocabularyId, VocabularyFetchOptions> +{ + private static final long serialVersionUID = 1L; + + @SuppressWarnings("unused") + private GetVocabulariesOperation() + { + } + + public GetVocabulariesOperation(List<? extends IVocabularyId> ids, VocabularyFetchOptions fetchOptions) + { + super(ids, fetchOptions); + } + +} diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/vocabulary/get/GetVocabulariesOperationResult.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/vocabulary/get/GetVocabulariesOperationResult.java new file mode 100644 index 0000000000000000000000000000000000000000..c81035c76f5efd4c5f868363886fda6e7f38a692 --- /dev/null +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/vocabulary/get/GetVocabulariesOperationResult.java @@ -0,0 +1,40 @@ +/* + * Copyright 2018 ETH Zuerich, SIS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.get; + +import java.util.Map; + +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.get.GetObjectsOperationResult; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.Vocabulary; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id.IVocabularyId; +import ch.systemsx.cisd.base.annotation.JsonObject; + +@JsonObject("as.dto.vocabulary.get.GetVocabulariesOperationResult") +public class GetVocabulariesOperationResult extends GetObjectsOperationResult<IVocabularyId, Vocabulary> +{ + + private static final long serialVersionUID = 1L; + + @SuppressWarnings("unused") + private GetVocabulariesOperationResult() + { + } + + public GetVocabulariesOperationResult(Map<IVocabularyId, Vocabulary> objectMap) + { + super(objectMap); + } +}