From b111bbed40e9fe02d980fe0af360f60ca47f5ac6 Mon Sep 17 00:00:00 2001 From: ojasdubey Date: Tue, 21 Aug 2018 17:55:30 +0530 Subject: Bugfix - Broken Action Library APIs 1. Fix for Sev-1 bug related to broken action library APIs due to cassandra driver upgrade to 3.x 2. Updated code based on review comments Change-Id: I4e62a7f2bf30a78d1f72f3c78ad8270985bcd56e Issue-ID: SDC-1669 Signed-off-by: ojasdubey --- .../sdcrests/action/rest/services/ActionsImpl.java | 103 ++++++++++++++++++--- .../sdc/action/dao/types/ActionEntity.java | 93 ++++++++----------- .../org/openecomp/sdc/action/types/Action.java | 73 ++++++++------- .../sdc/action/dao/impl/ActionDaoImpl.java | 48 +++++++--- .../openecomp-sdc-versioning-api/pom.xml | 5 + .../versioning/dao/impl/VersionInfoDaoImpl.java | 9 +- 6 files changed, 216 insertions(+), 115 deletions(-) diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/action-library-rest/action-library-rest-services/src/main/java/org/openecomp/sdcrests/action/rest/services/ActionsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/action-library-rest/action-library-rest-services/src/main/java/org/openecomp/sdcrests/action/rest/services/ActionsImpl.java index 3ce4fa5dda..23f11843b8 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/action-library-rest/action-library-rest-services/src/main/java/org/openecomp/sdcrests/action/rest/services/ActionsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/action-library-rest/action-library-rest-services/src/main/java/org/openecomp/sdcrests/action/rest/services/ActionsImpl.java @@ -20,6 +20,88 @@ package org.openecomp.sdcrests.action.rest.services; +import static org.openecomp.sdc.action.ActionConstants.ACTION_REQUEST_PARAM_NAME; +import static org.openecomp.sdc.action.ActionConstants.ACTION_REQUEST_PARAM_SUPPORTED_COMPONENTS; +import static org.openecomp.sdc.action.ActionConstants.ACTION_REQUEST_PARAM_SUPPORTED_MODELS; +import static org.openecomp.sdc.action.ActionConstants.ARTIFACT_FILE; +import static org.openecomp.sdc.action.ActionConstants.ARTIFACT_NAME; +import static org.openecomp.sdc.action.ActionConstants.BE_FQDN; +import static org.openecomp.sdc.action.ActionConstants.CATEGORY_LOG_LEVEL; +import static org.openecomp.sdc.action.ActionConstants.CLIENT_IP; +import static org.openecomp.sdc.action.ActionConstants.ERROR_DESCRIPTION; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_CATEGORY; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_MODEL; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_NAME; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_NONE; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_OPEN_ECOMP_COMPONENT; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_VENDOR; +import static org.openecomp.sdc.action.ActionConstants.INSTANCE_UUID; +import static org.openecomp.sdc.action.ActionConstants.LOCAL_ADDR; +import static org.openecomp.sdc.action.ActionConstants.MAX_ACTION_ARTIFACT_SIZE; +import static org.openecomp.sdc.action.ActionConstants.MDC_ASDC_INSTANCE_UUID; +import static org.openecomp.sdc.action.ActionConstants.PARTNER_NAME; +import static org.openecomp.sdc.action.ActionConstants.REMOTE_HOST; +import static org.openecomp.sdc.action.ActionConstants.REQUEST_EMPTY_BODY; +import static org.openecomp.sdc.action.ActionConstants.REQUEST_ID; +import static org.openecomp.sdc.action.ActionConstants.REQUEST_TYPE_CREATE_ACTION; +import static org.openecomp.sdc.action.ActionConstants.REQUEST_TYPE_UPDATE_ACTION; +import static org.openecomp.sdc.action.ActionConstants.REQUEST_TYPE_VERSION_ACTION; +import static org.openecomp.sdc.action.ActionConstants.SERVICE_INSTANCE_ID; +import static org.openecomp.sdc.action.ActionConstants.SERVICE_METRIC_BEGIN_TIMESTAMP; +import static org.openecomp.sdc.action.ActionConstants.SERVICE_NAME; +import static org.openecomp.sdc.action.ActionConstants.STATUS; +import static org.openecomp.sdc.action.ActionConstants.STATUS_CODE; +import static org.openecomp.sdc.action.ActionConstants.SUPPORTED_COMPONENTS_ID; +import static org.openecomp.sdc.action.ActionConstants.SUPPORTED_MODELS_VERSION_ID; +import static org.openecomp.sdc.action.ActionConstants.TIMESTAMP; +import static org.openecomp.sdc.action.ActionConstants.UPDATED_BY; +import static org.openecomp.sdc.action.ActionConstants.X_OPEN_ECOMP_INSTANCE_ID_HEADER_PARAM; +import static org.openecomp.sdc.action.ActionConstants.X_OPEN_ECOMP_REQUEST_ID_HEADER_PARAM; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_CHECKSUM_ERROR_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_INVALID_NAME; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_INVALID_NAME_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_INVALID_PROTECTION_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_READ_FILE_ERROR; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_TOO_BIG_ERROR; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_TOO_BIG_ERROR_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_INTERNAL_SERVER_ERROR_MSG; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_NOT_EXIST; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_NOT_EXIST_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_FILTER_MULTIPLE_QUERY_PARAM_NOT_SUPPORTED; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INTERNAL_SERVER_ERR_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INVALID_INSTANCE_ID_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INVALID_PARAM_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INVALID_REQUEST_BODY_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INVALID_REQUEST_ID_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INVALID_SEARCH_CRITERIA; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_MULT_SEARCH_CRITERIA; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_ARTIFACT_CHECKSUM_ERROR; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_ARTIFACT_INVALID_PROTECTION_VALUE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_ARTIFACT_OPERATION_ALLOWED; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_BODY_EMPTY; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_CONTENT_TYPE_INVALID; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_FILTER_PARAM_INVALID; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_INVALID_GENERIC_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_INVALID_NAME; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_MISSING_MANDATORY_PARAM; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_OPEN_ECOMP_INSTANCE_ID_INVALID; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_REQUEST_OPEN_ECOMP_REQUEST_ID_INVALID; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_UNSUPPORTED_OPERATION; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_UPDATE_NOT_ALLOWED_CODE; +import static org.openecomp.sdc.action.util.ActionUtil.actionErrorLogProcessor; +import static org.openecomp.sdc.action.util.ActionUtil.actionLogPostProcessor; +import static org.openecomp.sdc.action.util.ActionUtil.getUtcDateStringFromTimestamp; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.apache.cxf.jaxrs.ext.multipart.Attachment; @@ -31,7 +113,11 @@ import org.openecomp.sdc.action.errors.ActionErrorConstants; import org.openecomp.sdc.action.errors.ActionException; import org.openecomp.sdc.action.logging.CategoryLogLevel; import org.openecomp.sdc.action.logging.StatusCode; -import org.openecomp.sdc.action.types.*; +import org.openecomp.sdc.action.types.Action; +import org.openecomp.sdc.action.types.ActionArtifact; +import org.openecomp.sdc.action.types.ActionArtifactProtection; +import org.openecomp.sdc.action.types.ActionRequest; +import org.openecomp.sdc.action.types.OpenEcompComponent; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdcrests.action.rest.Actions; @@ -49,15 +135,6 @@ import org.springframework.validation.annotation.Validated; import javax.inject.Named; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Response; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.*; - -import static org.openecomp.sdc.action.ActionConstants.*; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.*; -import static org.openecomp.sdc.action.util.ActionUtil.*; /** * Implements various CRUD API that can be performed on Action @@ -987,7 +1064,7 @@ public class ActionsImpl implements Actions { if(action.getSupportedComponents() != null && !isIDPresentInMap(action .getSupportedComponents(), SUPPORTED_COMPONENTS_ID)){ setErrorValue(ACTION_REQUEST_INVALID_GENERIC_CODE, - ACTION_REQUEST_PARAM_SUPPORTED_MODELS, requestBodyErrorMap); + ACTION_REQUEST_PARAM_SUPPORTED_COMPONENTS, requestBodyErrorMap); } if(action.getArtifacts() != null){ setErrorValue(ACTION_UPDATE_NOT_ALLOWED_CODE, @@ -1016,9 +1093,9 @@ public class ActionsImpl implements Actions { /** * Returns true if given key exists in List of HashMap */ - private boolean isIDPresentInMap(List> map, String idName) { + private boolean isIDPresentInMap(List> map, String idName) { if (map != null && !map.isEmpty()) { - for (HashMap entry : map) { + for (Map entry : map) { if (StringUtils.isEmpty(entry.get(idName))) { return false; } diff --git a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/src/main/java/org/openecomp/sdc/action/dao/types/ActionEntity.java b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/src/main/java/org/openecomp/sdc/action/dao/types/ActionEntity.java index 9d0f3d830d..17f6deaa72 100644 --- a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/src/main/java/org/openecomp/sdc/action/dao/types/ActionEntity.java +++ b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/src/main/java/org/openecomp/sdc/action/dao/types/ActionEntity.java @@ -1,22 +1,18 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ +/* +* Copyright © 2016-2018 European Support Limited +* +* 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 org.openecomp.sdc.action.dao.types; @@ -24,15 +20,15 @@ import com.datastax.driver.mapping.annotations.Column; import com.datastax.driver.mapping.annotations.Frozen; import com.datastax.driver.mapping.annotations.PartitionKey; import com.datastax.driver.mapping.annotations.Table; -import org.openecomp.core.utilities.json.JsonUtil; -import org.openecomp.sdc.action.types.Action; -import org.openecomp.sdc.versioning.dao.types.Version; -import java.util.ArrayList; import java.util.Date; -import java.util.List; +import java.util.Set; import java.util.stream.Collectors; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.sdc.action.types.Action; +import org.openecomp.sdc.versioning.dao.types.Version; + @Table(keyspace = "dox", name = "Action") public class ActionEntity { @@ -51,17 +47,17 @@ public class ActionEntity { @Column(name = "name") private String name; @Column(name = "vendor_list") - private List vendorList; + private Set vendorList; @Column(name = "category_list") - private List categoryList; + private Set categoryList; @Column(name = "timestamp") private Date timestamp; @Column(name = "user") private String user; @Column(name = "supportedModels") - private List supportedModels; + private Set supportedModels; @Column(name = "supportedComponents") - private List supportedComponents; + private Set supportedComponents; @Column(name = "data") private String data; @@ -119,7 +115,7 @@ public class ActionEntity { this.name = name; } - public List getVendorList() { + public Set getVendorList() { return vendorList; } @@ -128,18 +124,12 @@ public class ActionEntity { * * @param vendorList the vendor list */ - public void setVendorList(List vendorList) { - if (vendorList != null && !vendorList.isEmpty()) { - List lowerCaseVendorList = new ArrayList<>(); - lowerCaseVendorList - .addAll(vendorList.stream().map(String::toLowerCase).collect(Collectors.toList())); - this.vendorList = lowerCaseVendorList; - } else { - this.vendorList = vendorList; - } - } - - public List getCategoryList() { + public void setVendorList(Set vendorList) { + this.vendorList = vendorList != null && !vendorList.isEmpty() ? + vendorList.stream().map(String::toLowerCase).collect(Collectors.toSet()) : vendorList; + } + + public Set getCategoryList() { return categoryList; } @@ -148,15 +138,10 @@ public class ActionEntity { * * @param categoryList the category list */ - public void setCategoryList(List categoryList) { - if (categoryList != null && !categoryList.isEmpty()) { - List lowerCaseCategoryList = new ArrayList<>(); - lowerCaseCategoryList - .addAll(categoryList.stream().map(String::toLowerCase).collect(Collectors.toList())); - this.categoryList = lowerCaseCategoryList; - } else { - this.categoryList = categoryList; - } + public void setCategoryList(Set categoryList) { + this.categoryList = categoryList != null && !categoryList.isEmpty() ? + categoryList.stream().map(String::toLowerCase).collect(Collectors.toSet()) : + categoryList; } public Date getTimestamp() { @@ -175,19 +160,19 @@ public class ActionEntity { this.user = user; } - public List getSupportedModels() { + public Set getSupportedModels() { return supportedModels; } - public void setSupportedModels(List supportedModels) { + public void setSupportedModels(Set supportedModels) { this.supportedModels = supportedModels; } - public List getSupportedComponents() { + public Set getSupportedComponents() { return supportedComponents; } - public void setSupportedComponents(List supportedComponents) { + public void setSupportedComponents(Set supportedComponents) { this.supportedComponents = supportedComponents; } diff --git a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/src/main/java/org/openecomp/sdc/action/types/Action.java b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/src/main/java/org/openecomp/sdc/action/types/Action.java index cde97bc151..0acd051004 100644 --- a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/src/main/java/org/openecomp/sdc/action/types/Action.java +++ b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-api/src/main/java/org/openecomp/sdc/action/types/Action.java @@ -1,34 +1,33 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ +/* +* Copyright © 2016-2018 European Support Limited +* +* 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 org.openecomp.sdc.action.types; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + import org.openecomp.sdc.action.ActionConstants; import org.openecomp.sdc.action.dao.types.ActionEntity; import org.openecomp.sdc.versioning.dao.types.Version; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - public class Action implements Comparable { private String actionUuId; private String actionInvariantUuId; @@ -40,8 +39,8 @@ public class Action implements Comparable { private List categoryList; private Date timestamp; private String user; - private List> supportedModels; - private List> supportedComponents; + private List> supportedModels; + private List> supportedComponents; //private List> artifacts; private List artifacts; private String data; @@ -151,19 +150,19 @@ public class Action implements Comparable { this.user = user; } - public List> getSupportedModels() { + public List> getSupportedModels() { return supportedModels; } - public void setSupportedModels(List> supportedModels) { + public void setSupportedModels(List> supportedModels) { this.supportedModels = supportedModels; } - public List> getSupportedComponents() { + public List> getSupportedComponents() { return supportedComponents; } - public void setSupportedComponents(List> supportedComponents) { + public void setSupportedComponents(List> supportedComponents) { this.supportedComponents = supportedComponents; } @@ -197,8 +196,12 @@ public class Action implements Comparable { destination.setActionInvariantUuId( this.getActionInvariantUuId() != null ? this.getActionInvariantUuId().toUpperCase() : null); destination.setName(this.getName() != null ? this.getName().toLowerCase() : null); - destination.setVendorList(this.getVendorList()); - destination.setCategoryList(this.getCategoryList()); + if (Objects.nonNull(this.getVendorList())) { + destination.setVendorList(new HashSet<>(this.getVendorList())); + } + if (Objects.nonNull(this.getCategoryList())) { + destination.setCategoryList(new HashSet<>(this.getCategoryList())); + } destination.setTimestamp(this.getTimestamp()); destination.setUser(this.getUser()); destination.setVersion(Version.valueOf(this.getVersion())); @@ -213,10 +216,10 @@ public class Action implements Comparable { return destination; } - private List getIdFromMap(List> map, String idName) { - List list = new ArrayList<>(); + private Set getIdFromMap(List> map, String idName) { + Set list = new HashSet<>(); if (map != null && !map.isEmpty()) { - for (HashMap entry : map) { + for (Map entry : map) { if (entry.containsKey(idName)) { list.add(entry.get(idName) != null ? entry.get(idName).toLowerCase() : null); } diff --git a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-core/src/main/java/org/openecomp/sdc/action/dao/impl/ActionDaoImpl.java b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-core/src/main/java/org/openecomp/sdc/action/dao/impl/ActionDaoImpl.java index c2d67a7f17..5320b5d5c5 100644 --- a/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-core/src/main/java/org/openecomp/sdc/action/dao/impl/ActionDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-action-lib/openecomp-sdc-action-core/src/main/java/org/openecomp/sdc/action/dao/impl/ActionDaoImpl.java @@ -16,6 +16,30 @@ package org.openecomp.sdc.action.dao.impl; +import static com.datastax.driver.core.querybuilder.QueryBuilder.eq; +import static com.datastax.driver.core.querybuilder.QueryBuilder.in; +import static com.datastax.driver.core.querybuilder.QueryBuilder.set; +import static org.openecomp.core.nosqldb.impl.cassandra.CassandraSessionFactory.getSession; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_CATEGORY; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_MODEL; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_NAME; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_NONE; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_OPEN_ECOMP_COMPONENT; +import static org.openecomp.sdc.action.ActionConstants.FILTER_TYPE_VENDOR; +import static org.openecomp.sdc.action.ActionConstants.STATUS; +import static org.openecomp.sdc.action.ActionConstants.TARGET_ENTITY; +import static org.openecomp.sdc.action.ActionConstants.TARGET_ENTITY_DB; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_DEL_LOCKED_OTHER_USER; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ARTIFACT_DEL_LOCKED_OTHER_USER_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_INTERNAL_SERVER_ERROR_MSG; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_NOT_EXIST; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_ENTITY_NOT_EXIST_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_INTERNAL_SERVER_ERR_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_NOT_LOCKED_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_NOT_LOCKED_MSG; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_QUERY_FAILURE_CODE; +import static org.openecomp.sdc.action.errors.ActionErrorConstants.ACTION_QUERY_FAILURE_MSG; + import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Statement; @@ -25,6 +49,16 @@ import com.datastax.driver.mapping.Mapper; import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.core.nosqldb.factory.NoSqlDbFactory; @@ -54,14 +88,6 @@ import org.openecomp.sdc.versioning.dao.types.VersionInfoEntity; import org.openecomp.sdc.versioning.types.VersionableEntityMetadata; import org.slf4j.MDC; -import java.util.*; -import java.util.stream.Collectors; - -import static com.datastax.driver.core.querybuilder.QueryBuilder.*; -import static org.openecomp.core.nosqldb.impl.cassandra.CassandraSessionFactory.getSession; -import static org.openecomp.sdc.action.ActionConstants.*; -import static org.openecomp.sdc.action.errors.ActionErrorConstants.*; - public class ActionDaoImpl extends CassandraBaseDao implements ActionDao { private static NoSqlDb noSqlDb = NoSqlDbFactory.getInstance().createInterface(); @@ -330,7 +356,7 @@ public class ActionDaoImpl extends CassandraBaseDao implements Act ActionUtil.actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_ACTIONINVID, TARGET_ENTITY_DB); Result result = - accessor.getActionsByInvId(actionInvariantUuId, viewableVersions); + accessor.getActionsByInvId(actionInvariantUuId, new ArrayList<>(viewableVersions)); ActionUtil.actionLogPostProcessor(StatusCode.COMPLETE, null, "", false); log.metrics(""); if (result != null) { @@ -365,7 +391,7 @@ public class ActionDaoImpl extends CassandraBaseDao implements Act versions.add(versionInfoEntity.getCandidate().getVersion()); ActionUtil.actionLogPreProcessor(ActionSubOperation.GET_ACTIONENTITY_BY_ACTIONINVID, TARGET_ENTITY_DB); - Result result = accessor.getActionsByInvId(actionInvariantUuId, versions); + Result result = accessor.getActionsByInvId(actionInvariantUuId, new ArrayList<>(versions)); ActionUtil.actionLogPostProcessor(StatusCode.COMPLETE, null, "", false); log.metrics(""); if (result != null) { @@ -482,7 +508,7 @@ public class ActionDaoImpl extends CassandraBaseDao implements Act Result getAllActions(); @Query("SELECT * FROM Action where actionInvariantUuId = ? and version in ? ") - Result getActionsByInvId(String actionInvariantUuId, Set versions); + Result getActionsByInvId(String actionInvariantUuId, List versions); @Query("SELECT * FROM Action where supportedModels CONTAINS ?") Result getActionsByModel(String resource); diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/pom.xml b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/pom.xml index 88002d9b83..1642ca2b76 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-api/pom.xml @@ -13,6 +13,11 @@ + + com.datastax.cassandra + cassandra-driver-extras + ${datastax.cassandra.version} + org.openecomp.sdc.core openecomp-session-lib diff --git a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoImpl.java b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoImpl.java index 3404887dfe..4df67735be 100644 --- a/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoImpl.java +++ b/openecomp-be/lib/openecomp-sdc-versioning-lib/openecomp-sdc-versioning-core/src/main/java/org/openecomp/sdc/versioning/dao/impl/VersionInfoDaoImpl.java @@ -16,16 +16,19 @@ package org.openecomp.sdc.versioning.dao.impl; +import com.datastax.driver.extras.codecs.enums.EnumNameCodec; import com.datastax.driver.mapping.Mapper; import com.datastax.driver.mapping.Result; import com.datastax.driver.mapping.annotations.Accessor; import com.datastax.driver.mapping.annotations.Query; + +import java.util.Collection; + import org.openecomp.core.dao.impl.CassandraBaseDao; import org.openecomp.core.nosqldb.api.NoSqlDb; import org.openecomp.sdc.versioning.dao.VersionInfoDao; import org.openecomp.sdc.versioning.dao.types.VersionInfoEntity; - -import java.util.Collection; +import org.openecomp.sdc.versioning.dao.types.VersionStatus; public class VersionInfoDaoImpl extends CassandraBaseDao implements VersionInfoDao { @@ -40,6 +43,8 @@ public class VersionInfoDaoImpl extends CassandraBaseDao this.noSqlDb = noSqlDb; this.mapper = this.noSqlDb.getMappingManager().mapper(VersionInfoEntity.class); this.accessor = this.noSqlDb.getMappingManager().createAccessor(VersionInfoAccessor.class); + this.noSqlDb.getMappingManager().getSession().getCluster().getConfiguration().getCodecRegistry() + .register(new EnumNameCodec<>(VersionStatus.class)); } @Override -- cgit 1.2.3-korg