package org.guppy4j.config;

import java.net.URL;
import java.nio.file.Path;

/**
 * Type-safe access to standard
 * <a href="http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html">
 * System properties</a>
 */
@SuppressWarnings("UnusedDeclaration")
public interface SystemInfo {

    /**
     * @return File path component separator, e.g. '\' on Windows, '/' on Unix
     * @see "file.separator" system property
     */
    char fileSeparator();

    /**
     * @return Separator for jar and directory paths in classpath and system path,
     * e.g. ';' on Windows, ':' on Unix
     * @see "path.separator" system property
     */
    char pathSeparator();

    /**
     * @return Character sequence that separates lines in text files
     * @see "line.separator" system property
     */
    String lineSeparator();

    /**
     * @return Ordered list of directories and JAR files, see
     * <a href="http://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html">
     * Classpath documentation</a> for details
     * @see "java.class.path" system property
     */
    Iterable<Path> javaClassPath();

    /**
     * @return Installation directory for Java Runtime Environment (JRE),
     * @see "java.home" system property
     */
    Path javaHome();

    /**
     * @return Current working directory of this Java process
     * @see "user.dir" system property
     */
    Path userDir();

    /**
     * @return User home directory
     * @see "user.home" system property
     * @see <a href="http://bugs.java.com/view_bug.do?bug_id=4787931">JDK-4787931</a> bug
     */
    Path userHome();

    /**
     * @return JRE vendor name
     * @see "java.vendor" system property
     */
    String javaVendor();

    /**
     * @return JRE vendor URL
     * @see "java.vendor.url" system property
     */
    URL javaVendorUrl();

    /**
     * @return JRE version number
     * @see "java.version" system property
     */
    String javaVersion();

    /**
     * @return Operating system architecture
     * @see "os.arch" system property
     */
    String osArch();

    /**
     * @return Operating system name
     * @see "os.name" system property
     */
    String osName();

    /**
     * @return Operating system version
     * @see "os.version" system property
     */
    String osVersion();

    /**
     * @return User account name
     * @see "user.name" system property
     */
    String userName();
}

@@ -110,33 +110,33 @@
 dard%0A * %3Ca href=
-%22
+'
 http://docs.orac
@@ -192,17 +192,17 @@
 rop.html
-%22
+'
 %3E%0A * Sys
@@ -393,17 +393,17 @@
  * @see 
-%22
+'
 file.sep
@@ -400,33 +400,33 @@
  'file.separator
-%22
+'
  system property
@@ -604,17 +604,17 @@
  * @see 
-%22
+'
 path.sep
@@ -611,33 +611,33 @@
  'path.separator
-%22
+'
  system property
@@ -761,17 +761,17 @@
  * @see 
-%22
+'
 line.sep
@@ -776,17 +776,17 @@
 eparator
-%22
+'
  system 
@@ -912,25 +912,25 @@
   * %3Ca href=
-%22
+'
 http://docs.
@@ -992,17 +992,17 @@
 ath.html
-%22
+'
 %3E%0A     *
@@ -1050,25 +1050,25 @@
      * @see 
-%22
+'
 java.class.p
@@ -1070,17 +1070,17 @@
 ass.path
-%22
+'
  system 
@@ -1223,25 +1223,25 @@
      * @see 
-%22
+'
 java.home%22 s
@@ -1233,25 +1233,25 @@
 e 'java.home
-%22
+'
  system prop
@@ -1371,17 +1371,17 @@
 see 
-%22
+'
 user.dir
 %22 sy
@@ -1376,17 +1376,17 @@
 user.dir
-%22
+'
  system 
@@ -1474,25 +1474,25 @@
      * @see 
-%22
+'
 user.home%22 s
@@ -1488,17 +1488,17 @@
 ser.home
-%22
+'
  system 
@@ -1526,17 +1526,17 @@
 %3Ca href=
-%22
+'
 http://b
@@ -1574,17 +1574,17 @@
 =4787931
-%22
+'
 %3EJDK-478
@@ -1669,33 +1669,33 @@
 ame%0A     * @see 
-%22
+'
 java.vendor%22 sys
@@ -1689,17 +1689,17 @@
 a.vendor
-%22
+'
  system 
@@ -1787,25 +1787,25 @@
      * @see 
-%22
+'
 java.vendor.
@@ -1807,17 +1807,17 @@
 ndor.url
-%22
+'
  system 
@@ -1913,17 +1913,17 @@
  * @see 
-%22
+'
 java.ver
@@ -1918,33 +1918,33 @@
 ee 'java.version
-%22
+'
  system property
@@ -2048,17 +2048,17 @@
 see 
-%22
+'
 os.arch
-%22
+'
  sys
@@ -2161,17 +2161,17 @@
 see 
-%22
+'
 os.name
-%22
+'
  sys
@@ -2273,17 +2273,17 @@
  * @see 
-%22
+'
 os.versi
@@ -2284,17 +2284,17 @@
 .version
-%22
+'
  system 
@@ -2388,17 +2388,17 @@
  * @see 
-%22
+'
 user.nam
@@ -2398,17 +2398,17 @@
 ser.name
-%22
+'
  system 

Fix javadoc