From 51b9251e3f8e9e0d397af8479f1320108a573a3a Mon Sep 17 00:00:00 2001 From: Cyrus <24922493+cyrus-dev@users.noreply.github.com> Date: Tue, 31 May 2022 10:17:11 -0400 Subject: [PATCH] Continued changes remove and updating return types and parameter types --- ...tionCertificateAuthorityConfiguration.java | 1 - .../RimDatabasePageController.java | 1 - .../persistence/PersistenceConfiguration.java | 1 - .../src/main/java/hirs/IMAReportRequest.java | 102 ------ .../src/main/java/hirs/ReportRequest.java | 2 +- .../java/hirs/persist/AbstractDbManager.java | 131 ++++--- .../main/java/hirs/persist/CrudManager.java | 20 +- .../hirs/persist/DBCertificateManager.java | 188 +++++++++- .../src/main/java/hirs/persist/DBManager.java | 74 ++-- .../persist/DBReferenceDigestManager.java | 330 ------------------ .../java/hirs/persist/OrderedListQuerier.java | 4 +- .../persist/PersistenceConfiguration.java | 15 +- 12 files changed, 298 insertions(+), 571 deletions(-) delete mode 100755 HIRS_Utils/src/main/java/hirs/IMAReportRequest.java delete mode 100644 HIRS_Utils/src/main/java/hirs/persist/DBReferenceDigestManager.java diff --git a/HIRS_AttestationCA/src/main/java/hirs/attestationca/configuration/AttestationCertificateAuthorityConfiguration.java b/HIRS_AttestationCA/src/main/java/hirs/attestationca/configuration/AttestationCertificateAuthorityConfiguration.java index ca2ca74c..20862a55 100644 --- a/HIRS_AttestationCA/src/main/java/hirs/attestationca/configuration/AttestationCertificateAuthorityConfiguration.java +++ b/HIRS_AttestationCA/src/main/java/hirs/attestationca/configuration/AttestationCertificateAuthorityConfiguration.java @@ -2,7 +2,6 @@ package hirs.attestationca.configuration; import hirs.persist.DBDeviceGroupManager; import hirs.persist.DBDeviceManager; -import hirs.persist.DBReferenceDigestManager; import hirs.persist.DBReferenceEventManager; import hirs.persist.DBReferenceManifestManager; import hirs.persist.DeviceGroupManager; diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/RimDatabasePageController.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/RimDatabasePageController.java index f8cbaa73..0ffc0d23 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/RimDatabasePageController.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/page/controllers/RimDatabasePageController.java @@ -13,7 +13,6 @@ import hirs.data.persist.SupportReferenceManifest; import hirs.data.persist.certificate.Certificate; import hirs.persist.CriteriaModifier; import hirs.persist.DBManagerException; -import hirs.persist.DBReferenceDigestManager; import hirs.persist.DBReferenceEventManager; import hirs.persist.DBReferenceManifestManager; import hirs.persist.ReferenceDigestManager; diff --git a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/persistence/PersistenceConfiguration.java b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/persistence/PersistenceConfiguration.java index 8c124a20..1eda1f87 100644 --- a/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/persistence/PersistenceConfiguration.java +++ b/HIRS_AttestationCAPortal/src/main/java/hirs/attestationca/portal/persistence/PersistenceConfiguration.java @@ -9,7 +9,6 @@ import hirs.persist.DBDeviceGroupManager; import hirs.persist.DBDeviceManager; import hirs.persist.DBManager; import hirs.persist.DBPolicyManager; -import hirs.persist.DBReferenceDigestManager; import hirs.persist.DBReferenceEventManager; import hirs.persist.DBReferenceManifestManager; import hirs.persist.DeviceGroupManager; diff --git a/HIRS_Utils/src/main/java/hirs/IMAReportRequest.java b/HIRS_Utils/src/main/java/hirs/IMAReportRequest.java deleted file mode 100755 index feec2b3f..00000000 --- a/HIRS_Utils/src/main/java/hirs/IMAReportRequest.java +++ /dev/null @@ -1,102 +0,0 @@ -package hirs; - -import static org.apache.logging.log4j.LogManager.getLogger; - -import hirs.data.persist.Report; - -import javax.xml.bind.annotation.XmlElement; - -import org.apache.logging.log4j.Logger; - -/** - * IMAReportRequest is an immutable class and extends - * ReportRequest to specify parameters which define - * the composition of the IMA report to be generated by the client. - * For example, IMAReportRequest specifies whether a full IMA - * report should be generated and submitted for appraisal or whether a delta - * report (containing new entries since last full report) should be generated - * and submitted. If a delta report is being requested, then an index must be - * provided which is used to inform the client which subset of measurements - * to include in the report. - */ -public final class IMAReportRequest implements ReportRequest { - - private static final Logger LOGGER = getLogger(IMAReportRequest.class); - - @XmlElement - private final String bootcycleId; - - @XmlElement - private final int index; - - /** - * Default constructor required to enable marshalling and unmarshalling - * to/from xml. - */ - public IMAReportRequest() { - this(null, 0); - } - - /** - * Creates a new IMAReportRequest. The boot-cycle ID and index - * are set. The boot-cycle ID may be null to indicate that it is unknown by - * the appraiser and a full report should be sent. The index is the index of - * the new IMA record to send. An index of zero indicates a full report - * should be sent. - *

- * If the boot-cycle is null then the index must be zero. Otherwise an - * IllegalArgumentException is thrown. - * - * @param bootcycleId - * boot-cycle ID - * @param i - * value to use as IMA index - */ - public IMAReportRequest(final String bootcycleId, final int i) { - LOGGER.debug("Entering constructor"); - if (i >= 0) { - index = i; - } else { - String msg = "Cannot init IMAReportRequest with index less than 0"; - LOGGER.error(msg); - throw new IllegalArgumentException(msg); - } - if (bootcycleId == null && i != 0) { - String msg = "null boot-cycle ID must have index of 0"; - LOGGER.error(msg); - throw new IllegalArgumentException(msg); - } - this.bootcycleId = bootcycleId; - LOGGER.debug("Exiting constructor"); - } - - @Override - public Class getReportType() { - return IMAReport.class; - } - - /** - * Returns the boot-cycle ID. This is the last boot-cycle ID that was saved - * by the appraiser. If this is null or different than the boot-cycle ID for - * the collector then a full report shall be sent. - * - * @return boot-cycle ID - */ - public String getBootcycleId() { - return bootcycleId; - } - - /** - * Method returns the IMA index. - * @return index used to specify start location of measurement entries to - * include in IMA report - */ - public int getIMAIndex() { - return index; - } - - @Override - public String toString() { - return String.format("(%s, %d)", bootcycleId, index); - } -} diff --git a/HIRS_Utils/src/main/java/hirs/ReportRequest.java b/HIRS_Utils/src/main/java/hirs/ReportRequest.java index 6175a624..45a919d2 100755 --- a/HIRS_Utils/src/main/java/hirs/ReportRequest.java +++ b/HIRS_Utils/src/main/java/hirs/ReportRequest.java @@ -15,7 +15,7 @@ import javax.xml.bind.annotation.XmlTransient; * client and submitted to the Appraiser for processing. */ @XmlTransient -@XmlSeeAlso(value = { IntegrityReportRequest.class, TPMReportRequest.class, IMAReportRequest.class, +@XmlSeeAlso(value = { IntegrityReportRequest.class, TPMReportRequest.class, DeviceInfoReportRequest.class }) public interface ReportRequest { diff --git a/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java b/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java index 23e3163c..576ed828 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java +++ b/HIRS_Utils/src/main/java/hirs/persist/AbstractDbManager.java @@ -47,19 +47,19 @@ public abstract class AbstractDbManager implements CrudManager { private static final Logger LOGGER = LogManager.getLogger(AbstractDbManager.class); private static final int MAX_CLASS_CACHE_ENTRIES = 500; - private final ArchivableEntity entity; + private Class clazz; private SessionFactory factory; /** * Creates a new AbstractDbManager. * - * @param entity Class to search for when doing Hibernate queries, + * @param clazz Class to search for when doing Hibernate queries, * unfortunately class type of T cannot be determined using only T * @param sessionFactory the session factory to use to interact with the database */ - public AbstractDbManager(final ArchivableEntity entity, final SessionFactory sessionFactory) { - if (entity == null) { + public AbstractDbManager(final Class clazz, final SessionFactory sessionFactory) { + if (clazz == null) { LOGGER.error("AbstractDbManager cannot be instantiated with a null class"); throw new IllegalArgumentException( "AbstractDbManager cannot be instantiated with a null class" @@ -71,10 +71,15 @@ public abstract class AbstractDbManager implements CrudManager { "AbstractDbManager cannot be instantiated with a null SessionFactory" ); } - this.entity = entity; + this.clazz = clazz; this.factory = sessionFactory; } + @Override + public void setClazz(final Class classToSet) { + this.clazz = classToSet; + } + /** * Return the currently configured database implementation. * @@ -119,15 +124,13 @@ public abstract class AbstractDbManager implements CrudManager { try { LOGGER.debug("retrieving object from db"); tx = session.beginTransaction(); - Object obj = session.get(entity, id); - if (obj instanceof hirs.data.persist.ArchivableEntity) { - hirs.data.persist.ArchivableEntity objectOfTypeT = (hirs.data.persist.ArchivableEntity) obj; + Object obj = session.get(clazz, id); + + T objectOfTypeT = (T) obj; LOGGER.debug("found object, deleting it"); session.delete(objectOfTypeT); deleted = true; - } else { - LOGGER.debug("object not found"); - } + tx.commit(); } catch (Exception e) { final String msg = "unable to retrieve object"; @@ -164,16 +167,16 @@ public abstract class AbstractDbManager implements CrudManager { Transaction tx = null; Session session = factory.getCurrentSession(); CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaQuery criteria = builder.createQuery(entity); + CriteriaQuery criteria = builder.createQuery(clazz); try { LOGGER.debug("retrieving object from db"); tx = session.beginTransaction(); - Root myObjectRoot = criteria.from(clazz); - Join joinObject = myObjectRoot.join("joinObject"); - Object object = session.getSessionFactory().getCurrentSession().createCriteria(clazz) + Root myObjectRoot = criteria.from(this.clazz.getClass()); + Join joinObject = myObjectRoot.join("joinObject"); + Object object = session.getSessionFactory().getCurrentSession().createCriteria(this.clazz.getClass()) .add(Restrictions.eq("name", name)).uniqueResult(); - if (object instanceof hirs.data.persist.ArchivableEntity) { - hirs.data.persist.ArchivableEntity objectOfTypeT = (hirs.data.persist.ArchivableEntity) object; + if (object instanceof T) { + T objectOfTypeT = (T) object; LOGGER.debug("found object, deleting it"); session.delete(objectOfTypeT); deleted = true; @@ -240,28 +243,26 @@ public abstract class AbstractDbManager implements CrudManager { Transaction tx = null; Session session = factory.getCurrentSession(); try { - LOGGER.debug("Deleting instances of class: {}", clazz); + LOGGER.debug("Deleting instances of class: {}", this.clazz.getClass()); tx = session.beginTransaction(); CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = builder.createQuery(clazz); - Root root = criteriaQuery.from(clazz); + CriteriaQuery criteriaQuery = builder.createQuery(this.clazz.getClass()); + Root root = criteriaQuery.from(this.clazz.getClass()); Predicate recordPredicate = builder.and( ); criteriaQuery.select(root).where(recordPredicate); - Query query = session.createQuery(criteriaQuery); - List results = query.getResultList(); - ArchivableEntity ret = null; + Query query = session.createQuery(criteriaQuery); + List results = query.getResultList(); + T ret = null; if (results != null && !results.isEmpty()) { ret = results.get(0); } - List instances = session.createCriteria(clazz) + List instances = session.createCriteria(this.clazz.getClass()) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); for (Object instance : instances) { - if (instance instanceof ArchivableEntity) { - session.delete((ArchivableEntity) instance); + session.delete((T) instance); numEntitiesDeleted++; - } } tx.commit(); } catch (Exception e) { @@ -286,16 +287,16 @@ public abstract class AbstractDbManager implements CrudManager { * @throws DBManagerException if an error is encountered while performing the query or creating * the result objects */ - protected List doGetWithCriteria(final Collection criteriaCollection) + protected List doGetWithCriteria(final Collection criteriaCollection) throws DBManagerException { - return doGetWithCriteria(entity, criteriaCollection); + return doGetWithCriteria(clazz, criteriaCollection); } /** * Runs a Criteria query using the given collection of Criterion over the * associated class. * - * @param the specific type of class to retrieve + * @param clazzToGet the specific type of class to retrieve * (should extend this class' <T> parameter) * @param clazzToGet the class of object to retrieve * @param criteriaCollection the collection of Criterion to apply @@ -304,8 +305,8 @@ public abstract class AbstractDbManager implements CrudManager { * @throws DBManagerException if an error is encountered while performing the query or creating * the result objects */ - protected final List doGetWithCriteria( - final Class clazzToGet, + protected final List doGetWithCriteria( + final Class clazzToGet, final Collection criteriaCollection ) throws DBManagerException { LOGGER.debug("running criteria query over: {}", clazzToGet); @@ -313,7 +314,7 @@ public abstract class AbstractDbManager implements CrudManager { LOGGER.debug("null object argument"); throw new NullPointerException("criteria or restrictions"); } - List ret = new ArrayList<>(); + List ret = new ArrayList<>(); Transaction tx = null; Session session = factory.getCurrentSession(); try { @@ -353,7 +354,7 @@ public abstract class AbstractDbManager implements CrudManager { * @throws DBManagerException if object has previously been saved or an * error occurs while trying to save it to the database */ - protected ArchivableEntity doSave(final ArchivableEntity object) throws DBManagerException { + protected T doSave(final T object) throws DBManagerException { LOGGER.debug("saving object: {}", object); if (object == null) { LOGGER.debug("null object argument"); @@ -366,9 +367,9 @@ public abstract class AbstractDbManager implements CrudManager { LOGGER.debug("saving object in db"); tx = session.beginTransaction(); final Serializable id = session.save(object); - Object o = session.get(object.getClass(), id); + T o = (T) session.get(object.getClass(), id); session.getTransaction().commit(); - return (ArchivableEntity) o; + return o; } catch (Exception e) { final String msg = "unable to save object"; LOGGER.error(msg, e); @@ -387,7 +388,7 @@ public abstract class AbstractDbManager implements CrudManager { * @param object object to update * @throws DBManagerException if unable to update the record */ - protected void doUpdate(final ArchivableEntity object) throws DBManagerException { + protected void doUpdate(final T object) throws DBManagerException { LOGGER.debug("updating object"); if (object == null) { LOGGER.debug("null object argument"); @@ -422,7 +423,7 @@ public abstract class AbstractDbManager implements CrudManager { * @throws DBManagerException if unable to search the database or recreate * the Object */ - protected ArchivableEntity doGet(final String name) throws DBManagerException { + protected T doGet(final String name) throws DBManagerException { LOGGER.debug("getting object: {}", name); if (name == null) { LOGGER.debug("null name argument"); @@ -432,17 +433,17 @@ public abstract class AbstractDbManager implements CrudManager { Transaction tx = null; Session session = factory.getCurrentSession(); try { - LOGGER.debug("retrieving " + entity.toString() + " from db"); + LOGGER.debug("retrieving " + clazz.toString() + " from db"); tx = session.beginTransaction(); CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = builder.createQuery(entity); - Root root = criteriaQuery.from(entity); + CriteriaQuery criteriaQuery = builder.createQuery(clazz); + Root root = criteriaQuery.from(clazz); Predicate recordPredicate = builder.and( builder.equal(root.get("name"), name)); criteriaQuery.select(root).where(recordPredicate); - Query query = session.createQuery(criteriaQuery); - List results = query.getResultList(); - ArchivableEntity ret = null; + Query query = session.createQuery(criteriaQuery); + List results = query.getResultList(); + T ret = null; if (results != null && !results.isEmpty()) { ret = results.get(0); } @@ -471,7 +472,7 @@ public abstract class AbstractDbManager implements CrudManager { * @throws DBManagerException if unable to search the database or recreate * the Object */ - protected ArchivableEntity doGet(final Serializable id) throws DBManagerException { + protected T doGet(final Serializable id) throws DBManagerException { LOGGER.debug("getting object: {}", id); if (id == null) { LOGGER.debug("null id argument"); @@ -482,7 +483,7 @@ public abstract class AbstractDbManager implements CrudManager { try { LOGGER.debug("retrieving object from db"); tx = session.beginTransaction(); - ArchivableEntity ret = (ArchivableEntity) session.get(entity, id); + T ret = (T) session.get(clazz, id); tx.commit(); return ret; } catch (Exception e) { @@ -504,47 +505,45 @@ public abstract class AbstractDbManager implements CrudManager { * managed. This class argument allows the caller to limit which types of * T should be returned. * - * @param clazz class type of Ts to search for (may be null to + * @param entity class type of Ts to search for (may be null to * use Class<T>) * @param additionalRestriction - an added Criterion to use in the query, null for none * @return list of T names * @throws DBManagerException if unable to search the database */ - protected List doGetList(final ArchivableEntity entity, + protected List doGetList(final T entity, final Criterion additionalRestriction) throws DBManagerException { LOGGER.debug("Getting object list"); - ArchivableEntity searchClass = entity; if (entity == null) { LOGGER.debug("entity is null"); - searchClass = this.entity; + return new ArrayList<>(); } - List objects = new ArrayList<>(); + T searchClass = entity; + List objects = new ArrayList<>(); Transaction tx = null; Session session = factory.getCurrentSession(); try { - LOGGER.debug("Retrieving objects from db of class {}", searchClass.getName()); + LOGGER.debug("Retrieving objects from db of class {}", searchClass); tx = session.beginTransaction(); CriteriaBuilder builder = session.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = builder.createQuery(searchClass); - Root root = criteriaQuery.from(criteriaQuery.getResultType()); + CriteriaQuery criteriaQuery = builder.createQuery(searchClass); + Root root = criteriaQuery.from(criteriaQuery.getResultType()); Predicate recordPredicate = builder.and( ); criteriaQuery.select(root).where(recordPredicate).distinct(true); - Query query = session.createQuery(criteriaQuery); - List results = query.getResultList(); + Query query = session.createQuery(criteriaQuery); + List results = query.getResultList(); // Criteria criteria = session.createCriteria(searchClass); - if (additionalRestriction != null) { - criteria.add(additionalRestriction); - } +// if (additionalRestriction != null) { +// criteriaQuery.add(additionalRestriction); +// } // List list = criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list(); for (Object o : results) { - if (o instanceof ArchivableEntity) { - objects.add((ArchivableEntity) o); - } + objects.add((T) o); } tx.commit(); LOGGER.debug("Got {} objects", objects.size()); @@ -580,12 +579,12 @@ public abstract class AbstractDbManager implements CrudManager { * @throws DBManagerException if unable to create the list */ @SuppressWarnings("checkstyle:parameternumber") - protected FilteredRecordsList doGetOrderedList(final ArchivableEntity clazz, + protected FilteredRecordsList doGetOrderedList(final Class clazz, final String columnToOrder, final boolean ascending, final int firstResult, final int maxResults, final String search, final Map searchableColumns, final CriteriaModifier criteriaModifier) throws DBManagerException { LOGGER.debug("Getting object list"); - ArchivableEntity searchClass = clazz; + Class searchClass = clazz; if (clazz == null) { LOGGER.debug("clazz is null"); searchClass = this.clazz; @@ -598,9 +597,9 @@ public abstract class AbstractDbManager implements CrudManager { } //Object that will store query values - FilteredRecordsList aqr = new FilteredRecordsList<>(); + FilteredRecordsList aqr = new FilteredRecordsList<>(); - List objects = new ArrayList<>(); + List objects = new ArrayList<>(); Transaction tx = null; Session session = factory.getCurrentSession(); try { diff --git a/HIRS_Utils/src/main/java/hirs/persist/CrudManager.java b/HIRS_Utils/src/main/java/hirs/persist/CrudManager.java index c8f8989d..bc4435d9 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/CrudManager.java +++ b/HIRS_Utils/src/main/java/hirs/persist/CrudManager.java @@ -1,6 +1,5 @@ package hirs.persist; -import hirs.data.persist.AbstractEntity; import org.hibernate.criterion.Criterion; import java.io.Serializable; @@ -10,7 +9,7 @@ import java.util.List; * Interface defining database CRUD operations (Create, Read, Update, Delete). * @param the object type, T. */ -public interface CrudManager extends OrderedListQuerier { +public interface CrudManager extends OrderedListQuerier { /** * @@ -27,7 +26,7 @@ public interface CrudManager extends OrderedListQuerier< * @throws DBManagerException if object has previously been saved or an * error occurs while trying to save it to the database */ - AbstractEntity save(AbstractEntity object) throws DBManagerException; + T save(T object) throws DBManagerException; /** * Updates an object stored in the database. This updates the database @@ -36,7 +35,7 @@ public interface CrudManager extends OrderedListQuerier< * @param object object to update * @throws DBManagerException if an error occurs while trying to save it to the database */ - void update(AbstractEntity object) throws DBManagerException; + void update(T object) throws DBManagerException; /** * Retrieves the Object from the database. This searches the @@ -48,7 +47,7 @@ public interface CrudManager extends OrderedListQuerier< * @throws DBManagerException if unable to search the database or recreate * the Object */ - AbstractEntity get(String name) throws DBManagerException; + T get(String name) throws DBManagerException; /** @@ -72,11 +71,12 @@ public interface CrudManager extends OrderedListQuerier< * managed. This class argument allows the caller to limit which types of * T should be returned. * + * @param object class type of Ts to search for (may be null to + * use Class) * @return list of T names * @throws DBManagerException if unable to search the database */ - List getList() - throws DBManagerException; + List getList(T object) throws DBManagerException; /** * Returns a list of all Ts of type clazz in the database, with an @@ -86,11 +86,13 @@ public interface CrudManager extends OrderedListQuerier< * managed. This class argument allows the caller to limit which types of * T should be returned. * + * @param object class type of Ts to search for (may be null to + * use Class) * @param additionalRestriction - an added Criterion to use in the query, null for none * @return list of T names * @throws DBManagerException if unable to search the database */ - List getList(Criterion additionalRestriction) + List getList(T object, Criterion additionalRestriction) throws DBManagerException; /** @@ -119,7 +121,7 @@ public interface CrudManager extends OrderedListQuerier< * @return true if successfully found and deleted the object * @throws DBManagerException if unable to delete the object from the database */ - boolean delete(T entity) throws DBManagerException; + boolean delete(Class entity) throws DBManagerException; /** * Deletes all instances of the associated class. diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBCertificateManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBCertificateManager.java index 2b021831..df0ea778 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/DBCertificateManager.java +++ b/HIRS_Utils/src/main/java/hirs/persist/DBCertificateManager.java @@ -1,23 +1,37 @@ package hirs.persist; +import hirs.FilteredRecordsList; import hirs.data.persist.certificate.Certificate; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.hibernate.SessionFactory; +import org.hibernate.StaleObjectStateException; +import org.hibernate.criterion.Criterion; +import org.hibernate.exception.LockAcquisitionException; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.RetryContext; +import org.springframework.retry.backoff.FixedBackOffPolicy; +import org.springframework.retry.policy.SimpleRetryPolicy; +import org.springframework.retry.support.RetryTemplate; -import java.util.Collections; +import java.io.Serializable; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; /** * This class is used to persist and retrieve {@link Certificate}s into and from a database. */ -public class DBCertificateManager extends DBManager +public class DBCertificateManager extends AbstractDbManager implements CertificateManager { private static final Logger LOGGER = LogManager.getLogger(DBCertificateManager.class); + // structure for retrying methods in the database + private RetryTemplate retryTemplate; + /** * Creates a new {@link DBCertificateManager} that uses the default * database. @@ -51,11 +65,11 @@ public class DBCertificateManager extends DBManager @Override @SuppressWarnings("unchecked") public Set get(final CertificateSelector certificateSelector) { - return new HashSet<>( - (List) getWithCriteria( - certificateSelector.getCertificateClass(), - Collections.singleton(certificateSelector.getCriterion()) - ) + return new HashSet<>(0 +// (List) getWithCriteria( +// certificateSelector.getCertificateClass(), +// Collections.singleton(certificateSelector.getCriterion()) +// ) ); } @@ -68,4 +82,164 @@ public class DBCertificateManager extends DBManager public boolean deleteCertificate(final Certificate certificate) { return delete(certificate); } + + /** + * Saves the Object in the database. This creates a new + * database session and saves the object. If the Object had + * previously been saved then a DBManagerException is thrown. + * + * @param object object to save + * @return reference to saved object + * @throws DBManagerException if object has previously been saved or an + * error occurs while trying to save it to the database + */ + @Override + public Certificate save(final Certificate object) throws DBManagerException { + return retryTemplate.execute(new RetryCallback() { + @Override + public Certificate doWithRetry(final RetryContext context) throws DBManagerException { + return doSave(object); + } + }); + } + + /** + * Deletes the object from the database. This removes all of the database + * entries that stored information with regards to the this object. + *

+ * If the object is referenced by any other tables then this will throw a + * DBManagerException. + * + * @param object instance of the object to delete + * @return true if successfully found and deleted the object + * @throws DBManagerException if unable to find the baseline or delete it + * from the database + */ + public final boolean delete(final Certificate object) throws DBManagerException { + return retryTemplate.execute(new RetryCallback() { + @Override + public Boolean doWithRetry(final RetryContext context) throws DBManagerException { + return doDelete(object); + } + }); + } + + /** + * Updates an object stored in the database. This updates the database + * entries to reflect the new values that should be set. + * + * @param object object to update + * @throws DBManagerException if an error occurs while trying to save it to the database + */ + public final void update(final Certificate object) throws DBManagerException { + retryTemplate.execute(new RetryCallback() { + @Override + public Void doWithRetry(final RetryContext context) throws DBManagerException { + doUpdate(object); + return null; + } + }); + } + + @Override + public Certificate get(String name) throws DBManagerException { + return null; + } + + /** + * Retrieves the Object from the database. This searches the + * database for an entry whose name matches name. It then + * reconstructs the Object from the database entry. + * + * @param id id of the object + * @return object if found, otherwise null. + * @throws DBManagerException if unable to search the database or recreate + * the Object + */ + public final Certificate get(final Serializable id) throws DBManagerException { + return retryTemplate.execute(new RetryCallback() { + @Override + public Certificate doWithRetry(final RetryContext context) throws DBManagerException { + return doGet(id); + } + }); + } + + @Override + public List getList(Certificate object) throws DBManagerException { + return null; + } + + @Override + public List getList(Certificate object, Criterion additionalRestriction) throws DBManagerException { + return null; + } + + @Override + public boolean deleteById(Serializable id) throws DBManagerException { + return false; + } + + @Override + public boolean delete(Class entity) throws DBManagerException { + return false; + } + + @Override + public int deleteAll() { + return 0; + } + + @Override + public boolean archive(String name) throws DBManagerException { + return false; + } + + @Override + public FilteredRecordsList getOrderedList( + Class clazz, + String columnToOrder, + boolean ascending, + int firstResult, + int maxResults, + String search, + Map searchableColumns) throws DBManagerException { + return null; + } + + @Override + public FilteredRecordsList getOrderedList( + Class clazz, + String columnToOrder, + boolean ascending, int firstResult, + int maxResults, String search, + Map searchableColumns, CriteriaModifier criteriaModifier) throws DBManagerException { + return null; + } + + /** + * Set the parameters used to retry database transactions. The retry template will + * retry transactions that throw a LockAcquisitionException or StaleObjectStateException. + * @param maxTransactionRetryAttempts the maximum number of database transaction attempts + * @param retryWaitTimeMilliseconds the transaction retry wait time in milliseconds + */ + public final void setRetryTemplate(final int maxTransactionRetryAttempts, + final long retryWaitTimeMilliseconds) { + Map, Boolean> exceptionsToRetry = new HashMap<>(); + exceptionsToRetry.put(LockAcquisitionException.class, true); + exceptionsToRetry.put(StaleObjectStateException.class, true); + + SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy( + maxTransactionRetryAttempts, + exceptionsToRetry, + true, + false + ); + + FixedBackOffPolicy backoffPolicy = new FixedBackOffPolicy(); + backoffPolicy.setBackOffPeriod(retryWaitTimeMilliseconds); + this.retryTemplate = new RetryTemplate(); + this.retryTemplate.setRetryPolicy(retryPolicy); + this.retryTemplate.setBackOffPolicy(backoffPolicy); + } } diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBManager.java index c8606f10..4d85cf43 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/DBManager.java +++ b/HIRS_Utils/src/main/java/hirs/persist/DBManager.java @@ -1,7 +1,6 @@ package hirs.persist; import hirs.FilteredRecordsList; -import hirs.data.persist.AbstractEntity; import hirs.data.persist.ArchivableEntity; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -66,7 +65,7 @@ public class DBManager extends AbstractDbManager { * @param sessionFactory the session factory to use to connect to the database * unfortunately class type of T cannot be determined using only T */ - public DBManager(final AbstractEntity clazz, final SessionFactory sessionFactory) { + public DBManager(final Class clazz, final SessionFactory sessionFactory) { super(clazz, sessionFactory); setRetryTemplate(DEFAULT_MAX_RETRY_ATTEMPTS, DEFAULT_RETRY_WAIT_TIME_MS); } @@ -115,12 +114,12 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if an error is encountered while performing the query or creating * the result objects */ - public final List getWithCriteria(final Collection criteriaCollection) + public final List getWithCriteria(final Collection criteriaCollection) throws DBManagerException { return retryTemplate.execute( - new RetryCallback, DBManagerException>() { + new RetryCallback, DBManagerException>() { @Override - public List doWithRetry(final RetryContext context) + public List doWithRetry(final RetryContext context) throws DBManagerException { return doGetWithCriteria(criteriaCollection); } @@ -138,13 +137,13 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if an error is encountered while performing the query or creating * the result objects */ - protected final List getWithCriteria( - final Class clazzToGet, + protected final List getWithCriteria( + final Class clazzToGet, final Collection criteriaCollection) throws DBManagerException { return retryTemplate.execute( - new RetryCallback, DBManagerException>() { + new RetryCallback, DBManagerException>() { @Override - public List doWithRetry(final RetryContext context) + public List doWithRetry(final RetryContext context) throws DBManagerException { return doGetWithCriteria(clazzToGet, criteriaCollection); } @@ -178,10 +177,10 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if object has previously been saved or an * error occurs while trying to save it to the database */ - public final AbstractEntity save(final AbstractEntity object) throws DBManagerException { - return retryTemplate.execute(new RetryCallback() { + public final T save(final T object) throws DBManagerException { + return retryTemplate.execute(new RetryCallback() { @Override - public AbstractEntity doWithRetry(final RetryContext context) throws DBManagerException { + public T doWithRetry(final RetryContext context) throws DBManagerException { return doSave(object); } }); @@ -194,7 +193,7 @@ public class DBManager extends AbstractDbManager { * @param object object to update * @throws DBManagerException if an error occurs while trying to save it to the database */ - public final void update(final AbstractEntity object) throws DBManagerException { + public final void update(final T object) throws DBManagerException { retryTemplate.execute(new RetryCallback() { @Override public Void doWithRetry(final RetryContext context) throws DBManagerException { @@ -214,10 +213,10 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if unable to search the database or recreate * the Object */ - public final ArchivableEntity get(final String name) throws DBManagerException { - return retryTemplate.execute(new RetryCallback() { + public final T get(final String name) throws DBManagerException { + return retryTemplate.execute(new RetryCallback() { @Override - public ArchivableEntity doWithRetry(final RetryContext context) throws DBManagerException { + public T doWithRetry(final RetryContext context) throws DBManagerException { return doGet(name); } }); @@ -233,10 +232,10 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if unable to search the database or recreate * the Object */ - public final AbstractEntity get(final Serializable id) throws DBManagerException { - return retryTemplate.execute(new RetryCallback() { + public final T get(final Serializable id) throws DBManagerException { + return retryTemplate.execute(new RetryCallback() { @Override - public AbstractEntity doWithRetry(final RetryContext context) throws DBManagerException { + public T doWithRetry(final RetryContext context) throws DBManagerException { return doGet(id); } }); @@ -257,12 +256,13 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if unable to search the database or recreate * the Object */ - public final AbstractEntity getAndLoadLazyFields(final String name, final boolean recurse) + public final T getAndLoadLazyFields(final String name, final boolean recurse) throws DBManagerException { - return retryTemplate.execute(new RetryCallback() { + return retryTemplate.execute(new RetryCallback() { @Override - public AbstractEntity doWithRetry(final RetryContext context) throws DBManagerException { - return doGetAndLoadLazyFields(name, recurse); + public T doWithRetry(final RetryContext context) throws DBManagerException { + return null; +// return doGetAndLoadLazyFields(name, recurse); } }); } @@ -282,9 +282,10 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if unable to search the database or recreate * the Object */ - public final AbstractEntity getAndLoadLazyFields(final Serializable id, final boolean recurse) + public final T getAndLoadLazyFields(final Serializable id, final boolean recurse) throws DBManagerException { - return doGetAndLoadLazyFields(id, recurse); + return null; +// return doGetAndLoadLazyFields(id, recurse); } /** @@ -300,7 +301,7 @@ public class DBManager extends AbstractDbManager { * @return list of T names * @throws DBManagerException if unable to search the database */ - public List getList(final AbstractEntity entity) + public List getList(final T entity) throws DBManagerException { return getList(entity, null); } @@ -320,11 +321,11 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if unable to search the database */ @Override - public List getList(final AbstractEntity entity, final Criterion additionalRestriction) + public List getList(final T entity, final Criterion additionalRestriction) throws DBManagerException { - return retryTemplate.execute(new RetryCallback, DBManagerException>() { + return retryTemplate.execute(new RetryCallback, DBManagerException>() { @Override - public List doWithRetry(final RetryContext context) throws DBManagerException { + public List doWithRetry(final RetryContext context) throws DBManagerException { return doGetList(entity, additionalRestriction); } }); @@ -350,7 +351,7 @@ public class DBManager extends AbstractDbManager { */ @Override public final FilteredRecordsList getOrderedList( - final AbstractEntity clazz, final String columnToOrder, + final Class clazz, final String columnToOrder, final boolean ascending, final int firstResult, final int maxResults, final String search, final Map searchableColumns) @@ -388,17 +389,17 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if unable to create the list */ @SuppressWarnings("checkstyle:parameternumber") - public final FilteredRecordsList getOrderedList( - final AbstractEntity clazz, final String columnToOrder, + public final FilteredRecordsList getOrderedList( + final Class clazz, final String columnToOrder, final boolean ascending, final int firstResult, final int maxResults, final String search, final Map searchableColumns, final CriteriaModifier criteriaModifier) throws DBManagerException { return retryTemplate.execute( - new RetryCallback, DBManagerException>() { + new RetryCallback, DBManagerException>() { @Override - public FilteredRecordsList doWithRetry(final RetryContext context) + public FilteredRecordsList doWithRetry(final RetryContext context) throws DBManagerException { return doGetOrderedList(clazz, columnToOrder, ascending, firstResult, maxResults, @@ -419,7 +420,6 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if unable to find the baseline or delete it * from the database */ - public final boolean delete(final String name) throws DBManagerException { return retryTemplate.execute(new RetryCallback() { @Override @@ -464,7 +464,7 @@ public class DBManager extends AbstractDbManager { * @throws DBManagerException if unable to delete the object from the database */ @Override - public final boolean delete(final AbstractEntity object) throws DBManagerException { + public final boolean delete(final Class object) throws DBManagerException { return retryTemplate.execute(new RetryCallback() { @Override public Boolean doWithRetry(final RetryContext context) throws DBManagerException { @@ -489,7 +489,7 @@ public class DBManager extends AbstractDbManager { return false; } - ArchivableEntity target = get(name); + T target = get(name); if (target == null) { return false; } diff --git a/HIRS_Utils/src/main/java/hirs/persist/DBReferenceDigestManager.java b/HIRS_Utils/src/main/java/hirs/persist/DBReferenceDigestManager.java deleted file mode 100644 index 32b55026..00000000 --- a/HIRS_Utils/src/main/java/hirs/persist/DBReferenceDigestManager.java +++ /dev/null @@ -1,330 +0,0 @@ -package hirs.persist; - -import hirs.data.persist.ReferenceDigestRecord; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.Transaction; -import org.hibernate.query.Query; - -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -/** - * This class is used to persist and retrieve {@link hirs.data.persist.ReferenceDigestRecord}s into - * and from the database. - */ -public class DBReferenceDigestManager extends DBManager - implements ReferenceDigestManager { - - private static final Logger LOGGER = LogManager.getLogger(DBReferenceDigestManager.class); - - /** - * Default Constructor. - * - * @param sessionFactory session factory used to access database connections - */ - public DBReferenceDigestManager(final SessionFactory sessionFactory) { - super(ReferenceDigestRecord.class, sessionFactory); - } - - @Override - public ReferenceDigestRecord saveRecord(final ReferenceDigestRecord referenceDigestRecord) { - LOGGER.debug("saving digest record: {}", referenceDigestRecord); - try { - return save(referenceDigestRecord); - } catch (DBManagerException dbMEx) { - throw new RuntimeException(dbMEx); - } - } - - @Override - public ReferenceDigestRecord getRecord(final ReferenceDigestRecord referenceDigestRecord) { - LOGGER.debug("Getting record for {}", referenceDigestRecord); - if (referenceDigestRecord == null) { - LOGGER.error("null referenceDigestRecord argument"); - return null; - } - - if (referenceDigestRecord.getManufacturer() == null - || referenceDigestRecord.getModel() == null) { - LOGGER.error("No reference to get record from db {}", referenceDigestRecord); - return null; - } - - ReferenceDigestRecord dbRecord = null; - Transaction transaction = null; - Session session = getFactory().getCurrentSession(); - try { - LOGGER.debug("retrieving referenceDigestRecord from db"); - transaction = session.beginTransaction(); - CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReferenceDigestRecord.class); - Root root = criteriaQuery.from(ReferenceDigestRecord.class); - Predicate recordPredicate = criteriaBuilder - .and(criteriaBuilder.equal(root.get("manufacturer"), referenceDigestRecord.getManufacturer()), - criteriaBuilder.equal(root.get("model"), referenceDigestRecord.getModel())); - criteriaQuery.select(root).where(recordPredicate); - Query query = session.createQuery(criteriaQuery); - List results = query.getResultList(); - if (results != null && !results.isEmpty()) { - dbRecord = results.get(0); - } -// dbRecord = (ReferenceDigestRecord) session.createCriteria(ReferenceDigestRecord.class) -// .add(Restrictions.eq("manufacturer", -// referenceDigestRecord.getManufacturer())).add(Restrictions.eq("model", -// referenceDigestRecord.getModel())).uniqueResult(); - transaction.commit(); - } catch (Exception ex) { - final String msg = "unable to retrieve object"; - LOGGER.error(msg, ex); - if (transaction != null) { - LOGGER.debug("rolling back transaction"); - transaction.rollback(); - } - throw new DBManagerException(msg, ex); - } - return dbRecord; - } - - @Override - public ReferenceDigestRecord getRecord(final String manufacturer, final String model) { - LOGGER.debug("Getting record for {} ~ {}", manufacturer, model); - if (manufacturer == null || model == null) { - LOGGER.error("No reference to get record from db {} ~ {}", manufacturer, model); - return null; - } - - ReferenceDigestRecord dbRecord = null; - Transaction tx = null; - Session session = getFactory().getCurrentSession(); - try { - LOGGER.debug("retrieving referenceDigestRecord from db"); - tx = session.beginTransaction(); - CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReferenceDigestRecord.class); - Root root = criteriaQuery.from(ReferenceDigestRecord.class); - Predicate recordPredicate = criteriaBuilder - .and(criteriaBuilder.equal(root.get("manufacturer"), manufacturer), - criteriaBuilder.equal(root.get("model"), model)); - criteriaQuery.select(root).where(recordPredicate); - Query query = session.createQuery(criteriaQuery); - List results = query.getResultList(); - if (results != null && !results.isEmpty()) { - dbRecord = results.get(0); - } -// dbRecord = (ReferenceDigestRecord) session.createCriteria(ReferenceDigestRecord.class) -// .add(Restrictions.eq("manufacturer", -// manufacturer)).add(Restrictions.eq("model", -// model)).uniqueResult(); - tx.commit(); - } catch (Exception ex) { - final String msg = "unable to retrieve object"; - LOGGER.error(msg, ex); - if (tx != null) { - LOGGER.debug("rolling back transaction"); - tx.rollback(); - } - throw new DBManagerException(msg, ex); - } - return dbRecord; - } - - @Override - public List getRecordsByDeviceName(final String deviceName) { - LOGGER.debug("Getting record for {}", deviceName); - if (deviceName == null) { - LOGGER.error("No deviceName to get record from db"); - return null; - } - - List dbRecords = new ArrayList<>(); - try { - List dbTempList = super.getList(ReferenceDigestRecord.class); - for (ReferenceDigestRecord rdr : dbTempList) { - if (rdr.getDeviceName().equals(deviceName)) { - dbRecords.add(rdr); - } - } - } catch (DBManagerException dbMEx) { - throw new RuntimeException(dbMEx); - } - return dbRecords; - } - - @Override - public ReferenceDigestRecord getRecordById(final ReferenceDigestRecord referenceDigestRecord) { - LOGGER.debug("Getting record for {}", referenceDigestRecord); - if (referenceDigestRecord == null) { - LOGGER.error("null referenceDigestRecord argument"); - return null; - } - - if (referenceDigestRecord.getId() == null) { - LOGGER.error("No id to get record from db {}", referenceDigestRecord); - return null; - } - - ReferenceDigestRecord dbRecord = null; - Transaction tx = null; - Session session = getFactory().getCurrentSession(); - try { - LOGGER.debug("retrieving referenceDigestRecord from db"); - tx = session.beginTransaction(); - CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReferenceDigestRecord.class); - Root root = criteriaQuery.from(ReferenceDigestRecord.class); - Predicate recordPredicate = criteriaBuilder - .and(criteriaBuilder.equal(root.get("id"), referenceDigestRecord.getId())); - criteriaQuery.select(root).where(recordPredicate); - Query query = session.createQuery(criteriaQuery); - List results = query.getResultList(); - if (results != null && !results.isEmpty()) { - dbRecord = results.get(0); - } -// dbRecord = (ReferenceDigestRecord) session.createCriteria(ReferenceDigestRecord.class) -// .add(Restrictions.eq("id", -// referenceDigestRecord.getId())).uniqueResult(); - tx.commit(); - } catch (Exception ex) { - final String msg = "unable to retrieve object"; - LOGGER.error(msg, ex); - if (tx != null) { - LOGGER.debug("rolling back transaction"); - tx.rollback(); - } - throw new DBManagerException(msg, ex); - } - return dbRecord; - } - - @Override - public ReferenceDigestRecord getRecordBySupportId(final UUID supportId) { - LOGGER.debug("Getting record for {}", supportId); - if (supportId == null) { - LOGGER.error("null supportId argument"); - return null; - } - - ReferenceDigestRecord dbRecord = null; - Transaction tx = null; - Session session = getFactory().getCurrentSession(); - try { - LOGGER.debug("retrieving referenceDigestRecord from db"); - tx = session.beginTransaction(); - CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); - CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(ReferenceDigestRecord.class); - Root root = criteriaQuery.from(ReferenceDigestRecord.class); - Predicate recordPredicate = criteriaBuilder - .and(criteriaBuilder.equal(root.get("supportRim"), supportId)); - criteriaQuery.select(root).where(recordPredicate); - Query query = session.createQuery(criteriaQuery); - List results = query.getResultList(); - if (results != null && !results.isEmpty()) { - dbRecord = results.get(0); - } -// dbRecord = (ReferenceDigestRecord) session.createCriteria(ReferenceDigestRecord.class) -// .add(Restrictions.eq("supportRim", supportId)).uniqueResult(); - tx.commit(); - } catch (Exception ex) { - final String msg = "unable to retrieve object"; - LOGGER.error(msg, ex); - if (tx != null) { - LOGGER.debug("rolling back transaction"); - tx.rollback(); - } - throw new DBManagerException(msg, ex); - } - return dbRecord; - } - - @Override - public List getRecordsByManufacturer( - final ReferenceDigestRecord referenceDigestRecord) { - LOGGER.debug("Getting records by manufacturer for {}", referenceDigestRecord); - if (referenceDigestRecord == null) { - LOGGER.error("null referenceDigestRecord argument"); - throw new NullPointerException("null referenceDigestRecord"); - } - if (referenceDigestRecord.getManufacturer() == null) { - LOGGER.error("null referenceDigestRecord manufacturer argument"); - throw new NullPointerException("null referenceDigestRecord manufacturer"); - } - - List dbRecords = new ArrayList<>(); - String manufacturer = referenceDigestRecord.getManufacturer(); - try { - List dbTempList = super.getList(ReferenceDigestRecord.class); - for (ReferenceDigestRecord rdr : dbTempList) { - if (rdr.getManufacturer().equals(manufacturer)) { - dbRecords.add(rdr); - } - } - } catch (DBManagerException dbMEx) { - throw new RuntimeException(dbMEx); - } - return dbRecords; - } - - @Override - public List getRecordsByModel( - final ReferenceDigestRecord referenceDigestRecord) { - LOGGER.debug("Getting records by model for {}", referenceDigestRecord); - if (referenceDigestRecord == null) { - LOGGER.error("null referenceDigestRecord argument"); - throw new NullPointerException("null referenceDigestRecord"); - } - if (referenceDigestRecord.getModel() == null) { - LOGGER.error("null referenceDigestRecord model argument"); - throw new NullPointerException("null referenceDigestRecord model"); - } - - List dbRecords = new ArrayList<>(); - String model = referenceDigestRecord.getModel(); - try { - List dbTempList = super.getList(ReferenceDigestRecord.class); - for (ReferenceDigestRecord rdr : dbTempList) { - if (rdr.getModel().equals(model)) { - dbRecords.add(rdr); - } - } - } catch (DBManagerException dbMEx) { - throw new RuntimeException(dbMEx); - } - return dbRecords; - } - - @Override - public void updateRecord(final ReferenceDigestRecord referenceDigestRecord) { - try { - super.update(referenceDigestRecord); - } catch (DBManagerException dbMEx) { - throw new RuntimeException(dbMEx); - } - } - - /** - * Remove a ReferenceDigestRecord from the database. - * - * @param referenceDigestRecord the referenceDigestRecord to delete - * @return true if deletion was successful, false otherwise - */ - @Override - public boolean deleteRecord(final ReferenceDigestRecord referenceDigestRecord) { - boolean result = false; - LOGGER.info(String.format("Deleting reference to %s/%s", - referenceDigestRecord.getManufacturer(), referenceDigestRecord.getModel())); - try { - result = super.delete(referenceDigestRecord); - } catch (DBManagerException dbMEx) { - throw new RuntimeException(dbMEx); - } - return result; - } -} diff --git a/HIRS_Utils/src/main/java/hirs/persist/OrderedListQuerier.java b/HIRS_Utils/src/main/java/hirs/persist/OrderedListQuerier.java index d573e42c..cf028cf1 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/OrderedListQuerier.java +++ b/HIRS_Utils/src/main/java/hirs/persist/OrderedListQuerier.java @@ -30,7 +30,7 @@ public interface OrderedListQuerier { * @throws DBManagerException if unable to create the list */ FilteredRecordsList getOrderedList( - Class clazz, String columnToOrder, + Class clazz, String columnToOrder, boolean ascending, int firstResult, int maxResults, String search, Map searchableColumns) @@ -59,7 +59,7 @@ public interface OrderedListQuerier { */ @SuppressWarnings("checkstyle:parameternumber") FilteredRecordsList getOrderedList( - Class clazz, String columnToOrder, + Class clazz, String columnToOrder, boolean ascending, int firstResult, int maxResults, String search, Map searchableColumns, CriteriaModifier criteriaModifier) diff --git a/HIRS_Utils/src/main/java/hirs/persist/PersistenceConfiguration.java b/HIRS_Utils/src/main/java/hirs/persist/PersistenceConfiguration.java index 59adddf1..783dd4ba 100644 --- a/HIRS_Utils/src/main/java/hirs/persist/PersistenceConfiguration.java +++ b/HIRS_Utils/src/main/java/hirs/persist/PersistenceConfiguration.java @@ -113,7 +113,7 @@ public class PersistenceConfiguration { @Bean public CertificateManager certificateManager() { DBCertificateManager manager = new DBCertificateManager(sessionFactory.getObject()); - setDbManagerRetrySettings(manager); + manager.setRetryTemplate(maxTransactionRetryAttempts, retryWaitTimeMilliseconds); return manager; } @@ -130,19 +130,6 @@ public class PersistenceConfiguration { return manager; } - /** - * Creates a {@link ReferenceDigestManager} ready to use. - * - * @return {@link ReferenceDigestManager} - */ - @Bean - public ReferenceDigestManager referenceDigestManager() { - DBReferenceDigestManager manager - = new DBReferenceDigestManager(sessionFactory.getObject()); - setDbManagerRetrySettings(manager); - return manager; - } - /** * Creates a {@link ReferenceEventManager} ready to use. *