rt/emul/compact/src/main/java/java/lang/System.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 07 Nov 2013 09:44:51 +0100
changeset 1410 7a021349afec
parent 1362 b37e6e49d9d6
child 1416 a0a31f8f7dc1
permissions -rw-r--r--
Not very useful set and get properties
     1 /**
     2  * Back 2 Browser Bytecode Translator
     3  * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     4  *
     5  * This program is free software: you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation, version 2 of the License.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License
    15  * along with this program. Look for COPYING file in the top folder.
    16  * If not, see http://opensource.org/licenses/GPL-2.0.
    17  */
    18 package java.lang;
    19 
    20 import java.io.ByteArrayInputStream;
    21 import java.io.ByteArrayOutputStream;
    22 import java.io.InputStream;
    23 import java.io.PrintStream;
    24 import java.util.Properties;
    25 import org.apidesign.bck2brwsr.core.JavaScriptBody;
    26 
    27 /** Poor man's re-implementation of most important System methods.
    28  *
    29  * @author Jaroslav Tulach <jtulach@netbeans.org>
    30  */
    31 public class System {
    32     private System() {
    33     }
    34     
    35     public static void arraycopy(Object value, int srcBegin, Object dst, int dstBegin, int count) {
    36         org.apidesign.bck2brwsr.emul.lang.System.arraycopy(value, srcBegin, dst, dstBegin, count);
    37     }
    38     
    39     public static long currentTimeMillis() {
    40         return org.apidesign.bck2brwsr.emul.lang.System.currentTimeMillis();
    41     }
    42     
    43     public static int identityHashCode(Object obj) {
    44         return obj.defaultHashCode();
    45     }
    46 
    47     public static String getProperty(String name) {
    48         if ("os.name".equals(name)) {
    49             return userAgent();
    50         }
    51         return null;
    52     }
    53     
    54     @JavaScriptBody(args = {}, body = "return (typeof navigator !== 'undefined') ? navigator.userAgent : 'unknown';")
    55     private static native String userAgent();
    56     
    57     public static String getProperty(String key, String def) {
    58         return def;
    59     }
    60     
    61     public static Properties getProperties() {
    62         throw new SecurityException();
    63     }
    64     
    65     public static void setProperties(Properties p) {
    66         throw new SecurityException();
    67     }
    68     
    69     /**
    70      * Returns the system-dependent line separator string.  It always
    71      * returns the same value - the initial value of the {@linkplain
    72      * #getProperty(String) system property} {@code line.separator}.
    73      *
    74      * <p>On UNIX systems, it returns {@code "\n"}; on Microsoft
    75      * Windows systems it returns {@code "\r\n"}.
    76      */
    77     public static String lineSeparator() {
    78         return "\n";
    79     }
    80 
    81     @JavaScriptBody(args = { "exitCode" }, body = "window.close();")
    82     public static void exit(int exitCode) {
    83     }
    84     
    85     public final static InputStream in;
    86 
    87     public final static PrintStream out;
    88 
    89     public final static PrintStream err;
    90     
    91     static {
    92         in = new ByteArrayInputStream(new byte[0]);
    93         out = err = new PrintStream(new ByteArrayOutputStream());
    94     }
    95     
    96 }