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

org.eclipse.persistence.Version Maven / Gradle / Ivy

There is a newer version: 5.0.0-B02
Show newest version
/*
 * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0,
 * or the Eclipse Distribution License v. 1.0 which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */

// Contributors:
//  Oracle - initial API and implementation from Oracle TopLink
//     egwin  - Changed buildNumber to buildDate. Added buildRevision,
//              buildType, getBuildDate(), getBuildRevision(), getBuildType(),
//              getVersionString(), printVersionString(), and main()
//     2 July 2018   Radek Felcman - changed source of build info into version.properties generated during build
package org.eclipse.persistence;

import org.eclipse.persistence.logging.AbstractSessionLog;
import org.eclipse.persistence.logging.SessionLog;

import java.io.InputStream;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.Properties;
import java.util.ResourceBundle;

/**
 * This class stores variables for the version and build numbers that are used
 * in printouts and exceptions.
 *
 * @author Eric Gwin
 * @since 1.0,
 */
public final class Version {
    // The current version of EclipseLink.
    // This will be used by all product components and included in exceptions.
    private static String product = "Eclipse Persistence Services";

    /**
     * Version numbers separator.
     */
    private static final char SEPARATOR = '.';
    private static final String VERSION_PROPERTIES_FILE = "version.properties";
    private static final String RESOURCE_BUNDLE = "org.eclipse.persistence.internal.localization.i18n.LoggingLocalizationResource";
    private static final String ERROR_MESSAGE_KEY = "eclipselink_version_error";

    private static Properties versionProperties;

    private Version() {
        //no instance please
    }

    /**
     * Returns version {@link String} containing three part version number
     * and build qualifier.
     *
     * @return Version {@link String}.
     */
    public static String getVersionString() {
        StringBuilder sb = new StringBuilder(getVersion().length() + 1 + getQualifier().length());
        sb.append(getVersion());
        sb.append(SEPARATOR);
        sb.append(getQualifier());
        return sb.toString();
    }

    public static String getProduct() {
        return product;
    }

    public static void setProduct(String ProductName) {
        product = ProductName;
    }

    // A three part version number (major.minor.service)
    public static String getVersion() {
        return getProperty("version");
    }

    //private static final String version = "@VERSION@";
    // A string that describes this build i.e.( vYYYYMMDD-HHMM, etc.)
    public static String getQualifier() {
        return getProperty("qualifier");
    }

    public static String getBuildNumber() {
        return getBuildDate();
    }

    // Should be in the format YYYYMMDD
    public static String getBuildDate() {
        return getProperty("buildDate");
    }

    // Should be in the format HHMM
    public static String getBuildTime() {
        return getProperty("buildTime");
    }

    // revision of source from the repository
    public static String getBuildRevision() {
        return getProperty("buildRevision");
    }

    // Typically SNAPSHOT, Milestone name (M1,M2,etc), or RELEASE
    public static String getBuildType() {
        return getProperty("buildType");
    }

    public static void printVersion() {
        System.out.println(getVersionString());
    }

    public static void main(String[] args) {
        try {
            System.out.println();
            System.out.print(getProduct());
            System.out.println(" (EclipseLink)");
            System.out.print("   Build Version:   ");
            System.out.println(getVersionString());
            System.out.print("   Build Qualifier: ");
            System.out.println(getQualifier());
            System.out.print("   Build Date:      ");
            System.out.println(getBuildDate());
            System.out.print("   Build Time:      ");
            System.out.println(getBuildTime());
            System.out.print("   Build Revision:  ");
            System.out.println(getBuildRevision());
        }catch (Throwable e) {
            AbstractSessionLog.getLog().logThrowable(SessionLog.SEVERE, e);
        }
    }

    private static Properties loadProperties(String propertiesFileName) throws Exception {
        Properties properties = null;
        try (InputStream versionStream = Version.class.getResourceAsStream(propertiesFileName)) {
            properties = new Properties();
            properties.load(versionStream);
        }
        return properties;
    }

    private static String getProperty(String propertyName) {
        try {
            if (versionProperties == null) {
                versionProperties = loadProperties(VERSION_PROPERTIES_FILE);
            }
            return versionProperties.getProperty(propertyName);
        } catch (Exception e) {
            ResourceBundle bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE, Locale.getDefault());
            throw new RuntimeException(MessageFormat.format(bundle.getString(ERROR_MESSAGE_KEY), VERSION_PROPERTIES_FILE));
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy