summaryrefslogtreecommitdiffstats
path: root/src/java
Commit message (Collapse)AuthorAgeFilesLines
* Minor edits: Fix API doc / Remove Thread.dumpStack()Sven Gothel2012-03-222-3/+1
|
* Add 'asset' URLConnection; IOUtil uses URLConnection / incr. effeciency; ↵Sven Gothel2012-03-1717-181/+863
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Android ClassLoaderUtil cleanup; - Add 'asset' URLConnection - Please read API doc 'PiggybackURLConnection' and 'AssetURLConnection' - Solves generic resource handling where platform locations may differ, ie ClassLoader lookup on Android in the 'assets/' subfolder. - New Android 'AssetDexClassLoader' uses 'assets/' folder for findResource(..) - aapt.signed (our APK ant task) - uses 'assets/' folder - adds the 'assetsdir' attribute allowing to copy other assets into the APK - IOUtil uses URLConnection / incr. effeciency - using URLConnection on all getResource(..) since URL is connected anyways for validation and URLConnection can be used by caller right away - String getRelativeOf(URL, String) -> URL getRelativeOf(URL, String) - preserves scheme, authority, etc - simple parentOf handling, more efficient - reusing new 'asset' protocol impl. - Android ClassLoaderUtil cleanup; - Use createClassLoader(..) impl for build-in static jogamp and user APKs, which removes code redundancy Tests: New code path, especially 'assets' are covered by new unit tests, no regressions on Linux.
* Android: New ActivityLauncher (jogamp.android-launcher.apk)Sven Gothel2012-03-145-0/+1284
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ActivityLauncher provides delegating Activities, allowing the user to: - daisy chain custom APK classes and native libraries to the classpath - name one custom activity which gets delegated to, the downstream activity Overview: [User:a1] -- (usr-data) --> [Launcher] -> [User:a2] + using [other packages..] [User APK] - The user provided APK [JogAmp APK] - JogAmp APKs [User:a1] - The initial user activity, which starts the [Launcher]. Providing data to [Launcher]: [User:a2], [User APK] Resides in [User APK] [User:a2] - The actual downstream 'real' activity, spoiled w/ full fledged ClassLoader having access to all packages as requested, ie. [User APK], .. Resides in [User APK] [Launcher] - The launcher activity. Gets called by [User:a1]. Creates a new ClassLoader, daisy chainging all requested APKs. Instantiates [User:a2] w/ new ClassLoader. Delegates all calls to [User:a2]. Resides in [JogAmp APK].
* PropertyAccess: Push down 'isPropertyDefined(final String property, final ↵Sven Gothel2012-03-133-6/+6
| | | | | | boolean jnlpAlias)' for trusted properties The method shall be called by the respective Debug specialization, which registers the trusted property prefix.
* SecurityUtil: Generalize cert validation and AccessControlContext query; ↵Sven Gothel2012-03-1311-142/+271
| | | | | | | | | | | | | | | | | | PropertyAccess: Fix security code, grant access to common 'trusted' properties - SecurityUtil - Generalize cert validation for JAR and property access - Grant access to common AccessControlContext for 'same' cert - PropertyAccess: - Fix security code: Passing the current AccessControlContext from the caller didn't include priviledges. - Grant access to common 'trusted' properties, which removes the need of passing the AccessControlContext for general properties like 'jnlp.', 'jogamp.' .. - Enable registering 'trusted' properties, when caller's cert is 'same'
* Intro.: PropertyAccess ; Added safe PropertyAccess for JNILibLoaderBase, ↵Sven Gothel2012-03-137-89/+170
| | | | | | | | | | | | | | | | | Platform, IOUtil, .. - Intro.: PropertyAccess - Base class of all Debug impl, reduces redundancies. - jnlpAlias'ed trusted property is queried within local AccessControlContext to avoid 'JRE' implementation differences (should not be required). - throw NPE and IllegalArgumentException for invalid property key - Added safe PropertyAccess - JNILibLoaderBase: sun.jnlp.applet.launcher - Platform: jogamp.gluegen.UseTempJarCache - IOUtil: java.io.tmpdir
* Stabilize open InputStream's / Closeable's: Decorate w/ try-finally and ↵Sven Gothel2012-03-102-2/+26
| | | | close within the latter
* TempJarCache: Check for NULL jarURL and reuse contains queriesSven Gothel2012-03-071-6/+15
|
* Fix NIO Buffers<T> .put<Type1>(<Type2>) - Add appropriate source -> ↵Sven Gothel2012-03-051-0/+25
| | | | destination handling (Float/Long/Double/..)
* ProcAddressEmitter: Even use this emitter for manual impl. methods, which ↵Sven Gothel2012-02-231-18/+19
| | | | allows an enhanced comments of signature (GLEmitter)
* Fix ARM gluegen-rt-natives-linux-"amdv7, amdv5".jar name lookup typo.Xerxes Rånby2012-02-181-4/+4
| | | | Signed-off-by: Xerxes Rånby <[email protected]>
* Add more debug/analisys information. Throw exception when attempting to ↵Sven Gothel2012-02-152-6/+34
| | | | override a rename instruction w/ diff new value
* Don't ignore GlueGen.debug() in static DEBUG flags; Add ↵Sven Gothel2012-02-151-3/+18
| | | | JavaConfiguration.DEBUG_RENAMES
* Platform: Add Java VersionNumberSven Gothel2012-02-131-2/+11
|
* DynamicLibraryBundle (enhancement)Sven Gothel2012-02-127-49/+53
| | | | | | | - Hold DEBUG, DEBUG_LOOKUP in DynamicLookupHelper - Tool complete only if named tool's GetProcAddressFunc is avail - Allow no tool/glue lib's - Use DEBUG_LOCKUP for lockup symbol trace
* Further fix for bug 537 - Catch IllegalArgumentException in ↵Sven Gothel2012-01-053-32/+65
| | | | Platform.loadGlueGenRTImpl(), Reuse JarUtil (same methodology) to determine whether we run from JarURL
* Fix JAR cache to allow running from class filesWade Walker2011-12-291-1/+17
| | | | | | | If the Platform class is coming from a .class file (instead of from a JAR), disables use of the temp JAR cache. This allows apps to run against JOGL class files as well as JAR files, which is useful when running from within an IDE like Eclipse.
* Fix regression of commit b669435d277a10e6163034aba286ecccce013f69, which ↵Sven Gothel2011-12-181-7/+14
| | | | removed the lib-base-name search for OSX
* JNILibLoaderBaser.addNativeJarLibs(..): Catch all Exception (also ↵Sven Gothel2011-12-181-7/+11
| | | | IllegalArgumentException) - solves case using plain class instead of JAR file
* JavaEmitter: Fix primitive StructEmitter for non-fixed-sized (size ↵Sven Gothel2011-12-181-7/+16
| | | | | | | | | conversion, ie. 32/64 bits) An opaque type still needs to be converted to the right size (32/64 bit). In case of a conversion, respect the pointer type. This fixes bug 536 .
* GlueGen: Expose public static debug()Sven Gothel2011-12-181-7/+6
|
* RecursiveThreadGroupLock: New recursive lock interface and impl, allowing ↵Sven Gothel2011-12-113-1/+357
| | | | | | | | | | | | 'spawn off' process to become the lock owner. To avoid complicated synchronization via synchronized, wait and notify between one thread and a 'spawn' off thread which temporarly requires the hold lock, RecursiveThreadGroupLock allows to add and remove other threads to become owners of the lock as if they were the original holder. This simplifies some rare locking use cases, eg. in JOGL's GLProfile initialization sequence where a SharedResourceRunner thread is taking over initialization of shared resources.
* Cleanup Lock Package: API doc, complete throws declaration, interface ↵Sven Gothel2011-12-116-46/+97
| | | | | | RecursiveLockImpl01Unfairish.Sync RecursiveLockImpl01Unfairish changes are in preparation of RecursiveGroupThreadLock.
* NativeLibrary DEBUG: stack trace @ close()Sven Gothel2011-12-011-0/+1
|
* TempJarCache/JNILibLoaderBase: Identify the Jar files by their URL within ↵Sven Gothel2011-12-013-44/+63
| | | | our lifecycle. JarFile's hash almost always differs.
* JVMUtil: Remove Platform dependency - It's being called by Platform and is ↵Sven Gothel2011-12-011-6/+3
| | | | private API.
* Minor edits / Put gluegen-rt 'libBaseName' static.Sven Gothel2011-12-011-10/+10
|
* DynamicLibraryBundle/NativeLibrary: Add destroy() to bundle, causing ↵Sven Gothel2011-12-012-11/+42
| | | | unloading of native library.
* 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-242-1/+9
| | | | 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