All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sop.operation.Version Maven / Gradle / Ivy

There is a newer version: 10.0.3
Show newest version
// SPDX-FileCopyrightText: 2021 Paul Schaub 
//
// SPDX-License-Identifier: Apache-2.0

package sop.operation;

public interface Version {

    /**
     * Return the implementations name.
     * e.g. "SOP",
     *
     * @return implementation name
     */
    String getName();

    /**
     * Return the implementations short version string.
     * e.g. "1.0"
     *
     * @return version string
     */
    String getVersion();

    /**
     * Return version information about the used OpenPGP backend.
     * e.g. "Bouncycastle 1.70"
     *
     * @return backend version string
     */
    String getBackendVersion();

    /**
     * Return an extended version string containing multiple lines of version information.
     * The first line MUST match the information produced by {@link #getName()} and {@link #getVersion()}, but the rest of the text
     * has no defined structure.
     * Example:
     * 
     *     "SOP 1.0
     *     Awesome PGP!
     *     Using Bouncycastle 1.70
     *     LibFoo 1.2.2
     *     See https://pgp.example.org/sop/ for more information"
     * 
* * @return extended version string */ String getExtendedVersion(); /** * Return the revision of the SOP specification that this implementation is implementing, for example, *
draft-dkg-openpgp-stateless-cli-06
. * If the implementation targets a specific draft but the implementer knows the implementation is incomplete, * it should prefix the draft title with a "~" (TILDE, U+007E), for example: *
~draft-dkg-openpgp-stateless-cli-06
. * The implementation MAY emit additional text about its relationship to the targeted draft on the lines following * the versioned title. * * @return implemented SOP spec version */ default String getSopSpecVersion() { StringBuilder sb = new StringBuilder(); if (isSopSpecImplementationIncomplete()) { sb.append('~'); } sb.append(getSopSpecRevisionName()); if (getSopSpecImplementationRemarks() != null) { sb.append('\n') .append('\n') .append(getSopSpecImplementationRemarks()); } return sb.toString(); } /** * Return the version number of the latest targeted SOP spec revision. * * @return SOP spec revision number */ int getSopSpecRevisionNumber(); /** * Return the name of the latest targeted revision of the SOP spec. * * @return SOP spec revision string */ default String getSopSpecRevisionName() { return "draft-dkg-openpgp-stateless-cli-" + String.format("%02d", getSopSpecRevisionNumber()); } /** * Return
true
, if this implementation of the SOP spec is known to be incomplete or defective. * * @return true if incomplete, false otherwise */ boolean isSopSpecImplementationIncomplete(); /** * Return free-form text containing remarks about the completeness of the SOP implementation. * If there are no remarks, this method returns
null
. * * @return remarks or null */ String getSopSpecImplementationRemarks(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy