Commit fbb426cb authored by Bryan Cazabonne's avatar Bryan Cazabonne
Browse files

Merge branch 'release-11.0'

parents a930384e 5698c692
Pipeline #1387 passed with stages
in 31 minutes and 40 seconds
......@@ -50,5 +50,5 @@ src/*/resources/*/*/unx*.405 -text
src/*/resources/*/unx*.406 -text
src/*/resources/*/*/unx*.406 -text
src/*/resources/inpop/*.dat -text
src/*/resources/gnss/ntrip/*.dat -text
stages:
- verify
- deploy
- verify
- visualize
- deploy
default:
# Default image
......@@ -12,19 +13,29 @@ default:
- .m2/repository
variables:
# This will supress any download for dependencies and plugins or upload messages which would clutter the console log.
# `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work.
# This will suppress any download for dependencies and plugins or upload
# messages which would clutter the console log. `showDateTime` will show the
# passed time in milliseconds. You need to specify `--batch-mode` to make
# this work.
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
# As of Maven 3.3.0 instead of this you may define these options in `.mvn/maven.config` so the same config is used
# when running from the command line.
# `installAtEnd` and `deployAtEnd` are only effective with recent version of the corresponding plugins.
# As of Maven 3.3.0 instead of this you may define these options in
# `.mvn/maven.config` so the same config is used when running from the
# command line.
# `installAtEnd` and `deployAtEnd` are only effective with recent version of
# the corresponding plugins.
MAVEN_CLI_OPTS: "-s .CI/maven-settings.xml --batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
SONAR_PROJECT_KEY: "${CI_PROJECT_NAMESPACE}:${CI_PROJECT_NAME}"
SONAR_PROJECT_NAME: "${CI_PROJECT_TITLE} (${CI_PROJECT_NAMESPACE}:${CI_PROJECT_NAME})"
verify:
stage: verify
script:
- mvn $MAVEN_CLI_OPTS verify site
- mvn $MAVEN_CLI_OPTS sonar:sonar -Dsonar.login=${SONAR_TOKEN} -Dsonar.branch.name=${CI_COMMIT_REF_NAME}
- mvn $MAVEN_CLI_OPTS checkstyle:check verify site
- test -z "$SONAR_TOKEN" || mvn $MAVEN_CLI_OPTS sonar:sonar
-Dsonar.login=${SONAR_TOKEN}
-Dsonar.branch.name=${CI_COMMIT_REF_NAME}
-Dsonar.projectKey="$SONAR_PROJECT_KEY"
-Dsonar.projectName="$SONAR_PROJECT_NAME"
artifacts:
paths:
- target/*.jar
......@@ -33,9 +44,41 @@ verify:
junit:
- target/surefire-reports/*.xml
# On main branches (develop, release-*, master)
# the produced artifacts are deployed on the Nexus of the project
# (https://packages.orekit.org/)
verify:warning:
stage: verify
script:
- echo "Please, configure SonarQube by following steps described in the contribution guide:"
- echo "https://www.orekit.org/site-orekit-development/contributing.html"
- exit 1
allow_failure: true
rules:
- if: $SONAR_TOKEN == null
# Convert and import in GitLab coverage data.
# The information is then available directly in merge-request view.
# Cf. https://docs.gitlab.com/ee/user/project/merge_requests/test_coverage_visualization.html
coverage-import:
stage: visualize
image: haynes/jacoco2cobertura:1.0.4
script:
# Display total coverage
- "grep -o '<tfoot.*tfoot>' target/site/jacoco/index.html | sed 's:<[^>]*>: :g'"
# Convert report from jacoco to cobertura
- 'python /opt/cover2cover.py target/site/jacoco/jacoco.xml src/main/java > target/site/cobertura.xml'
# Read the <source></source> tag and prepend the path to every filename
# attribute
- 'python /opt/source2filename.py target/site/cobertura.xml'
needs:
- verify
dependencies:
- verify
artifacts:
reports:
cobertura: target/site/cobertura.xml
coverage: '/Total.*?([0-9]{1,3})%/'
# On main branches (develop, release-*, master) the produced artifacts are
# deployed on the Nexus of the project (https://packages.orekit.org/)
deploy:artifacts:
stage: deploy
script:
......@@ -48,31 +91,31 @@ deploy:artifacts:
- /^release-[.0-9]+$/@orekit/orekit
- master@orekit/orekit
deploy:site:
stage: deploy
before_script:
##
## Create the SSH directory and give it the right permissions
##
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
# Create the SSH directory and give it the right permissions
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "$SSH_SECRET_KEY" > ~/.ssh/id_website
- chmod 600 ~/.ssh/id_website
##
## We're using tr to fix line endings which makes ed25519 keys work
## without extra base64 encoding.
## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
##
- echo "$SSH_SECRET_KEY" > ~/.ssh/id_website
- chmod 700 ~/.ssh/id_website
##
## Add known hosts
##
- cp $SSH_KNOWN_HOSTS ~/.ssh/known_hosts
# Add known hosts
- cp $SSH_KNOWN_HOSTS ~/.ssh/known_hosts
script:
- mvn $MAVEN_CLI_OPTS site:deploy
- mvn $MAVEN_CLI_OPTS site:deploy
only:
- master@orekit/orekit
- /^release-[.0-9]+$/@orekit/orekit
- develop@orekit/orekit
- master@orekit/orekit
- /^release-[.0-9]+$/@orekit/orekit
- develop@orekit/orekit
# trigger performance tests after artifacts are deployed to Nexus
# similar to Jenkins' "build after a snapshot dependency is built"
performance:
stage: deploy
needs:
- job: deploy:artifacts
artifacts: false
trigger: evanward1/orekit-performance
only:
- develop@orekit/orekit
pipeline {
agent any
environment {
MAVEN_CLI_OPTS = "-s .CI/maven-settings.xml"
}
tools {
maven 'mvn-default'
jdk 'openjdk-8'
}
options {
timeout(time: 60, unit: 'MINUTES')
}
stages {
stage('Cleaning') {
steps {
sh 'git clean -fdx'
}
}
stage('Build') {
steps {
script {
if ( env.BRANCH_NAME ==~ /^release-[.0-9]+$/ ) {
sh 'mvn verify site'
}
else if ( env.BRANCH_NAME ==~ /^develop$/ ) {
sh 'mvn install site'
}
else {
sh 'mvn verify site'
}
}
}
}
}
post {
always {
archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
junit testResults: '**/target/surefire-reports/*.xml'
jacoco execPattern: 'target/**.exec',
classPattern: '**/classes',
sourcePattern: '**/src/main/java',
exclusionPattern: 'fr/cs/examples/**/*.class',
changeBuildStatus: true,
minimumBranchCoverage: '80', maximumBranchCoverage: '85',
minimumClassCoverage: '95', maximumClassCoverage: '100',
minimumComplexityCoverage: '80', maximumComplexityCoverage: '85',
minimumInstructionCoverage: '85', maximumInstructionCoverage: '90',
minimumLineCoverage: '85', maximumLineCoverage: '90',
minimumMethodCoverage: '90', maximumMethodCoverage: '95'
recordIssues enabledForFailure: true, tools: [mavenConsole(), java(), javaDoc()]
recordIssues enabledForFailure: true, tool: checkStyle()
recordIssues enabledForFailure: true, tool: spotBugs()
}
}
}
OREKIT
Copyright 2002-2020 CS GROUP
Copyright 2002-2021 CS GROUP
This product includes software developed by
CS GROUP (http://www.c-s.fr/)
CS GROUP (https://www.csgroup.eu/)
This product includes software developed by
Bruce R. Bowman (HQ AFSPC, Space Analysis Division)
......
......@@ -8,10 +8,11 @@
in Java. Orekit is designed to be easily used in very different contexts, from
quick studies up to critical operations. As a library, Orekit provides basic
elements (orbits, dates, attitude, frames, ...) and various algorithms to
handle them (conversions, propagations, pointing, ...).
handle them (conversions, propagations, pointing, events detection, orbit determination ...).
[![](https://sonar.orekit.org/api/project_badges/measure?project=org.orekit%3Aorekit&metric=alert_status)](https://sonar.orekit.org/dashboard?id=org.orekit%3Aorekit)
[![](https://sonar.orekit.org/api/project_badges/measure?project=org.orekit%3Aorekit&metric=coverage)](https://sonar.orekit.org/dashboard?id=org.orekit%3Aorekit)
[![](http://img.shields.io/:license-apache-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)
[![](https://sonar.orekit.org/api/project_badges/measure?project=orekit%3Aorekit&metric=alert_status)](https://sonar.orekit.org/dashboard?id=org.orekit%3Aorekit)
[![](https://sonar.orekit.org/api/project_badges/measure?project=orekit%3Aorekit&metric=coverage)](https://sonar.orekit.org/dashboard?id=org.orekit%3Aorekit)
## Download
......
......@@ -2,51 +2,51 @@
<project name="orekit" default="jar" basedir=".">
<property name="project.version" value="10.3.1" />
<property name="src.dir" location="src" />
<property name="main.src.dir" value="${src.dir}/main/java" />
<property name="main.resources.dir" value="${src.dir}/main/resources" />
<property name="test.src.dir" value="${src.dir}/test/java" />
<property name="test.resources.dir" value="${src.dir}/test/resources" />
<property name="build.dir" location="build" />
<property name="main.classes.dir" value="${build.dir}/classes" />
<property name="test.classes.dir" value="${build.dir}/test-classes" />
<property name="javadoc.dir" value="${build.dir}/javadoc" />
<property name="tests.reports" value="${build.dir}/test-reports" />
<property name="lib.dir" location="lib" />
<property name="hipparchus.version" value="1.8" />
<property name="hipparchus.core.jar" value="hipparchus-core-${hipparchus.version}.jar" />
<property name="hipparchus.geometry.jar" value="hipparchus-geometry-${hipparchus.version}.jar" />
<property name="hipparchus.ode.jar" value="hipparchus-ode-${hipparchus.version}.jar" />
<property name="hipparchus.fitting.jar" value="hipparchus-fitting-${hipparchus.version}.jar" />
<property name="hipparchus.optim.jar" value="hipparchus-optim-${hipparchus.version}.jar" />
<property name="hipparchus.filtering.jar" value="hipparchus-filtering-${hipparchus.version}.jar" />
<property name="hipparchus.stat.jar" value="hipparchus-stat-${hipparchus.version}.jar" />
<property name="hipparchus.maven.path" value="org/hipparchus" />
<property name="junit.version" value="4.12" />
<property name="junit.jar" value="junit-${junit.version}.jar" />
<property name="junit.maven.path" value="junit/junit" />
<property name="mockito.version" value="3.6.28" />
<property name="mockito.jar" value="mockito-core-${mockito.version}.jar" />
<property name="mockito.maven.path" value="org/mockito/mockito-core" />
<property name="bytebuddy.version" value="1.9.10" />
<property name="bytebuddy.jar" value="byte-buddy-${bytebuddy.version}.jar" />
<property name="bytebuddy.maven.path" value="net/bytebuddy/byte-buddy" />
<property name="bytebuddy.agent.jar" value="byte-buddy-agent-${bytebuddy.version}.jar" />
<property name="project.version" value="11.0" />
<property name="src.dir" location="src" />
<property name="main.src.dir" value="${src.dir}/main/java" />
<property name="main.resources.dir" value="${src.dir}/main/resources" />
<property name="test.src.dir" value="${src.dir}/test/java" />
<property name="test.resources.dir" value="${src.dir}/test/resources" />
<property name="build.dir" location="build" />
<property name="main.classes.dir" value="${build.dir}/classes" />
<property name="test.classes.dir" value="${build.dir}/test-classes" />
<property name="javadoc.dir" value="${build.dir}/javadoc" />
<property name="tests.reports" value="${build.dir}/test-reports" />
<property name="lib.dir" location="lib" />
<property name="hipparchus.version" value="2.0" />
<property name="hipparchus.core.jar" value="hipparchus-core-${hipparchus.version}.jar" />
<property name="hipparchus.geometry.jar" value="hipparchus-geometry-${hipparchus.version}.jar" />
<property name="hipparchus.ode.jar" value="hipparchus-ode-${hipparchus.version}.jar" />
<property name="hipparchus.fitting.jar" value="hipparchus-fitting-${hipparchus.version}.jar" />
<property name="hipparchus.optim.jar" value="hipparchus-optim-${hipparchus.version}.jar" />
<property name="hipparchus.filtering.jar" value="hipparchus-filtering-${hipparchus.version}.jar" />
<property name="hipparchus.stat.jar" value="hipparchus-stat-${hipparchus.version}.jar" />
<property name="hipparchus.maven.path" value="org/hipparchus" />
<property name="junit.version" value="4.13.2" />
<property name="junit.jar" value="junit-${junit.version}.jar" />
<property name="junit.maven.path" value="junit/junit" />
<property name="mockito.version" value="3.12.4" />
<property name="mockito.jar" value="mockito-core-${mockito.version}.jar" />
<property name="mockito.maven.path" value="org/mockito/mockito-core" />
<property name="bytebuddy.version" value="1.9.10" />
<property name="bytebuddy.jar" value="byte-buddy-${bytebuddy.version}.jar" />
<property name="bytebuddy.maven.path" value="net/bytebuddy/byte-buddy" />
<property name="bytebuddy.agent.jar" value="byte-buddy-agent-${bytebuddy.version}.jar" />
<property name="bytebuddy.agent.maven.path" value="net/bytebuddy/byte-buddy-agent" />
<property name="objenesis.version" value="2.6" />
<property name="objenesis.jar" value="objenesis-${objenesis.version}.jar" />
<property name="objenesis.maven.path" value="org/objenesis/objenesis" />
<property name="hamcrest.version" value="1.3" />
<property name="hamcrest.core.jar" value="hamcrest-core-${hamcrest.version}.jar" />
<property name="hamcrest.maven.path" value="org/hamcrest" />
<property name="maven.repository" value="https://repo1.maven.org/maven2" />
<property name="copyright" value="2002-2020 CS GROUP" />
<property name="objenesis.version" value="2.6" />
<property name="objenesis.jar" value="objenesis-${objenesis.version}.jar" />
<property name="objenesis.maven.path" value="org/objenesis/objenesis" />
<property name="hamcrest.version" value="1.3" />
<property name="hamcrest.core.jar" value="hamcrest-core-${hamcrest.version}.jar" />
<property name="hamcrest.maven.path" value="org/hamcrest" />
<property name="maven.repository" value="https://repo1.maven.org/maven2" />
<property name="copyright" value="2002-2021 CS GROUP" />
<available file="${lib.dir}/${hipparchus.core.jar}" property="libs.present" />
......
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="TreeWalker">
......
......@@ -5,7 +5,7 @@
<groupId>org.orekit</groupId>
<artifactId>orekit</artifactId>
<packaging>jar</packaging>
<version>10.3.1</version>
<version>11.0</version>
<name>ORbit Extrapolation KIT</name>
<url>http://www.orekit.org/</url>
......@@ -21,19 +21,19 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<orekit.spotbugs-maven-plugin.version>4.1.4</orekit.spotbugs-maven-plugin.version>
<orekit.jacoco-maven-plugin.version>0.8.6</orekit.jacoco-maven-plugin.version>
<orekit.maven-bundle-plugin.version>5.1.1</orekit.maven-bundle-plugin.version>
<orekit.jacoco-maven-plugin.version>0.8.7</orekit.jacoco-maven-plugin.version>
<orekit.maven-bundle-plugin.version>5.1.2</orekit.maven-bundle-plugin.version>
<orekit.maven-changes-plugin.version>2.12.1</orekit.maven-changes-plugin.version>
<orekit.maven-checkstyle-plugin.version>3.1.1</orekit.maven-checkstyle-plugin.version>
<orekit.checkstyle.version>8.38</orekit.checkstyle.version>
<orekit.maven-checkstyle-plugin.version>3.1.2</orekit.maven-checkstyle-plugin.version>
<orekit.checkstyle.version>9.0</orekit.checkstyle.version>
<orekit.maven-clean-plugin.version>3.1.0</orekit.maven-clean-plugin.version>
<orekit.maven-compiler-plugin.version>3.8.1</orekit.maven-compiler-plugin.version>
<orekit.maven-javadoc-plugin.version>3.2.0</orekit.maven-javadoc-plugin.version>
<orekit.maven-javadoc-plugin.version>3.3.0</orekit.maven-javadoc-plugin.version>
<orekit.maven-jar-plugin.version>3.2.0</orekit.maven-jar-plugin.version>
<orekit.maven-jxr-plugin.version>3.0.0</orekit.maven-jxr-plugin.version>
<orekit.maven-jxr-plugin.version>3.1.1</orekit.maven-jxr-plugin.version>
<orekit.plantuml-maven-plugin.version>1.2</orekit.plantuml-maven-plugin.version>
<orekit.plantuml.version>1.2020.14</orekit.plantuml.version>
<orekit.maven-project-info-reports-plugin.version>3.1.1</orekit.maven-project-info-reports-plugin.version>
<orekit.plantuml.version>1.2021.10</orekit.plantuml.version>
<orekit.maven-project-info-reports-plugin.version>3.1.2</orekit.maven-project-info-reports-plugin.version>
<orekit.maven-resources-plugin.version>3.2.0</orekit.maven-resources-plugin.version>
<orekit.maven-site-plugin.version>3.9.1</orekit.maven-site-plugin.version>
<orekit.maven-wagon-ssh-plugin.version>3.4.1</orekit.maven-wagon-ssh-plugin.version>
......@@ -42,16 +42,16 @@
https://issues.apache.org/jira/browse/SUREFIRE-1628 -->
<orekit.maven-surefire-plugin.version>2.22.2</orekit.maven-surefire-plugin.version>
<orekit.maven-surefire-report-plugin.version>3.0.0-M5</orekit.maven-surefire-report-plugin.version>
<orekit.mockito-core.version>3.6.28</orekit.mockito-core.version>
<orekit.mockito-core.version>3.12.4</orekit.mockito-core.version>
<orekit.jgit.buildnumber.version>1.2.10</orekit.jgit.buildnumber.version>
<orekit.build-helper-maven-plugin.version>3.2.0</orekit.build-helper-maven-plugin.version>
<orekit.nexus-staging-maven-plugin.version>1.6.8</orekit.nexus-staging-maven-plugin.version>
<orekit.maven-gpg-plugin.version>1.6</orekit.maven-gpg-plugin.version>
<orekit.maven-gpg-plugin.version>3.0.1</orekit.maven-gpg-plugin.version>
<orekit.maven-install-plugin.version>3.0.0-M1</orekit.maven-install-plugin.version>
<orekit.mathjax.config>&lt;script type=&quot;text/x-mathjax-config&quot;&gt;MathJax.Hub.Config({ TeX: { extensions: [&quot;autoload.js&quot;]}});&lt;/script&gt;</orekit.mathjax.config>
<orekit.mathjax.enable>&lt;script type=&quot;text/javascript&quot; src=&quot;https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_CHTML&quot;&gt;&lt;/script&gt;</orekit.mathjax.enable>
<orekit.hipparchus.version>1.8</orekit.hipparchus.version>
<orekit.junit.version>4.12</orekit.junit.version>
<orekit.hipparchus.version>2.0</orekit.hipparchus.version>
<orekit.junit.version>4.13.2</orekit.junit.version>
<orekit.compiler.source>1.8</orekit.compiler.source>
<orekit.compiler.target>1.8</orekit.compiler.target>
<orekit.implementation.build>${git.revision}; ${maven.build.timestamp}</orekit.implementation.build>
......@@ -203,6 +203,9 @@
<contributor>
<name>Lucian B&#259;rbulescu</name>
</contributor>
<contributor>
<name>Julie Bayard</name>
</contributor>
<contributor>
<name>Petre Bazavan</name>
</contributor>
......@@ -236,6 +239,9 @@
<contributor>
<name>Mikael Fillastre</name>
</contributor>
<contributor>
<name>Andrew Goetz</name>
</contributor>
<contributor>
<name>Andrea Fiorentino</name>
</contributor>
......@@ -251,6 +257,9 @@
<contributor>
<name>Fran&#231;ois-Xavier Laffont</name>
</contributor>
<contributor>
<name>Anne-Laure Lugan</name>
</contributor>
<contributor>
<name>Lukas Matt</name>
</contributor>
......@@ -275,6 +284,12 @@
<contributor>
<name>Mathieu Rom&#233;ro</name>
</contributor>
<contributor>
<name>Chiara Rusconi</name>
</contributor>
<contributor>
<name>Mark Rutten</name>
</contributor>
<contributor>
<name>Beatriz Salazar Garc&#237;a</name>
</contributor>
......
......@@ -139,8 +139,8 @@
<Class name="~.*\.TurnAroundRangeTroposphericDelayModifier$"/>
<Method name="modify" />
<Or>
<Local name="masterDjac" />
<Local name="slaveDjac" />
<Local name="primaryDjac" />
<Local name="secondaryDjac" />
</Or>
<Bug pattern="DLS_DEAD_LOCAL_STORE" />
</Match>
......@@ -192,6 +192,10 @@
<Class name="~.*\.SEMParser$"/>
<Bug pattern="CNT_ROUGH_CONSTANT_VALUE" />
</Match>
<Match>
<Class name="~.*\.Units$"/>
<Bug pattern="CNT_ROUGH_CONSTANT_VALUE" />
</Match>
<!-- The following is a false positive from SpotBugs -->
<Match>
......@@ -294,5 +298,15 @@
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" />
</Match>
<!-- The following is intentional.
At the construction, the mapper is not set yet However, if the attitude provider is
changed afterwards, it must be changed in the mapper too
-->
<Match>
<Class name="~.*\.IntegratedEphemeris$"/>
<Method name="setAttitudeProvider" />
<Bug pattern="UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR" />
</Match>
</FindBugsFilter>
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright 2002-2020 CS GROUP
<!-- Copyright 2002-2021 CS GROUP
Licensed to CS GROUP (CS) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
......@@ -20,12 +20,325 @@
<title>Orekit Changes</title>
</properties>
<body>
<release version="11.0" date="2021-09-20"
description="Orekit 11.0 is a major new release.
It includes both new features and bug fixes. New features introduced
in 11.0 are: orbit determination using SGP4/SDP4 models, a sequential
batch least squares estimator using initial covariance and state vector,
writer and parser for all CCSDS Navigation Data Messages in both KVN
and XML formats, version 2 of CCSDS Tracking Data Messages, version 3
of CCSDS Orbit Data Messages, support for Rinex navigation files,
support for IGS clock correction files, support for IGS real time
data including both SSR and RTCM messages, NTrip protocole, eclipses
by Moon in solar radiation pressure force, a new API for analytical
GNSS orbit propagators, removal of propagation modes, possibility
to add several step handlers for the same orbit propagation, a new
event detector for angular separation as seen from the spacecraft.
See the list below for a full description of the changes.">
<action dev="bryan" type="update" issue="766" due-to="Gowtham Sivaraman">
Allowed setting of AttitudeProvider to the BoundedPropagator
generated via propagation.
</action>
<action dev="bryan" type="fix" issue="835">
Fixed format symbols for year, month, day in DateComponents#toString().
</action>
<action dev="thomas" type="fix" issue="668">
Added a new event detector for angular separation as seen from the spacecraft.
</action>
<action dev="maxime" type="fix" issue="829">
Fixed DataSourceTest.testFileName for Windows users.
</action>
<action dev="bryan" type="fix" issue="818">
Use observed solar flux instead of adjusted in DTM2000 model.
</action>
<action dev="evan" type="fix" issue="798">
Allow DSST event detection when propagating backwards.
</action>
<action dev="bryan" type="fix" issue="717" due-to="evan">
Fixed DSST orbit determination when propagating backwards.
</action>
<action dev="evan" type="remove" issue="586">
Remove InertialProvider.EME2000_ALIGNED, Propagator.DEFAULT_LAW. Use
InertialProvider.of(Frame).
</action>
<action dev="evan" type="update" issue="586">
Change default attitude provider to be aligned with propagation frame for all
analytic propagators and GLONASS propagator. Backward incompatible.
</action>
<action dev="evan" type="update" issue="586">
Improve performance of IntertialProvider(Frame)
</action>
<action dev="anne-laure" type="update" issue="797">
Add information if a detector failed during propagation
</action>
<action dev="bryan" type="fix" issue="788" due-to="luc">
Fixed missing call to setMuCreated() in OemParser.
</action>
<action dev="evan" type="update" issue="618">
Fix supportedNames matching in ClasspathCrawler. Backwards incompatible.
</action>
<action dev="bryan" type="fix" issue="828">
Fixed missing file types in SP3Parser.
</action>
<action dev="bryan" type="fix" issue="827">
Fixed time system used in SP3 files.
</action>
<action dev="evan" type="fix" issue="685">
Fix AnalyticalPropagator RESET_STATE when new state is null.
</action>
<action dev="bryan" type="fix" issue="803">
Fixed parsing of clock values in SP3 files.
</action>
<action dev="bryan" type="fix" issue="820">
TLE Jacobians are now calculated in cartesian elements.
</action>
<action dev="evan" type="update" issue="825">
Improve exception messages with two AbsoluteDates by including duration between
them.
</action>
<action dev="evan" type="update" issue="637" due-to="Piotr">
Add trailing "Z" to AbsoluteDate.toString() to indicate UTC.
Backwards incompatible.
</action>
<action dev="evan" type="update" issue="825">
In AbsoluteDate.toString() fallback to TAI when no leap seconds are loaded.
</action>
<action dev="evan" type="update" issue="591">
Fix TimeComponents.toString(): correct ISO 8601 with UTC offset, rounding issues.
Backwards incompatible.
</action>
<action dev="evan" type="update" issue="590">
Fix DateTimeComponents.toString(): correct ISO 8601, leap second, rounding issues.
Backwards incompatible.
</action>
<action dev="evan" type="update" issue="637" due-to="Piotr">
Fix AbsoluteDate.toString(timeZone) and toString(minutesFromUtc) to include the
UTC offset when it is zero.
</action>
<action dev="evan" type="add">
Add DateTimeComponents.toString(...) method with correct rounding for user
specified precision.
</action>
<action dev="bryan" type="update" issue="626">
Used a separate Comparator for sorting integer least square solutions.
</action>
<action dev="bryan" type="update" issue="799">
Used the field-specific value of π.
</action>
<action dev="evan" type="update" issue="830" due-to="skyrex">
Remove step size limitations in analytic propagators. Backwards incompatible.
</action>
<action dev="evan" type="fix">
Fix part of step passed to the step handler twice in analytic propagators with
event handlers.
</action>
<action dev="bryan" type="fix" issue="795" due-to="guylaine">
Fixed output of NRLMSISE00 for altitude at 32.5 km.
</action>
<action dev="luc" type="add" issue="821">
Added support for CCSDS TDM V2.0.
</action>
<action dev="luc" type="add" issue="819">
Allow data filtering upon loading to be used for explicit loading by applications.
</action>
<action dev="julie" type="add" issue="745">
Added sequential batch least squares estimator.
</action>
<action dev="luc" type="add" issue="814" due-to="Valerian">
Fixed additional states handling in ephemeris generated by analytical propagator.
</action>
<action dev="luc" type="add" issue="809">
Dropped master/slave/ephemeris generation propagation modes, replaced by a