diff options
Diffstat (limited to 'src/java/com')
-rw-r--r-- | src/java/com/jogamp/common/os/AndroidVersion.java | 45 | ||||
-rw-r--r-- | src/java/com/jogamp/common/util/IOUtil.java | 23 | ||||
-rw-r--r-- | src/java/com/jogamp/common/util/JogampVersion.java | 18 |
3 files changed, 48 insertions, 38 deletions
diff --git a/src/java/com/jogamp/common/os/AndroidVersion.java b/src/java/com/jogamp/common/os/AndroidVersion.java index 8886273..cb6c3e5 100644 --- a/src/java/com/jogamp/common/os/AndroidVersion.java +++ b/src/java/com/jogamp/common/os/AndroidVersion.java @@ -1,3 +1,30 @@ +/** + * Copyright 2011 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ package com.jogamp.common.os; import java.lang.reflect.Field; @@ -9,9 +36,6 @@ import com.jogamp.common.util.ReflectionUtil; public class AndroidVersion { public static final boolean isAvailable; - /** All SDK version map, where SDK_INT is the key to the current running version */ - public static final Map<Integer, String> VERSION_CODES; - /** Development codename, or the string "REL" for official release */ public static final String CODENAME; @@ -27,8 +51,8 @@ public class AndroidVersion { /** SDK Version string */ public static final String SDK_NAME; - static final String androidBuildVersion = "android.os.Build$VERSION"; - static final String androidBuildVersionCodes = "android.os.Build$VERSION_CODES"; + private static final String androidBuildVersion = "android.os.Build$VERSION"; + private static final String androidBuildVersionCodes = "android.os.Build$VERSION_CODES"; static { final ClassLoader cl = AndroidVersion.class.getClassLoader(); @@ -41,22 +65,21 @@ public class AndroidVersion { abvObject = abvClass.newInstance(); abvcClass = ReflectionUtil.getClass(androidBuildVersionCodes, true, cl); abvcObject = abvcClass.newInstance(); - } catch (Exception e) { /* n/a */ } - isAvailable = null != abvObject ; + } catch (Exception e) { /* n/a */ } + isAvailable = null != abvObject; if(isAvailable) { CODENAME = getString(abvClass, abvObject, "CODENAME"); INCREMENTAL = getString(abvClass, abvObject, "INCREMENTAL"); RELEASE = getString(abvClass, abvObject, "RELEASE"); SDK_INT = getInt(abvClass, abvObject, "SDK_INT"); - VERSION_CODES = getVersionCodes(abvcClass, abvcObject); - String sdk_name = VERSION_CODES.get(new Integer(SDK_INT)); - SDK_NAME = ( null != sdk_name ) ? sdk_name : "SDK_"+SDK_INT ; + final Map<Integer, String> version_codes = getVersionCodes(abvcClass, abvcObject); + String sdk_name = version_codes.get(new Integer(SDK_INT)); + SDK_NAME = ( null != sdk_name ) ? sdk_name : "SDK_"+SDK_INT ; } else { CODENAME = null; INCREMENTAL = null; RELEASE = null; SDK_INT = -1; - VERSION_CODES = new HashMap<Integer, String>(); SDK_NAME = null; } } diff --git a/src/java/com/jogamp/common/util/IOUtil.java b/src/java/com/jogamp/common/util/IOUtil.java index 5f26c53..ed74fa2 100644 --- a/src/java/com/jogamp/common/util/IOUtil.java +++ b/src/java/com/jogamp/common/util/IOUtil.java @@ -44,13 +44,10 @@ import java.net.URLConnection; import java.nio.ByteBuffer; import jogamp.common.Debug; -import jogamp.common.os.android.StaticContext; - -import android.content.Context; +import jogamp.common.os.AndroidUtils; import com.jogamp.common.net.AssetURLContext; import com.jogamp.common.nio.Buffers; -import com.jogamp.common.os.AndroidVersion; import com.jogamp.common.os.MachineDescription; import com.jogamp.common.os.Platform; @@ -632,7 +629,7 @@ public class IOUtil { * On Android a <code>temp</code> folder relative to the applications local folder * (see {@link Context#getDir(String, int)}) is returned, if * the Android application/activity has registered it's Application Context - * via {@link StaticContext#init(Context, ClassLoader)}. + * via {@link jogamp.common.os.android.StaticContext.StaticContext#init(Context, ClassLoader) StaticContext.init(..)}. * This allows using the temp folder w/o the need for <code>sdcard</code> * access, which would be the <code>java.io.tempdir</code> location on Android! * </p> @@ -642,22 +639,14 @@ public class IOUtil { * @throws RuntimeException is the property <code>java.io.tmpdir</code> or the resulting temp directory is invalid * * @see PropertyAccess#getProperty(String, boolean, java.security.AccessControlContext) - * @see StaticContext#init(Context, ClassLoader) * @see Context#getDir(String, int) */ public static File getTempRoot(AccessControlContext acc) throws SecurityException, RuntimeException { - if(AndroidVersion.isAvailable) { - final Context ctx = StaticContext.getContext(); - if(null != ctx) { - final File tmpRoot = ctx.getDir("temp", Context.MODE_WORLD_READABLE); - if(null==tmpRoot|| !tmpRoot.isDirectory() || !tmpRoot.canWrite()) { - throw new RuntimeException("Not a writable directory: '"+tmpRoot+"', retrieved Android static context"); - } - if(DEBUG) { - System.err.println("IOUtil.getTempRoot(Android): temp dir: "+tmpRoot.getAbsolutePath()); - } + { + final File tmpRoot = AndroidUtils.getTempRoot(acc); // null if ( !Android || no android-ctx ) + if(null != tmpRoot) { return tmpRoot; } } @@ -670,7 +659,7 @@ public class IOUtil { throw new RuntimeException("Not a writable directory: '"+tmpRoot+"', retrieved by propery '"+java_io_tmpdir_propkey+"'"); } if(DEBUG) { - System.err.println("IOUtil.getTempRoot(isAndroid: "+AndroidVersion.isAvailable+"): temp dir: "+tmpRoot.getAbsolutePath()); + System.err.println("IOUtil.getTempRoot(): temp dir: "+tmpRoot.getAbsolutePath()); } return tmpRoot; } diff --git a/src/java/com/jogamp/common/util/JogampVersion.java b/src/java/com/jogamp/common/util/JogampVersion.java index 2461c3e..de65f90 100644 --- a/src/java/com/jogamp/common/util/JogampVersion.java +++ b/src/java/com/jogamp/common/util/JogampVersion.java @@ -29,7 +29,6 @@ package com.jogamp.common.util; import com.jogamp.common.GlueGenVersion; -import com.jogamp.common.os.AndroidVersion; import com.jogamp.common.os.Platform; import java.util.Iterator; @@ -37,7 +36,7 @@ import java.util.Set; import java.util.jar.Attributes; import java.util.jar.Manifest; -import jogamp.common.os.android.PackageInfoUtil; +import jogamp.common.os.AndroidUtils; public class JogampVersion { @@ -48,7 +47,7 @@ public class JogampVersion { private Manifest mf; private int hash; private Attributes mainAttributes; - private Set/*<Attributes.Name>*/ mainAttributeNames; + private Set<?>/*<Attributes.Name>*/ mainAttributeNames; private final String androidPackageVersionName; @@ -58,11 +57,7 @@ public class JogampVersion { this.hash = this.mf.hashCode(); mainAttributes = this.mf.getMainAttributes(); mainAttributeNames = mainAttributes.keySet(); - if(AndroidVersion.isAvailable) { - androidPackageVersionName = PackageInfoUtil.getPackageInfoVersionName(packageName); - } else { - androidPackageVersionName = null; - } + androidPackageVersionName = AndroidUtils.getPackageInfoVersionName(packageName); // null if !Android } @Override @@ -95,7 +90,7 @@ public class JogampVersion { } public final Attributes.Name getAttributeName(String attributeName) { - for (Iterator iter = mainAttributeNames.iterator(); iter.hasNext();) { + for (Iterator<?> iter = mainAttributeNames.iterator(); iter.hasNext();) { Attributes.Name an = (Attributes.Name) iter.next(); if (an.toString().equals(attributeName)) { return an; @@ -104,7 +99,10 @@ public class JogampVersion { return null; } - public final Set getAttributeNames() { + /** + * @return set of type {@link Attributes.Name}, disguised as anonymous + */ + public final Set<?>/*<Attributes.Name>*/ getAttributeNames() { return mainAttributeNames; } |