| /******************************************************************************* |
| * Copyright (c) 1998, 2014 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 v1.0 and Eclipse Distribution License v. 1.0 |
| * which accompanies this distribution. |
| * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
| * and the Eclipse Distribution License is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * Contributors: |
| * Oracle - initial API and implementation from Oracle TopLink |
| * egwin - Changed buildNumber to buildDate. Added buildRevision, |
| * buildType, getBuildDate(), getBuildRevision(), getBuildType(), |
| * getVersionString(), printVersionString(), and main() |
| ******************************************************************************/ |
| package org.eclipse.persistence; |
| |
| import org.eclipse.persistence.internal.helper.JavaSEPlatform; |
| |
| /** |
| * This class stores variables for the version and build numbers that are used |
| * in printouts and exceptions. |
| * |
| * @author Eric Gwin |
| * @since 1.0, |
| */ |
| public class Version { |
| // The current copyright info for EclipseLink. |
| private static final String CopyrightString = "Copyright (c) 1998, 2014 Oracle. All rights reserved."; |
| |
| // The current version of EclipseLink. |
| // This will be used by all product components and included in exceptions. |
| private static String product = "Eclipse Persistence Services"; |
| // A three part version number (major.minor.service) |
| private static final String version = "@VERSION@"; |
| // A string that describes this build i.e.( vYYYYMMDD-HHMM, etc.) |
| private static final String qualifier = "@QUALIFIER@"; |
| // Should be in the format YYYYMMDD |
| private static final String buildDate = "@BUILD_DATE@"; |
| // Should be in the format HHMM |
| private static final String buildTime = "@BUILD_TIME@"; |
| // revision of source from the repository |
| private static final String buildRevision = "@BUILD_REVISION@"; |
| // Typically SNAPSHOT, Milestone name (M1,M2,etc), or RELEASE |
| private static final String buildType = "@BUILD_TYPE@"; |
| |
| /** Version numbers separator. */ |
| private static final char SEPARATOR = '.'; |
| |
| // This is replaced by JavaSEPlatform. It's here just because of backward compatibility. |
| /** |
| * Keep track of JDK version in order to make some decisions about data structures. |
| * @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. |
| */ |
| public static final int JDK_VERSION_NOT_SET = 0; |
| /** @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. */ |
| public static final int JDK_1_5 = 1; |
| /** @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. */ |
| public static final int JDK_1_6 = 2; |
| /** @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. */ |
| public static final int JDK_1_7 = 3; |
| /** @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. */ |
| public static final int JDK_1_8 = 4; |
| /** @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. */ |
| public static final int JDK_1_9 = 5; |
| /** @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. */ |
| public static int JDK_VERSION = JDK_VERSION_NOT_SET; |
| |
| /** |
| * Returns version {@link String} containing three part version number |
| * and build qualifier. |
| * @return Version {@link String}. |
| */ |
| public static String getVersionString ( ) { |
| StringBuilder sb = new StringBuilder( |
| version.length() + 1 + qualifier.length()); |
| sb.append(version); |
| sb.append(SEPARATOR); |
| sb.append(qualifier); |
| return sb.toString(); |
| } |
| |
| public static String getProduct() { |
| return product; |
| } |
| |
| public static void setProduct(String ProductName) { |
| product = ProductName; |
| } |
| |
| public static String getVersion() { |
| return version; |
| } |
| |
| public static String getQualifier() { |
| return qualifier; |
| } |
| |
| public static String getBuildNumber() { |
| return getBuildDate(); |
| } |
| |
| public static String getBuildDate() { |
| return buildDate; |
| } |
| |
| public static String getBuildTime() { |
| return buildTime; |
| } |
| |
| public static String getBuildRevision() { |
| return buildRevision; |
| } |
| |
| public static String getBuildType() { |
| return buildType; |
| } |
| |
| /** |
| * INTERNAL: |
| * Return the JDK version we are using. |
| * @deprecated Use {@code JavaSEPlatform.CURRENT} instead. |
| * Will be removed in 2.7. |
| */ |
| public static int getJDKVersion() { |
| switch(JavaSEPlatform.CURRENT) { |
| case v1_7: |
| JDK_VERSION = JDK_1_7; |
| break; |
| case v1_8: |
| JDK_VERSION = JDK_1_8; |
| break; |
| case v1_9: |
| JDK_VERSION = JDK_1_9; |
| break; |
| default: |
| throw new IllegalStateException("Running on unsupported Java SE: " |
| + JavaSEPlatform.CURRENT.toString()); |
| } |
| return JDK_VERSION; |
| } |
| |
| /** |
| * Set 1.5 as current Java SE version. |
| * @throws UnsupportedOperationException when invoked because Java SE 1.5 |
| * is not supported by current EclipseLink. |
| * @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. |
| */ |
| public static void useJDK15() { |
| throw new UnsupportedOperationException( |
| "Java SE 1.5 is not supported by current EclipseLink."); |
| } |
| |
| /** |
| * Set 1.6 as current Java SE version. |
| * @throws UnsupportedOperationException when invoked because Java SE 1.6 |
| * is not supported by current EclipseLink. |
| * @deprecated Use {@link JavaSEPlatform} instead. Will be removed in 2.7. |
| */ |
| public static void useJDK16() { |
| throw new UnsupportedOperationException( |
| "Java SE 1.6 is not supported by current EclipseLink."); |
| } |
| |
| // Public API wrapper, use JavaSEPlatform.is(JavaSEPlatform.v1_5) |
| // internally. |
| /** |
| * Check whether we are running on Java SE 1.5. |
| * This will always return {@code false} because Java SE 1.5 is not |
| * supported by current EclipseLink. |
| * @return Value of {@code true} when we do and value of {@code false} |
| * when we do not run on Java SE 1.5. |
| */ |
| public static boolean isJDK15() { |
| return JavaSEPlatform.is(JavaSEPlatform.v1_5); |
| } |
| |
| // Public API wrapper, use JavaSEPlatform.is(JavaSEPlatform.v1_6) |
| // internally. |
| /** |
| * Check whether we are running on Java SE 1.6. |
| * This will always return {@code false} because Java SE 1.6 is not |
| * supported by current EclipseLink. |
| * @return Value of {@code true} when we do and value of {@code false} |
| * when we do not run on Java SE 1.6. |
| */ |
| public static boolean isJDK16() { |
| return JavaSEPlatform.is(JavaSEPlatform.v1_6); |
| } |
| |
| // Public API wrapper, use JavaSEPlatform.is(JavaSEPlatform.v1_7) |
| // internally. |
| /** |
| * Check whether we are running on Java SE 1.7. |
| * @return Value of {@code true} when we do and value of {@code false} |
| * when we do not run on Java SE 1.7. |
| */ |
| public static boolean isJDK17() { |
| return JavaSEPlatform.is(JavaSEPlatform.v1_7); |
| } |
| |
| // Public API wrapper, use JavaSEPlatform.is(JavaSEPlatform.v1_8) |
| // internally. |
| /** |
| * Check whether we are running on Java SE 1.8. |
| * @return Value of {@code true} when we do and value of {@code false} |
| * when we do not run on Java SE 1.8. |
| */ |
| public static boolean isJDK18() { |
| return JavaSEPlatform.is(JavaSEPlatform.v1_8); |
| } |
| |
| // Public API wrapper, use JavaSEPlatform.is(JavaSEPlatform.v1_9) |
| // internally. |
| /** |
| * Check whether we are running on Java SE 1.9. |
| * @return Value of {@code true} when we do and value of {@code false} |
| * when we do not run on Java SE 1.9. |
| */ |
| public static boolean isJDK19() { |
| return JavaSEPlatform.is(JavaSEPlatform.v1_9); |
| } |
| |
| public static void printVersion ( ) { |
| System.out.println( getVersionString() ); |
| } |
| |
| public static void main ( String[] args ) { |
| System.out.println( |
| "\n" + getProduct() + " (EclipseLink)" |
| + "\n Build Version: " + getVersionString() |
| + "\n Build Qualifier: " + getQualifier() |
| + "\n Build Date: " + getBuildDate() |
| + "\n Build Time: " + getBuildTime() |
| + "\n SVN Revision: " + getBuildRevision() |
| ); |
| } |
| } |