Author: mturk Date: Thu Sep 24 05:00:39 2009 New Revision: 818372 URL: http://svn.apache.org/viewvc?rev=818372&view=rev Log: Call setExecutable using reflection so we can keep Java 5 binary compatibility
Modified: commons/sandbox/runtime/trunk/build.properties.default commons/sandbox/runtime/trunk/configure commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Library.java Modified: commons/sandbox/runtime/trunk/build.properties.default URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/build.properties.default?rev=818372&r1=818371&r2=818372&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/build.properties.default (original) +++ commons/sandbox/runtime/trunk/build.properties.default Thu Sep 24 05:00:39 2009 @@ -31,8 +31,8 @@ version.suffix=-dev # ----- Default Compile options ----------------------------------------------- -compile.source=1.6 -compile.target=1.6 +compile.source=1.5 +compile.target=1.5 compile.debug=off compile.optimize=on compile.deprecation=on Modified: commons/sandbox/runtime/trunk/configure URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/configure?rev=818372&r1=818371&r2=818372&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/configure (original) +++ commons/sandbox/runtime/trunk/configure Thu Sep 24 05:00:39 2009 @@ -32,8 +32,8 @@ topdir="${TOPDIR:=.}" java_home="`echo $JAVA_HOME | tr '\\' '/' 2>/dev/null`" -compile_source=6 -compile_target=6 +compile_source=5 +compile_target=5 has_64_bit=no has_maintainer_mode=off has_debug=off @@ -121,9 +121,9 @@ --with-java-home=DIR Path to the Java SDK [\$JAVA_HOME environment variable] --with-java-source=VER Compile for Java source VER - [Default 6] + [Default 5] --with-java-target=VER Compile for Java target VER - [Default 6] + [Default 5] --with-host=NAME Configure for native HOST [Default current host] --with-cpu=NAME Configure for native CPU Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Library.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Library.java?rev=818372&r1=818371&r2=818372&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Library.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Library.java Thu Sep 24 05:00:39 2009 @@ -20,6 +20,7 @@ import java.io.FileOutputStream; import java.io.InputStream; import java.io.IOException; +import java.lang.reflect.Method; import org.apache.commons.runtime.exception.*; import org.apache.commons.runtime.util.Utils; @@ -67,6 +68,25 @@ return res.replace('.', '/') + name; } + /** + * Call {...@code java.io.File.setExecutable} using reflection. + * This allows to maintaing the Java 5 binary compatibility. + */ + private static void setExecutable(File file) + { + try { + Class<?> paramTypes[] = new Class[1]; + Object paramValues[] = new Object[1]; + paramTypes[0] = boolean.class; + paramValues[0] = true; + Method method = file.getClass().getMethod("setExecutable", + paramTypes); + method.invoke(file, paramValues); + } catch (Throwable t) { + // Java < 6 + } + } + private static File extractResource(InputStream is, String name) throws IllegalArgumentException, IOException { @@ -84,10 +104,10 @@ } os.close(); /* Some platforms like HP-UX require the library - * to have rwx permissions set. - * This mandates Java 6 API however + * to have executable permissions set. + * This requires Java 6 however */ - f.setExecutable(true); + setExecutable(f); /* Mark the extracted file for delete on JVM exit. * Although windows platform cannot delete this file * if library is successfully loaded it will succeed if