FileDocCategorySizeDatePackage
Os.javaAPI DocApache Ant 1.7010060Wed Dec 13 06:16:20 GMT 2006org.apache.tools.ant.taskdefs.condition

Os

public class Os extends Object implements Condition
Condition that tests the OS type.
since
Ant 1.4

Fields Summary
private static final String
OS_NAME
private static final String
OS_ARCH
private static final String
OS_VERSION
private static final String
PATH_SEP
private String
family
OS family to look for
private String
name
Name of OS
private String
version
version of OS
private String
arch
OS architecture
public static final String
FAMILY_WINDOWS
OS family that can be tested for. {@value}
public static final String
FAMILY_9X
OS family that can be tested for. {@value}
public static final String
FAMILY_NT
OS family that can be tested for. {@value}
public static final String
FAMILY_OS2
OS family that can be tested for. {@value}
public static final String
FAMILY_NETWARE
OS family that can be tested for. {@value}
public static final String
FAMILY_DOS
OS family that can be tested for. {@value}
public static final String
FAMILY_MAC
OS family that can be tested for. {@value}
public static final String
FAMILY_TANDEM
OS family that can be tested for. {@value}
public static final String
FAMILY_UNIX
OS family that can be tested for. {@value}
public static final String
FAMILY_VMS
OS family that can be tested for. {@value}
public static final String
FAMILY_ZOS
OS family that can be tested for. {@value}
public static final String
FAMILY_OS400
OS family that can be tested for. {@value}
Constructors Summary
public Os()
Default constructor


           
      
        //default
    
public Os(String family)
Constructor that sets the family attribute

param
family a String value

        setFamily(family);
    
Methods Summary
public booleaneval()
Determines if the OS on which Ant is executing matches the type of that set in setFamily.

return
true if the os matches.
throws
BuildException if there is an error.
see
Os#setFamily(String)

        return isOs(family, name, arch, version);
    
public static booleanisArch(java.lang.String arch)
Determines if the OS on which Ant is executing matches the given OS architecture.

param
arch the OS architecture to check for
return
true if the OS matches
since
1.7

        return isOs(null, null, arch, null);
    
public static booleanisFamily(java.lang.String family)
Determines if the OS on which Ant is executing matches the given OS family.

param
family the family to check for
return
true if the OS matches
since
1.5

        return isOs(family, null, null, null);
    
public static booleanisName(java.lang.String name)
Determines if the OS on which Ant is executing matches the given OS name.

param
name the OS name to check for
return
true if the OS matches
since
1.7

        return isOs(null, name, null, null);
    
public static booleanisOs(java.lang.String family, java.lang.String name, java.lang.String arch, java.lang.String version)
Determines if the OS on which Ant is executing matches the given OS family, name, architecture and version

param
family The OS family
param
name The OS name
param
arch The OS architecture
param
version The OS version
return
true if the OS matches
since
1.7

        boolean retValue = false;

        if (family != null || name != null || arch != null
            || version != null) {

            boolean isFamily = true;
            boolean isName = true;
            boolean isArch = true;
            boolean isVersion = true;

            if (family != null) {

                //windows probing logic relies on the word 'windows' in
                //the OS
                boolean isWindows = OS_NAME.indexOf(FAMILY_WINDOWS) > -1;
                boolean is9x = false;
                boolean isNT = false;
                if (isWindows) {
                    //there are only four 9x platforms that we look for
                    is9x = (OS_NAME.indexOf("95") >= 0
                            || OS_NAME.indexOf("98") >= 0
                            || OS_NAME.indexOf("me") >= 0
                            //wince isn't really 9x, but crippled enough to
                            //be a muchness. Ant doesnt run on CE, anyway.
                            || OS_NAME.indexOf("ce") >= 0);
                    isNT = !is9x;
                }
                if (family.equals(FAMILY_WINDOWS)) {
                    isFamily = isWindows;
                } else if (family.equals(FAMILY_9X)) {
                    isFamily = isWindows && is9x;
                } else if (family.equals(FAMILY_NT)) {
                    isFamily = isWindows && isNT;
                } else if (family.equals(FAMILY_OS2)) {
                    isFamily = OS_NAME.indexOf(FAMILY_OS2) > -1;
                } else if (family.equals(FAMILY_NETWARE)) {
                    isFamily = OS_NAME.indexOf(FAMILY_NETWARE) > -1;
                } else if (family.equals(FAMILY_DOS)) {
                    isFamily = PATH_SEP.equals(";") && !isFamily(FAMILY_NETWARE);
                } else if (family.equals(FAMILY_MAC)) {
                    isFamily = OS_NAME.indexOf(FAMILY_MAC) > -1;
                } else if (family.equals(FAMILY_TANDEM)) {
                    isFamily = OS_NAME.indexOf("nonstop_kernel") > -1;
                } else if (family.equals(FAMILY_UNIX)) {
                    isFamily = PATH_SEP.equals(":")
                        && !isFamily(FAMILY_VMS)
                        && (!isFamily(FAMILY_MAC) || OS_NAME.endsWith("x"));
                } else if (family.equals(FAMILY_ZOS)) {
                    isFamily = OS_NAME.indexOf(FAMILY_ZOS) > -1
                        || OS_NAME.indexOf("os/390") > -1;
                } else if (family.equals(FAMILY_OS400)) {
                    isFamily = OS_NAME.indexOf(FAMILY_OS400) > -1;
                } else if (family.equals(FAMILY_VMS)) {
                    isFamily = OS_NAME.indexOf(FAMILY_VMS) > -1;
                } else {
                    throw new BuildException(
                        "Don\'t know how to detect os family \""
                        + family + "\"");
                }
            }
            if (name != null) {
                isName = name.equals(OS_NAME);
            }
            if (arch != null) {
                isArch = arch.equals(OS_ARCH);
            }
            if (version != null) {
                isVersion = version.equals(OS_VERSION);
            }
            retValue = isFamily && isName && isArch && isVersion;
        }
        return retValue;
    
public static booleanisVersion(java.lang.String version)
Determines if the OS on which Ant is executing matches the given OS version.

param
version the OS version to check for
return
true if the OS matches
since
1.7

        return isOs(null, null, null, version);
    
public voidsetArch(java.lang.String arch)
Sets the desired OS architecture

param
arch The OS architecture

        this.arch = arch.toLowerCase(Locale.US);
    
public voidsetFamily(java.lang.String f)
Sets the desired OS family type

param
f The OS family type desired
Possible values:
  • dos
  • mac
  • netware
  • os/2
  • tandem
  • unix
  • windows
  • win9x
  • z/os
  • os/400

        family = f.toLowerCase(Locale.US);
    
public voidsetName(java.lang.String name)
Sets the desired OS name

param
name The OS name

        this.name = name.toLowerCase(Locale.US);
    
public voidsetVersion(java.lang.String version)
Sets the desired OS version

param
version The OS version

        this.version = version.toLowerCase(Locale.US);