From dbc73d18ede97983f30b5e7480332f9e62902a9b Mon Sep 17 00:00:00 2001 From: navodzoysa Date: Thu, 24 Aug 2023 16:05:14 +0530 Subject: [PATCH] Add improvements to certificate component --- .../CertificateManagementAdminService.java | 11 +- ...CertificateManagementAdminServiceImpl.java | 23 +-- .../pom.xml | 1 + .../dao/impl/GenericCertificateDAOImpl.java | 136 +++++++++--------- .../dao/impl/OracleCertificateDAOImpl.java | 126 ++++++++-------- .../impl/PostgreSQLCertificateDAOImpl.java | 127 ++++++++-------- .../dao/impl/SQLServerCertificateDAOImpl.java | 127 ++++++++-------- .../CertificateManagementServiceImpl.java | 5 +- 8 files changed, 265 insertions(+), 291 deletions(-) diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.cert.admin.api/src/main/java/io/entgra/device/mgt/core/certificate/mgt/cert/admin/api/CertificateManagementAdminService.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.cert.admin.api/src/main/java/io/entgra/device/mgt/core/certificate/mgt/cert/admin/api/CertificateManagementAdminService.java index cd2be07ac9..af77d74719 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.cert.admin.api/src/main/java/io/entgra/device/mgt/core/certificate/mgt/cert/admin/api/CertificateManagementAdminService.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.cert.admin.api/src/main/java/io/entgra/device/mgt/core/certificate/mgt/cert/admin/api/CertificateManagementAdminService.java @@ -311,20 +311,17 @@ public interface CertificateManagementAdminService { @ApiParam( name = "serialNumber", value = "The serial number of the certificates", - required = false, - defaultValue = "0") + required = false) @QueryParam("serialNumber") String serialNumber, @ApiParam( name = "deviceIdentifier", value = "The device identifier of the certificates", - required = false, - defaultValue = "0") + required = false) @QueryParam("deviceIdentifier") String deviceIdentifier, @ApiParam( name = "username", - value = "User name of the certificate added user" , - required = false, - defaultValue = "0") + value = "User name of the certificate added user", + required = false) @QueryParam("username") String username, @ApiParam( name = "If-Modified-Since", diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.cert.admin.api/src/main/java/io/entgra/device/mgt/core/certificate/mgt/cert/admin/api/impl/CertificateManagementAdminServiceImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.cert.admin.api/src/main/java/io/entgra/device/mgt/core/certificate/mgt/cert/admin/api/impl/CertificateManagementAdminServiceImpl.java index 3f124a8946..815e141f38 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.cert.admin.api/src/main/java/io/entgra/device/mgt/core/certificate/mgt/cert/admin/api/impl/CertificateManagementAdminServiceImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.cert.admin.api/src/main/java/io/entgra/device/mgt/core/certificate/mgt/cert/admin/api/impl/CertificateManagementAdminServiceImpl.java @@ -27,6 +27,7 @@ import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import io.entgra.device.mgt.core.device.mgt.common.CertificatePaginationRequest; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import io.entgra.device.mgt.core.certificate.mgt.cert.admin.api.CertificateManagementAdminService; @@ -138,20 +139,23 @@ public class CertificateManagementAdminServiceImpl implements CertificateManagem */ @GET public Response getAllCertificates( - @QueryParam("serialNumber") String serialNumber, @QueryParam("deviceIdentifier") String deviceIdentifier, - @QueryParam("username") String username, @HeaderParam("If-Modified-Since") String ifModifiedSince, @QueryParam("offset") int offset, + @QueryParam("serialNumber") String serialNumber, + @QueryParam("deviceIdentifier") String deviceIdentifier, + @QueryParam("username") String username, + @HeaderParam("If-Modified-Since") String ifModifiedSince, + @QueryParam("offset") int offset, @QueryParam("limit") int limit) { RequestValidationUtil.validatePaginationInfo(offset, limit); CertificateManagementService certificateService = CertificateMgtAPIUtils.getCertificateManagementService(); CertificatePaginationRequest request = new CertificatePaginationRequest(offset, limit); - if (serialNumber != null && !serialNumber.isEmpty()) { + if (StringUtils.isNotEmpty(serialNumber)) { request.setSerialNumber(serialNumber); } - if (deviceIdentifier != null){ + if (StringUtils.isNotEmpty(deviceIdentifier)){ request.setDeviceIdentifier(deviceIdentifier); } - if (username != null){ + if (StringUtils.isNotEmpty(username)){ request.setUsername(username); } try { @@ -188,18 +192,19 @@ public class CertificateManagementAdminServiceImpl implements CertificateManagem serialNumber + "' has been removed").build(); } } catch (CertificateManagementException e) { - String msg = "Error occurred while converting PEM file to X509Certificate"; + String msg = "Error occurred while removing certificate with the given " + + "serial number '" + serialNumber + "'"; log.error(msg, e); return Response.serverError().entity( new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build(); } } else { - return Response.status(Response.Status.NOT_FOUND).entity( - "User not have to access delete certificate " + + return Response.status(Response.Status.UNAUTHORIZED).entity( + "User unauthorized to delete certificate with " + "serial number '" + serialNumber + "'").build(); } } catch (CertificateManagementException e) { - String msg = "Error occurred while converting PEM file to X509Certificate"; + String msg = "Error occurred while getting the metadata entry for certificate deletion."; log.error(msg, e); return Response.serverError().entity( new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build(); diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/pom.xml b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/pom.xml index cb44ff8045..ef8abbba07 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/pom.xml +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/pom.xml @@ -56,6 +56,7 @@ org.osgi.framework.*;version="${imp.package.version.osgi.framework}", org.osgi.service.*;version="${imp.package.version.osgi.service}", + org.apache.commons.lang, org.apache.commons.logging, org.apache.commons.collections.map, javax.security.auth.x500, diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/GenericCertificateDAOImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/GenericCertificateDAOImpl.java index b24cc7625e..7655e46005 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/GenericCertificateDAOImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/GenericCertificateDAOImpl.java @@ -21,11 +21,11 @@ package io.entgra.device.mgt.core.certificate.mgt.core.dao.impl; import io.entgra.device.mgt.core.device.mgt.common.CertificatePaginationRequest; import io.entgra.device.mgt.core.certificate.mgt.core.dto.CertificateResponse; import io.entgra.device.mgt.core.certificate.mgt.core.impl.CertificateGenerator; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOException; import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOFactory; -import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOUtil; import io.entgra.device.mgt.core.certificate.mgt.core.service.PaginationResult; import org.wso2.carbon.context.PrivilegedCarbonContext; @@ -55,66 +55,58 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl { String serialNumber = request.getSerialNumber(); String deviceIdentifier = request.getDeviceIdentifier(); String username = request.getUsername(); - PreparedStatement stmt = null; - ResultSet rs = null; try { Connection conn = this.getConnection(); - StringBuilder queryBuilder = new StringBuilder("SELECT COUNT(*) AS DEVICE_CERTIFICATE_COUNT FROM DM_DEVICE_CERTIFICATE WHERE TENANT_ID = ?"); + String sql = "SELECT COUNT(*) AS DEVICE_CERTIFICATE_COUNT " + + "FROM DM_DEVICE_CERTIFICATE " + + "WHERE TENANT_ID = ?"; - if (serialNumber != null && !serialNumber.isEmpty()) { - queryBuilder.append(" AND SERIAL_NUMBER = ?"); + if (StringUtils.isNotEmpty(serialNumber)) { + sql += " AND SERIAL_NUMBER = ?"; } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { - queryBuilder.append(" AND DEVICE_IDENTIFIER = ?"); + if (StringUtils.isNotEmpty(deviceIdentifier)) { + sql += " AND DEVICE_IDENTIFIER = ?"; } - if (username != null && !username.isEmpty()) { - queryBuilder.append(" AND USERNAME LIKE ?"); + if (StringUtils.isNotEmpty(username)) { + sql += " AND USERNAME LIKE ?"; } - String sql = queryBuilder.toString(); - - stmt = conn.prepareStatement(sql); - stmt.setInt(1, tenantId); - - int paramIdx = 2; - if (serialNumber != null && !serialNumber.isEmpty()) { - stmt.setString(paramIdx++, serialNumber); - } - - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { - stmt.setString(paramIdx++, deviceIdentifier); - } - - if (username != null && !username.isEmpty()) { - stmt.setString(paramIdx, "%" + username + "%"); - } - - rs = stmt.executeQuery(); - - if (rs.next()) { - certificateCount = rs.getInt("DEVICE_CERTIFICATE_COUNT"); + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + stmt.setInt(1, tenantId); + + int paramIdx = 2; + if (StringUtils.isNotEmpty(serialNumber)) { + stmt.setString(paramIdx++, serialNumber); + } + + if (StringUtils.isNotEmpty(deviceIdentifier)) { + stmt.setString(paramIdx++, deviceIdentifier); + } + + if (StringUtils.isNotEmpty(username)) { + stmt.setString(paramIdx, "%" + username + "%"); + } + try (ResultSet rs = stmt.executeQuery()) { + if (rs.next()) { + certificateCount = rs.getInt("DEVICE_CERTIFICATE_COUNT"); + } + } } } catch (SQLException e) { String errorMsg = "SQL error occurred while retrieving the certificate count."; log.error(errorMsg, e); throw new CertificateManagementDAOException(errorMsg, e); - } finally { - CertificateManagementDAOUtil.cleanupResources(stmt, rs); } - return certificateCount; } - @Override public PaginationResult getAllCertificates(CertificatePaginationRequest request) throws CertificateManagementDAOException { int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - PreparedStatement stmt = null; - ResultSet resultSet = null; CertificateResponse certificateResponse; List certificates = new ArrayList<>(); PaginationResult paginationResult; @@ -130,59 +122,59 @@ public class GenericCertificateDAOImpl extends AbstractCertificateDAOImpl { String query = "SELECT * " + "FROM DM_DEVICE_CERTIFICATE " + "WHERE TENANT_ID = ? "; - if (serialNumber != null && !serialNumber.isEmpty()) { + + if (StringUtils.isNotEmpty(serialNumber)) { query += "AND SERIAL_NUMBER = ? "; isCertificateSerialNumberProvided = true; } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { + if (StringUtils.isNotEmpty(deviceIdentifier)) { query += "AND DEVICE_IDENTIFIER = ? "; isCertificateDeviceIdentifierProvided = true; } - if (username != null && !username.isEmpty()) { + if (StringUtils.isNotEmpty(username)) { query += "AND USERNAME LIKE ? "; isCertificateUsernameProvided = true; } query += "ORDER BY ID LIMIT ?,?"; - stmt = conn.prepareStatement(query); - int paramIdx = 1; - stmt.setInt(paramIdx++, tenantId); - if (isCertificateSerialNumberProvided) { - stmt.setString(paramIdx++, serialNumber); + try (PreparedStatement stmt = conn.prepareStatement(query)) { + int paramIdx = 1; + stmt.setInt(paramIdx++, tenantId); + if (isCertificateSerialNumberProvided) { + stmt.setString(paramIdx++, serialNumber); + } + if (isCertificateDeviceIdentifierProvided) { + stmt.setString(paramIdx++, deviceIdentifier); + } + if (isCertificateUsernameProvided) { + stmt.setString(paramIdx++, "%" + username + "%"); + } + stmt.setInt(paramIdx++, request.getStartIndex()); + stmt.setInt(paramIdx++, request.getRowCount()); + try (ResultSet resultSet = stmt.executeQuery()) { + while (resultSet.next()) { + certificateResponse = new CertificateResponse(); + byte[] certificateBytes = resultSet.getBytes("CERTIFICATE"); + certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); + certificateResponse.setCertificateId(resultSet.getString("ID")); + certificateResponse.setDeviceIdentifier(resultSet.getString("DEVICE_IDENTIFIER")); + certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); + certificateResponse.setUsername(resultSet.getString("USERNAME")); + CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); + certificates.add(certificateResponse); + } + paginationResult = new PaginationResult(); + paginationResult.setData(certificates); + paginationResult.setRecordsTotal(this.getCertificateCount(request)); + } } - if (isCertificateDeviceIdentifierProvided) { - stmt.setString(paramIdx++, deviceIdentifier); - } - if (isCertificateUsernameProvided) { - stmt.setString(paramIdx++, "%" + username + "%"); - } - stmt.setInt(paramIdx++, request.getStartIndex()); - stmt.setInt(paramIdx++, request.getRowCount()); - resultSet = stmt.executeQuery(); - while (resultSet.next()) { - certificateResponse = new CertificateResponse(); - byte[] certificateBytes = resultSet.getBytes("CERTIFICATE"); - certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); - certificateResponse.setCertificateId(resultSet.getString("ID")); - certificateResponse.setDeviceIdentifier(resultSet.getString("DEVICE_IDENTIFIER")); - certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); - certificateResponse.setUsername(resultSet.getString("USERNAME")); - CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); - certificates.add(certificateResponse); - } - paginationResult = new PaginationResult(); - paginationResult.setData(certificates); - paginationResult.setRecordsTotal(this.getCertificateCount(request)); - } catch (SQLException e) { String errorMsg = "SQL error occurred while retrieving the certificates."; log.error(errorMsg, e); throw new CertificateManagementDAOException(errorMsg, e); - } finally { - CertificateManagementDAOUtil.cleanupResources(stmt, resultSet); } return paginationResult; } diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/OracleCertificateDAOImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/OracleCertificateDAOImpl.java index 7941cb60b7..9231a0d746 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/OracleCertificateDAOImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/OracleCertificateDAOImpl.java @@ -21,11 +21,11 @@ package io.entgra.device.mgt.core.certificate.mgt.core.dao.impl; import io.entgra.device.mgt.core.device.mgt.common.CertificatePaginationRequest; import io.entgra.device.mgt.core.certificate.mgt.core.dto.CertificateResponse; import io.entgra.device.mgt.core.certificate.mgt.core.impl.CertificateGenerator; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOException; import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOFactory; -import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOUtil; import io.entgra.device.mgt.core.certificate.mgt.core.service.PaginationResult; import org.wso2.carbon.context.PrivilegedCarbonContext; @@ -47,8 +47,6 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl { @Override public PaginationResult getAllCertificates(CertificatePaginationRequest request) throws CertificateManagementDAOException { int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - PreparedStatement stmt = null; - ResultSet resultSet = null; CertificateResponse certificateResponse; List certificates = new ArrayList<>(); PaginationResult paginationResult; @@ -64,58 +62,58 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl { String query = "SELECT * " + "FROM DM_DEVICE_CERTIFICATE " + "WHERE TENANT_ID = ? "; - if (serialNumber != null && !serialNumber.isEmpty()) { + if (StringUtils.isNotEmpty(serialNumber)) { query += "AND SERIAL_NUMBER = ? "; isCertificateSerialNumberProvided = true; } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { + if (StringUtils.isNotEmpty(deviceIdentifier)) { query += "AND DEVICE_IDENTIFIER = ? "; isCertificateDeviceIdentifierProvided = true; } - if (username != null && !username.isEmpty()) { + if (StringUtils.isNotEmpty(username)) { query += "AND USERNAME LIKE ? "; isCertificateUsernameProvided = true; } query += "ORDER BY ID OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; - stmt = conn.prepareStatement(query); - int paramIdx = 1; - stmt.setInt(paramIdx++, tenantId); - if (isCertificateSerialNumberProvided) { - stmt.setString(paramIdx++, serialNumber); + try (PreparedStatement stmt = conn.prepareStatement(query)) { + int paramIdx = 1; + stmt.setInt(paramIdx++, tenantId); + if (isCertificateSerialNumberProvided) { + stmt.setString(paramIdx++, serialNumber); + } + if (isCertificateDeviceIdentifierProvided) { + stmt.setString(paramIdx++, deviceIdentifier); + } + if (isCertificateUsernameProvided) { + stmt.setString(paramIdx++, "%" + username + "%"); + } + stmt.setInt(paramIdx++, request.getStartIndex()); + stmt.setInt(paramIdx++, request.getRowCount()); + try (ResultSet resultSet = stmt.executeQuery()) { + while (resultSet.next()) { + certificateResponse = new CertificateResponse(); + byte[] certificateBytes = resultSet.getBytes("CERTIFICATE"); + certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); + certificateResponse.setCertificateId(resultSet.getString("ID")); + certificateResponse.setDeviceIdentifier(resultSet.getString("DEVICE_IDENTIFIER")); + certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); + certificateResponse.setUsername(resultSet.getString("USERNAME")); + CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); + certificates.add(certificateResponse); + } + paginationResult = new PaginationResult(); + paginationResult.setData(certificates); + paginationResult.setRecordsTotal(this.getCertificateCount(request)); + } } - if (isCertificateDeviceIdentifierProvided) { - stmt.setString(paramIdx++, deviceIdentifier); - } - if (isCertificateUsernameProvided) { - stmt.setString(paramIdx++, "%" + username + "%"); - } - stmt.setInt(paramIdx++, request.getStartIndex()); - stmt.setInt(paramIdx++, request.getRowCount()); - resultSet = stmt.executeQuery(); - while (resultSet.next()) { - certificateResponse = new CertificateResponse(); - byte[] certificateBytes = resultSet.getBytes("CERTIFICATE"); - certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); - certificateResponse.setCertificateId(resultSet.getString("ID")); - certificateResponse.setDeviceIdentifier(resultSet.getString("DEVICE_IDENTIFIER")); - certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); - certificateResponse.setUsername(resultSet.getString("USERNAME")); - CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); - certificates.add(certificateResponse); - } - paginationResult = new PaginationResult(); - paginationResult.setData(certificates); - paginationResult.setRecordsTotal(this.getCertificateCount(request)); } catch (SQLException e) { String errorMsg = "SQL error occurred while retrieving the certificates."; log.error(errorMsg, e); throw new CertificateManagementDAOException(errorMsg, e); - } finally { - CertificateManagementDAOUtil.cleanupResources(stmt, resultSet); } return paginationResult; } @@ -130,56 +128,52 @@ public class OracleCertificateDAOImpl extends AbstractCertificateDAOImpl { String serialNumber = request.getSerialNumber(); String deviceIdentifier = request.getDeviceIdentifier(); String username = request.getUsername(); - PreparedStatement stmt = null; - ResultSet rs = null; try { Connection conn = this.getConnection(); - StringBuilder queryBuilder = new StringBuilder("SELECT COUNT(*) AS DEVICE_CERTIFICATE_COUNT FROM DM_DEVICE_CERTIFICATE WHERE TENANT_ID = ?"); + String sql = "SELECT COUNT(*) AS DEVICE_CERTIFICATE_COUNT " + + "FROM DM_DEVICE_CERTIFICATE " + + "WHERE TENANT_ID = ?"; - if (serialNumber != null && !serialNumber.isEmpty()) { - queryBuilder.append(" AND SERIAL_NUMBER = ?"); + if (StringUtils.isNotEmpty(serialNumber)) { + sql += " AND SERIAL_NUMBER = ?"; } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { - queryBuilder.append(" AND DEVICE_IDENTIFIER = ?"); + if (StringUtils.isNotEmpty(deviceIdentifier)) { + sql += " AND DEVICE_IDENTIFIER = ?"; } - if (username != null && !username.isEmpty()) { - queryBuilder.append(" AND USERNAME LIKE ?"); + if (StringUtils.isNotEmpty(username)) { + sql += " AND USERNAME LIKE ?"; } - String sql = queryBuilder.toString(); - - stmt = conn.prepareStatement(sql); - stmt.setInt(1, tenantId); + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + stmt.setInt(1, tenantId); - int paramIdx = 2; - if (serialNumber != null && !serialNumber.isEmpty()) { - stmt.setString(paramIdx++, serialNumber); - } + int paramIdx = 2; + if (StringUtils.isNotEmpty(serialNumber)) { + stmt.setString(paramIdx++, serialNumber); + } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { - stmt.setString(paramIdx++, deviceIdentifier); - } + if (StringUtils.isNotEmpty(deviceIdentifier)) { + stmt.setString(paramIdx++, deviceIdentifier); + } - if (username != null && !username.isEmpty()) { - stmt.setString(paramIdx, "%" + username + "%"); - } + if (StringUtils.isNotEmpty(username)) { + stmt.setString(paramIdx, "%" + username + "%"); + } - rs = stmt.executeQuery(); - - if (rs.next()) { - certificateCount = rs.getInt("DEVICE_CERTIFICATE_COUNT"); + try (ResultSet rs = stmt.executeQuery()) { + if (rs.next()) { + certificateCount = rs.getInt("DEVICE_CERTIFICATE_COUNT"); + } + } } } catch (SQLException e) { String errorMsg = "SQL error occurred while retrieving the certificate count."; log.error(errorMsg, e); throw new CertificateManagementDAOException(errorMsg, e); - } finally { - CertificateManagementDAOUtil.cleanupResources(stmt, rs); } - return certificateCount; } diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/PostgreSQLCertificateDAOImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/PostgreSQLCertificateDAOImpl.java index 1c84fccbe0..e31e005f0b 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/PostgreSQLCertificateDAOImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/PostgreSQLCertificateDAOImpl.java @@ -21,11 +21,11 @@ package io.entgra.device.mgt.core.certificate.mgt.core.dao.impl; import io.entgra.device.mgt.core.device.mgt.common.CertificatePaginationRequest; import io.entgra.device.mgt.core.certificate.mgt.core.dto.CertificateResponse; import io.entgra.device.mgt.core.certificate.mgt.core.impl.CertificateGenerator; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOException; import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOFactory; -import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOUtil; import io.entgra.device.mgt.core.certificate.mgt.core.service.PaginationResult; import org.wso2.carbon.context.PrivilegedCarbonContext; @@ -47,8 +47,6 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl { @Override public PaginationResult getAllCertificates(CertificatePaginationRequest request) throws CertificateManagementDAOException { int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - PreparedStatement stmt = null; - ResultSet resultSet = null; CertificateResponse certificateResponse; List certificates = new ArrayList<>(); PaginationResult paginationResult; @@ -64,59 +62,58 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl { String query = "SELECT * " + "FROM DM_DEVICE_CERTIFICATE " + "WHERE TENANT_ID = ? "; - if (serialNumber != null && !serialNumber.isEmpty()) { + if (StringUtils.isNotEmpty(serialNumber)) { query += "AND SERIAL_NUMBER = ? "; isCertificateSerialNumberProvided = true; } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { + if (StringUtils.isNotEmpty(deviceIdentifier)) { query += "AND DEVICE_IDENTIFIER = ? "; isCertificateDeviceIdentifierProvided = true; } - if (username != null && !username.isEmpty()) { + if (StringUtils.isNotEmpty(username)) { query += "AND USERNAME LIKE ? "; isCertificateUsernameProvided = true; } query += "ORDER BY ID LIMIT ? OFFSET ?"; - stmt = conn.prepareStatement(query); - int paramIdx = 1; - stmt.setInt(paramIdx++, tenantId); - if (isCertificateSerialNumberProvided) { - stmt.setString(paramIdx++, serialNumber); + try (PreparedStatement stmt = conn.prepareStatement(query)) { + int paramIdx = 1; + stmt.setInt(paramIdx++, tenantId); + if (isCertificateSerialNumberProvided) { + stmt.setString(paramIdx++, serialNumber); + } + if (isCertificateDeviceIdentifierProvided) { + stmt.setString(paramIdx++, deviceIdentifier); + } + if (isCertificateUsernameProvided) { + stmt.setString(paramIdx++, "%" + username + "%"); + } + stmt.setInt(paramIdx++, request.getStartIndex()); + stmt.setInt(paramIdx++, request.getRowCount()); + try (ResultSet resultSet = stmt.executeQuery()) { + while (resultSet.next()) { + certificateResponse = new CertificateResponse(); + byte[] certificateBytes = resultSet.getBytes("CERTIFICATE"); + certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); + certificateResponse.setCertificateId(resultSet.getString("ID")); + certificateResponse.setDeviceIdentifier(resultSet.getString("DEVICE_IDENTIFIER")); + certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); + certificateResponse.setUsername(resultSet.getString("USERNAME")); + CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); + certificates.add(certificateResponse); + } + paginationResult = new PaginationResult(); + paginationResult.setData(certificates); + paginationResult.setRecordsTotal(this.getCertificateCount(request)); + } } - if (isCertificateDeviceIdentifierProvided) { - stmt.setString(paramIdx++, deviceIdentifier); - } - if (isCertificateUsernameProvided) { - stmt.setString(paramIdx++, "%" + username + "%"); - } - stmt.setInt(paramIdx++, request.getStartIndex()); - stmt.setInt(paramIdx++, request.getRowCount()); - resultSet = stmt.executeQuery(); - while (resultSet.next()) { - certificateResponse = new CertificateResponse(); - byte[] certificateBytes = resultSet.getBytes("CERTIFICATE"); - certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); - certificateResponse.setCertificateId(resultSet.getString("ID")); - certificateResponse.setDeviceIdentifier(resultSet.getString("DEVICE_IDENTIFIER")); - certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); - certificateResponse.setUsername(resultSet.getString("USERNAME")); - CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); - certificates.add(certificateResponse); - } - paginationResult = new PaginationResult(); - paginationResult.setData(certificates); - paginationResult.setRecordsTotal(this.getCertificateCount(request)); - } catch (SQLException e) { String errorMsg = "SQL error occurred while retrieving the certificates."; log.error(errorMsg, e); throw new CertificateManagementDAOException(errorMsg, e); - } finally { - CertificateManagementDAOUtil.cleanupResources(stmt, resultSet); } return paginationResult; } @@ -131,56 +128,52 @@ public class PostgreSQLCertificateDAOImpl extends AbstractCertificateDAOImpl { String serialNumber = request.getSerialNumber(); String deviceIdentifier = request.getDeviceIdentifier(); String username = request.getUsername(); - PreparedStatement stmt = null; - ResultSet rs = null; try { Connection conn = this.getConnection(); - StringBuilder queryBuilder = new StringBuilder("SELECT COUNT(*) AS DEVICE_CERTIFICATE_COUNT FROM DM_DEVICE_CERTIFICATE WHERE TENANT_ID = ?"); + String sql = "SELECT COUNT(*) AS DEVICE_CERTIFICATE_COUNT " + + "FROM DM_DEVICE_CERTIFICATE " + + "WHERE TENANT_ID = ?"; - if (serialNumber != null && !serialNumber.isEmpty()) { - queryBuilder.append(" AND SERIAL_NUMBER = ?"); + if (StringUtils.isNotEmpty(serialNumber)) { + sql += " AND SERIAL_NUMBER = ?"; } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { - queryBuilder.append(" AND DEVICE_IDENTIFIER = ?"); + if (StringUtils.isNotEmpty(deviceIdentifier)) { + sql += " AND DEVICE_IDENTIFIER = ?"; } - if (username != null && !username.isEmpty()) { - queryBuilder.append(" AND USERNAME ILIKE ?"); + if (StringUtils.isNotEmpty(username)) { + sql += " AND USERNAME ILIKE ?"; } - String sql = queryBuilder.toString(); + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + stmt.setInt(1, tenantId); - stmt = conn.prepareStatement(sql); - stmt.setInt(1, tenantId); + int paramIdx = 2; + if (StringUtils.isNotEmpty(serialNumber)) { + stmt.setString(paramIdx++, serialNumber); + } - int paramIdx = 2; - if (serialNumber != null && !serialNumber.isEmpty()) { - stmt.setString(paramIdx++, serialNumber); - } + if (StringUtils.isNotEmpty(deviceIdentifier)) { + stmt.setString(paramIdx++, deviceIdentifier); + } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { - stmt.setString(paramIdx++, deviceIdentifier); - } + if (StringUtils.isNotEmpty(username)) { + stmt.setString(paramIdx, "%" + username + "%"); + } - if (username != null && !username.isEmpty()) { - stmt.setString(paramIdx, "%" + username + "%"); - } - - rs = stmt.executeQuery(); - - if (rs.next()) { - certificateCount = rs.getInt("DEVICE_CERTIFICATE_COUNT"); + try (ResultSet rs = stmt.executeQuery()) { + if (rs.next()) { + certificateCount = rs.getInt("DEVICE_CERTIFICATE_COUNT"); + } + } } } catch (SQLException e) { String errorMsg = "SQL error occurred while retrieving the certificate count."; log.error(errorMsg, e); throw new CertificateManagementDAOException(errorMsg, e); - } finally { - CertificateManagementDAOUtil.cleanupResources(stmt, rs); } - return certificateCount; } diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/SQLServerCertificateDAOImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/SQLServerCertificateDAOImpl.java index 9fe8733264..6e0908a286 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/SQLServerCertificateDAOImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/dao/impl/SQLServerCertificateDAOImpl.java @@ -21,11 +21,11 @@ package io.entgra.device.mgt.core.certificate.mgt.core.dao.impl; import io.entgra.device.mgt.core.device.mgt.common.CertificatePaginationRequest; import io.entgra.device.mgt.core.certificate.mgt.core.dto.CertificateResponse; import io.entgra.device.mgt.core.certificate.mgt.core.impl.CertificateGenerator; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOException; import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOFactory; -import io.entgra.device.mgt.core.certificate.mgt.core.dao.CertificateManagementDAOUtil; import io.entgra.device.mgt.core.certificate.mgt.core.service.PaginationResult; import org.wso2.carbon.context.PrivilegedCarbonContext; @@ -47,8 +47,6 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl { @Override public PaginationResult getAllCertificates(CertificatePaginationRequest request) throws CertificateManagementDAOException { int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(); - PreparedStatement stmt = null; - ResultSet resultSet = null; CertificateResponse certificateResponse; List certificates = new ArrayList<>(); PaginationResult paginationResult; @@ -64,59 +62,58 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl { String query = "SELECT * " + "FROM DM_DEVICE_CERTIFICATE " + "WHERE TENANT_ID = ? "; - if (serialNumber != null && !serialNumber.isEmpty()) { + if (StringUtils.isNotEmpty(serialNumber)) { query += "AND SERIAL_NUMBER = ? "; isCertificateSerialNumberProvided = true; } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { + if (StringUtils.isNotEmpty(deviceIdentifier)) { query += "AND DEVICE_IDENTIFIER = ? "; isCertificateDeviceIdentifierProvided = true; } - if (username != null && !username.isEmpty()) { + if (StringUtils.isNotEmpty(username)) { query += "AND USERNAME LIKE ? "; isCertificateUsernameProvided = true; } query += "ORDER BY ID OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; - stmt = conn.prepareStatement(query); - int paramIdx = 1; - stmt.setInt(paramIdx++, tenantId); - if (isCertificateSerialNumberProvided) { - stmt.setString(paramIdx++, serialNumber); + try (PreparedStatement stmt = conn.prepareStatement(query)) { + int paramIdx = 1; + stmt.setInt(paramIdx++, tenantId); + if (isCertificateSerialNumberProvided) { + stmt.setString(paramIdx++, serialNumber); + } + if (isCertificateDeviceIdentifierProvided) { + stmt.setString(paramIdx++, deviceIdentifier); + } + if (isCertificateUsernameProvided) { + stmt.setString(paramIdx++, "%" + username + "%"); + } + stmt.setInt(paramIdx++, request.getStartIndex()); + stmt.setInt(paramIdx++, request.getRowCount()); + try (ResultSet resultSet = stmt.executeQuery()) { + while (resultSet.next()) { + certificateResponse = new CertificateResponse(); + byte[] certificateBytes = resultSet.getBytes("CERTIFICATE"); + certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); + certificateResponse.setCertificateId(resultSet.getString("ID")); + certificateResponse.setDeviceIdentifier(resultSet.getString("DEVICE_IDENTIFIER")); + certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); + certificateResponse.setUsername(resultSet.getString("USERNAME")); + CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); + certificates.add(certificateResponse); + } + paginationResult = new PaginationResult(); + paginationResult.setData(certificates); + paginationResult.setRecordsTotal(this.getCertificateCount(request)); + } } - if (isCertificateDeviceIdentifierProvided) { - stmt.setString(paramIdx++, deviceIdentifier); - } - if (isCertificateUsernameProvided) { - stmt.setString(paramIdx++, "%" + username + "%"); - } - stmt.setInt(paramIdx++, request.getStartIndex()); - stmt.setInt(paramIdx++, request.getRowCount()); - resultSet = stmt.executeQuery(); - while (resultSet.next()) { - certificateResponse = new CertificateResponse(); - byte[] certificateBytes = resultSet.getBytes("CERTIFICATE"); - certificateResponse.setSerialNumber(resultSet.getString("SERIAL_NUMBER")); - certificateResponse.setCertificateId(resultSet.getString("ID")); - certificateResponse.setDeviceIdentifier(resultSet.getString("DEVICE_IDENTIFIER")); - certificateResponse.setTenantId(resultSet.getInt("TENANT_ID")); - certificateResponse.setUsername(resultSet.getString("USERNAME")); - CertificateGenerator.extractCertificateDetails(certificateBytes, certificateResponse); - certificates.add(certificateResponse); - } - paginationResult = new PaginationResult(); - paginationResult.setData(certificates); - paginationResult.setRecordsTotal(this.getCertificateCount(request)); - } catch (SQLException e) { String errorMsg = "SQL error occurred while retrieving the certificates."; log.error(errorMsg, e); throw new CertificateManagementDAOException(errorMsg, e); - } finally { - CertificateManagementDAOUtil.cleanupResources(stmt, resultSet); } return paginationResult; } @@ -131,56 +128,52 @@ public class SQLServerCertificateDAOImpl extends AbstractCertificateDAOImpl { String serialNumber = request.getSerialNumber(); String deviceIdentifier = request.getDeviceIdentifier(); String username = request.getUsername(); - PreparedStatement stmt = null; - ResultSet rs = null; try { Connection conn = this.getConnection(); - StringBuilder queryBuilder = new StringBuilder("SELECT COUNT(*) AS DEVICE_CERTIFICATE_COUNT FROM DM_DEVICE_CERTIFICATE WHERE TENANT_ID = ?"); + String sql = "SELECT COUNT(*) AS DEVICE_CERTIFICATE_COUNT " + + "FROM DM_DEVICE_CERTIFICATE " + + "WHERE TENANT_ID = ?"; - if (serialNumber != null && !serialNumber.isEmpty()) { - queryBuilder.append(" AND SERIAL_NUMBER = ?"); + if (StringUtils.isNotEmpty(serialNumber)) { + sql += " AND SERIAL_NUMBER = ?"; } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { - queryBuilder.append(" AND DEVICE_IDENTIFIER = ?"); + if (StringUtils.isNotEmpty(deviceIdentifier)) { + sql += " AND DEVICE_IDENTIFIER = ?"; } - if (username != null && !username.isEmpty()) { - queryBuilder.append(" AND USERNAME LIKE ?"); + if (StringUtils.isNotEmpty(username)) { + sql += " AND USERNAME LIKE ?"; } - String sql = queryBuilder.toString(); + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + stmt.setInt(1, tenantId); - stmt = conn.prepareStatement(sql); - stmt.setInt(1, tenantId); + int paramIdx = 2; + if (StringUtils.isNotEmpty(serialNumber)) { + stmt.setString(paramIdx++, serialNumber); + } - int paramIdx = 2; - if (serialNumber != null && !serialNumber.isEmpty()) { - stmt.setString(paramIdx++, serialNumber); - } + if (StringUtils.isNotEmpty(deviceIdentifier)) { + stmt.setString(paramIdx++, deviceIdentifier); + } - if (deviceIdentifier != null && !deviceIdentifier.isEmpty()) { - stmt.setString(paramIdx++, deviceIdentifier); - } + if (StringUtils.isNotEmpty(username)) { + stmt.setString(paramIdx, "%" + username + "%"); + } - if (username != null && !username.isEmpty()) { - stmt.setString(paramIdx, "%" + username + "%"); - } - - rs = stmt.executeQuery(); - - if (rs.next()) { - certificateCount = rs.getInt("DEVICE_CERTIFICATE_COUNT"); + try (ResultSet rs = stmt.executeQuery()) { + if (rs.next()) { + certificateCount = rs.getInt("DEVICE_CERTIFICATE_COUNT"); + } + } } } catch (SQLException e) { String errorMsg = "SQL error occurred while retrieving the certificate count."; log.error(errorMsg, e); throw new CertificateManagementDAOException(errorMsg, e); - } finally { - CertificateManagementDAOUtil.cleanupResources(stmt, rs); } - return certificateCount; } diff --git a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/service/CertificateManagementServiceImpl.java b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/service/CertificateManagementServiceImpl.java index 047c532197..06cbedfb4d 100644 --- a/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/service/CertificateManagementServiceImpl.java +++ b/components/certificate-mgt/io.entgra.device.mgt.core.certificate.mgt.core/src/main/java/io/entgra/device/mgt/core/certificate/mgt/core/service/CertificateManagementServiceImpl.java @@ -17,8 +17,6 @@ */ package io.entgra.device.mgt.core.certificate.mgt.core.service; - - import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.JsonParser; @@ -38,6 +36,7 @@ import io.entgra.device.mgt.core.certificate.mgt.core.impl.KeyStoreReader; import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException; import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.bouncycastle.pkcs.PKCS10CertificationRequest; @@ -210,7 +209,7 @@ public class CertificateManagementServiceImpl implements CertificateManagementSe metadata = CertificateManagerUtil.getMetadataManagementService().retrieveMetadata(CertificateManagementConstants.CERTIFICATE_DELETE); if (metadata != null) { String metaValue = metadata.getMetaValue(); - if (metaValue != null && !metaValue.isEmpty()) { + if (StringUtils.isNotEmpty(metaValue)) { JsonParser parser = new JsonParser(); JsonObject jsonObject = parser.parse(metaValue).getAsJsonObject(); return jsonObject.get(CertificateManagementConstants.IS_CERTIFICATE_DELETE_ENABLE).getAsBoolean();