Enhance VersionNumber*: Use only RegExp and cache default (no wrapped whitespace tokenizer); String match: Store end-of-match and flag defined components.
Fix Bug 683 part1: IOUtil, JarUtil, TempJarCache, .. uses URI instead of URL to remove DNS Lookups etc ..
Bug 747: AndroidVersion: HashMap -> IntObjectHashMap
Fix Bug 683 part1b: Add IOUtil.getRelativeOf(URL, ..), wrapper for URI for convenience (JOGL ShaderCode) and bwd. compatibility
Bug 752: Review Code Vulnerabilities (Permission Checks of new exposed code and privileged access)

This review focuses on how we perform permission checks,
or better - do we circumvent some assuming full privileges ?
Some native methods do need extra permission validation, i.e. loading native libraries.

Further more AccessController.doPrivileged(..) shall not cover generic code
exposing a critical feature to the user.

Further more .. we should rely on the SecuritManager, i.e. AccessControlContext's
'checkPermission(Permission)' code to comply w/ fine grained permission access.

It is also possible to have full permission w/o having any certificates (-> policy file).

+++

We remove implicit AccessController.doPrivileged(..) from within our trusted code
for generic methods, like Property access, temp. files.

+++

SecurityUtil:
 - Remove 'getCommonAccessControlContext(Class<?> clz)',
   which returned a local AccessControlContext for later restriction
   if the passed class contains all certificates as the 'trusted' GlueGen class has.

 - Simply expose convenient permission check methods relying on
   SecurityManager / AccessControlContext.

PropertyAccess:
 - 'protected static void addTrustedPrefix(..)' requires AllPermissions if SecurityManager is installed.
 - Remove implicit doPrivileged(..) triggered by passed AccessControlContext instance,
   only leave it for trusted prefixes.

IOUtil:
  - Remove all doPrivileged(..) - Elevation shall be performed by caller.

DynamicLinker:
  - 'public long openLibraryLocal(..)' and 'public long openLibraryGlobal(..)'
    may throw SecurityException, if a SecurityManager is installed and the dyn. link permission
    is not granted in the calling code.
    Implemented in their respective Unix, OSX and Windows manifestation.

    Caller has to elevate privileges via 'doPrivileged(..) {}' !

+++

Tests:
 - Property access
 - File access
 - Native library loading

Manual Applet test (unsigned, but w/ SecurityManager and policy file):
  > gluegen/test/applet

  Applet has been tested w/ signed JAR w/ Firefox and Java7 on GNU/Linux as well.

Manual Application test (unsigned, but w/ SecurityManager and policy file):
  com.jogamp.junit.sec.TestSecIOUtil01

  - Run w/ SecurityManager and policy file:
    - gluegen/scripts/runtest-secmgr.sh

  - Run w/o SecurityManager:
    - gluegen/scripts/runtest.sh
Fix Bug 751 OSX Java-6: Derive host/target-rt jar file from 'java.home'.
Android SDK changes: Add /build-tools/17.0.0 to PATH
Fix Bug 749: Add Support for Solaris SPARC 32bit
GlueGen (Compile Time): Add 'CStruct' Annotation Processor (APT) to 'gluegen' C Structs on-the-fly (2-pass actually).

Convenient annotation processing (APT) hooked to 'javac' (1.6) via gluegen.jar META-INF
service provider 'javax.annotation.processing.Processor' -> 'com.jogamp.gluegen.structgen.CStructAnnotationProcessor'.

Am implicit APT / JAVAC would be possible, however - to have a proper process
the unit test utilizes an explicit 2 pass run:

        <!-- Annotation Processor Only - First -->
        <javac destdir="${build_t.java}">
            <classpath refid="junit.compile.classpath"/>
            <compilerarg value="-proc:only"/>
            <compilerarg value="-J-Djogamp.gluegen.structgen.debug"/>
            <compilerarg value="-J-Djogamp.gluegen.structgen.output=${build_t.gen}/classes"/>
            <src path="${test.base.dir}/com/jogamp/gluegen/test/junit/structgen"/>
        </javac>

        <!-- Javac Only - Second -->
        <javac destdir="${build_t.java}">
            <classpath refid="junit.compile.classpath"/>
            <compilerarg value="-proc:none"/>
            <src path="${test.base.dir}"/>
            <src path="${build_t.gen}" />
        </javac>

Original code from Michael Bien's 'superglue' git://github.com/mbien/superglue.git,
finally merged to GlueGen (as once intended).

Note: The APT javac pass requires to use 'gluegen.jar' instead of 'gluegen-rt.jar' !
      The 2-pass process also alows using the runtime gluegen-rt.jar and hence ensures
      clean namespace check at compilation.
Fix CStruct APT File Location - Threw FileNotFoundException w/ Java7
Fix DynamicLinker Impl: Add Bionic specialization using Bionic's non POSIX values; Using same pattern for Mac OS X.

Add Bionic specialization using Bionic's non POSIX values
 - derive from UnixDynamicLinkerImpl
 - specify own flag and mode values
 - use UnixDynamicLinkerImpl native code

Using same pattern for Mac OS X
 - derive from UnixDynamicLinkerImpl
 - specify own flag and mode values
 - use UnixDynamicLinkerImpl native code
 - drop MacOSXDynamicLinkerImpl native code
Complete 5d211c6fa6a0452cc4569712e436184e34504a88: Remove generate.nativelibrary.sources and dynlink* gluegen files due to manual impl.
Robostness: Catch Throwables on NativeLibrary.open(..) and be verbose in DEBUG mode ; DynamicLinker: Add 'String getLastError()'.
Refine 4feb65517ae4a4e2b9b04cdfc4b85582cb8b9784: Handle verbose error cases post catch block, i.e. exception (if occured) and dlerror value.
Fix Bug 757: Regression of URL to URI conversion (Encoded path not compatible w/ file scheme.

Regression of (Bug 683, Commit b98825eb7cfb61aead4a7dff57471cd2d2c26823).

The URI encoded path cannot be read by File I/O (if file scheme), since the latter
requests an UTF8/16 name, not an URI encoded name (i.e. %20 for space).

The encoded URL is produced if calling 'uri.toURL()' and hence
the new 'IOUtil.toURL(URI)' provides a custom conversion recovering the UTF name via 'new File(uri).getPath()'.

Tested w/
  - synthetic URI/URL coposition (unit test)
  - manual w/ moving 'build' to 'build öä lala' for gluegen, joal and jogl.

+++

Misc.:

- 'URI JarUtil.getURIDirname(URI)'  -> 'URI IOUtil.getDirname(URI)'

++
Fix URLCompositionTest for Bug 757: If file, replace '/' in expected result w/ OS specific File.separatorChar
Fix URLCompositionTest for Bug 757 (2): If file, replace '/' in expected result w/ OS specific File.separatorChar

The JAR entry shall stay untouched, i.e. separator is platform independent '/'.
Fix URLCompositionTest for Bug 757 (3): If file, replace '/' in expected result w/ OS specific File.separatorChar

Take 3 (duh!): JRE impl. varies .. i.e. plain URL w/o JAR path differs from URL w/ JAR scheme on Windows .. well.