Alien-SVN

 view release on metacpan or  search on metacpan

src/subversion/subversion/bindings/javahl/native/CreateJ.cpp  view on Meta::CPAN


  jobject jaction = EnumMapper::mapChangePathAction(log_item->action);
  if (JNIUtil::isJavaExceptionThrown())
    POP_AND_RETURN_NULL;

  jobject jnodeKind = EnumMapper::mapNodeKind(log_item->node_kind);
  if (JNIUtil::isJavaExceptionThrown())
    POP_AND_RETURN_NULL;

  jlong jcopyFromRev = log_item->copyfrom_rev;

  jobject jcp = env->NewObject(clazzCP, midCP, jpath, jcopyFromRev,
                      jcopyFromPath, jaction, jnodeKind,
                      EnumMapper::mapTristate(log_item->text_modified),
                      EnumMapper::mapTristate(log_item->props_modified));
  if (JNIUtil::isJavaExceptionThrown())
    POP_AND_RETURN_NULL;

  return env->PopLocalFrame(jcp);
}

jobject
CreateJ::Status(svn_wc_context_t *wc_ctx,
                const svn_client_status_t *status,
                apr_pool_t *pool)
{
  if (status == NULL)
    return NULL;

  JNIEnv *env = JNIUtil::getEnv();

  // Create a local frame for our references
  env->PushLocalFrame(LOCAL_FRAME_SIZE);
  if (JNIUtil::isJavaExceptionThrown())
    return NULL;

  jclass clazz = env->FindClass(JAVA_PACKAGE"/types/Status");
  if (JNIUtil::isJavaExceptionThrown())
    POP_AND_RETURN_NULL;

  static jmethodID mid = 0;
  if (mid == 0)
    {
      mid = env->GetMethodID(clazz, "<init>",
                             "(Ljava/lang/String;Ljava/lang/String;"
                             "L"JAVA_PACKAGE"/types/NodeKind;"
                             "JJJLjava/lang/String;"
                             "L"JAVA_PACKAGE"/types/Status$Kind;"
                             "L"JAVA_PACKAGE"/types/Status$Kind;"
                             "L"JAVA_PACKAGE"/types/Status$Kind;"
                             "L"JAVA_PACKAGE"/types/Status$Kind;"
                             "ZZZZZL"JAVA_PACKAGE"/types/Lock;"
                             "L"JAVA_PACKAGE"/types/Lock;"
                             "JJL"JAVA_PACKAGE"/types/NodeKind;"
                             "Ljava/lang/String;Ljava/lang/String;"
                             "Ljava/lang/String;Ljava/lang/String;)V");
      if (JNIUtil::isJavaExceptionThrown())
        POP_AND_RETURN_NULL;
    }

  /* ### Calculate the old style text_status value to make
     ### the tests pass. It is probably better to do this in
     ### the tigris package and then switch the apache package
     ### to three statuses. */
  jstring jUrl = NULL;
  jobject jNodeKind = NULL;
  jlong jRevision =
    org_apache_subversion_javahl_types_Revision_SVN_INVALID_REVNUM;
  jlong jLastChangedRevision =
    org_apache_subversion_javahl_types_Revision_SVN_INVALID_REVNUM;
  jlong jLastChangedDate = 0;
  jstring jLastCommitAuthor = NULL;
  jobject jLocalLock = NULL;
  jstring jChangelist = NULL;
  jstring jMovedFromAbspath = NULL;
  jstring jMovedToAbspath = NULL;

  enum svn_wc_status_kind text_status = status->node_status;

  /* Avoid using values that might come from prop changes */
  if (text_status == svn_wc_status_modified
      || text_status == svn_wc_status_conflicted)
    text_status = status->text_status;

  enum svn_wc_status_kind repos_text_status = status->repos_node_status;

  if (repos_text_status == svn_wc_status_modified
      || repos_text_status == svn_wc_status_conflicted)
    repos_text_status = status->repos_text_status;

  jboolean jIsConflicted = (status->conflicted == 1) ? JNI_TRUE : JNI_FALSE;
  jobject jTextType = EnumMapper::mapStatusKind(text_status);
  jobject jPropType = EnumMapper::mapStatusKind(status->prop_status);
  jobject jRepositoryTextType = EnumMapper::mapStatusKind(repos_text_status);
  jobject jRepositoryPropType = EnumMapper::mapStatusKind(
                                                  status->repos_prop_status);
  jboolean jIsCopied = (status->copied == 1) ? JNI_TRUE: JNI_FALSE;
  jboolean jIsLocked = (status->wc_is_locked == 1) ? JNI_TRUE: JNI_FALSE;
  jboolean jIsSwitched = (status->switched == 1) ? JNI_TRUE: JNI_FALSE;
  jboolean jIsFileExternal = (status->file_external == 1) ? JNI_TRUE
                                                          : JNI_FALSE;

  jstring jPath = JNIUtil::makeJString(status->local_abspath);
  if (JNIUtil::isJavaExceptionThrown())
    POP_AND_RETURN_NULL;

  jobject jReposLock = CreateJ::Lock(status->repos_lock);
  if (JNIUtil::isJavaExceptionThrown())
    POP_AND_RETURN_NULL;

  if (status->repos_root_url)
    {
      jUrl = JNIUtil::makeJString(svn_path_url_add_component2(
                                    status->repos_root_url,
                                    status->repos_relpath,
                                    pool));
      if (JNIUtil::isJavaExceptionThrown())
        POP_AND_RETURN_NULL;
    }

  jlong jOODLastCmtRevision = status->ood_changed_rev;



( run in 2.221 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )