Index: subversion/bindings/java/javahl/native/SVNClient.cpp =================================================================== --- subversion/bindings/java/javahl/native/SVNClient.cpp (revision 16356) +++ subversion/bindings/java/javahl/native/SVNClient.cpp (working copy) @@ -1806,7 +1806,8 @@ "(Ljava/lang/String;Ljava/lang/String;IJJJLjava/lang/String;IIIIZZ" "Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;" "Ljava/lang/String;JZLjava/lang/String;Ljava/lang/String;" - "Ljava/lang/String;JLorg/tigris/subversion/javahl/Lock;)V"); + "Ljava/lang/String;JLorg/tigris/subversion/javahl/Lock;" + "JJILjava/lang/String;Ljava/lang/String;)V"); if(JNIUtil::isJavaExceptionThrown()) { return NULL; @@ -1843,6 +1844,12 @@ jstring jLockOwner = NULL; jlong jLockCreationDate = 0; jobject jLock = NULL; + jlong jOODLastCmtRevision = + org_tigris_subversion_javahl_Revision_SVN_INVALID_REVNUM; + jlong jOODLastCmtDate = 0; + jint jOODKind = org_tigris_subversion_javahl_NodeKind_none; + jstring jOODUrl = NULL; + jstring jOODLastCmtAuthor = NULL; if(status != NULL) { @@ -1858,6 +1865,20 @@ { return NULL; } + jOODLastCmtRevision = status->ood_last_cmt_rev; + jOODLastCmtDate = status->ood_last_cmt_date; + jOODKind = EnumMapper::mapNodeKind(status->ood_kind); + jOODUrl = JNIUtil::makeJString(status->ood_url); + if(JNIUtil::isJavaExceptionThrown()) + { + return NULL; + } + jOODLastCmtAuthor = JNIUtil::makeJString(status->ood_last_cmt_author); + if(JNIUtil::isJavaExceptionThrown()) + { + return NULL; + } + svn_wc_entry_t * entry = status->entry; if (entry != NULL) { @@ -1921,7 +1942,9 @@ jTextType, jPropType, jRepositoryTextType, jRepositoryPropType, jIsLocked, jIsCopied, jConflictOld, jConflictNew, jConflictWorking, jURLCopiedFrom, jRevisionCopiedFrom, jIsSwitched, jLockToken, - jLockOwner, jLockComment, jLockCreationDate, jLock); + jLockOwner, jLockComment, jLockCreationDate, jLock, + jOODLastCmtRevision, jOODLastCmtDate, jOODKind, jOODUrl, + jOODLastCmtAuthor); if(JNIUtil::isJavaExceptionThrown()) { return NULL; @@ -1986,6 +2009,16 @@ { return NULL; } + env->DeleteLocalRef(jOODUrl); + if(JNIUtil::isJavaExceptionThrown()) + { + return NULL; + } + env->DeleteLocalRef(jOODLastCmtAuthor); + if(JNIUtil::isJavaExceptionThrown()) + { + return NULL; + } return ret; } Index: subversion/bindings/java/javahl/src/org/tigris/subversion/javahl/Status.java =================================================================== --- subversion/bindings/java/javahl/src/org/tigris/subversion/javahl/Status.java (revision 16356) +++ subversion/bindings/java/javahl/src/org/tigris/subversion/javahl/Status.java (working copy) @@ -136,6 +136,35 @@ * the lock in the repository */ private Lock reposLock; + /** + * @since 1.3 + * Set to the youngest committed revision, or {@link + * Revision#SVN_INVALID_REVNUM} if out of date. + */ + private long oodLastCmtRevision = Revision.SVN_INVALID_REVNUM; + /** + * @since 1.3 + * Set to the most recent commit date, or 0 if out of date. + */ + private long oodLastCmtDate = 0; + /** + * @since 1.3 + * Set to the node kind of the youngest commit, or {@link + * NodeKind#none} if out of date. + */ + private int oodKind = NodeKind.none; + /** + * @since 1.3 + * Set to the URL of the youngest commit, or null if + * out of date. + */ + private String oodURL; + /** + * @since 1.3 + * Set to the user name of the youngest commit, or + * null if out of date. + */ + private String oodLastCmtAuthor; /** * this constructor should only called from JNI code @@ -171,6 +200,13 @@ * @param lockCreationDate the date, the lock was created if any * @param reposLock the lock as stored in the repository if * any + * @param oodLastCmtRevision the youngest revision, if out of date + * @param oodLastCmtDate the last commit date, if out of date + * @param oodKind the kind of the youngest revision, if + * out of date + * @param oodURL the URL of the last commit, if out of date + * @param oodLastCmtAuthor the author of the last commit, if out of + * date */ public Status(String path, String url, int nodeKind, long revision, long lastChangedRevision, long lastChangedDate, @@ -180,7 +216,9 @@ String conflictNew, String conflictWorking, String urlCopiedFrom, long revisionCopiedFrom, boolean switched, String lockToken, String lockOwner, - String lockComment, long lockCreationDate, Lock reposLock) + String lockComment, long lockCreationDate, Lock reposLock, + long oodLastCmtRevision, long oodLastCmtDate, + int oodKind, String oodURL, String oodLastCmtAuthor) { this.path = path; this.url = url; @@ -206,6 +244,11 @@ this.lockComment = lockComment; this.lockCreationDate = lockCreationDate; this.reposLock = reposLock; + this.oodLastCmtRevision = oodLastCmtRevision; + this.oodLastCmtDate = oodLastCmtDate; + this.oodKind = oodKind; + this.oodURL = oodURL; + this.oodLastCmtAuthor = oodLastCmtAuthor; } /** @@ -546,7 +589,57 @@ { return reposLock; } + /** + * @return The last committed revision, or {@link + * Revision#SVN_INVALID_REVNUM} if up to date. + * @since 1.3 + */ + public Revision oodLastCmtRevision() + { + return Revision.createNumber(oodLastCmtRevision); + } + + /** + * @return The last committed date, or null if up to + * date. + * @since 1.3 + */ + public Date oodLastCmtDate() + { + return microsecondsToDate(oodLastCmtDate); + } + + /** + * @return The node kind (e.g. file, directory, etc.), or + * null if up to date. + * @since 1.3 + */ + public int oodKind() + { + return oodKind; + } + + /** + * @return The URL, or null if up to date. + * @since 1.3 + */ + public String oodURL() + { + return oodURL; + } + + /** + * @return The author of the last commit, or null if + * up to date. + * @since 1.3 + */ + public String oodLastCmtAuthor() + { + return oodLastCmtAuthor; + } + + /** * class for kind status of the item or its properties * the constants are defined in the interface StatusKind for building * reasons