A less technical description can be found in the User Manual.
1. Configuration load
- FITS_HOME environment variable is set up
- Fits.xml configuration file is loaded
- Tool wrappers are created
- Output consolidator is configured.
2. For each tool wrapper:
-
Each tool is executed on the input file creating a ToolOutput object containing a fits xml document
-
For each tool a custom classloader is used to isolate this tool and its dependencies. This is especially important for Java-based tools where 3rd-party classes are invoked which might be different versions of the same classes used by other tools, each of which might have different public API's. For a technical implementation, see the Java class
edu.harvard.hul.ois.fits.tools.utils.ParentLastClassLoader in GitHub. - In addtion, each tool is started within its own thread.
- If necessary, XSLT is applied to tool output to create the FITS-compatible xml
- FITS mapping file is applied (xml/fits_xml_map.xml)
-
For each tool a custom classloader is used to isolate this tool and its dependencies. This is especially important for Java-based tools where 3rd-party classes are invoked which might be different versions of the same classes used by other tools, each of which might have different public API's. For a technical implementation, see the Java class
3. Consolidation
-
Format identities are consolidated
- the format tree (xml/fits_format_tree.xml) is consulted
- Output from tools unable to identify the file or those who identified a less specific type are thrown out
- Fileinfo sections are merged
- Filestatus sections are merged
- Metadata sections are merged
4. Output
- The consolidated fits xml file is written to a file or the console
- If using the API a FitsOutput object is returned