Skip to content

Commit

Permalink
Cleanup. Apply autorelease pool properly.
Browse files Browse the repository at this point in the history
  • Loading branch information
dinhvh committed Jan 13, 2015
1 parent 6df0345 commit 7e08733
Show file tree
Hide file tree
Showing 55 changed files with 1,058 additions and 241 deletions.
1 change: 1 addition & 0 deletions example/android/AndroidExample/app/app.iml
Expand Up @@ -79,6 +79,7 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
Expand Down
Expand Up @@ -51,8 +51,6 @@ protected void onCreate(Bundle savedInstanceState) {
.findFragmentById(R.id.messageview_list))
.setActivateOnItemClick(true);
}

// TODO: If exposing deep links into your app, handle intents here.
}

/**
Expand Down
Expand Up @@ -14,7 +14,6 @@
import com.libmailcore.IMAPMessage;
import com.libmailcore.MailException;
import com.libmailcore.OperationCallback;
//import com.libmailcore.androidexample.dummy.DummyContent;
import com.libmailcore.IndexSet;
import com.libmailcore.IMAPMessagesRequestKind;
import com.libmailcore.Range;
Expand Down Expand Up @@ -184,7 +183,6 @@ private void updateResult() {
android.R.id.text1,
array);

// TODO: replace with a real list adapter.
setListAdapter(adapter);

}
Expand Down
33 changes: 27 additions & 6 deletions src/java/TypesUtils.h
Expand Up @@ -23,52 +23,73 @@
#define MC_JAVA_BRIDGE MC_JAVA_BRIDGE_internal(javaType, nativeType)

#define MC_JAVA_CONCAT(a, b) a ## b
//#define prefix MC_JAVA_CONCAT(prefix1, _)
//#define prefix(nativeType) Java_com_libmailcore_ ## nativeType ## _
#define prefixed_function(javaType, function_name) Java_com_libmailcore_ ## javaType ## _ ## function_name

#define MC_POOL_BEGIN AutoreleasePool * __pool = new AutoreleasePool();
#define MC_POOL_END __pool->release();

#define MC_JAVA_SYNTHESIZE_internal(type, javaType, setter, getter) \
JNIEXPORT jobject JNICALL prefixed_function(javaType, getter) (JNIEnv * env, jobject obj) \
{ \
return MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->getter()); \
MC_POOL_BEGIN; \
jobject result = MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->getter()); \
MC_POOL_END; \
return result; \
} \
\
JNIEXPORT void JNICALL prefixed_function(javaType, setter) (JNIEnv * env, jobject obj, jobject value) \
{ \
MC_POOL_BEGIN; \
MC_JAVA_NATIVE_INSTANCE->setter(MC_FROM_JAVA(type, value)); \
MC_POOL_END; \
}

#define MC_JAVA_SYNTHESIZE_STRING_internal(javaType, setter, getter) \
JNIEXPORT jstring JNICALL prefixed_function(javaType, getter) (JNIEnv * env, jobject obj) \
{ \
return (jstring) MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->getter()); \
MC_POOL_BEGIN; \
jobject result = MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->getter()); \
MC_POOL_END; \
return (jstring) result; \
} \
\
JNIEXPORT void JNICALL prefixed_function(javaType, setter) (JNIEnv * env, jobject obj, jstring value) \
{ \
MC_POOL_BEGIN; \
MC_JAVA_NATIVE_INSTANCE->setter(MC_FROM_JAVA(String, value)); \
MC_POOL_END; \
}

#define MC_JAVA_SYNTHESIZE_DATA_internal(javaType, setter, getter) \
JNIEXPORT jbyteArray JNICALL prefixed_function(javaType, getter) (JNIEnv * env, jobject obj) \
{ \
return (jbyteArray) MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->getter()); \
MC_POOL_BEGIN; \
jobject result = MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->getter()); \
MC_POOL_END; \
return (jbyteArray) result; \
} \
\
JNIEXPORT void JNICALL prefixed_function(javaType, setter) (JNIEnv * env, jobject obj, jbyteArray value) \
{ \
MC_POOL_BEGIN; \
MC_JAVA_NATIVE_INSTANCE->setter(MC_FROM_JAVA(Data, value)); \
MC_POOL_END; \
}

#define MC_JAVA_SYNTHESIZE_SCALAR_internal(javaScalarType, scalarType, javaType, setter, getter) \
JNIEXPORT javaScalarType JNICALL prefixed_function(javaType, getter) (JNIEnv * env, jobject obj) \
{ \
return (javaScalarType) MC_JAVA_NATIVE_INSTANCE->getter(); \
MC_POOL_BEGIN; \
javaScalarType result = (javaScalarType) MC_JAVA_NATIVE_INSTANCE->getter(); \
MC_POOL_END; \
return result; \
} \
\
JNIEXPORT void JNICALL prefixed_function(javaType, setter) (JNIEnv * env, jobject obj, javaScalarType value) \
{ \
MC_POOL_BEGIN; \
MC_JAVA_NATIVE_INSTANCE->setter((scalarType) value); \
MC_POOL_END; \
}

#define mc_quote(word) #word
Expand Down
25 changes: 20 additions & 5 deletions src/java/native/com_libmailcore_AbstractMessage.cpp
Expand Up @@ -16,29 +16,44 @@ MC_JAVA_SYNTHESIZE(MessageHeader, setHeader, header)
JNIEXPORT jobject JNICALL Java_com_libmailcore_AbstractMessage_partForContentID
(JNIEnv * env, jobject obj, jstring contentID)
{
return MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->partForContentID(MC_FROM_JAVA(String, contentID)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->partForContentID(MC_FROM_JAVA(String, contentID)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_AbstractMessage_partForUniqueID
(JNIEnv * env, jobject obj, jstring uniqueID)
{
return MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->partForUniqueID(MC_FROM_JAVA(String, uniqueID)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->partForUniqueID(MC_FROM_JAVA(String, uniqueID)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_AbstractMessage_attachments
(JNIEnv * env, jobject obj)
{
return MC_JAVA_BRIDGE_GET(attachments);
MC_POOL_BEGIN;
jobject result = MC_JAVA_BRIDGE_GET(attachments);
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_AbstractMessage_htmlInlineAttachments
(JNIEnv * env, jobject obj)
{
return MC_JAVA_BRIDGE_GET(htmlInlineAttachments);
MC_POOL_BEGIN;
jobject result = MC_JAVA_BRIDGE_GET(htmlInlineAttachments);
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_AbstractMessage_requiredPartsForRendering
(JNIEnv * env, jobject obj)
{
return MC_JAVA_BRIDGE_GET(requiredPartsForRendering);
MC_POOL_BEGIN;
jobject result = MC_JAVA_BRIDGE_GET(requiredPartsForRendering);
MC_POOL_END;
return result;
}
22 changes: 18 additions & 4 deletions src/java/native/com_libmailcore_AbstractPart.cpp
Expand Up @@ -21,29 +21,43 @@ MC_JAVA_SYNTHESIZE_SCALAR(jboolean, bool, setInlineAttachment, isInlineAttachmen
JNIEXPORT jobject JNICALL Java_com_libmailcore_AbstractPart_partForContentID
(JNIEnv * env, jobject obj, jstring contentID)
{
return MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->partForContentID(MC_FROM_JAVA(String, contentID)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->partForContentID(MC_FROM_JAVA(String, contentID)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_AbstractPart_partForUniqueID
(JNIEnv * env, jobject obj, jstring uniqueID)
{
return MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->partForUniqueID(MC_FROM_JAVA(String, uniqueID)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->partForUniqueID(MC_FROM_JAVA(String, uniqueID)));
MC_POOL_END;
return result;
}

JNIEXPORT void JNICALL Java_com_libmailcore_AbstractPart_setContentTypeParameter
(JNIEnv * env, jobject obj, jstring name, jstring value)
{
MC_POOL_BEGIN;
MC_JAVA_NATIVE_INSTANCE->setContentTypeParameter(MC_FROM_JAVA(String, name), MC_FROM_JAVA(String, value));
MC_POOL_END;
}

JNIEXPORT jstring JNICALL Java_com_libmailcore_AbstractPart_contentTypeParameterValueForName
(JNIEnv * env, jobject obj, jstring name)
{
return (jstring) MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->contentTypeParameterValueForName(MC_FROM_JAVA(String, name)));
MC_POOL_BEGIN;
jobject result = (jstring) MC_TO_JAVA(MC_JAVA_NATIVE_INSTANCE->contentTypeParameterValueForName(MC_FROM_JAVA(String, name)));
MC_POOL_END;
return (jstring) result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_AbstractPart_allContentTypeParametersNames
(JNIEnv * env, jobject obj)
{
return MC_JAVA_BRIDGE_GET(allContentTypeParametersNames);
MC_POOL_BEGIN;
jobject result = MC_JAVA_BRIDGE_GET(allContentTypeParametersNames);
MC_POOL_END;
return result;
}
50 changes: 40 additions & 10 deletions src/java/native/com_libmailcore_Address.cpp
Expand Up @@ -13,50 +13,74 @@ using namespace mailcore;
JNIEXPORT jobject JNICALL Java_com_libmailcore_Address_addressWithDisplayName
(JNIEnv * env, jclass cls, jstring displayName, jstring mailbox)
{
return MC_TO_JAVA(Address::addressWithDisplayName(MC_FROM_JAVA(String, displayName),
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Address::addressWithDisplayName(MC_FROM_JAVA(String, displayName),
MC_FROM_JAVA(String, mailbox)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Address_addressWithMailbox
(JNIEnv * env, jclass cls, jstring mailbox)
{
return MC_TO_JAVA(Address::addressWithMailbox(MC_FROM_JAVA(String, mailbox)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Address::addressWithMailbox(MC_FROM_JAVA(String, mailbox)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Address_addressWithRFC822String
(JNIEnv * env, jclass cls, jstring rfc822String)
{
return MC_TO_JAVA(Address::addressWithRFC822String(MC_FROM_JAVA(String, rfc822String)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Address::addressWithRFC822String(MC_FROM_JAVA(String, rfc822String)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Address_addressWithNonEncodedRFC822String
(JNIEnv * env, jclass cls, jstring rfc822String)
{
return MC_TO_JAVA(Address::addressWithNonEncodedRFC822String(MC_FROM_JAVA(String, rfc822String)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Address::addressWithNonEncodedRFC822String(MC_FROM_JAVA(String, rfc822String)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Address_addressesWithRFC822String
(JNIEnv * env, jclass cls, jstring rfc822String)
{
return MC_TO_JAVA(Address::addressesWithRFC822String(MC_FROM_JAVA(String, rfc822String)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Address::addressesWithRFC822String(MC_FROM_JAVA(String, rfc822String)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Address_addressesWithNonEncodedRFC822String
(JNIEnv * env, jclass cls, jstring rfc822String)
{
return MC_TO_JAVA(Address::addressesWithNonEncodedRFC822String(MC_FROM_JAVA(String, rfc822String)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Address::addressesWithNonEncodedRFC822String(MC_FROM_JAVA(String, rfc822String)));
MC_POOL_END;
return result;
}

JNIEXPORT jstring JNICALL Java_com_libmailcore_Address_RFC822StringForAddresses
(JNIEnv * env, jclass cls, jobject addresses)
{
return (jstring) MC_TO_JAVA(Address::RFC822StringForAddresses(MC_FROM_JAVA(Array, addresses)));
MC_POOL_BEGIN;
jobject result = (jstring) MC_TO_JAVA(Address::RFC822StringForAddresses(MC_FROM_JAVA(Array, addresses)));
MC_POOL_END;
return (jstring) result;
}

JNIEXPORT jstring JNICALL Java_com_libmailcore_Address_nonEncodedRFC822StringForAddresses
(JNIEnv * env, jclass cls, jobject addresses)
{
return (jstring) MC_TO_JAVA(Address::nonEncodedRFC822StringForAddresses(MC_FROM_JAVA(Array, addresses)));
MC_POOL_BEGIN;
jobject result = (jstring) MC_TO_JAVA(Address::nonEncodedRFC822StringForAddresses(MC_FROM_JAVA(Array, addresses)));
MC_POOL_END;
return (jstring) result;
}

MC_JAVA_SYNTHESIZE_STRING(setDisplayName, displayName)
Expand All @@ -65,13 +89,19 @@ MC_JAVA_SYNTHESIZE_STRING(setMailbox, mailbox)
JNIEXPORT jstring JNICALL Java_com_libmailcore_Address_RFC822String
(JNIEnv * env, jobject obj)
{
return MC_JAVA_BRIDGE_GET_STRING(RFC822String);
MC_POOL_BEGIN;
jstring result = MC_JAVA_BRIDGE_GET_STRING(RFC822String);
MC_POOL_END;
return result;
}

JNIEXPORT jstring JNICALL Java_com_libmailcore_Address_nonEncodedRFC822String
(JNIEnv * env, jobject obj)
{
return MC_JAVA_BRIDGE_GET_STRING(nonEncodedRFC822String);
MC_POOL_BEGIN;
jstring result = MC_JAVA_BRIDGE_GET_STRING(nonEncodedRFC822String);
MC_POOL_END;
return result;
}

MC_JAVA_BRIDGE
35 changes: 28 additions & 7 deletions src/java/native/com_libmailcore_Attachment.cpp
Expand Up @@ -13,45 +13,66 @@ using namespace mailcore;
JNIEXPORT jstring JNICALL Java_com_libmailcore_Attachment_mimeTypeForFilename
(JNIEnv * env, jclass javaClass, jstring filename)
{
return (jstring) MC_TO_JAVA(Attachment::mimeTypeForFilename(MC_FROM_JAVA(String, filename)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Attachment::mimeTypeForFilename(MC_FROM_JAVA(String, filename)));
MC_POOL_END;
return (jstring) result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Attachment_attachmentWithContentsOfFile
(JNIEnv * env, jclass javaClass, jstring filename)
{
return MC_TO_JAVA(Attachment::attachmentWithContentsOfFile(MC_FROM_JAVA(String, filename)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Attachment::attachmentWithContentsOfFile(MC_FROM_JAVA(String, filename)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Attachment_attachmentWithData
(JNIEnv * env, jclass javaClass, jstring filename, jbyteArray data)
{
return MC_TO_JAVA(Attachment::attachmentWithData(MC_FROM_JAVA(String, filename), MC_FROM_JAVA(Data, data)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Attachment::attachmentWithData(MC_FROM_JAVA(String, filename), MC_FROM_JAVA(Data, data)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Attachment_attachmentWithHTMLString
(JNIEnv * env, jclass javaClass, jstring htmlString)
{
return MC_TO_JAVA(Attachment::attachmentWithHTMLString(MC_FROM_JAVA(String, htmlString)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Attachment::attachmentWithHTMLString(MC_FROM_JAVA(String, htmlString)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Attachment_attachmentWithRFC822Message
(JNIEnv * env, jclass javaClass, jbyteArray data)
{
return MC_TO_JAVA(Attachment::attachmentWithRFC822Message(MC_FROM_JAVA(Data, data)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Attachment::attachmentWithRFC822Message(MC_FROM_JAVA(Data, data)));
MC_POOL_END;
return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_Attachment_attachmentWithText
(JNIEnv * env, jclass javaClass, jstring text)
{
return MC_TO_JAVA(Attachment::attachmentWithText(MC_FROM_JAVA(String, text)));
MC_POOL_BEGIN;
jobject result = MC_TO_JAVA(Attachment::attachmentWithText(MC_FROM_JAVA(String, text)));
MC_POOL_END;
return result;
}

MC_JAVA_SYNTHESIZE_DATA(setData, data)

JNIEXPORT jstring JNICALL Java_com_libmailcore_Attachment_decodedString
(JNIEnv * env, jobject obj)
{
return MC_JAVA_BRIDGE_GET_STRING(decodedString);
MC_POOL_BEGIN;
jstring result = MC_JAVA_BRIDGE_GET_STRING(decodedString);
MC_POOL_END;
return result;
}

MC_JAVA_BRIDGE

0 comments on commit 7e08733

Please sign in to comment.