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/03/17 04:39:45 UTC
svn commit: r924137 - in /subversion/trunk/subversion/bindings/javahl:
native/ src/org/apache/subversion/javahl/ src/org/tigris/subversion/javahl/
tests/org/apache/subversion/javahl/
Author: hwright
Date: Wed Mar 17 03:39:45 2010
New Revision: 924137
URL: http://svn.apache.org/viewvc?rev=924137&view=rev
Log:
JavaHL more enum'ing, this time with RevisionKind.
[ in subversion/bindings/javahl/ ]
* tests/org/apache/subversion/javahl/BasicTests.java:
Update to use Revision.Kind rather than RevisionKind.
* native/Revision.cpp
(Revision): Update for the Revision.Kind type, instead of an int. Use
the new EnumMapper to dissect the incoming object.
* native/EnumMapper.h,
native/EnumMapper.cpp
(toRevisionKind): New.
* src/org/apache/subversion/javahl/RevisionKind.java:
Remove.
* src/org/apache/subversion/javahl/Revision.java:
Update all Kind references to use the new enum
(Revision.Kind): Implement as an enum, rather than a class.
* src/org/tigris/subversion/javahl/Revision.java
(toApache, createFromApache): Update backward compat wrappers.
(Kind.fromAKind, Kind.toAKind): New.
Removed:
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/RevisionKind.java
Modified:
subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
subversion/trunk/subversion/bindings/javahl/native/Revision.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Revision.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp?rev=924137&r1=924136&r2=924137&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.cpp Wed Mar 17 03:39:45 2010
@@ -554,6 +554,35 @@ jobject EnumMapper::mapTristate(svn_tris
}
}
+svn_opt_revision_kind EnumMapper::toRevisionKind(jobject jkind)
+{
+ JNIEnv *env = JNIUtil::getEnv();
+
+ jstring jname = getName(JAVA_PACKAGE"/Revision$Kind", jkind);
+ if (JNIUtil::isJavaExceptionThrown())
+ return svn_opt_revision_unspecified;
+
+ JNIStringHolder str(jname);
+ std::string name((const char *)str);
+
+ if (name == "number")
+ return svn_opt_revision_number;
+ else if (name == "date")
+ return svn_opt_revision_date;
+ else if (name == "committed")
+ return svn_opt_revision_committed;
+ else if (name == "previous")
+ return svn_opt_revision_previous;
+ else if (name == "base")
+ return svn_opt_revision_base;
+ else if (name == "working")
+ return svn_opt_revision_working;
+ else if (name == "head")
+ return svn_opt_revision_head;
+ else
+ return svn_opt_revision_unspecified;
+}
+
jobject EnumMapper::mapEnum(const char *clazzName, const char *name)
{
std::string methodSig("(Ljava/lang/String;)L");
Modified: subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h?rev=924137&r1=924136&r2=924137&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/EnumMapper.h Wed Mar 17 03:39:45 2010
@@ -43,6 +43,7 @@ class EnumMapper
public:
/* Converting to C enum's */
static svn_depth_t toDepth(jobject jdepth);
+ static svn_opt_revision_kind toRevisionKind(jobject jkind);
/* Converting from C enum's */
static jint mapCommitMessageStateFlags(apr_byte_t flags);
Modified: subversion/trunk/subversion/bindings/javahl/native/Revision.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Revision.cpp?rev=924137&r1=924136&r2=924137&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Revision.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Revision.cpp Wed Mar 17 03:39:45 2010
@@ -25,8 +25,8 @@
*/
#include "Revision.h"
-#include "../include/org_apache_subversion_javahl_RevisionKind.h"
#include "JNIUtil.h"
+#include "EnumMapper.h"
const svn_opt_revision_kind Revision::START = svn_opt_revision_unspecified;
const svn_opt_revision_kind Revision::HEAD = svn_opt_revision_head;
@@ -55,7 +55,8 @@ Revision::Revision(jobject jthis, bool h
if (JNIUtil::isJavaExceptionThrown())
return;
- fid = env->GetFieldID(clazz, "revKind", "I");
+ fid = env->GetFieldID(clazz, "revKind",
+ "L"JAVA_PACKAGE"/Revision$Kind;");
if (JNIUtil::isJavaExceptionThrown())
return;
@@ -63,19 +64,16 @@ Revision::Revision(jobject jthis, bool h
if (JNIUtil::isJavaExceptionThrown())
return;
}
- jint jKind = env->GetIntField(jthis, fid);
+ jobject jKind = env->GetObjectField(jthis, fid);
if (JNIUtil::isJavaExceptionThrown())
return;
m_revision.value.number = 0;
+ m_revision.kind = EnumMapper::toRevisionKind(jKind);
- switch(jKind)
+ switch(m_revision.kind)
{
- case org_apache_subversion_javahl_RevisionKind_unspecified:
- m_revision.kind = svn_opt_revision_unspecified;
- break;
- case org_apache_subversion_javahl_RevisionKind_number:
- m_revision.kind = svn_opt_revision_number;
+ case svn_opt_revision_number:
{
static jfieldID fidNum = 0;
if (fidNum == 0)
@@ -97,8 +95,7 @@ Revision::Revision(jobject jthis, bool h
m_revision.value.number = (svn_revnum_t) jNumber;
}
break;
- case org_apache_subversion_javahl_RevisionKind_date:
- m_revision.kind = svn_opt_revision_date;
+ case svn_opt_revision_date:
{
static jfieldID fidDate = 0;
if (fidDate == 0)
@@ -147,20 +144,8 @@ Revision::Revision(jobject jthis, bool h
m_revision.value.date = jMillSec * 1000;
}
break;
- case org_apache_subversion_javahl_RevisionKind_committed:
- m_revision.kind = svn_opt_revision_committed;
- break;
- case org_apache_subversion_javahl_RevisionKind_previous:
- m_revision.kind = svn_opt_revision_previous;
- break;
- case org_apache_subversion_javahl_RevisionKind_base:
- m_revision.kind = svn_opt_revision_base;
- break;
- case org_apache_subversion_javahl_RevisionKind_working:
- m_revision.kind = svn_opt_revision_working;
- break;
- case org_apache_subversion_javahl_RevisionKind_head:
- m_revision.kind = svn_opt_revision_head;
+ default:
+ /* None of the other revision kinds need special handling. */
break;
}
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Revision.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Revision.java?rev=924137&r1=924136&r2=924137&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Revision.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Revision.java Wed Mar 17 03:39:45 2010
@@ -44,16 +44,17 @@ public class Revision implements java.io
/**
* kind of revision specified
*/
- protected int revKind;
+ protected Kind revKind;
/**
* Internally create a new revision. Public for backward compat reasons.
* Callers should use getInstance() instead.
* @param kind kind of revision
*/
- public Revision(int kind)
+ public Revision(Kind kind)
{
- if (kind < RevisionKind.unspecified || kind > RevisionKind.head)
+ if (kind.ordinal() < Kind.unspecified.ordinal()
+ || kind.ordinal() > Kind.head.ordinal())
throw new IllegalArgumentException(
kind+" is not a legal revision kind");
revKind = kind;
@@ -63,7 +64,7 @@ public class Revision implements java.io
* Returns the kind of the Revsion
* @return kind
*/
- public int getKind()
+ public Kind getKind()
{
return revKind;
}
@@ -75,11 +76,11 @@ public class Revision implements java.io
public String toString()
{
switch(revKind) {
- case Kind.base : return "BASE";
- case Kind.committed : return "COMMITTED";
- case Kind.head : return "HEAD";
- case Kind.previous : return "PREV";
- case Kind.working : return "WORKING";
+ case base : return "BASE";
+ case committed : return "COMMITTED";
+ case head : return "HEAD";
+ case previous : return "PREV";
+ case working : return "WORKING";
}
return super.toString();
}
@@ -89,7 +90,7 @@ public class Revision implements java.io
*/
public int hashCode()
{
- return revKind * -1;
+ return revKind.ordinal() * -1;
}
/**
@@ -321,10 +322,31 @@ public class Revision implements java.io
* refers to the uncommitted "working" revision, which may be modified
* with respect to its base revision. In other contexts, `working'
* should behave the same as `committed' or `current'.
- *
- * the values are defined in RevisionKind because of building reasons
*/
- public static final class Kind implements RevisionKind
+ public enum Kind
{
+ /** No revision information given. */
+ unspecified,
+
+ /** revision given as number */
+ number,
+
+ /** revision given as date */
+ date,
+
+ /** rev of most recent change */
+ committed,
+
+ /** (rev of most recent change) - 1 */
+ previous,
+
+ /** .svn/entries current revision */
+ base,
+
+ /** current, plus local mods */
+ working,
+
+ /** repository youngest */
+ head;
}
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java?rev=924137&r1=924136&r2=924137&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java Wed Mar 17 03:39:45 2010
@@ -157,22 +157,22 @@ public class Revision implements java.io
public org.apache.subversion.javahl.Revision toApache()
{
- return new org.apache.subversion.javahl.Revision(revKind);
+ return new org.apache.subversion.javahl.Revision(Kind.toAKind(revKind));
}
public static Revision createFromApache(
org.apache.subversion.javahl.Revision aRev)
{
- int kind = aRev.getKind();
+ org.apache.subversion.javahl.Revision.Kind kind = aRev.getKind();
switch (kind)
{
- case org.apache.subversion.javahl.Revision.Kind.number:
+ case number:
return getInstance(((org.apache.subversion.javahl.Revision.Number) aRev).getNumber());
- case org.apache.subversion.javahl.Revision.Kind.date:
+ case date:
return getInstance(((org.apache.subversion.javahl.Revision.DateSpec) aRev).getDate());
default:
- return getInstance(kind);
+ return getInstance(Kind.fromAKind(kind));
}
}
@@ -368,5 +368,52 @@ public class Revision implements java.io
*/
public static final class Kind implements RevisionKind
{
+ public static int fromAKind(org.apache.subversion.javahl.Revision.Kind aKind)
+ {
+ switch (aKind)
+ {
+ default:
+ case unspecified:
+ return RevisionKind.unspecified;
+ case number:
+ return RevisionKind.number;
+ case date:
+ return RevisionKind.date;
+ case committed:
+ return RevisionKind.committed;
+ case previous:
+ return RevisionKind.previous;
+ case base:
+ return RevisionKind.base;
+ case head:
+ return RevisionKind.head;
+ case working:
+ return RevisionKind.working;
+ }
+ }
+
+ public static org.apache.subversion.javahl.Revision.Kind toAKind(int kind)
+ {
+ switch (kind)
+ {
+ default:
+ case RevisionKind.unspecified:
+ return org.apache.subversion.javahl.Revision.Kind.unspecified;
+ case RevisionKind.number:
+ return org.apache.subversion.javahl.Revision.Kind.number;
+ case RevisionKind.date:
+ return org.apache.subversion.javahl.Revision.Kind.date;
+ case RevisionKind.committed:
+ return org.apache.subversion.javahl.Revision.Kind.committed;
+ case RevisionKind.previous:
+ return org.apache.subversion.javahl.Revision.Kind.previous;
+ case RevisionKind.base:
+ return org.apache.subversion.javahl.Revision.Kind.base;
+ case RevisionKind.head:
+ return org.apache.subversion.javahl.Revision.Kind.head;
+ case RevisionKind.working:
+ return org.apache.subversion.javahl.Revision.Kind.working;
+ }
+ }
}
}
Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=924137&r1=924136&r2=924137&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Wed Mar 17 03:39:45 2010
@@ -2540,7 +2540,7 @@ public class BasicTests extends SVNTests
String branchPath = thisTest.getWCPath() + "/branches/A";
String modUrl = thisTest.getUrl() + "/A";
- Revision unspec = new Revision(RevisionKind.unspecified);
+ Revision unspec = new Revision(Revision.Kind.unspecified);
List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
ranges.add(new RevisionRange(unspec, unspec));
client.merge(modUrl, Revision.HEAD, ranges,
@@ -2594,7 +2594,7 @@ public class BasicTests extends SVNTests
String branchPath = thisTest.getWCPath() + "/branches/A";
String modUrl = thisTest.getUrl() + "/A";
- Revision unspec = new Revision(RevisionKind.unspecified);
+ Revision unspec = new Revision(Revision.Kind.unspecified);
List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
ranges.add(new RevisionRange(unspec, unspec));
client.merge(modUrl, Revision.HEAD, ranges,