summaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/common/util
Commit message (Collapse)AuthorAgeFilesLines
* Resolve v2.3.1_winexe merge conflictsjavafxSven Gothel2019-03-201-0/+12
|\
| * Adding 'jogamp.gluegen.TestTempDirExec' property, allowing to disable ↵Sven Gothel2018-12-111-0/+12
| | | | | | | | | | | | | | testing executable of temp dir This also avoids trying to unpack the test executable on Windows, which may cause a virus scanner to halt the process or otherwise cause issues.
* | Remove deprectated classes and methodsSven Gothel2015-10-158-274/+47
| |
* | Refine new API methods: ExceptionUtils, Uri (Add @since, refine arguments ↵Sven Gothel2015-10-031-8/+8
| | | | | | | | and API doc)
* | Bug 1243 - Fix IOUtil.cleanPathString(..) special case ; Allow IOUtil and ↵Sven Gothel2015-10-033-17/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Uri to handle relative path Fix IOUtil.cleanPathString(..) special case: Special case '/a/./../b' -> '/b' requires to resolve './' before '../'. Allow IOUtil and Uri to handle relative path: - IOUtil.getParentOf(..) - IOUtil.cleanPathString(..) Handle cases: 'a/./../b' -> 'b' '.././b' -> '../b' - Uri: Handle null scheme
* | Bug 1237: Minor Cleanup: AssetURLContext and IOUtil.getResource(..) DEBUG ↵Sven Gothel2015-10-031-4/+2
| | | | | | | | Messages
* | Bug 1237 - Clarify IOUtil.getResource(..) for better efficiency, i.e. allow ↵Sven Gothel2015-10-031-23/+63
| | | | | | | | | | | | | | | | | | | | | | | | caller to skip relative futile lookup IOUtil.getResource(..) and IOUtil.ClassResources, needs more clarity. ClassLoader shall be passed explicitly next to the optional relative context Class instance. This allows better efficiency, i.e. caller can pass ClassLoader but skip a possible relative lookup, if not existing.
* | Bug 1231: Usability of CustomCompress API incl zip-level; Replace test-exe ↵Sven Gothel2015-09-243-25/+71
| | | | | | | | deflated files w/ zip-level 9
* | Bug 1231: Add Windows x86_64 test executable ; Use 'WinMain' for Windows ↵Sven Gothel2015-09-245-33/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | test-executable ; Use CustomInflate for Performance - Use 'WinMain' for Windows test-executable This may have little difference than using std 'main' entry - Add Windows x86_64 test executable Since the reporter claims the test executable works well on Windows i386, maybe utilizing a x86_64 test executable on same VM fixes the issue - Use CustomInflate for Performance - Skips GZIP header - Adds own custom header [magic, deflate-size, inflate-size] - Own header allows simplified I/O read and deflation
* | Bug 1219: IOUtil.testDirExe: Issue Process.destroy() in finalize block to ↵Sven Gothel2015-09-231-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | ensure launched native exe process terminates. See Bug 1219 comment 58: It seems that on some Windows platforms the launched native process using our test-exe keeps running even though we issued Process.waitFor(). Hence we issue Process.destroy() in the finalize block to at least attempt to terminate it. Note: The Process implementation is platform specific and may vary.
* | Bug 1219: IOUtil.testDirExe: Disable 'existingExe' DEBUG_EXE feature by ↵Sven Gothel2015-09-221-1/+4
| | | | | | | | | | | | | | | | | | hardcoded 'DEBUG_EXE_EXISTING_FILE = false' This is required for security, i.e. not allowing to execute any pre-existing files! In case we need to manually debug this issue, we can re-enable it manually and locally, but not in public builds!
* | Bug 1219: Fix IOUtil.StreamMonitor EOS handlingSven Gothel2015-09-211-17/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Make StreamMonitor a daemon thread, i.e. not hindering VM from exit - Earmark each InputStream's EOS state and only attempt to readByte if !eos - End loop and hence the thread if all InputStream have reached EOS. - Don't close the InputStream. Closing the InputStream is expected to be done by the owner, otherwise no EOS could even be reached! - Flush the output PrintStream at thread exit
* | Bug 1219: IOUtil.testDirExe: Satisfactory when executed, more debug optionsSven Gothel2015-09-211-11/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IOUtil.testDirExe(): - Satisfactory when executed Failure to execute produce an IOException right at ProcessBuilder.start(). Hence we can allow an unexpected process exit value, since we only want to learn whether executable files are allowed. - More debug options DEBUG_EXE: 'jogamp.debug.IOUtil.Exe' DEBUG_EXE_NOSTREAM: 'jogamp.debug.IOUtil.Exe.NoStream' - if DEBUG_EXE - a pre-existing 'jogamp_exe_tst'+<SUFFIX> will be used as-is. - the test-exe will not be deleted - StreamMonitor is being used to dump stdout/stderr if !DEBUG_EXE_NOSTREAM.
* | Bug 1219: Use Win32 API for test PE exe, not consoleSven Gothel2015-09-193-2/+2
| | | | | | | | | | | | | | | | | | Previous test PE exe, commit 0ebc5398fa20d23214a37dc4930a1fa1617293c7, was a console exe. A console exe opens a new console window if not being launched from one. New test PE exe is produced w/ '-mwindows', i.e. for Win32 API w/o a console.
* | Bug 1219: Sporadic failure to determine 'executable temp base directory' on ↵Sven Gothel2015-09-193-25/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Windows using 'exe-windows-i586-268b.bin' (Fix attempt #1) Replacing the tiny 268 byte sized 'exe-windows-i586-268b.bin' PE file w/ a regular 2048 byte sized PE file 'exe-windows-i386-2048b.bin'. File is produced via: c:\mingw\bin\gcc -nodefaultlibs -nostdlib -s -Os -o tiny.exe tiny.c Adding the 305 byte sized gzipped version 'exe-windows-i386-2048b.bin.305b.gz' to the gluegen-rt jar file to reduce the payload for non Windows platforms. Adding special property 'jogamp.debug.IOUtil.Exe' to debug testing the exe file, enable via '-Djogamp.debug.IOUtil.Exe'. Passes here on all Windows machines, however, the prev. one worked here as well.
* | Bug 1213: Use InterruptSource.ThreadSven Gothel2015-09-151-1/+1
| |
* | Bug 1213: Refine changes .. comments and APISven Gothel2015-09-156-22/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Use InterruptSource.Thread.create(..), while reducing InterruptSource.Thread ctors to 3 variants. - Use InterruptSource.Thread instead of java.lang.Thread where possible - Use SourcedInterruptedException where possible - SingletonInstanceServerSocket: start(), stop() and run() - Persistent-Wait and Cancelable - Add @since 2.3.2
* | Bug 1213 (related): Fix TaskBase, RunnableTask and FunctionTask ↵Sven Gothel2015-09-123-72/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | implementation and semantics - TaskBase - requires 'volatile boolean isExecuted' for atomic query of same semantics - fix isInQueue(): condition was reverse in regars to 'isExecuted' - expose 'Thread getExecutionThread()' as learned within run() method. - RunnableTask - deprecate: 'static invoke(final boolean waitUntilDone, final Runnable runnable)', since it's nonsense, use runnable.run() instead. - 'static RunnableTask invokeOnNewThread(..)' - uses InterruptSource.Thread - Persistent-Wait - Cancelable using InterruptedRuntimeException - FunctionTask - deprecate 'static <U,V> U invoke(final boolean waitUntilDone, final Function<U,V> func, final V... args)', since it's nonsense, use func.eval(args) instead. - 'static FunctionTask<U,V> invokeOnNewThread(..)' - uses InterruptSource.Thread - Persistent-Wait - Cancelable using InterruptedRuntimeException
* | Bug 1213: Expose InterruptSource, SourcedInterruptedException and ↵Sven Gothel2015-09-123-0/+377
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | InterruptedRuntimeException - InterruptSource interface declares methods to retrieve the source of a Thread.interrupt() call. - InterruptSource.Thread implements InterruptSource, i.e. allows code running within such thread to learn about the interrupt source (stack trace). - SourcedInterruptedException is a InterruptedException specialization which may include the source of the causing Thread.interrupt() call. - InterruptedRuntimeException An unchecked RuntimeException propagating an InterruptedException where handling of the latter is not desired. The causing InterruptedException may be of type SourcedInterruptedException, hence a detailed stack trace analysis might be possible.
* | Bug 1145: Fix cc2: Null versions reported using the fat-jar (JogampVersion)Sven Gothel2015-08-181-3/+21
| | | | | | | | | | | | | | | | In case we run fat-jar file, the package name is 'com.jogamp' and all entries are based upon GlueGen. JogampVersion will fall back trying to find a fat-jar Manifest in case a null Manifest is being passed.
* | Fix Bitfield.put(..): Return previous valueSven Gothel2015-08-021-1/+1
| |
* | IntBitfield: Fix units calculation ( +7 -> +31 for ceiling, using 32bits per ↵Sven Gothel2015-08-021-2/+2
| | | | | | | | unit)
* | Bitfield: Refine API method names, add clearField(boolean), fix put32(..) ↵Sven Gothel2015-08-022-24/+62
| | | | | | | | and bitCount(), add unit test (passed)
* | Bitfield: Refine impl. complete get/put 32bit, add copy*(..), add ↵Sven Gothel2015-07-311-9/+46
| | | | | | | | synchronized delegation; TODO: Unit tests.
* | Bitfield: @since 2.3.2 ..Sven Gothel2015-07-301-1/+2
| |
* | Bitfield: Use IndexOutOfBoundsException instead of ↵Sven Gothel2015-07-301-12/+12
| | | | | | | | ArrayIndexOutOfBoundsException
* | Introduce Bitfield interface w/ Int32 and Int32Array impl. deprecating ↵Sven Gothel2015-07-302-14/+138
| | | | | | | | | | | | | | | | | | | | | | | | | | IntBitfield IntBitfield's 64bit bit-size is exceeding its use-case, making it less efficient and complicated. Bitfield offers a fast path implementation for 32 bits as well as a int[] implementation. TODO: 32 bit Unaligned putInt32(..) and getInt32(..), currently throwing UnsupportedOperationException for int[] impl.
* | Add ArrayHashMap; Use 'supportNullValue' optimizing ArrayHashSet and ↵Sven Gothel2015-04-012-38/+473
|/ | | | | | ArrayHashMap; Unify ctor for both impl. Add/Enhance unit tests for both.
* Bug 1149 - Replacing PCPP w/ JCPP, allowing complete macro handling (Part-2: ↵Sven Gothel2015-03-241-0/+10
| | | | JCPP submodule, build, test and doc)
* Bug 1126 - Remove static query requirement of MachineDescriptor, find ↵Sven Gothel2015-02-022-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | matching StaticConfig at runtime; Fix PPC (Bug 1056) and MIPSLE (Bug 1014) issues. Currently the StaticConfig is being queried via the key[OSType, CPUType ..] as pre-determined by Java properties or the ELF parser. This adds complication to maintain different platforms and the key query might not even be sufficient. The MachineDescriptor's StaticConfig only purpose shall be to speed-up native data size and offset/alignment retrieval. This is done by using the StaticConfig index within all StaticConfig[]s as a lookup-index for the precomputed struct's size and offset tables. +++ Solution: Rename: MachineDescriptor -> MachineDataInfo Rename: MachineDescriptorRuntime -> MachineDataInfoRuntime After having defined os.and.arch (OSType, CPUType and ABIType) w/ the optional help of the now self containing ELF Reader (Bug 1125), the native gluegen-rt library gets loaded enabling JNI methods. It is satisfactory to retrieve MachineDataInfo at runtime w/ JNI and find the matching/compatible StaticConfig. Only in case none is found, the program needs to abort. Otherwise the found MachineDataInfo.StaticConfig and MachineDataInfo are stored for further use (see above). This removes above complication and key to StaticConfig mapping. New platforms simply need to add a new unique entry into the StaticConfig[] table. ++ Also fixes Bug 1056 (PPC), thanks to tmancill [@] debian [.] org, and Bug 1014 (MIPSLE), thanks to Dejan Latinovic. Parts of the patch for Bug 1014 from Dejan Latinovic are included. also solved by this change set.
* Bug 1125 - Make ELF Reader 'jogamp.common.os.elf' StatelessSven Gothel2015-02-011-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | ELF Reader 'jogamp.common.os.elf' currently uses Platform's pre-determined OS_TYPE and CPUType. It also uses the host platforms MachineDescription, hence can not read ELF files from other machines. This also forbids Platform to determine CPUType etc w/o having a valid 'os.arch' property. +++ ElfHeader should be split in - ElfHeaderPart1 (CPUType independent) - ElfHeaderPart2 (CPUType dependent) Fix shall make the ELF Reader self containing by only using ELF CPUType data, etc. This requires customization of struct parsing, where MachineDescription.Static index shall be - defined in ElfHeaderPart1 using e_Ident's CPUType. - used in ElfHeaderPart2 and all its struct types.
* Bug 1108 - Fix difficulties to determine executable access permission on ↵Sven Gothel2014-12-132-21/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Windows via BATCH file execution Batch file execution test via direct call, i.e.'a.bat', does not work on some Windows machine, not reproducible here! A workaround would be to call the batch file explicit via 'CMD /c a.bat': - works when using 'Software Restriction Policies' (Bug 1015 Comment 2) - does _not_ work when denying ACL "Traverse Folder / Execute File" permission (Bug 1015 Comment 3) Due to this bug, we need to use a native execution: - Performing executable test w/ native exe file instead of batch file on Windows x86 32bit and 64bit, - using [1] TinyPE XP-W8 Compatible - x86 32bit and 64bit - 268 bytes - Tested on: WinXP-32bit, Win7-64bit and Win8-64bit - Author/License: Ange Albertini, BSD Licence, 2010-2013 - On all other Windows machines (ARM, ..), we still use direct execution of 'a.bat' but may add native exe files for missing platforms. +++ This patch injects said binaries within the java jar file and copies it into the 'to be tested' temp folder for execution. [1] TinyPE XP-W8 Compatible - x86 32bit and 64bit - 268 bytes is included within 'src/native/tinype-corkami', build manually and imported as 'src/java/com/jogamp/common/util/bin/exe-windows-i586-268b.bin'. +++
* TempFileCache/TempJarCache: Fix NPE in DEBUG modeSven Gothel2014-12-122-2/+7
|
* Bug 1108 - IOUtil.getTempDir(..): Difficulties to determine executable ↵Sven Gothel2014-12-111-1/+9
| | | | | | | | | | | | access permission on Windows via BATCH file execution Try using explicit call to Windows 'cmd.exe' w/ referencing the BATCH file location, via 'Runtime.getRuntime().exec(new String[] { "cmd", "/c", "a.bat" } );' While the bug itself could not be reproduced here, I could test on Windows 7 (64bit and 32bit), as well as an WindowsXP 32bit that no regression occured.
* Bug 1106 - Bitstream: Simplify 'msbFirst' case for bulk operations / Add ↵Sven Gothel2014-12-031-223/+332
| | | | | | | | | | | | | | | | | | | | | | | setting of stream position (optional) - Add setting position entry, optionally supported, e.g. ByteBufferStream and ByteArrayStream - Remove 'msbFirst' parameter on all 'bulk' read/write operations. These methods use LSB-first always, allowing proper stream access of data w/ different bit-sizes. Data is now read/write as little-endian and swapped accordingly. Optimizations are adopted for LSB-first operations. This change removes API confusion/bugs: - removes one decision (parameter) - removes the data reversion case - removes bugs w/ different bit-sizes
* Refine ExceptionUtils: Shorten method name, dumpThrowable uses dumpStackSven Gothel2014-10-261-1/+2
|
* IOUtil: Fix API doc; getTempDir(..) shall throw IOException instead of ↵Sven Gothel2014-09-251-6/+31
| | | | | | | | | | RuntimeException for IO failures - Fix API doc - copy*() methods only close stream they open, no need to mention the proper behavior (obvious). - getTempDir(..) shall throw IOException instead of RuntimeException for IO failures - Ease using getTempDir(..), i.e. only handle IOException
* Bug 1067 - IOUtil.testDirExec(File) needs to preserve SPACE in ↵Sven Gothel2014-09-141-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | exetst.getCanonicalPath() command Having a test-executable file with SPACE in it's temporary path, e.g. Unix: /magic temp/user/ Windows XP: C:\Documents and Settings\user\temp results to split up commands if using 'Process.exec(String)', since it utilizes a StringTokenizer to assemble the command String[]. This patch uses 'Process.exec(String[])' avoiding splitting up SPACE in the full command string/path. Major impact is on 'Windows XP', where a SPACE separated TEMP/TMP folder is the default. Note-1: Commit 9bc3d3f78bb2fb1aa0ccfb02ffb5bdda74420cac introduced testing executable permission on Windows (Bug 1015) and rendered this issue visible. To reproduce the issue on Windows: +++ set TEMP=C:\Documents and Settings\jogamp\temp set TMP=C:\Documents and Settings\jogamp\temp "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" +++ Note-2: This bug affects all platforms!
* Bug 1063: Further Uri completion - As a result of JOGL Uri adoptionSven Gothel2014-09-081-34/+7
|
* Bug 1063: Complete Uri impl. and adoption throughout GlueGenSven Gothel2014-09-083-347/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Uri: - Add error correction (fix) of path at ctor in case a a contained Uri is requested from an opaque one. The latter might come from URI/URL and is not properly encoded! See Uri.PARSE_HINT_FIX_PATH - Simplify conversion methods: - valueOf(URI/URL): Re-encode only if not opaque - getNativeFilePath() -> toFile() - Move IOUtil Uri related constants to class Uri - Add DEBUG and DEBUG_SHOWFIX - Complete adoption of URI -> Uri changes - IOUtil, JarUtil and TempJarCache still holds some left over deprecated methods, which will be removed after officially starting 2.3.0 (JOGL dependencies) - Otherwise not URI utilization left - Tests - Cleaned ip TestUri01 and TestUri03Resolving - TestUri03Resolving also tests URL -> Uri, and hence mentioned Uri.PARSE_HINT_FIX_PATH
* Bug 1063 - Utilize own Uri and Uri.Encoded class w/ proper encoding and ↵Sven Gothel2014-09-073-209/+18
| | | | | | | | | | | | differentiating encoded/decoded variants by type [Part 1] - Add immutable com.jogamp.common.net.Uri class impl. RFC 2396 w/ encoding of RFC 3986 - Class Uri.Encoded is used to represent encoded parts - IOUtil: Remove unused methods (residing in Uri) and mark others deprecated (will move to Uri) - Adopt usage of Uri: This must be completet in follow-up commits!
* Bug 908: Fix URI/URL double encoding, ensuring encoded/decoded variants are ↵Sven Gothel2014-09-072-177/+78
| | | | | | | | | | | | | | | | | | | | used properly (Added unit test) Bug 908 was caused by confusing URI encoded parts (e.g. scheme-specific-part) and it's decoded variant. This especially happened due to: - the fact, that the encoded and unencoded variant uses the same String type, - the URI/URL decoding differs, is not complete (e.g. %20 .. SPACE remains in decoded part), - and does not comply w/ RFC 2396 and RFC 3986 (encoding), e.g. not all RESERVED chars are encoded. In branch 'v2.3.0_branch', we will introduce our own Uri and Uri.Encoded class to solve above issue by replacing all URI usage w/ Uri. - Backporting results of own Uri class introduction in branch 'v2.3.0_branch' - Ensure the encoded URI parts are used where required, i.e. IOUtil.compose(..) etc - TestNetIOURIReservedCharsBug908: Automated test, launching GlueGen jar file from an <i>odd pathname</i>.
* Bug 1015: Test executable permission on Windows via bat file (temp dir, like ↵Sven Gothel2014-08-281-36/+136
| | | | | | | | | | | | | | | | | | | | | | | | on unix and osx) Tested on Window 7 and Windows 8.1 using 'Using Software Restriction Policies', i.e. disabled sw-execution in TEMP dir. On Windows we need to add min. shell code, here 'echo off', allowing the bat file to be executed if policy allows it. Reminder: We test the following temp folder 1) java.io.tmpdir/jogamp 2) $XDG_CACHE_HOME/jogamp 3) $TMPDIR/jogamp or $TEMP/jogamp 4) $HOME/.jogamp +++ Misc: Proper 'duplicate' validation via 'file1.equals(file2)' test using the abstract pathname.
* IntIntHashMap: Reduce temp. ArrayList<Entry> instances in cloneSven Gothel2014-08-161-3/+4
|
* Remove @deprecated methodsSven Gothel2014-07-094-24/+0
|
* gluegen: relax private variable access to package-private for members ↵Harvey Harrison2014-07-071-1/+1
| | | | | | | accessed from inner class Otherwise the compiler has to fill in a wrapping access function for the inner class to call, which is less efficient.
* gluegen: remove unused imports, unneeded semicolons, add missing @Override ↵Harvey Harrison2014-07-074-4/+5
| | | | annotations
* Code Clean-Up based on our Recommended Settings (jogamp-scripting ↵Sven Gothel2014-07-0327-403/+405
| | | | | | | | | | | | | | | c47bc86ae2ee268a1f38c5580d11f93d7f8d6e74) Code Clean-Up based on our Recommended Settings (jogamp-scripting c47bc86ae2ee268a1f38c5580d11f93d7f8d6e74) - Change non static accesses to static members using declaring type - Change indirect accesses to static members to direct accesses (accesses through subtypes) - Add final modifier to private fields - Add final modifier to method parameters - Add final modifier to local variables - Remove unnecessary casts - Remove unnecessary '$NON-NLS$' tags - Remove trailing white spaces on all lines
* Fix 'typo' in messages: 'Catched' -> 'Caught'Sven Gothel2014-06-283-12/+12
|
* ReflectionUtil.getConstructor: Add 'initializeClazz' argument, allowing to ↵Sven Gothel2014-06-172-10/+11
| | | | defer static class initialization