You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/02/02 17:17:46 UTC

svn commit: r905689 - in /subversion/trunk/subversion/bindings/javahl: native/ src/org/apache/subversion/javahl/ src/org/tigris/subversion/javahl/

Author: hwright
Date: Tue Feb  2 16:17:28 2010
New Revision: 905689

URL: http://svn.apache.org/viewvc?rev=905689&view=rev
Log:
JavaHL: Migrate the NativeResources and Version class native implementations
to the new org.apache package, and implement the old versions as simple
wrappers.

[ in subversion/bindings/javahl/ ]
* native/org_tigris_subversion_javahl_Version.cpp:
  Removed, copied to ...

* native/org_apache_subversion_javahl_Version.cpp:
  ... this.

* native/org_tigris_subversion_javahl_NativeResources.cpp:
  Removed, copied to ...

* native/org_apache_subversion_javahl_NativeResources.cpp:
  ... this.

* src/org/tigris/subversion/javahl/Version.java:
  Make this class wrap the version in org.apache.

* src/org/tigris/subversion/javahl/NativeResources.java:
  Same.

* src/org/apache/subversion/javahl/NativeResources.java:
  Make the class public so the old package can use it.

Added:
    subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp
      - copied, changed from r905641, subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_NativeResources.cpp
    subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_Version.cpp
      - copied, changed from r905641, subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_Version.cpp
Removed:
    subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_NativeResources.cpp
    subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_Version.cpp
Modified:
    subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java
    subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeResources.java
    subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java

Copied: subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp (from r905641, subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_NativeResources.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp?p2=subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp&p1=subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_NativeResources.cpp&r1=905641&r2=905689&rev=905689&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_NativeResources.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp Tue Feb  2 16:17:28 2010
@@ -20,16 +20,16 @@
  * ====================================================================
  * @endcopyright
  *
- * @file org_tigris_subversion_javahl_NativeResources.cpp
+ * @file org_apache_subversion_javahl_NativeResources.cpp
  * @brief Implementation of the native methods in the Java class
  * NativeResources.
  */
 
 #include "JNIUtil.h"
-#include "../include/org_tigris_subversion_javahl_NativeResources.h"
+#include "../include/org_apache_subversion_javahl_NativeResources.h"
 
 JNIEXPORT void JNICALL
-Java_org_tigris_subversion_javahl_NativeResources_initNativeLibrary
+Java_org_apache_subversion_javahl_NativeResources_initNativeLibrary
 (JNIEnv *env, jclass jclazz)
 {
   // No usual JNIEntry here, as the prerequisite native library

Copied: subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_Version.cpp (from r905641, subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_Version.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_Version.cpp?p2=subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_Version.cpp&p1=subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_Version.cpp&r1=905641&r2=905689&rev=905689&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/org_tigris_subversion_javahl_Version.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_Version.cpp Tue Feb  2 16:17:28 2010
@@ -20,37 +20,37 @@
  * ====================================================================
  * @endcopyright
  *
- * @file org_tigris_subversion_javahl_Version.cpp
+ * @file org_apache_subversion_javahl_Version.cpp
  * @brief Implementation of the native methods in the Java class Version.
  */
 
-#include "../include/org_tigris_subversion_javahl_Version.h"
+#include "../include/org_apache_subversion_javahl_Version.h"
 #include "JNIStackElement.h"
 #include "svn_version.h"
 
 JNIEXPORT jint JNICALL
-Java_org_tigris_subversion_javahl_Version_getMajor(JNIEnv *env, jobject jthis)
+Java_org_apache_subversion_javahl_Version_getMajor(JNIEnv *env, jobject jthis)
 {
   JNIEntry(Version, getMajor);
   return SVN_VER_MAJOR;
 }
 
 JNIEXPORT jint JNICALL
-Java_org_tigris_subversion_javahl_Version_getMinor(JNIEnv *env, jobject jthis)
+Java_org_apache_subversion_javahl_Version_getMinor(JNIEnv *env, jobject jthis)
 {
   JNIEntry(Version, getMinor);
   return SVN_VER_MINOR;
 }
 
 JNIEXPORT jint JNICALL
-Java_org_tigris_subversion_javahl_Version_getPatch(JNIEnv *env, jobject jthis)
+Java_org_apache_subversion_javahl_Version_getPatch(JNIEnv *env, jobject jthis)
 {
   JNIEntry(Version, getPatch);
   return SVN_VER_PATCH;
 }
 
 JNIEXPORT jstring JNICALL
-Java_org_tigris_subversion_javahl_Version_getTag(JNIEnv *env, jobject jthis)
+Java_org_apache_subversion_javahl_Version_getTag(JNIEnv *env, jobject jthis)
 {
   JNIEntry(Version, getTag);
   jstring tag = JNIUtil::makeJString(SVN_VER_TAG);
@@ -61,7 +61,7 @@
 }
 
 JNIEXPORT jstring JNICALL
-Java_org_tigris_subversion_javahl_Version_getNumberTag(JNIEnv *env,
+Java_org_apache_subversion_javahl_Version_getNumberTag(JNIEnv *env,
                                                        jobject jthis)
 {
   JNIEntry(Version, getNumberTag);

Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java?rev=905689&r1=905688&r2=905689&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java Tue Feb  2 16:17:28 2010
@@ -27,7 +27,7 @@
  * Handles activities related to management of native resouces
  * (e.g. loading of native libraries).
  */
-class NativeResources
+public class NativeResources
 {
     /**
      * Version information about the underlying native libraries.

Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeResources.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeResources.java?rev=905689&r1=905688&r2=905689&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeResources.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeResources.java Tue Feb  2 16:17:28 2010
@@ -23,110 +23,13 @@
 
 package org.tigris.subversion.javahl;
 
+import org.apache.subversion.javahl.*;
+
 /**
  * Handles activities related to management of native resouces
  * (e.g. loading of native libraries).
  */
-class NativeResources
+class NativeResources extends org.apache.subversion.javahl.NativeResources
 {
-    /**
-     * Version information about the underlying native libraries.
-     */
-    static Version version;
-
-    /**
-     * Load the required native library whose path is specified by the
-     * system property <code>subversion.native.library</code> (which
-     * can be passed to the JVM on start-up using an argument like
-     * <code>-Dsubversion.native.library=/usr/local/lib/libsvnjavahl-1.so</code>).
-     * If the system property is not specified or cannot be loaded,
-     * attempt to load the library using its expected name, and the
-     * platform-dependent loading mechanism.
-     *
-     * @throws UnsatisfiedLinkError If the native library cannot be
-     * loaded.
-     * @throws LinkageError If the version of the loaded native
-     * library is not compatible with this version of JavaHL's Java
-     * APIs.
-     * @since 1.3.0
-     */
-    public static synchronized void loadNativeLibrary()
-    {
-        UnsatisfiedLinkError loadException = null;
-
-        // If the user specified the fully qualified path to the
-        // native library, try loading that first.
-        try
-        {
-            String specifiedLibraryName =
-                System.getProperty("subversion.native.library");
-            if (specifiedLibraryName != null)
-            {
-                System.load(specifiedLibraryName);
-                init();
-                return;
-            }
-        }
-        catch (UnsatisfiedLinkError ex)
-        {
-            // Since the user explicitly specified this path, this is
-            // the best error to return if no other method succeeds.
-            loadException = ex;
-        }
-
-        // Try to load the library by its name.  Failing that, try to
-        // load it by its old name.
-        String[] libraryNames = {"svnjavahl-1", "libsvnjavahl-1", "svnjavahl"};
-        for (int i = 0; i < libraryNames.length; i++)
-        {
-            try
-            {
-                System.loadLibrary(libraryNames[i]);
-                init();
-                return;
-            }
-            catch (UnsatisfiedLinkError ex)
-            {
-                if (loadException == null)
-                {
-                    loadException = ex;
-                }
-            }
-        }
-
-        // Re-throw the most relevant exception.
-        if (loadException == null)
-        {
-            // This could only happen as the result of a programming error.
-            loadException = new UnsatisfiedLinkError("Unable to load JavaHL " +
-                                                     "native library");
-        }
-        throw loadException;
-    }
-
-    /**
-     * Initializer for native resources to be invoked <em>after</em>
-     * the native library has been loaded.  Sets library version
-     * information, and initializes the re-entrance hack for native
-     * code.
-     * @throws LinkageError If the version of the loaded native
-     * library is not compatible with this version of JavaHL's Java
-     * APIs.
-     */
-    private static final void init()
-    {
-        initNativeLibrary();
-        version = new Version();
-        if (!version.isAtLeast(1, 5, 0))
-        {
-            throw new LinkageError("Native library version must be at least " +
-                                   "1.5.0, but is only " + version);
-        }
-    }
-
-    /**
-     * Initialize the native library layer.
-     * @since 1.5.0
-     */
-    private static native void initNativeLibrary();
+  static Version version = new Version();
 }

Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java?rev=905689&r1=905688&r2=905689&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java Tue Feb  2 16:17:28 2010
@@ -23,6 +23,8 @@
 
 package org.tigris.subversion.javahl;
 
+import org.apache.subversion.javahl.*;
+
 /**
  * Encapsulates version information about the underlying native
  * libraries.  Basically a wrapper for <a
@@ -30,68 +32,4 @@
  */
 public class Version
 {
-    /**
-     * @return The full version string for the loaded JavaHL library,
-     * as defined by <code>MAJOR.MINOR.PATCH INFO</code>.
-     * @since 1.4.0
-     */
-    public String toString()
-    {
-        StringBuffer version = new StringBuffer();
-        version.append(getMajor())
-            .append('.').append(getMinor())
-            .append('.').append(getPatch())
-            .append(getNumberTag())
-            .append(getTag());
-        return version.toString();
-    }
-
-    /**
-     * @return The major version number for the loaded JavaHL library.
-     * @since 1.4.0
-     */
-    public native int getMajor();
-
-    /**
-     * @return The minor version number for the loaded JavaHL library.
-     * @since 1.4.0
-     */
-    public native int getMinor();
-
-    /**
-     * @return The patch-level version number for the loaded JavaHL
-     * library.
-     * @since 1.4.0
-     */
-    public native int getPatch();
-
-    /**
-     * @return Whether the JavaHL native library version is at least
-     * of <code>major.minor.patch</code> level.
-     * @since 1.5.0
-     */
-    public boolean isAtLeast(int major, int minor, int patch)
-    {
-        int actualMajor = getMajor();
-        int actualMinor = getMinor();
-        return ((major < actualMajor)
-                || (major == actualMajor && minor < actualMinor)
-                || (major == actualMajor && minor == actualMinor &&
-                    patch <= getPatch()));
-    }
-
-    /**
-     * @return Some text further describing the library version
-     * (e.g. <code>" (r1234)"</code>, <code>" (Alpha 1)"</code>,
-     * <code>" (dev build)"</code>, etc.).
-     * @since 1.4.0
-     */
-    private native String getTag();
-
-    /**
-     * @return Some text further describing the library version
-     * (e.g. "r1234", "Alpha 1", "dev build", etc.).
-     * @since 1.4.0
-     */
-    private native String getNumberTag();
 }