Modules
=======
IVOACore is organised as a multi-module Gradle project. Each module targets a
specific area of IVOA functionality and can be used independently.
common
------
The ``common`` module provides shared utilities used across the other modules.
**Package:** ``org.javastro.ivoacore.common``
Key classes:
* ``SecurityGuard`` — utility for security-related checks
* ``XMLUtils`` — helpers for working with XML, including XSLT 3.0 support via
Saxon-HE
dal
---
The ``dal`` module implements parts of `DALI
`_ (Data Access Layer Interface) and
`VOSI `_ (VO Support Interfaces).
**Package:** ``org.javastro.ivoacore.vosi``
Key classes:
* ``VOSIResource`` — base interface for VOSI-compliant resources
* ``BaseVOSIResource`` — abstract base implementation of ``VOSIResource``
* ``CapabilityBuilder`` — helper for constructing VOSI capability documents
* ``VOSIProvider`` — provider interface for VOSI services
uws
---
The ``uws`` module implements `UWS
`_ (Universal Worker Service), providing
a framework for managing long-running asynchronous jobs.
**Package:** ``org.javastro.ivoacore.uws``
Key classes and packages:
* ``Job`` — represents a UWS job
* ``JobManager`` — manages the lifecycle of UWS jobs
* ``JobFactory`` / ``BaseJobFactory`` — factory interfaces for creating jobs
* ``JobSpecification`` — describes the parameters and behaviour of a job type
* ``UWSCore`` — core UWS service implementation
* ``UWSControl`` — control interface for UWS operations
* ``ExecutionControl`` — manages execution of individual jobs
* ``description/`` — parameter and job description types
* ``environment/`` — execution environment and policy implementations
* ``persist/`` — job persistence (in-memory implementation provided)
* ``webapi/`` — JAX-RS based REST API implementation
tap
---
The ``tap`` module implements `TAP
`_ (Table Access Protocol) building on
the UWS module.
**Package:** ``org.javastro.ivoacore.tap``
Key classes:
* ``TAPJob`` — a UWS job implementing a TAP query
* ``TAPJobSpecification`` — specification for TAP jobs
* ``schema/SchemaProvider`` — interface for providing TAP schema information
* ``schema/VODMLSchemaProvider`` — schema provider backed by VO-DML models
pgsphere
--------
The ``pgsphere`` module provides Hibernate integration for `PgSphere
`_, the PostgreSQL spherical geometry extension.
**Package:** ``org.javastro.ivoacore.pgsphere``
Key classes:
* ``PgSphereDialect`` — Hibernate dialect with PgSphere type registrations
* ``PgSphereTypes`` — type mappings between PgSphere and Java
* ``types/`` — Java representations of PgSphere geometry types (Point, Circle,
Ellipse, Polygon, Box)
.. note::
The ``pgsphere`` module has its own versioning (currently ``0.9-SNAPSHOT``)
separate from the rest of the project.
Client Libraries
----------------
Client libraries for IVOA protocols are located in the ``clients/`` subdirectory.
clients/registry
~~~~~~~~~~~~~~~~
**Package:** ``org.javastro.ivoacore.client.registry``
A client library for `IVOA Registry
`_ services implementing
the OAI-PMH-based registry interface.
Key classes:
* ``BaseRegistryClient`` — base class for registry clients
* ``BasicOAIClient`` — OAI-PMH client implementation
* ``MinimalRegistryInterface`` — minimal registry query interface
* ``OAIInterface`` — OAI-PMH interface definition
clients/tap
~~~~~~~~~~~
TAP client library (placeholder, under development).
clients/vospace
~~~~~~~~~~~~~~~
`VOSpace `_ client library
(under development).