| /******************************************************************************* |
| * Copyright (c) 2003 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Common Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.core.runtime.adaptor; |
| |
| import java.util.*; |
| import org.eclipse.osgi.service.environment.Constants; |
| |
| public class EnvironmentInfo implements org.eclipse.osgi.service.environment.EnvironmentInfo { |
| private static EnvironmentInfo singleton; |
| private static String nl; |
| private static String os; |
| private static String ws; |
| private static String arch; |
| static String[] allArgs; |
| static String[] frameworkArgs; |
| static String[] appArgs; |
| |
| // While we recognize the SunOS operating system, we change |
| // this internally to be Solaris. |
| private static final String INTERNAL_OS_SUNOS = "SunOS"; //$NON-NLS-1$ |
| // While we recognize the i386 architecture, we change |
| // this internally to be x86. |
| private static final String INTERNAL_ARCH_I386 = "i386"; //$NON-NLS-1$ |
| |
| private EnvironmentInfo() { |
| super(); |
| setupSystemContext(); |
| } |
| |
| public static EnvironmentInfo getDefault() { |
| if (singleton == null) |
| singleton = new EnvironmentInfo(); |
| return singleton; |
| } |
| |
| public boolean inDevelopmentMode() { |
| return System.getProperty("osgi.dev") != null; |
| } |
| |
| public boolean inDebugMode() { |
| return System.getProperty("osgi.debug") != null; |
| } |
| |
| public String[] getCommandLineArgs() { |
| return allArgs; |
| } |
| |
| public String[] getFrameworkArgs() { |
| return frameworkArgs; |
| } |
| |
| public String[] getNonFrameworkArgs() { |
| return appArgs; |
| } |
| |
| public String getOSArch() { |
| return arch; |
| } |
| |
| public String getNL() { |
| return nl; |
| } |
| |
| public String getOS() { |
| return os; |
| } |
| |
| public String getWS() { |
| return ws; |
| } |
| |
| /** |
| * Initializes the execution context for this run of the platform. The context |
| * includes information about the locale, operating system and window system. |
| * |
| * NOTE: The OS, WS, and ARCH values should never be null. The executable should |
| * be setting these values and therefore this code path is obsolete for Eclipse |
| * when run from the executable. |
| */ |
| private void setupSystemContext() { |
| // if the user didn't set the locale with a command line argument then |
| // use the default. |
| nl = System.getProperty("osgi.nl"); |
| if (nl != null) { |
| StringTokenizer tokenizer = new StringTokenizer(nl, "_"); //$NON-NLS-1$ |
| int segments = tokenizer.countTokens(); |
| try { |
| switch (segments) { |
| case 2: |
| Locale userLocale = new Locale(tokenizer.nextToken(), tokenizer.nextToken()); |
| Locale.setDefault(userLocale); |
| break; |
| case 3: |
| userLocale = new Locale(tokenizer.nextToken(), tokenizer.nextToken(), tokenizer.nextToken()); |
| Locale.setDefault(userLocale); |
| break; |
| } |
| } catch (NoSuchElementException e) { |
| // fall through and use the default |
| } |
| } |
| nl = Locale.getDefault().toString(); |
| System.getProperties().put("osgi.nl", nl); |
| |
| // if the user didn't set the operating system with a command line |
| // argument then use the default. |
| os = System.getProperty("osgi.os"); |
| if (os == null) { |
| String name = System.getProperty("os.name");//$NON-NLS-1$ |
| // check to see if the VM returned "Windows 98" or some other |
| // flavour which should be converted to win32. |
| if (name.regionMatches(true, 0, Constants.OS_WIN32, 0, 3)) |
| os = Constants.OS_WIN32; |
| // EXCEPTION: All mappings of SunOS convert to Solaris |
| if (os == null) |
| os = name.equalsIgnoreCase(INTERNAL_OS_SUNOS) ? Constants.OS_SOLARIS : Constants.OS_UNKNOWN; |
| } |
| System.getProperties().put("osgi.os", os); |
| |
| // if the user didn't set the window system with a command line |
| // argument then use the default. |
| ws = System.getProperty("osgi.ws"); |
| if (ws == null) { |
| // setup default values for known OSes if nothing was specified |
| if (os.equals(Constants.OS_WIN32)) |
| ws = Constants.WS_WIN32; |
| else if (os.equals(Constants.OS_LINUX)) |
| ws = Constants.WS_MOTIF; |
| else if (os.equals(Constants.OS_MACOSX)) |
| ws = Constants.WS_CARBON; |
| else if (os.equals(Constants.OS_HPUX)) |
| ws = Constants.WS_MOTIF; |
| else if (os.equals(Constants.OS_AIX)) |
| ws = Constants.WS_MOTIF; |
| else if (os.equals(Constants.OS_SOLARIS)) |
| ws = Constants.WS_MOTIF; |
| else |
| ws = Constants.WS_UNKNOWN; |
| } |
| System.getProperties().put("osgi.ws", ws); |
| |
| // if the user didn't set the system architecture with a command line |
| // argument then use the default. |
| arch = System.getProperty("osgi.arch"); |
| if (arch == null) { |
| String name = System.getProperty("os.arch");//$NON-NLS-1$ |
| // Map i386 architecture to x86 |
| arch = name.equalsIgnoreCase(INTERNAL_ARCH_I386) ? Constants.ARCH_X86 : name; |
| } |
| System.getProperties().put("osgi.arch", arch); |
| } |
| |
| } |