JarUtil: Use common strings for exceptions (same as used in IOUtil)
IOUtil/JarUtil: DEBUG output on stderr not stdout
IOUtil: Add comments to slashify args @ caller; Use validated File @ IOUtil.toURISimple ; DEBUG: stdout -> stderr

Add comments to slashify(..) arguments for better documentation.

+++

Use validated File @ IOUtil.toURISimple(..):
    slashify(file, true, isDirectory)
to
    slashify(new File(path).getAbsolutePath(), true, isDirectory)

i.e. same w/ above variant and determine absolute path via File instance.

+++

DEBUG: stdout -> stderr
JARUtil/IOUtil: Reuse IOUtil.JAR_SCHEME_SEPARATOR (now a char); Add DEBUG to JarUtil.getJarEntry(..)
IOUtil.toURL(..) Apply decodeFromURI(uri.getPath()) if file-scheme; Add IOUtil.decodeURIToFilePath(..) for native usage.

Refine comments, API doc.

toURL(..): Apply space conversion, decodeFromURI(..), on file-scheme path,
           ensuring decoded space.

++

Add decodeURIToFilePath(String uriPath) and decodeURIToFilePath(URI uri)

Both methods shall simplify decoding a file-URI for native platform usage.

Tested in TestIOUtilURIHandling

+++
IOUtil.encodeToURI(): Only use method if required

Only use IOUtil.encodeToURI() if required,
i.e. 'new URI(String)' but not 'new URI(scheme, ...)' since the latter already encodes the path.

TestIOUtilURIHandling.test00BasicCoding() validates above findings.
gluegen: use String.format to emit the error exception in implementation classes

Changes emitted code from:

if (__addr_ == 0) {
    throw new Exception("Method \"" + "$methodName" + "\" not available");

to:

if (__addr == 0) {
    throw new Exception(String.format("Method \"%s\" not available", "$methodName"));

This removes all the redundant error message parts for each error string and only
stores the unique method name in a string.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Bump to 2.1.4 RC
IOUtil: Add convenience compound class 'ClassResources'
gluegen: MethodBinding implements clone() without implenting Clonable

Just directly call the copy-constructor and avoid using clone.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
IntBitfield: Fix ctor: min 1 unit; Fix getBitCount(): Use unsigned right-shift '>>>'
Add TaskBase.flush(Throwsable): To propagate optional reason for flush ; Deprecate flush()
Bug 944 - Platform doesn't parse early-access java-version string properly (JAVA_VERSION_UPDATE)

Fix JAVA_VERSION_UPDATE for early release versions.

Early access java versions are e.g. '1.7.0_60-ea'
where releases simply are named: '1.7.0_60'.
GlueGen: Add 'MethodJavadoc <method-name> comment-line..' configuration element, allowing to add custom API doc lines per method for the JavaMethodBindingEmitter
Bug 945 - GlueGen's IOUtil does not consider file URI's authority when converting to file-path or URI (Windows UNC / share host)

Note: Authority for 'file-scheme' URI's is used on Windows to denote the host of the shared resource -> UNC

Following methods of IOUtil didn't consider the authority for file-scheme URI:
  'URL toURL(final URI uri)'
  'String decodeURIToFilePath(final String uriPath)'
  'String decodeURIIfFilePath(final URI uri)'

Further more, the patterns 'patternSingleFS' and 'patternSingleBS'
converted multiple '\' '/' to one replacement.
However, we should not change the separator count and replace them one-by-one.

TestIOUtilURIHandling:
  - Added shared-file-host 'filehost' test cases to file URIs and plain file path tests.
  - Passed on Unix and Windows.

Added 'make/scripts/test-win32-smb_share.bat'
  - Testing actual windows share usage
  - Passed on Windows
Jar Manifest: Add empty line before EOF (otherwise last line is cut-off - duh), add 'Application-Library-Allowable-Codebase: *'
Platform: Fix API doc of getCPUFamily(), getCPUType() and getABIType()
Refine test/TestMultiAndFatJar: Demoing test class outside of fat and multi jar

Use 'output' folder

- Copy jogl-test.jar and junit.jar to output, to be used in executing (run-*.sh)

Works here ..
Bug 856 - Android: Support dual ABI (x86 i686 *and* ARMv7arm), i.e. pick 'best' ABI

- Use 'os.arch' as a prelim CPUType for MachineDescription

- Always attempt to load a binary and parse it's elf header
  - Linux: self-exe
  - Android: gluegen-rt library
  - Other: java lib

- Always use details (ABI) if ARM

- Android: Check CPU_TYPE and CPU_TYPE2

// FIXME / HACK:
//   We use sCPUType for MachineDescriptionRuntime.getStatic()
//   until we have determined the final CPU_TYPE, etc.
//   MachineDescriptionRuntime gets notified via MachineDescriptionRuntime.notifyPropsInitialized() below.
//
//   We could use Elf Ehdr's machine value to determine the bit-size
//   used for it's offset table!
//   However, 'os.arch' should be a good guess for this task.

Tested manually on
  - Linux x86, x86_64, armhf (raspi)
  - Android intel and arm
  - Windows x86_64
  - OSX x86_64
Jar Manifest: Sealed Entries must follow generic headers - Otherwise subsequent entries are not recognized