diff options
Diffstat (limited to 'src/main/java/com/redstoner/misc/VersionHelper.java')
-rw-r--r-- | src/main/java/com/redstoner/misc/VersionHelper.java | 188 |
1 files changed, 100 insertions, 88 deletions
diff --git a/src/main/java/com/redstoner/misc/VersionHelper.java b/src/main/java/com/redstoner/misc/VersionHelper.java index e4a9403..6cfc872 100644 --- a/src/main/java/com/redstoner/misc/VersionHelper.java +++ b/src/main/java/com/redstoner/misc/VersionHelper.java @@ -1,27 +1,30 @@ package com.redstoner.misc; -import java.lang.annotation.Annotation; - import com.redstoner.annotations.Version; import com.redstoner.exceptions.MissingVersionException; -/** This class can be used to compare modules against the loader version or against each other to prevent dependency issues. - * - * @author Pepich */ -@Version(major = 2, minor = 1, revision = 3, compatible = 0) -public final class VersionHelper -{ - private VersionHelper() - {} - - /** Checks two classes versions for compatibility. - * - * @param base The API to compare to. +import java.lang.annotation.Annotation; + +/** + * This class can be used to compare modules against the loader version or against each other to prevent dependency issues. + * + * @author Pepich + */ +@Version (major = 2, minor = 1, revision = 3, compatible = 0) +public final class VersionHelper { + private VersionHelper() {} + + /** + * Checks two classes versions for compatibility. + * + * @param base The API to compare to. * @param module The module to compare. + * * @return true, when the module is up to date with the API, or the API supports outdated modules. - * @throws MissingVersionException When one of the parameters is not annotated with a @Version annotation. */ - public static boolean isCompatible(Class<?> api, Class<?> module) throws MissingVersionException - { + * + * @throws MissingVersionException When one of the parameters is not annotated with a @Version annotation. + */ + public static boolean isCompatible(Class<?> api, Class<?> module) throws MissingVersionException { if (!api.isAnnotationPresent(Version.class)) throw new MissingVersionException("The API is not annotated with a version."); if (!module.isAnnotationPresent(Version.class)) @@ -30,120 +33,129 @@ public final class VersionHelper Version moduleVersion = module.getAnnotation(Version.class); return isCompatible(apiVersion, moduleVersion); } - - /** Checks two classes versions for compatibility. - * - * @param base The API to compare to. + + /** + * Checks two versions for compatibility. + * + * @param base The API version to compare to. + * @param module The module version to compare. + * + * @return true, when the module is up to date with the API, or the API supports outdated modules. + */ + public static boolean isCompatible(Version apiVersion, Version moduleVersion) { + if (apiVersion.major() >= moduleVersion.compatible()) + return true; + if (apiVersion.compatible() == -1) + return false; + if (apiVersion.compatible() <= moduleVersion.major()) + return true; + return false; + } + + /** + * Checks two classes versions for compatibility. + * + * @param base The API to compare to. * @param module The module to compare. + * * @return true, when the module is up to date with the API, or the API supports outdated modules. - * @throws MissingVersionException When one of the parameters is not annotated with a @Version annotation. */ - public static boolean isCompatible(Version apiVersion, Class<?> module) throws MissingVersionException - { + * + * @throws MissingVersionException When one of the parameters is not annotated with a @Version annotation. + */ + public static boolean isCompatible(Version apiVersion, Class<?> module) throws MissingVersionException { if (!module.isAnnotationPresent(Version.class)) throw new MissingVersionException("The module is not annotated with a version."); Version moduleVersion = module.getAnnotation(Version.class); return isCompatible(apiVersion, moduleVersion); } - - /** Checks two classes versions for compatibility. - * - * @param base The API to compare to. + + /** + * Checks two classes versions for compatibility. + * + * @param base The API to compare to. * @param module The module to compare. + * * @return true, when the module is up to date with the API, or the API supports outdated modules. - * @throws MissingVersionException When one of the parameters is not annotated with a @Version annotation. */ - public static boolean isCompatible(Class<?> api, Version moduleVersion) throws MissingVersionException - { + * + * @throws MissingVersionException When one of the parameters is not annotated with a @Version annotation. + */ + public static boolean isCompatible(Class<?> api, Version moduleVersion) throws MissingVersionException { if (!api.isAnnotationPresent(Version.class)) throw new MissingVersionException("The API is not annotated with a version."); Version apiVersion = api.getAnnotation(Version.class); return isCompatible(apiVersion, moduleVersion); } - - /** Checks two versions for compatibility. - * - * @param base The API version to compare to. - * @param module The module version to compare. - * @return true, when the module is up to date with the API, or the API supports outdated modules. */ - public static boolean isCompatible(Version apiVersion, Version moduleVersion) - { - if (apiVersion.major() >= moduleVersion.compatible()) - return true; - if (apiVersion.compatible() == -1) - return false; - if (apiVersion.compatible() <= moduleVersion.major()) - return true; - return false; - } - - /** Returns the version of a given class as a String. - * + + /** + * Returns the version of a given class as a String. + * * @param clazz The class to grab the version number from. + * * @return The version number of the class in format major.minor.revision.compatible. - * @throws MissingVersionException If the class is not annotated with @Version. */ - public static String getVersion(Class<?> clazz) throws MissingVersionException - { + * + * @throws MissingVersionException If the class is not annotated with @Version. + */ + public static String getVersion(Class<?> clazz) throws MissingVersionException { if (!clazz.isAnnotationPresent(Version.class)) throw new MissingVersionException("The given class is not associated with a version."); Version ver = clazz.getAnnotation(Version.class); return getString(ver); } - - /** Returns the String representation of a version. - * + + /** + * Returns the String representation of a version. + * * @param ver The version to be represented. - * @return The String representation. */ - public static String getString(Version ver) - { + * + * @return The String representation. + */ + public static String getString(Version ver) { return ver.major() + "." + ver.minor() + "." + ver.revision() + "." + ver.compatible(); } - - public static Version getVersion(String ver) - { + + public static Version getVersion(String ver) { String[] raw = ver.split("\\."); if (raw.length != 4) return null; return VersionHelper.create(Integer.parseInt(raw[0]), Integer.parseInt(raw[1]), Integer.parseInt(raw[2]), - Integer.parseInt(raw[3])); + Integer.parseInt(raw[3]) + ); } - - /** This method creates a new Version to use for compatibility checks. - * - * @param major The major version - * @param minor The minor version - * @param revision The revision + + /** + * This method creates a new Version to use for compatibility checks. + * + * @param major The major version + * @param minor The minor version + * @param revision The revision * @param compatible The compatibility tag - * @return */ - public static Version create(int major, int minor, int revision, int compatible) - { - return new Version() - { + * + * @return + */ + public static Version create(int major, int minor, int revision, int compatible) { + return new Version() { @Override - public Class<? extends Annotation> annotationType() - { + public Class<? extends Annotation> annotationType() { return Version.class; } - + @Override - public int revision() - { + public int revision() { return revision; } - + @Override - public int minor() - { + public int minor() { return minor; } - + @Override - public int major() - { + public int major() { return major; } - + @Override - public int compatible() - { + public int compatible() { return compatible; } }; |