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

com.adobe.agl.impl.ICUDebug Maven / Gradle / Ivy

There is a newer version: 2024.11.18598.20241113T125352Z-241000
Show newest version
/**
 *******************************************************************************
 * Copyright (C) 2001-2007, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */

/*
 * File: ICUDebug.java
 * ************************************************************************
 *
 * ADOBE CONFIDENTIAL
 * ___________________
 *
 *  Copyright 2012 Adobe Systems Incorporated
 *  All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 **************************************************************************/
package com.adobe.agl.impl;

import com.adobe.agl.util.VersionInfo;

public final class ICUDebug {
    private static String params;
    static {
        try {
            params = System.getProperty("ICUDebug");
        }
        catch (SecurityException e) {
        }
    }
    private static boolean debug = params != null;
    private static boolean help = debug && (params.equals("") || params.indexOf("help") != -1);

    static {
        if (debug) {
            System.out.println("\nICUDebug=" + params);
        }
    }

    public static final String javaVersionString = System.getProperty("java.version");
    public static final boolean isJDK14OrHigher;
    public static final VersionInfo javaVersion;

    public static VersionInfo getInstanceLenient(String s) {
        // clean string
        // preserve only digits, separated by single '.' 
        // ignore over 4 digit sequences
        // does not test < 255, very odd...

        char[] chars = s.toCharArray();
        int r = 0, w = 0, count = 0;
        boolean numeric = false; // ignore leading non-numerics
        while (r < chars.length) {
            char c = chars[r++];
            if (c < '0' || c > '9') {
                if (numeric) {
                    if (count == 3) {
                        // only four digit strings allowed
                        break;
                    }
                    numeric = false;
                    chars[w++] = '.';
                    ++count;
                }
            } else {
                numeric = true;
                chars[w++] = c;
            }
        }
        while (w > 0 && chars[w-1] == '.') {
            --w;
        }
    
        String vs = new String(chars, 0, w);

        return VersionInfo.getInstance(vs);
    }

    static {
        javaVersion = getInstanceLenient(javaVersionString);

        VersionInfo java14Version = VersionInfo.getInstance("1.4.0");

        isJDK14OrHigher = javaVersion.compareTo(java14Version) >= 0;
    }

    public static boolean enabled() {
        return debug;
    }

    public static boolean enabled(String arg) {
        if (debug) {
            boolean result = params.indexOf(arg) != -1;
            if (help) System.out.println("\nICUDebug.enabled(" + arg + ") = " + result);
            return result;
        }
        return false;
    }

    public static String value(String arg) {
        String result = "false";
        if (debug) {
            int index = params.indexOf(arg);
            if (index != -1) {
                index += arg.length();
                if (params.length() > index && params.charAt(index) == '=') {
                    index += 1;
                    int limit = params.indexOf(",", index);
                    result = params.substring(index, limit == -1 ? params.length() : limit);
                } else {
                    result = "true";
                }
            }

            if (help) System.out.println("\nICUDebug.value(" + arg + ") = " + result);
        }
        return result;
    }

/*    static public void main(String[] args) {
        // test
        String[] tests = {
            "1.3.0",
            "1.3.0_02",
            "1.3.1ea",
            "1.4.1b43",
            "___41___5",
            "x1.4.51xx89ea.7f"
        };
        for (int i = 0; i < tests.length; ++i) {
            System.out.println(tests[i] + " => " + getInstanceLenient(tests[i]));
        }
    }*/
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy