view netx/net/sourceforge/jnlp/JREDesc.java @ 776:94ff58f33514

Backported warnings cleanups from head itw itself warning cleanup: fixed rawtypes and unchecks, added braces and Override unittests warning cleanup: fixed typechecks, rawtypes, redundant casts... ScreenFinder fixed to work partially also in headless mode kept comaptible with jdk6 After this clean up only "internal proprietary API and may be removed in a future release" warnings remain fro make check. Please keep itw in this way :)
author Jiri Vanek <jvanek@redhat.com>
date Fri, 13 Dec 2013 13:28:55 +0100
parents 9a9e757c21d7
children
line wrap: on
line source

// Copyright (C) 2001-2003 Jon A. Maxwell (JAM)
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

package net.sourceforge.jnlp;

import static net.sourceforge.jnlp.runtime.Translator.R;

import java.net.*;
import java.util.*;

/**
 * The J2SE/Java element.
 *
 * @author <a href="mailto:jmaxwell@users.sourceforge.net">Jon A. Maxwell (JAM)</a> - initial author
 * @version $Revision: 1.5 $
 */
public class JREDesc {

    /** the platform version or the product version if location is not null */
    final private Version version;

    /** the location of a JRE product or null */
    final private URL location;

    /** inital heap size */
    final private String initialHeapSize;

    /** maximum head size */
    final private String maximumHeapSize;

    /** args to pass to the vm */
    final private String vmArgs;

    /** list of ResourceDesc objects */
    final private List<ResourcesDesc> resources;

    /**
     * Create a JRE descriptor.
     *
     * @param version the platform version or the product version
     * if location is not null
     * @param location the location of a JRE product or null
     * @param initialHeapSize inital heap size
     * @param maximumHeapSize maximum head size
     * @param resources list of ResourceDesc objects
     */
    public JREDesc(Version version, URL location,
            String vmArgs, String initialHeapSize,
            String maximumHeapSize, List<ResourcesDesc> resources) throws ParseException {
        this.version = version;
        this.location = location;
        this.vmArgs = vmArgs;
        checkHeapSize(initialHeapSize);
        this.initialHeapSize = initialHeapSize;
        checkHeapSize(maximumHeapSize);
        this.maximumHeapSize = maximumHeapSize;
        this.resources = resources;
    }

    /**
     * Returns the JRE version.  Use isPlatformVersion to
     * determine if this version corresponds to a platform or
     * product version.
     */
    public Version getVersion() {
        return version;
    }

    /**
     * Returns true if the JRE version is a Java platform version
     * (java.specification.version property) or false if it is a
     * product version (java.version property).
     */
    public boolean isPlatformVersion() {
        return getLocation() == null;
    }

    /**
     * Returns the JRE version string.
     */
    public URL getLocation() {
        return location;
    }

    /**
     * Returns the maximum heap size in bytes.
     */
    public String getMaximumHeapSize() {
        return maximumHeapSize;
    }

    /**
     * Returns the initial heap size in bytes.
     */
    public String getInitialHeapSize() {
        return initialHeapSize;
    }

    /**
     * Returns the resources defined for this JRE.
     */
    public List<ResourcesDesc> getResourcesDesc() {
        return resources;
    }

    /**
     * Returns the additional arguments to pass to the Java VM
     * Can be null
     */
    public String getVMArgs() {
        return vmArgs;
    }

    /**
     * Check for valid heap size string
     * @throws ParseException if heapSize is invalid
     */
    static private void checkHeapSize(String heapSize) throws ParseException {
        // need to implement for completeness even though not used in netx
        if (heapSize == null) {
            return;
        }

        boolean lastCharacterIsDigit = true;
        // the last character must be 0-9 or k/K/m/M
        char lastChar = Character.toLowerCase(heapSize.charAt(heapSize.length() - 1));
        if ((lastChar < '0' || lastChar > '9')) {
            lastCharacterIsDigit = false;
            if (lastChar != 'k' && lastChar != 'm') {
                throw new ParseException(R("PBadHeapSize", heapSize));
            }
        }

        int indexOfLastDigit = heapSize.length() - 1;
        if (!lastCharacterIsDigit) {
            indexOfLastDigit = indexOfLastDigit - 1;
        }

        String size = heapSize.substring(0, indexOfLastDigit);
        try {
            // check that the number is a number!
            Integer.valueOf(size);
        } catch (NumberFormatException numberFormat) {
            throw new ParseException(R("PBadHeapSize", heapSize), numberFormat);
        }

    }

}