From 9ebb9c1aa320e49c581ba1a66202cc2f2bda0c5a Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Wed, 14 Feb 2018 15:30:07 +0100 Subject: Rework the SDC cache Rework the SDC cache that was broken and add unit tests to validate it Issue-ID: CLAMP-85 Change-Id: I43503702733d8f8f0ddbf391f94fb4e5416be98f Signed-off-by: Determe, Sebastien (sd378r) --- src/main/java/org/onap/clamp/clds/dao/CldsDao.java | 22 ++++++++++++++---- .../onap/clamp/clds/dao/CldsServiceDataMapper.java | 24 +++++++++---------- .../onap/clamp/clds/model/CldsDBServiceCache.java | 16 ++++++++++--- .../org/onap/clamp/clds/model/CldsServiceData.java | 27 +++++++--------------- 4 files changed, 49 insertions(+), 40 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java index 088d47332..5946416ad 100644 --- a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java +++ b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java @@ -354,19 +354,31 @@ public class CldsDao { return template; } + public void clearServiceCache() { + String clearCldsServiceCacheSql = "TRUNCATE clds_service_cache"; + jdbcTemplateObject.execute(clearCldsServiceCacheSql); + } + public CldsServiceData getCldsServiceCache(String invariantUUID) { CldsServiceData cldsServiceData = null; - List cldsServiceDataList = new ArrayList<>(); try { String getCldsServiceSQL = "SELECT * , TIMESTAMPDIFF(SECOND, timestamp, CURRENT_TIMESTAMP()) FROM clds_service_cache where invariant_service_id = ? "; cldsServiceData = jdbcTemplateObject.queryForObject(getCldsServiceSQL, new Object[] { invariantUUID }, new CldsServiceDataMapper()); - logger.info("value of cldsServiceDataList: {}", cldsServiceDataList); + if (cldsServiceData != null) { + logger.info("CldsServiceData found in cache for Service Invariant ID:" + + cldsServiceData.getServiceInvariantUUID()); + return cldsServiceData; + } else { + logger.warn("CldsServiceData not found in cache for Service Invariant ID:" + invariantUUID); + return null; + } } catch (EmptyResultDataAccessException e) { - logger.warn("cache row not found for invariantUUID: " + invariantUUID, e); + logger.info("CldsServiceData not found in cache for Service Invariant ID: " + invariantUUID); + logger.debug("CldsServiceData not found in cache for Service Invariant ID: " + invariantUUID, e); + return null; } - return cldsServiceData; } public void setCldsServiceCache(CldsDBServiceCache cldsDBServiceCache) { @@ -401,7 +413,7 @@ public class CldsDao { * @return list of CldsModelProp */ public List getDeployedModelProperties() { - List cldsModelPropList = new ArrayList(); + List cldsModelPropList = new ArrayList<>(); String modelsSql = "select m.model_id, m.model_name, mp.model_prop_id, mp.model_prop_text FROM model m, model_properties mp, event e " + "WHERE m.model_prop_id = mp.model_prop_id and m.event_id = e.event_id and e.action_cd = 'DEPLOY'"; List> rows = jdbcTemplateObject.queryForList(modelsSql); diff --git a/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java b/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java index 91d895054..470354a73 100644 --- a/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java +++ b/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -27,35 +27,33 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import org.apache.commons.io.serialization.ValidatingObjectInputStream; -import java.sql.Blob; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; +import org.apache.commons.io.serialization.ValidatingObjectInputStream; import org.onap.clamp.clds.model.CldsServiceData; +import org.onap.clamp.clds.model.CldsVfData; +import org.onap.clamp.clds.model.CldsVfcData; import org.springframework.jdbc.core.RowMapper; /** * Generic mapper for CldsDBServiceCache */ public final class CldsServiceDataMapper implements RowMapper { + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsDao.class); @Override public CldsServiceData mapRow(ResultSet rs, int rowNum) throws SQLException { CldsServiceData cldsServiceData = new CldsServiceData(); - long age; - age = rs.getLong(5); - Blob blob = rs.getBlob(4); - InputStream is = blob.getBinaryStream(); - try (ValidatingObjectInputStream oip = new ValidatingObjectInputStream(is)) { - oip.accept(CldsServiceData.class); + try (ValidatingObjectInputStream oip = new ValidatingObjectInputStream(rs.getBlob(4).getBinaryStream())) { + oip.accept(CldsServiceData.class, ArrayList.class, CldsVfData.class, CldsVfcData.class); cldsServiceData = (CldsServiceData) oip.readObject(); - cldsServiceData.setAgeOfRecord(age); + cldsServiceData.setAgeOfRecord(rs.getLong(5)); } catch (IOException | ClassNotFoundException e) { - logger.error("Error caught while retrieving cldsServiceData from database", e); + logger.error("Error caught while deserializing cldsServiceData from database", e); + return null; } return cldsServiceData; } diff --git a/src/main/java/org/onap/clamp/clds/model/CldsDBServiceCache.java b/src/main/java/org/onap/clamp/clds/model/CldsDBServiceCache.java index f9a760b77..80e8d8538 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsDBServiceCache.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsDBServiceCache.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -31,10 +31,16 @@ import java.io.ObjectOutputStream; public class CldsDBServiceCache { - private String invariantId; - private String serviceId; + private String invariantId; + private String serviceId; private InputStream cldsDataInstream; + public CldsDBServiceCache(CldsServiceData cldsServiceData) throws IOException { + setCldsDataInstream(cldsServiceData); + setInvariantId(cldsServiceData.getServiceInvariantUUID()); + setServiceId(cldsServiceData.getServiceUUID()); + } + public String getInvariantId() { return invariantId; } @@ -55,6 +61,10 @@ public class CldsDBServiceCache { return cldsDataInstream; } + public void setCldsDataInstream(InputStream cldsDataInputstream) { + this.cldsDataInstream = cldsDataInputstream; + } + public void setCldsDataInstream(CldsServiceData cldsServiceData) throws IOException { this.cldsDataInstream = getInstreamFromObject(cldsServiceData); } diff --git a/src/main/java/org/onap/clamp/clds/model/CldsServiceData.java b/src/main/java/org/onap/clamp/clds/model/CldsServiceData.java index 943532f02..1a4b4dcf9 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsServiceData.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsServiceData.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP CLAMP * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -32,20 +32,17 @@ import java.util.List; import javax.ws.rs.NotAuthorizedException; -import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.service.CldsService; public class CldsServiceData implements Serializable { - private static final long serialVersionUID = -9153372664377279423L; - - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsServiceData.class); - protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - - private String serviceInvariantUUID; - private String serviceUUID; - private Long ageOfRecord; - private List cldsVfs; + private static final long serialVersionUID = -9153372664377279423L; + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsServiceData.class); + protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + private String serviceInvariantUUID; + private String serviceUUID; + private Long ageOfRecord; + private List cldsVfs; public String getServiceInvariantUUID() { return serviceInvariantUUID; @@ -71,14 +68,6 @@ public class CldsServiceData implements Serializable { this.serviceUUID = serviceUUID; } - public CldsServiceData getCldsServiceCache(CldsDao cldsDao, String invariantServiceUUID) { - return cldsDao.getCldsServiceCache(invariantServiceUUID); - } - - public void setCldsServiceCache(CldsDao cldsDao, CldsDBServiceCache cldsDBServiceCache) { - cldsDao.setCldsServiceCache(cldsDBServiceCache); - } - public Long getAgeOfRecord() { return ageOfRecord; } -- cgit 1.2.3-korg