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 "The '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 "The 'path.separator' 'system property"
     */
    char pathSeparator();

    /**
     * @return Character sequence that separates lines in text files
     * @see "The '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 "The 'java.class.path' 'system property"
     */
    Iterable<Path> javaClassPath();

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

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

    /**
     * @return User home directory
     * @see "The 'user.home' 'system property""
     * @see "http://bugs.java.com/view_bug.do?bug_id=4787931"
     */
    Path userHome();

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

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

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

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

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

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

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

@@ -110,33 +110,32 @@
 dard%0A * %3Ca href=
-'
 http://docs.orac
@@ -191,17 +191,16 @@
 rop.html
-'
 %3E%0A * Sys
@@ -355,11 +355,9 @@
 .g. 
-'%5C'
+%5C
  on 
@@ -369,11 +369,9 @@
 ws, 
-'/'
+/
  on 
@@ -392,17 +392,16 @@
 ee %22The 
-'
 file.sep
@@ -398,35 +398,33 @@
 e file.separator
-' '
+ 
 system property%22
@@ -567,11 +567,9 @@
 .g. 
-';'
+;
  on 
@@ -581,11 +581,9 @@
 ws, 
-':'
+:
  on 
@@ -604,17 +604,16 @@
 ee %22The 
-'
 path.sep
@@ -610,35 +610,33 @@
 e path.separator
-' '
+ 
 system property%22
@@ -765,17 +765,16 @@
 ee %22The 
-'
 line.sep
@@ -779,19 +779,17 @@
 eparator
-' '
+ 
 system p
@@ -919,17 +919,16 @@
 %3Ca href=
-'
 http://d
@@ -994,17 +994,16 @@
 ath.html
-'
 %3E%0A     *
@@ -1056,25 +1056,24 @@
 * @see %22The 
-'
 java.class.p
@@ -1075,19 +1075,17 @@
 ass.path
-' '
+ 
 system p
@@ -1233,25 +1233,24 @@
 * @see %22The 
-'
 java.home' '
@@ -1242,27 +1242,25 @@
 he java.home
-' '
+ 
 system prope
@@ -1385,17 +1385,16 @@
 The 
-'
 user.dir
 ' 's
@@ -1389,19 +1389,17 @@
 user.dir
-' '
+ 
 system p
@@ -1492,25 +1492,24 @@
 * @see %22The 
-'
 user.home' '
@@ -1505,19 +1505,17 @@
 ser.home
-' '
+ 
 system p
@@ -1664,33 +1664,32 @@
     * @see %22The 
-'
 java.vendor' 'sy
@@ -1683,19 +1683,17 @@
 a.vendor
-' '
+ 
 system p
@@ -1786,25 +1786,24 @@
 * @see %22The 
-'
 java.vendor.
@@ -1805,19 +1805,17 @@
 ndor.url
-' '
+ 
 system p
@@ -1916,17 +1916,16 @@
 ee %22The 
-'
 java.ver
@@ -1920,35 +1920,33 @@
 The java.version
-' '
+ 
 system property%22
@@ -2055,19 +2055,16 @@
 The 
-'
 os.arch
-' '
+ 
 syst
@@ -2172,19 +2172,16 @@
 The 
-'
 os.name
-' '
+ 
 syst
@@ -2288,17 +2288,16 @@
 ee %22The 
-'
 os.versi
@@ -2298,19 +2298,17 @@
 .version
-' '
+ 
 system p
@@ -2407,17 +2407,16 @@
 ee %22The 
-'
 user.nam
@@ -2420,11 +2420,9 @@
 name
-' '
+ 
 syst

Fix javadoc format