summaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp
Commit message (Collapse)AuthorAgeFilesLines
* Refine TempJarCache/JNILibLoaderBase ; Add TempFileCache destroy() for instance.Sven Gothel2011-12-013-33/+88
| | | | | | | | JNILibLoaderBase's 'addNativeJarLibs(Class<?> classFromJavaJar, String allNativeJarBaseName, String[] atomicNativeJarBaseNames)' now just attempts to load the 'all' variant, and will continue w/ atomics if not successful (ie not available). It skips the validation of a 'allJavaJarPrefix', ie validating the 'classFromJavaJar holding JAR file, which allows GLUEGEN/JOGL classes to be contained in JAR files other than the original.
* Fix regression (#2) of commit 04391a3f417e10e1b6dafbd8becc63659af633c30 ↵Sven Gothel2011-11-291-1/+1
| | | | (remove isDirectory(), which requires extra permissions)
* Fix TempJarCache's Multi-User Bug (Reported by Martin Hegedus)Sven Gothel2011-11-293-134/+211
| | | | | | | | | | | | | | | | | | | | | | It turns out that Java's File mkdir() only makes the directory writable for the current user, I have missed this fact. Great catch. 1. Fix TempJarCache.isInitialized(): Return false if not successfully initialized. It merely returned if it has passed 'initSingleton()' and ignored the staticInitError. 2. Fix TempFileCache pattern of determining the temp base directory We cannot just use a static directory name, due to the multi user environment and user write permissions on File.mkdir(). IOUtil has a new 'getTempDir(..)' methods, which iterates through integers [000000-999999] until a writeable directory could be found or created. TempFileCache initializes this temp base dir in the static block ensuring the value is final for the JVM / ClassLoader. Updated comments/docs in TempFileCache.
* Fix regresseion of commit 04391a3f417e10e1b6dafbd8becc63659af633c3 (forced ↵Sven Gothel2011-11-291-1/+1
| | | | pending '/' to filename)
* JarUtil (Fix Bug 522): Handle case where given URL doesn't contain any '/' ↵Sven Gothel2011-11-291-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (eg. Eclipse 'rsrc:' case) - Use ':' as 'path' delimiter in case no path via '/' is given. +++ Manual tested w/ Eclipse: Preparations: =============== 1) Set up a vanilla eclipse (3.7.0) workspace 2) Add the JOGL User Library: - Window.Preference - Java.Build_Path.User_Libraries: + JOGL + gluegen-rt.jar + jogl.all.jar + gluegen-rt-natives-linux-amd64.jar + jogl-all-natives-linux-amd64.jar You may add all other native JARs here. Note that these are not required in the CLASSPATH by JOGL, however, they are required by Eclipse to export your project as a Runnable JAR File. 3) New test project - Right-click your project in the Package Explorer and click "Properties". - Select "Java Build Path" and click the "Libraries" tab. + JOGL - Add some simple code .. - Run as Java Application .. Test-1: ========= Export - Right-click your project in the Package Explorer and click "Export" - Select Java.Runnable_JAR_file + Launch configuration + some destination path + Library handling: Copy required libraries into a sub-folder next to the generated JAR Result: Works! ./lala01.jar ./lala01_lib/jogl.all.jar ./lala01_lib/jogl-all-natives-linux-amd64.jar ./lala01_lib/... etc .. Test-2: ========= Export - Right-click your project in the Package Explorer and click "Export" - Select Java.Runnable_JAR_file + Launch configuration + some destination path + Library handling: Package required libraries into generated JAR Result: Works! ./lala02.jar: Manifest-Version: 1.0 Rsrc-Class-Path: ./ gluegen-rt-natives-linux-amd64.jar gluegen-rt.jar jogl-all-natives-linux-amd64.jar jogl.all.jar Class-Path: . Rsrc-Main-Class: Test01 Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
* JarUtil: Improve Robustness (Bug 522) and API doc, prepare for Jar-In-Jar. ↵Sven Gothel2011-11-295-49/+228
| | | | | | | | Add unit test. Misc.: - IOUtil: Add toURL* methods - TempJarCache: Add 'URL getResource(String)'
* Move TRACE_LOCK from RecursiveLock -> LockSven Gothel2011-11-262-9/+4
|
* ReflectionUtil: Catch NoClassDefFoundError @ getMethod() for robustnessSven Gothel2011-11-241-3/+11
|
* RunnableTask: Add documentation, incl. unit test. Add ↵Sven Gothel2011-11-222-10/+74
| | | | ReflectionUtil.MethodAccess, a convenient Method instance accessor.
* Platform: Add 'getCurrentSleepJitter()'Sven Gothel2011-11-081-1/+26
|
* Fix VersionNumber cstr w/ string parsing: cutt-off non-digit-parts, suppress ↵Sven Gothel2011-10-271-20/+21
| | | | exceptions
* Platform: Add OS_VERSION_NUMBER / getOSVersionNumber()Sven Gothel2011-10-261-1/+10
|
* Update documentation (size/alignment) for MacOSX-32bit-gcc4 ↵Sven Gothel2011-10-241-1/+2
| | | | 0bafac07b61f10c1a24e8c052937607bbfcb39ec
* MachineDescriptor Static: Add Mac-OsX 32bit gcc4 special case with ↵Sven Gothel2011-10-241-1/+7
| | | | sizeof(long double) == 8
* Add some warning supression tagsSven Gothel2011-10-071-0/+5
|
* Enhance ReleasePrimitiveArrayCritical: Use mode-flag JNI_ABORT if array is ↵Sven Gothel2011-10-063-24/+46
| | | | | | | | | | | | | const, ie no write-back We shall consider the C header declaration as being correct and no modification shall happen on const arrays. Tested w/ unit tests and JOGL +++ Cleanup JavaType: final immutable fields, proper CVoidPointer name
* Enhance ReflectionUtil getConstructor(..) w/ 2nd attempt of cstr look-up w/ ↵Sven Gothel2011-09-301-5/+39
| | | | assignable types
* IOUtil's getTempRoot()'s Fix chicken-egg problem ; Adding proper API docSven Gothel2011-09-301-2/+26
| | | | | | IOUtil's getTempRoot(): - Fix chicken-egg problem w/ Platform init, using Android.isavailable;
* IOUtil: Generalize w/ getTempRoot()Sven Gothel2011-09-302-12/+20
|
* IOUtil/Android: Convenient createTempFile wrapper for Android, using the ↵Sven Gothel2011-09-281-1/+35
| | | | context's directory + '/temp' (if stored at StaticContext)
* Don't default to USE_TEMP_JAR_CACHE:=true on AndroidSven Gothel2011-09-281-2/+3
|
* RunnableTask: Allow validation whether invoking thread intends to wait for ↵Sven Gothel2011-09-271-0/+6
| | | | the result
* Lock ChangeSet (fin): Cleanup, fix and enhance RecursiveLock implementationSven Gothel2011-09-271-0/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - RecursiveLock _is_ interface. - Use LockFactory to create a RecursiveLock. - Impl: RecursiveLockImpl01Unfairish - just using notify w/o any queue: fast - still enqueuing new lock-applicants if queue full (nice) - lock's sync extends AbstractOwnableSynchronizer and uses it (monitor) - Impl: RecursiveLockImpl01CompleteFair - using queue and interrupt for correctness (slow) - lock's sync extends AbstractOwnableSynchronizer and uses it (monitor) - Impl: RecursiveLockImplJava5 for using Java5's concurrency impl. - to verify correctness, performance and deviation of locking time TestRecursiveLock01 new performance measurements incl. simple avrg and deviation shows best combined performance-deviation w/ our RecursiveLockImpl01Unfairish os Linux and MacOSX. RecursiveLockImpl01Unfairish is the default in LockFactory. Adding 'private' LockDebugUtil, allowing validating all holdings locks of one thread as stack traces (Throwable). Besides the AbstractOwnableSynchronizer utilization, this helps debugging deadlocks and starvation very well.
* Lock ChangeSet: New RecursiveLock interface. Minor API change to of tryLock ↵Sven Gothel2011-09-272-3/+55
| | | | throws declaration
* Lock ChangeSet: Prepare RecursiveLock to be an implementation of it's new ↵Sven Gothel2011-09-271-245/+0
| | | | interface
* JNILibLoaderBase: Add convenient method to addNativeJarLibs for 'all' and ↵Sven Gothel2011-09-241-1/+38
| | | | 'atomic' variants
* NativeLib: Fix OSX lib name detection; JarUtil extract: at copy entry, mkdir ↵Sven Gothel2011-09-242-4/+17
| | | | of parent if !exist
* Better DEBUG outputSven Gothel2011-09-233-60/+62
|
* Add boolean system property 'jogamp.gluegen.UseTempJarCache', defaults to ↵Sven Gothel2011-09-231-4/+18
| | | | 'true' - allowing to disable usage of TempJarCache.
* Moved JVMUtil to private package; Invoke JVMUtil.initSingleton() from ↵Sven Gothel2011-09-232-75/+2
| | | | Platform static init after loading native library.
* TempJarCache/JNILibLoaderBase: Validate the to be loader JarFile's ↵Sven Gothel2011-09-234-56/+140
| | | | Certificates if caller has any. Add Convenient JNILibLoaderBase.addNativeJarLibs(..) method.
* gluegen-rt lib loading: Moved to Platform static init incl. ↵Sven Gothel2011-09-226-93/+44
| | | | | | | | | | | | | | | | TempJarCache.bootstrapNativeLib(..) usage - Moving to Platform solves former interdependencies between GlueGenJNILibLoader/Platform - TempJarCache is being setup w/ bootstraping the gluegen-rt native lib jar file. Interesting here is that when using Oracle's JRE w/ Applets/JNLP the current dbg output is: gluegen-rt: url-root http://risa/deployment/test/jau02s/jar/ gluegen-rt: nativeJarURL jar:http://risa/deployment/test/jau02s/jar/gluegen-rt-natives-linux-amd64.jar!/ gluegen-rt: nativeJar /home/sven/.java/deployment/cache/6.0/49/3c6d1e31-2c90f42e IE the JRE implementation already deduces the online link to the Applet/JNLP cache. This makes the implementation much simpler, ie. same for application and Applets/JNLP. Have to verify w/ other Java impl. sure - and add same logic for the JOGL part.
* JNILibLoaderBase/TempJarCache: Prepare for loadLibrary(..) out of cached JARsSven Gothel2011-09-223-9/+71
| | | | | | - JNILibLoaderBase: If TempJarCache is active, try find native library in cached JARs - TempJarCache: Add bootstrabNativeLib(..) allowing bootstraping gluegen-rt from JAR w/o needing it - JARUtil: minor edits (final)
* Unify JNI Library Loading into JNILibLoaderBase and use it for the ↵Sven Gothel2011-09-218-148/+100
| | | | | | | | gluegen-rt native lib as well - removed redundance - move proper JNLPAppletLauncher custom libloader code into JNILibLoaderBase - prepares for new JAR temp cache ..
* Temp Cache: More control over the lifecycle, explicit TempJarCache ↵Sven Gothel2011-09-203-27/+85
| | | | initialization/usage only
* Remove redundant: NativeLibrary.ensureNativeLibLoaded()Sven Gothel2011-09-205-17/+10
|
* Enhancements / New utils: JarUtil, TempFileCache and TempJarCacheSven Gothel2011-09-193-0/+1051
| | | | | | | | | | | | | | | | | | | | JarUtil: Utility to handle Jar files and it's content, incl. extracting it's entries TempFileCache: Utility to have a save temporary file cache per JVM and per instance, eg. per ClassLoader. The temp cache is cleaned up with the next usage of TempFileCache, which solves the troubles of JVM bugs and situations where the JVM is not able to close and delete open temp files. TempJarCache: Utility to cache Jar files temporary (using TempFileCache) and access it's content. This class is suitable to implement a URLClassLoader or similar resource loading facilities. All tested w/ TestTempJarCache
* Enhancement/GenericStyle:Sven Gothel2011-09-194-49/+228
| | | | | | | | | | | | | | | | | | - NativeLibrary: - add isValidNativeLibraryName(..) - generic style - Platform - add getOSAndArch(), getOSAndArch(..) - IOUtil - add getClassFileName(..) - add getBasename(..) - add getDirname(..) - added doc - ReflectionUtil - generic style
* NativeLibLoader: Handle case where prev. Applet used JNLPAppletLauncher, ↵v2.0-rc3Sven Gothel2011-09-161-20/+34
| | | | setting it's magic property. Subsequent Applets may not use JNLPAppletLauncher, but property is still set.
* IOUtil getResource() - Lookup class package space 1st; Catch all Throwables ↵Sven Gothel2011-09-141-19/+67
| | | | | | | | | | | | ; Add DEBUG Lookup class package space 1st, which favors JAR resources, hence allows applets to load secure stuff. Catch all Throwables incl. java.security.AccessControlException based on java.io.FilePermission. (eg Applets) Add DEBUG property jogamp.debug.IOUtil, enabling verbose resource location.
* Fix PCPP/DumpCPP: Avoid NPE ; More descriptive exception in case of non ↵Sven Gothel2011-09-032-3/+3
| | | | integer opaque in struct
* DynamicLibraryBundle*: Use generics for better spec / Drop Iterator in favor ↵Sven Gothel2011-08-312-34/+26
| | | | for int/size() for less temp objects
* ArrayHashSet: Add Java Generics SyntaxSven Gothel2011-08-241-37/+34
|
* CachedBufferFactory: Cosmetic changes - comments, -1 -> 0Sven Gothel2011-08-091-2/+11
|
* DynamicLibraryBundleInfo: Allow impl. to select tool/system lookupSven Gothel2011-08-092-8/+34
|
* aapt build check fix ; DynamicLibraryBundle.isGlueLibComplete() == true if ↵Sven Gothel2011-08-051-3/+16
| | | | | | | | | | | | | last entry is loaded aapt build check fix - exe aapt if source are newer than apk DynamicLibraryBundle.isGlueLibComplete() == true if last entry is loaded - fix long standing bug, where GlueLib was not complete if preload dependencies were missing. this even lead to JOGL specific handling of this case .. duh. - added debug info
* Hide DynamicLinker impl.; Remove public AndroidPackageUtil ; ↵Sven Gothel2011-08-037-265/+13
| | | | | | | GluegenVersionActivity uses ApplicationContext Hide DynamicLinker impl.: - com.jogamp.common.os.*DynamicLinkerImpl -> jogamp.common.os
* Platform getArch() -> getArchName() (analogue to getOSName())Sven Gothel2011-07-282-2/+2
|
* Fix Android apk activity; Add apk VersionName; Add jar manifest to apkSven Gothel2011-07-284-7/+84
| | | | | | | | | | | | | | | | - build: - exclude android packages if !isAndroid - aapt: - Use individual AndroidManifest xml files - optional: incl. our JAR manifest file to support detailed version info - use def. GluegenVersionActivity - APK VersionName: Retrieve and show - package/extension names: - gluegen.jar/apk: com.jogamp.gluegen - gluegen-rt.jar/apk: com.jogamp.common
* Cross JUnit Tests - All Passed: Android+Linux armv7Sven Gothel2011-07-251-1/+1
| | | | | | | | | | | - junit.cross targets: - use scripting to save time, ie write all target commands to script, xfer, exec - junit: delete result folder just before junit.run - Test BuildEnvironment.java: Simplify path config via properties (for android) - AndroidVersion: No annoying exception dump if Build$VERSION* is not found (not android) - launch scripts: use absolute TARGET_ROOT path for dynamic linker env.