All Classes

Class Description
AbstractContextualDeserializer<T>
Implementation of Jackson's JsonDeserializer and ContextualDeserializer which obtains the intended target type of the data to be deserialized through Jackson's ContextualDeserializer.createContextual method.
AbstractContextualPojoDeserializer<POJO extends DbPojo,​DAO extends Dao<POJO>>
Further implementation of AbstractContextualDeserializer that is specific to POJOs, and which also obtains the appropriate Dao for the pojo type provided
AbstractPojoLookupDao<POJO extends DbPojo>
Abstract dao which implements some methods and functionality common to all lookup daos
AcceptAnySSL
Static utility class for constructing a Jersey client that accepts any SSL certificate
Acl
Represents a reusable "object lookup", for an acl object returned from the Nessus API at /scans/<scan-id>
AddHostId
Used by ScanHostResponse in its list of Vulnerabilities, to include the Nessus host_id within each Vulnerability, in order to imitate the Nessus API.
Cpe
Represents a MySQL longtext field from the cpe lookup table, that is indexed by a SHA-512 hash
CvssTemporalVector
Represents a simple string/varchar lookup from the cvss_temporal_vector table
CvssVector
Represents a simple string/varchar lookup from the cvss_vector table
Dao<POJO extends DbPojo>
Standard generic dao.
Dao.SessionTracker
Session tracker used to track the daos and invocations that are using an open session
Database
Provides access to the database Created on 8/31/16.
DbException
The type Db exception.
DbManagerJob
DbManager Job manages the pile of dbTasks which other threads will provide.
DbManagerJob.Child
Jobs which implement DbManager.Child are the jobs which do all of the fetching and pre-processing before providing dbTasks to the db manager.
DbPojo  
EpochTimestamp
Includes two inner classes for deserializing and serializing epoch timestamps between a JSON integer (representing seconds) and java.sql.Timestamp
EpochTimestamp.Deserializer
Deserializes a JSON integer representing seconds into a java.sql.Timestamp
EpochTimestamp.Serializer
Serializes a java.sql.Timestamp into a JSON integer based on epoch seconds
ExtensibleJsonPojo
Abstract base class that implements ExtraJson behavior for most pojos other than string lookups.
ExtraJson
Represents a reusable extra json lookup, for any unexpected json returned from the Nessus API
ExtraJson.Converter
Hibernate converter.
ExtraJson.JsonMap
A wrapper for the map representing the key-value pairs of the ExtraJson.
FilterForPlugin
Quick and dirty utility for filtering all of the JSON outputs in demo-output, to include only the ones with plugin data.
Folder
Represents a folder object returned by the Nessus API in /scans
FriendlyTimestamp
Includes three inner classes for serializing timestamps from different formats into a single "human friendly" timestamp format.
FriendlyTimestamp.JsString
Serializes a standard JavaScript timestamp string into a "human friendly" output format
FriendlyTimestamp.NumericString
Serializes a "numeric string" date/time format into a "human friendly" output format, e.g.
FriendlyTimestamp.Sql
Serializes a java.sql.Timestamp into a "human friendly" output format, e.g.
GeneratedIdPojo
Represents POJOs with extensible JSON and a generated surrogate primary key id
GenericClient
Abstract generic client with methods for fetching resources at URLS, adding HTTP headers, and JSON deserialization
Hash
Represents a "lazy" or "dirty" SHA-512 hash of a string lookup or object lookup.
Hash.Converter
Converts Hash instances back and forth between the database varbinary datatype and the hash fields in the ORM.
HashLookupDao<POJO extends HashLookupPojo<POJO>>
Dao used for object lookups that are indexed by their hash.
HashLookupPojo<POJO extends HashLookupPojo<POJO>>
Interface for "complex lookup" (or "object lookup") pojos, which use a hash of their serialized JSON for indexing and ensuring uniqueness.
HashLookupTemplate<POJO extends HashLookupTemplate<POJO>>
The standard implementation of the HashLookupPojo interface.
HostFqdn
Represents a simple string/varchar lookup from the host_fqdn table
HostIp
Represents a simple string/varchar lookup from the host_ip table
Hostname
Represents a simple string/varchar lookup from the hostname table
HostNetbiosName
Represents a simple string/varchar lookup from the host_netbios_name table
HostOutput  
HostOutputToArray
Serializes a HostOutput instance as an array of HostVulnerabilityOutputs
HostVulnerabilityOutput  
HostVulnerabilityOutput.ScanHostSummary  
HostVulnerabilityOutput.ScanSummary  
HostVulnsJob
Takes a given scanResponse and host from the scanResponse, and fetches the host vulnerability data from the Nessus API about that host.
IndexJob
Fetches the index of scans and folders from the root of the Nessus API.
IndexResponse
The index response represents Nessus API responses at the root of the API
InstancesTracker<K,​I>
Synchronizes and maps unique instances to a unique "key" (typically a String, Number, or Hash).
InstancesTracker.AlreadyFinalized
Thrown when an unexpected state is reached during create lock finalization.
InstancesTracker.CreateLockException
Thrown when a construct-lambda holding a create lock tries to obtain another create lock.
InstancesTracker.InstancesTrackerException
Abstract supertype of all specialized exceptions thrown by InstanceTracker
InstancesTracker.KeyFinalizer<K extends InstancesTracker.KeyFinalizer<K,​I>,​I>
The interface Key finalizer, which may be implemented by custom keys.
InstancesTracker.NullInstanceArgument
Thrown when a null instance is passed to put or putWithLock
InstancesTracker.NullKeyArgument
Thrown when a null key is passed to a construct method
InstancesTracker.TrackerDiscontinuedException
Thrown if the instances tracker was discontinued because it was replaced by another tracker with the same key and argument types and type params
InstancesTracker.UnrecognizedInstance
Thrown when an instance is passed to a method requiring an instance argument that was not constructed under the lock of the given instancesTracker
Job
Represents a Job that will be queued by the JobFactory and run by a WorkerThread.
Job.Stage
The enum Stage, which represents the step in the job process which the jobs is at.
JobFactory
Manages all jobs and job scheduling for the main thread.
KeyValueType<K,​V>
Represents a pair of Types, representing a key and a value
Lambda0<R>
Zero-argument lambda with a returned value
Lambda1<A,​R>
One-argument lambda with a return value
Lambda2<A,​B,​R>
Two-argument lambda with a return value
License
Represents a reusable "object lookup", for a license object returned from the Nessus API at /scans/<scan-id>
Lists
Utility serializers for serializing empty lists as null, and for sorting lists prior to serializing
Lists.EmptyToNullSerializer<T>
Serializer which converts an empty list to a null JSON output
Lists.SortSerializer<T extends java.lang.Comparable>
Serializer which sorts a list of Comparables before serializing it
Lookup
Includes two inner classes for serializing / deserializing StringLookupPojos
Lookup.Deserializer<POJO extends StringLookupPojo<POJO>,​DAO extends Dao<POJO> & StringLookupDao<POJO>>
Converts a JSON string into the appropriate StringLookupPojo instance of the type provided by the AbstractContextualPojoDeserializer super class
Lookup.Serializer<POJO extends StringLookupPojo<POJO>>
Serializes a StringLookupPojo of any type into the JSON string that it represents
LookupException
Exception thrown when there is unexpected behavior during a lookup dao operation
Main
The entry point to the TenaPull application.
MakeMap
Static utility for making a map from an array of Objects.
MapLookupDao<POJO extends MapLookupPojo<POJO>>
Dao used for map lookup pojos, where a DB record can be matched by a search map or the _match function.
MapLookupPojo<POJO extends MapLookupPojo>
A "complex lookup" or "object lookup" altnerative to the HashLookupPojo interface Rather than using a hash of the object, this approach using a search map instead.
MultiType
Includes two inner classes for serializing and deserializing the MultiTypeWrapper, which is capable of representing more than one primitive type (e.g.
MultiType.Deserializer
Deserializes a JSON value of an unknown primitive type into a MultiTypeWrapper
MultiType.Serializer
Serializes a MultiTypeWrapper into the appropriate JSON primitive
MultiTypeWrapper
Used to represent a field which may have multiple JSON primitive data types.
MultiTypeWrapper.Converter
Hibernate converter, for converting between a string for the DB and a MultiTypeWrapper instance
NaturalIdPojo
Represents POJOs with extensible JSON and a natural primary key id provided by the Nessus API
NessusClient
The NessusClient for fetching response from a specific Nessus installation provided in the configurations first parsed by Main
NessusResponse<RES extends NessusResponse<RES>>
Interface representing a response from the Nessus API, with some utility abstract classes that can be implemented by nested objects within a response, in order to link those objects to the parent response entity
NessusResponse.MultiChildTemplate<POJO extends NessusResponse.MultiChildTemplate<POJO,​R>,​R extends NessusResponse>
Represents a nested entity with a Many-to-one relationship with the response
NessusResponse.ResponseChild<POJO extends NessusResponse.ResponseChild<POJO,​R>,​R extends NessusResponse>
The interface Response child, which can be implemented by any nested child entities within the parent response
NessusResponse.SingleChildTemplate<POJO extends NessusResponse.SingleChildTemplate<POJO,​R>,​R extends NessusResponse>
Represents a nested entity with a one-to-one relationship with the response
NessusResponseGenerateTimestamp<RES extends NessusResponseGenerateTimestamp<RES>>
Abstract implementation of the NessusResponse interface, which generates a timestamp at the time of instantiation, because the Nessus API does not provide a timestamp.
NessusResponseWithTimestamp<RES extends NessusResponseWithTimestamp<RES>>
Abstract implementation of the NessusResponse interface, which uses the timestamp provided by the Nessus API
NestedJsonArray<P extends ExtensibleJsonPojo,​C extends DbPojo>
Used to "wrap" an array of objects inside an intermediate JSON object, even though the original list belongs to the parent object.
OperatingSystem
Represents a MySQL longtext field from the operating_system lookup table, that is indexed by a SHA-512 hash
OutputMixIns
A non-instantiable class containing a series of inner classes (also non-instantiable by extension, since they are not *static* inner classes) to be used as ObjectMapper mix-ins when serializing the output.
Plugin
Represents a reusable "object lookup", for the plugin objects (except the scan-specific fields, represented by ScanPlugin) returned from the Nessus API at /scans/<scan-id>
PluginAttributes
Represents a reusable "object lookup", for a plugin_attributes object returned from the Nessus API at /scans/<scan-id>
PluginDescription
Represents a MySQL longtext field from the plugin_description lookup table, that is indexed by a SHA-512 hash
PluginFamily
Represents a simple string/varchar lookup from the plugin_family table
PluginHost
Represents a reusable "object lookup", for an object in the hosts list within each plugin returned from the Nessus API at /scans/<scan-id>
PluginInformation
Represents a reusable "object lookup", for the information object included in the plugin attributes returned from the Nessus API at /scans/<scan-id>
PluginName
Represents a simple string/varchar lookup from the plugin_name table
PluginRefInformation
Represents a reusable "object lookup", for the "ref" object included in the plugin attributes returned from the Nessus API at /scans/<scan-id>
PluginRefValue
Represents a simple string/varchar lookup from the plugin_ref_value table
PluginRiskFactor
Represents a simple string/varchar lookup from the plugin_risk_factor table
PluginRiskInformation
Represents a reusable "object lookup", for the "risk_information" object included in the plugin attributes returned from the Nessus API at /scans/<scan-id>
PluginScriptCopyright
Represents a MySQL longtext field from the plugin_description lookup table, that is indexed by a SHA-512 hash
PluginSeeAlso
Represents a simple string/varchar lookup from the plugin_see_also table
PluginSolution
Represents a MySQL longtext field from the plugin_solution lookup table, that is indexed by a SHA-512 hash
PluginSynopsis
Represents a MySQL longtext field from the plugin_synopsis lookup table, that is indexed by a SHA-512 hash
PluginVulnInformation
Represents a reusable "object lookup", for the vuln_information object included in the plugin attributes returned from the Nessus API at /scans/<scan-id>
PolicyTemplateUuid
Represents a simple string/varchar lookup from the policy_template_uuid table
ReadWriteLock<O,​R>
Simple class for synchronizing concurrent read access and exclusive write access to an object.
ReadWriteLock.ThreadDisruption
Error (NOT Exception) thrown when a disruptable thread would create a deadlock if allowed the request read/write access.
RecursiveMap<K>
A recursive map is a map of maps that point to each other.
RefInformation
A JSON wrapper for the array of PluginRefInformation held by PluginAttributes.
ReformatAll
Quick and dirty utility job for reformatting splunk outputs from the old format into the new format (5-12-2022)
ReformatOutput  
RefValues
A JSON wrapper for the array of PluginRefValues held by PluginRefInformation.
Remediation
Represents a MySQL longtext field from the remediation lookup table, that is indexed by a SHA-512 hash
RemediationDetails
Represents a reusable "object lookup", for an object in the list of remediations, returned from the Nessus API at /scans/<scan-id>
ResetDatabase
A job that resets the database.
ReverseMap<K,​V>
A map which reverses the roles of key and value, holding a set of "keys" as the value for each "value" key.
RoundTimestamp
A static utility for comparing java.sql.Timestamps by rounding to the nearest second.
Scan
Represents a scan object returned by the Nessus API in /scans
ScanHistory
Represents an object from the history array returned by the Nessus API in /scans/<scan-id>
ScanHost
Represents an object from the hosts array returned by the Nessus API in /scans/<scan-id>
ScanHostInfo
Represents the "info" object returned by the Nessus API in /scans/<scan-id>/hosts/<host-id>
ScanHostResponse
Represents a response from the Nessus API at the url path /scans/<scan-id>/hosts/<host-id>, with details about a specific host that was scanned
ScanInfo
Represents the info object returned by the Nessus API in /scans/<scan-id>
ScanJob
Fetches the details of the scan provided in the constructor, and adds it to the Database.
Scanner
Represents a simple string/varchar lookup from the scanner table
ScanOwner
Represents a simple string/varchar lookup from the scan_owner table
ScanPlugin
Represents the scan-specific fields (host_count, and hosts) in the plugin object from the "plugins" array returned by the Nessus API in /scans/<scan-id>.
ScanPolicy
Represents a simple string/varchar lookup from the scan_policy table
ScanPrioritization
Represents a prioritization object returned by the Nessus API in /scans/<scan-id>, which contains the list of plugins.
ScanRemediation
Represents an object from the remediations array returned by the Nessus API in /scans/<scan-id>
ScanRemediationsSummary
Represents the scan-specific fields for the remediations object returned by the Nessus API in /scans/<scan-id>.
ScanResponse
Represents a response from the Nessus API at the url path /scans/<scan-id> with details about a specific scan
ScanResponse.MultiChild<POJO extends ScanResponse.MultiChild<POJO>>
The type Multi child.
ScanResponse.MultiChildLookup<POJO extends ScanResponse.MultiChildLookup<POJO>>
The type Multi child lookup.
ScanResponse.ScanResponseChild<POJO extends ScanResponse.ScanResponseChild<POJO>>
The interface Scan response child.
ScanResponse.SingleChild<POJO extends ScanResponse.SingleChild<POJO>>
The type Single child.
ScanResponse.SingleChildLookup<POJO extends ScanResponse.SingleChildLookup<POJO>>
The type Single child lookup.
ScanScheduleType
Represents a simple string/varchar lookup from the scan_schedule_type table
ScanStatus
Represents a simple string/varchar lookup from the scan_status table
ScanTargets
Represents a MySQL longtext field from the scan_targets lookup table, that is indexed by a SHA-512 hash
ScanType
Represents a simple string/varchar lookup from the scan_type table
ScanUuid
Represents a simple string/varchar lookup from the scan_uuid table
SeverityBase
Represents a reusable "object lookup", for the "severity_base" objects included in the scan info returned from the Nessus API at /scans/<scan-id>
SeverityBaseReducer
Serializer for simplifying a SeverityBase bean into a single text value, used for serializing the output.
SeverityCount
JSON container for the array of SeverityLevelCounts in a ScanHost
SeverityCountsReducer
Serializer for simplifying the list of SeverityLevelCount beans into a series of single text values, used for serializing the output.
SeverityLevelCount
Represents a reusable "object lookup", for the list of objects in the "severitycount" arrays within the host objects returned from the Nessus API at /scans/<scan-id>
SimpleStringLookupDao<POJO extends SimpleStringLookupPojo<POJO>>
Used for simple string lookups, typically of DB data type varchar(255) though may be shorter than 255 in some cases.
SimpleStringLookupPojo<POJO extends SimpleStringLookupPojo<POJO>>
Abstract super class for all simple string lookup entities.
SplunkOutputMapper
Custom Jackson object mapper for serializing the outputs to be ingested by splunk.
StackTracePrinter
A debugging utility only (thus the use of println statements...) for multi-thread concurrency issues.
StringHashLookupDao<POJO extends StringHashLookupPojo<POJO>>
Dao used for string lookups of the longtext db data type, which cannot be indexed by MySQL.
StringHashLookupPojo<POJO extends StringHashLookupPojo<POJO>>
Abstract super class of all StringHashLookups.
StringLookupDao<POJO extends StringLookupPojo>
The interface for String lookup daos, implemented by both SimpleStringLookupDao and StringHashLookupDao (which inherits from HashLookupDao).
StringLookupPojo<POJO extends StringLookupPojo<POJO>>  
SummarySerializer<S extends DbPojo,​D extends DbPojo>
Used when outputting records, for serializing the "summary" wrapper objects inside the HostVulnerabilityOutput entity.
SummarySerializer.Summary<S extends DbPojo,​D extends DbPojo>
The interface that must be implemented by the summary wrappers being serialized
SyncMultiTypeWrapper
An intensive test of multi-threading using MultiTypeWrapper as the test subject.
TestCRUD
Tests Create, Read, Update, Delete operations through the Hibernate ORM, using parameters from provided .json files.
TestDeserializationPersistence<R extends NessusResponse>
Tests the pipeline from deserialization into persistence, and then fetching back out of the database, to ensure the re-constituted entity matches the originally deserialized entity
https://www.guru99.com/junit-parameterized-test.html#:~:text=What%20is%20Parameterized%20Test%20in,their%20inputs%20and%20expected%20results.
TestMultiTypeWrapper
Tests the multi-type wrapper logic
TestNessusClient
Unit test to make sure the Nessus Client works as expected.
TestSplunkOutput
Tests the outputs produced for Splunk, using whatever data is pre-existing in the database
Timezone
Represents a simple string/varchar lookup from the timezone table
Truncater  
Type<T>
Represents a type that may have type parameters, including any arbitrary level of nested type parameters e.g.
Url
Represents a simple string/varchar lookup from the url table
Var<T>
Wraps a value of any type (T).
Var.Bool
Var which wraps a boolean primitive
Var.Byte
Var which wraps a byte primitive
Var.Char
Var which wraps a char primitive
Var.Double
Var which wraps a double primitive
Var.Float
Var which wraps a float primitive
Var.Int
Var which wraps an int primitive
Var.Long
Var which wraps a long primitive
Var.Short
Var which wraps a short primitive
Var.String
Var which wraps a String
Vulnerability
Represents a reusable "object lookup", for the objects in the "vulnerabilities" array returned from the Nessus API at both /scans/<scan-id> AND /scans/<scan-id>/hosts/<host-d>
VulnerabilityScore
Represents a simple string/varchar lookup from the vulnerability_score table
WeakInstancesTracker<K,​I>
A thin wrapper for InstancesTracker, which wraps the key with weak references to the key.
WorkerThread
The worker thread which runs the jobs provided to the main thread.