aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/common
Commit message (Collapse)AuthorAgeFilesLines
* 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
* ExceptionUtils.dumpStack(..): Skip self stack entrySven Gothel2014-12-031-1/+1
|
* Refine ExceptionUtils: Shorten method name, dumpThrowable uses dumpStackSven Gothel2014-10-263-10/+21
|
* Add ExceptionUtils: Exposing dumpStackTrace(..) and dumpThrowable(..)Sven Gothel2014-10-081-0/+60
|
* MappedByteBufferInputStream: Default CacheMode is FLUSH_PRE_HARD now (was ↵Sven Gothel2014-10-031-7/+7
| | | | | | | | | | | FLUSH_PRE_SOFT) FLUSH_PRE_SOFT cannot be handled by some platforms, e.g. Windows 32bit. FLUSH_PRE_HARD is the most reliable caching mode and it will fallback to FLUSH_PRE_SOFT if no method for 'cleaner' exists. Further, FLUSH_PRE_HARD turns our to be the fastest mode as well.
* MappedByteBuffer*Stream:Sven Gothel2014-10-032-64/+266
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Validate active and GC'ed mapped-buffer count in cleanAllSlices() via close() .. - Fix missing unmapping last buffer in notifyLengthChangeImpl(), branch criteria was off by one. - cleanSlice(..) now also issues cleanBuffer(..) on the GC'ed entry, hence if WeakReference is still alive, enforce it's release. - cleanBuffer(..) reverts FLUSH_PRE_HARD -> FLUSH_PRE_SOFT in case of an error. - flush() -> flush(boolean metaData) to expose FileChannel.force(metaData). - Add synchronous mode, flushing/syncing the mapped buffers when in READ_WRITE mapping mode and issue FileChannel.force() if not READ_ONLY. Above is implemented via flush()/flushImpl(..) for buffers and FileChannel, as well as in syncSlice(..) for buffers only. flush*()/syncSlice() is covered by: - setLength() - notifyLengthChange*(..) - nextSlice() Always issue flushImpl() in close(). - Windows: Clean all buffers in setLength(), otherwise Windows will report: - Windows: Catch MappedByteBuffer.force() IOException - Optimization of position(..) position(..) is now standalone to allow issuing flushSlice(..) before gathering the new mapped buffer. This shall avoid one extra cache miss. Hence rename positionImpl(..) -> position2(..). - All MappedByteBufferOutputStream.write(..) methods issue syncSlice(..) on the last written current slice to ensure new 'synchronous' mode is honored. +++ Unit tests: - Ensure test files are being deleted - TestByteBufferCopyStream: Reduced test file size to more sensible values. -
* Bug 1080 - Refine MappedByteBuffer*Stream impl. and API [doc], adding stream ↵Sven Gothel2014-09-293-78/+321
| | | | to stream copy as well as direct memory mapped ByteBuffer access
* Bug 1080 - Add write support for memory mapped big file I/O via specialized ↵Sven Gothel2014-09-262-89/+462
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OutputStream impl. Added MappedByteBufferOutputStream as a child instance of MappedByteBufferInputStream, since the latter already manages the file's mapped buffer slices. Current design is: - MappedByteBufferInputStream (parent) - MappedByteBufferOutputStream this is due to InputStream and OutputStream not being interfaces, but most functionality is provided in one class. We could redesign both as follows: - MappedByteBufferIOStream (parent) - MappedByteBufferInputStream - MappedByteBufferOutputStream This might visualize things better .. dunno whether its worth the extra redirection. +++ MappedByteBufferInputStream: - Adding [file] resize support via custom FileResizeOp - All construction happens via ctors - Handle refCount, incr. by ctor and getOutputStream(..), decr by close - Check whether stream is closed already -> IOException - Simplify / Reuse code MappedByteBufferOutputStream: - Adding simple write operations
* Bug 1080 - Fix TestByteBufferInputStream: Handle OutOfMemoryError cause in ↵Sven Gothel2014-09-261-0/+7
| | | | IOException (Add note to FLUSH_NONE); Reduce test load / duration.
* Bug 1080 - Add read support for memory mapped big file I/O via specialized ↵Sven Gothel2014-09-252-0/+670
| | | | | | | | | | | | | | | InputStream impl., incl. mark/reset - ByteBufferInputStream simply impl. InputStream for an arbitrary 2MiB restricted ByteBuffer - Users may only need a smaller implementation for 'smaller' file sizes or for streaming a [native] ByteBuffer. - MappedByteBufferInputStream impl. InputStream for any file size, while slicing the total size to memory mapped buffers via the given FileChannel. The latter are mapped lazily and diff. flush/cache methods are supported to ease virtual memory usage. - TestByteBufferInputStream: Basic unit test for basic functionality and perf. stats.
* 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: Uri: Refine API doc; Add create(Encoded ..) ; Provide common impl. ↵Sven Gothel2014-09-102-159/+482
| | | | | | | | | | | | | | | | | | | | for getNormalized(), getDirectory(), getParent() and getRelativeOf() - Refine API doc - Add notion of {@code host} and {@code port} validation - Add create(Encoded ..), allowing creation of variants w/o re-encoding - Provide common impl. for getNormalized(), getDirectory(), getParent() and getRelativeOf() Above feature methods share common goals, hence use same implementation: - If opaque, cut-off query and merge after operation - cleanup path, i.e. /dummy/../test/ -> /test/ - cutoff file, dir - if requested - append optional appendix and cleanup again Return behavior various thought, i.e. null, this or allow exception. Enhanced test of above features.
* Bug 1063: Further Uri completion - As a result of JOGL Uri adoptionSven Gothel2014-09-083-54/+51
|
* Bug 1063: Complete Uri impl. and adoption throughout GlueGenSven Gothel2014-09-086-493/+485
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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 - Refine Uri and Uri.Encode ; Fix unit tests (passing on GNU/Linux, ↵Sven Gothel2014-09-071-26/+24
| | | | | | | | | | | | | OSX and Windows) - Refine Uri - remove System.err.print* - scheme is of type Encode - Refine Uri.Encode - substring(..) shall return type Encode - Fix unit tests (passing on GNU/Linux, OSX and Windows)
* Bug 1063 - Uri.PATH_LEGAL: Remove reserved 'punct', encoding all reserved ↵Sven Gothel2014-09-071-34/+17
| | | | chars but '!', allows removal of PATH_MIN_LEGAL ; Add comment for Harmony values for review
* Bug 1063 - Utilize own Uri and Uri.Encoded class w/ proper encoding and ↵Sven Gothel2014-09-075-210/+2104
| | | | | | | | | | | | 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
|
* Bug 1024: Add fallback for native-jar-file location via classpathSven Gothel2014-07-112-6/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In situations, where the native-jar file is not located within the same parent URI as it's java-jar file, our location mechanism fails. This patch adds a classloader based native-jar file location mechanism as a fallback, requiring the native jar file to be included in the users CLASSPATH. Classloader based location algorithm in JNILibLoaderBase.addNativeJarLibsImpl(..): - Extract the 'module-name' from the given classFromJavaJar's package name, i.e. the last package-part: 'jogamp.common.Debug' -> 'common' Hence it is important to pass a 'classFromJavaJar', which last package segment reflects the module-name! - <os.and.arch> -> <os_and_arch_dot>, e.g. linux-amd64 -> linux.amd64 (linux/amd64) - Locate class 'jogamp.nativetag.<module-name>.<os_and_arch_dot>.TAG', e.g. 'jogamp.nativetag.common.linux.amd64.TAG' - Use located class's JarFile URI .. continue as usual Injection of above mentioned TAG class via gluegen-cpptasks-base.xml macro 'native.tag.jar': - Creates dummy TAG.java code - Compiles TAG.java - Creates the native-jar file Example: <native.tag.jar objdir="${build}/obj" nativejarfile="${build}/gluegen-rt-natives-${os.and.arch}.jar" manifestfile="${build}/Manifest-rt-natives.temp" module="common" includelibs="*gluegen-rt.${native.library.suffix}" /> Note that the manifest file uses a matching Extension-Name: Extension-Name: jogamp.nativetag.common
* Cleanup JNILibLoaderBase: Use Platform NEWLINE, remove obsolete notice of ↵Sven Gothel2014-07-111-21/+26
| | | | | | | '[-noawt,-mobile,-core,-android]?' in API-doc, ... - rename addNativeJarLibsWhenInitialized(..) -> addNativeJarLibsWithTempJarCache(..) to fix grammar and expose proper semantics.
* Remove @deprecated methodsSven Gothel2014-07-094-24/+0
|
* gluegen: relax private variable access to package-private for members ↵Harvey Harrison2014-07-072-2/+2
| | | | | | | 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
* Merge remote-tracking branch 'github-mark/master' (Bug 1023, Bug 1024)Sven Gothel2014-07-052-139/+130
|\ | | | | | | | | | | | | | | | | Conflicts: src/java/com/jogamp/common/jvm/JNILibLoaderBase.java src/java/com/jogamp/common/os/Platform.java src/junit/com/jogamp/common/util/TestTempJarCache.java (re-injected that api-doc of addNativeJarLibsImpl)
| * Do not keep re-indexing into the same array.Mark Raynsford2014-06-301-4/+4
| |
| * StringBuilder message parameter was unused.Mark Raynsford2014-06-301-4/+3
| |
| * Clean up native library loading and remove the ability to strip prefixes.Mark Raynsford2014-06-302-110/+132
| | | | | | | | | | Bug: 1023 Bug: 1024
| * Remove unused addNativeJarLibs() method; the only consumer was a unit testMark Raynsford2014-06-261-39/+0
| | | | | | | | of the method.
* | Code Clean-Up based on our Recommended Settings (jogamp-scripting ↵Sven Gothel2014-07-0347-744/+747
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-286-16/+16
| |
* | Buffers: Split slice2Float(..) into dedicated methods for FloatBuffer and ↵Sven Gothel2014-06-271-32/+53
|/ | | | float[] backing-array - refine API doc w/ backing-array semantics
* Bug 1025 - GlueGen: Add accessor for compound fields of type array, pointer ↵Sven Gothel2014-06-251-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and string (code generation) Enhance compound access as delivered by Bug 1022, to also generate accessors (getter and setter) for array, pointer and string types. Allow configuration of array length either via their internal size (c-header) or config 'ReturnedArrayLength'. 'ReturnedArrayLength' allows specifying a java expression. Canonical field names of compounds are _now_ specified as follows for configuration entries: COMPOUND.FIELD e.g. StructA.fieldB Also allow configuration of pointer fields to be treated as referenced arrays via 'ReturnedArrayLength'. Further, allow specifying 'pointer fields' as String values via 'ReturnsString' configuration. ++++ Implementation details: - handle above described accessor features - enhance JavaDoc for generated accessors - generate native JNI compound and string accessor on demand - encapsule accessor code generation in their own methods - enhance exception messages - enhance type verbosity in debug mode - verbose debug output via GlueGen.debug() Tests: - Features covered by test1.[ch] and Test1p1JavaEmitter and Test1p2ProcAddressEmitter - Validated compilation and unit tests for modules: - joal - jogl (minor config changes req.) - jocl (minor config changes req.)
* ReflectionUtil.getConstructor: Add 'initializeClazz' argument, allowing to ↵Sven Gothel2014-06-172-10/+11
| | | | defer static class initialization
* Minor edits: space, final qualifier; setenv-build-*: Add generic JDK locationSven Gothel2014-06-171-1/+1
|
* gluegen: use parseInt, parseLong to avoid boxing unboxing an Integer/LongHarvey Harrison2014-05-171-2/+2
| | | | Signed-off-by: Harvey Harrison <[email protected]>
* RunnableTask: Add static method 'invokeOnNewThread(..)' for convenience ↵Sven Gothel2014-05-111-1/+39
| | | | (Used in JOGL to mitigate Bug 1004)
* gluegen: avoid bugs with sign-extension in readUInt16Harvey Harrison2014-04-111-2/+3
| | | | Signed-off-by: Harvey Harrison <[email protected]>
* Bitstream: Add 'throwIOExceptionOnEOF' mode; fix certain EOS situations ↵Sven Gothel2014-02-211-9/+85
| | | | (flush, skip)
* Bug 980: Refine Bitstream API 'signed' and 'unsigned' semantics - ↵Sven Gothel2014-02-211-39/+43
| | | | readUInt32(..) must return long due to EOF
* Bitstream: Another CamelCase fix: uint32LongtoInt -> uint32LongToIntSven Gothel2014-02-211-2/+2
|
* Bitstream: Refine c70c730b22c847668cf475dc6f841b85297ac3ab: 'toUint32Long' ↵Sven Gothel2014-02-211-10/+18
| | | | -> 'toUInt32Long', add 'uint32LongtoInt'
* Bitstream: Add static 'long toUint32Long(int)' and 'int toUint32Int(int)' ↵Sven Gothel2014-02-211-10/+32
| | | | conversion functions
* Bug 890: Adding versatile Bitstream implementationSven Gothel2014-02-201-0/+1341
| | | | | | | | | | | | | | | | We already have several locations where bitstream operations are required and partially implemented (JPEG decoder, media parsing, ..) as well as endian related conversion (elf parser, ..). Create a versatile Bitstream class allowing: - Utilize I/O operations on I/O streams, buffers and arrays - Consider MSBfirst / LSBfirst mode - Linear bit R/W operations - Bulk R/W operations w/ endian related type conversion - Allow mark/reset and switching streams and input/output mode - Optimized operations Complete set of unit tests included, covering hopefully all cases.
* Bug 972 - Reduce ClassLoader Lookup, i.e. Class.forName(..) / Instrument ↵Sven Gothel2014-02-121-8/+99
| | | | ReflectionUtil's forName(..) usage
* Bug 856 - Android: Support dual ABI (x86 i686 *and* ARMv7arm), i.e. pick ↵Sven Gothel2014-01-242-7/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | '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
* Platform: Fix API doc of getCPUFamily(), getCPUType() and getABIType()Sven Gothel2014-01-231-3/+9
|
* Bug 945 - GlueGen's IOUtil does not consider file URI's authority when ↵Sven Gothel2014-01-221-11/+32
| | | | | | | | | | | | | | | | | | | | | | | 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