aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ahad Birang <farnabaz@gmail.com>2018-06-18 04:35:52 +0430
committerGravatar HoĆ  V. DINH <dinh.viet.hoa@gmail.com>2018-06-17 17:05:52 -0700
commit6e035e8c9b068460b49a1c2090efd0330b3b0aa8 (patch)
tree6d05dcffb97d85af21f6d1d28303e0724e21ab5a
parent7c1c1f89c650f94c31865582b3d3bc0d464ccdec (diff)
add support for moveMessagesOperation to java library (#1749)
-rw-r--r--src/java/com/libmailcore/IMAPMoveMessagesOperation.java12
-rw-r--r--src/java/com/libmailcore/IMAPSession.java3
-rw-r--r--src/java/native/com_libmailcore_IMAPMoveMessagesOperation.cpp22
-rw-r--r--src/java/native/com_libmailcore_IMAPMoveMessagesOperation.h23
-rw-r--r--src/java/native/com_libmailcore_IMAPSession.cpp10
-rw-r--r--src/java/native/com_libmailcore_IMAPSession.h8
6 files changed, 78 insertions, 0 deletions
diff --git a/src/java/com/libmailcore/IMAPMoveMessagesOperation.java b/src/java/com/libmailcore/IMAPMoveMessagesOperation.java
new file mode 100644
index 00000000..eab74818
--- /dev/null
+++ b/src/java/com/libmailcore/IMAPMoveMessagesOperation.java
@@ -0,0 +1,12 @@
+package com.libmailcore;
+
+import java.util.Map;
+
+/** Operation to move IMAP messages. */
+public class IMAPMoveMessagesOperation extends IMAPOperation {
+ /**
+ Returns a map of the UIDs of the messages in the source folder to the UIDs of
+ the messages in the destination folder.
+ */
+ public native Map<Long,Long> uidMapping();
+}
diff --git a/src/java/com/libmailcore/IMAPSession.java b/src/java/com/libmailcore/IMAPSession.java
index 27ab8461..b5945308 100644
--- a/src/java/com/libmailcore/IMAPSession.java
+++ b/src/java/com/libmailcore/IMAPSession.java
@@ -160,6 +160,9 @@ public class IMAPSession extends NativeObject {
/** Returns an operation to copy messages to a folder. */
public native IMAPCopyMessagesOperation copyMessagesOperation(String folder, IndexSet uids, String destFolder);
+ /** Returns an operation to move messages to a folder. */
+ public native IMAPMoveMessagesOperation moveMessagesOperation(String folder, IndexSet uids, String destFolder);
+
/** Returns an operation to expunge messages after they've been marked as deleted. */
public native IMAPOperation expungeOperation(String folder);
diff --git a/src/java/native/com_libmailcore_IMAPMoveMessagesOperation.cpp b/src/java/native/com_libmailcore_IMAPMoveMessagesOperation.cpp
new file mode 100644
index 00000000..be6f974b
--- /dev/null
+++ b/src/java/native/com_libmailcore_IMAPMoveMessagesOperation.cpp
@@ -0,0 +1,22 @@
+#include "com_libmailcore_IMAPMoveMessagesOperation.h"
+
+#include "MCBaseTypes.h"
+#include "JavaHandle.h"
+#include "TypesUtils.h"
+#include "MCIMAPMoveMessagesOperation.h"
+
+using namespace mailcore;
+
+#define nativeType IMAPMoveMessagesOperation
+#define javaType nativeType
+
+JNIEXPORT jobject JNICALL Java_com_libmailcore_IMAPMoveMessagesOperation_uidMapping
+ (JNIEnv * env, jobject obj)
+{
+ MC_POOL_BEGIN;
+ jobject result = MC_JAVA_BRIDGE_GET(uidMapping);
+ MC_POOL_END;
+ return result;
+}
+
+MC_JAVA_BRIDGE
diff --git a/src/java/native/com_libmailcore_IMAPMoveMessagesOperation.h b/src/java/native/com_libmailcore_IMAPMoveMessagesOperation.h
new file mode 100644
index 00000000..d4dede64
--- /dev/null
+++ b/src/java/native/com_libmailcore_IMAPMoveMessagesOperation.h
@@ -0,0 +1,23 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_libmailcore_IMAPMoveMessagesOperation */
+
+#ifndef _Included_com_libmailcore_IMAPMoveMessagesOperation
+#define _Included_com_libmailcore_IMAPMoveMessagesOperation
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef com_libmailcore_IMAPMoveMessagesOperation_serialVersionUID
+#define com_libmailcore_IMAPMoveMessagesOperation_serialVersionUID 1LL
+/*
+ * Class: com_libmailcore_IMAPMoveMessagesOperation
+ * Method: uidMapping
+ * Signature: ()Ljava/util/Map;
+ */
+JNIEXPORT jobject JNICALL Java_com_libmailcore_IMAPMoveMessagesOperation_uidMapping
+ (JNIEnv *, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/java/native/com_libmailcore_IMAPSession.cpp b/src/java/native/com_libmailcore_IMAPSession.cpp
index 59422f35..8be3a37f 100644
--- a/src/java/native/com_libmailcore_IMAPSession.cpp
+++ b/src/java/native/com_libmailcore_IMAPSession.cpp
@@ -175,6 +175,16 @@ JNIEXPORT jobject JNICALL Java_com_libmailcore_IMAPSession_copyMessagesOperation
return result;
}
+JNIEXPORT jobject JNICALL Java_com_libmailcore_IMAPSession_moveMessagesOperation
+ (JNIEnv * env, jobject obj, jstring sourcePath, jobject uids, jstring destPath)
+{
+ MC_POOL_BEGIN;
+ jobject result = MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->moveMessagesOperation(MC_FROM_JAVA(String, sourcePath),
+ MC_FROM_JAVA(IndexSet, uids), MC_FROM_JAVA(String, destPath)));
+ MC_POOL_END;
+ return result;
+}
+
JNIEXPORT jobject JNICALL Java_com_libmailcore_IMAPSession_expungeOperation
(JNIEnv * env, jobject obj, jstring path)
{
diff --git a/src/java/native/com_libmailcore_IMAPSession.h b/src/java/native/com_libmailcore_IMAPSession.h
index 8d6ee73c..2ed1f374 100644
--- a/src/java/native/com_libmailcore_IMAPSession.h
+++ b/src/java/native/com_libmailcore_IMAPSession.h
@@ -331,6 +331,14 @@ JNIEXPORT jobject JNICALL Java_com_libmailcore_IMAPSession_copyMessagesOperation
/*
* Class: com_libmailcore_IMAPSession
+ * Method: moveMessagesOperation
+ * Signature: (Ljava/lang/String;Lcom/libmailcore/IndexSet;Ljava/lang/String;)Lcom/libmailcore/IMAPMoveMessagesOperation;
+ */
+JNIEXPORT jobject JNICALL Java_com_libmailcore_IMAPSession_moveMessagesOperation
+ (JNIEnv *, jobject, jstring, jobject, jstring);
+
+/*
+ * Class: com_libmailcore_IMAPSession
* Method: expungeOperation
* Signature: (Ljava/lang/String;)Lcom/libmailcore/IMAPOperation;
*/