Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters, source and symbol, as opposed to a single string currently found in the MamaPublisher
class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you.
Please refer to http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
|
|
Glenn McClements <gmcclements@...>
Thanks Chad.
For consistency though with the C++ interface, it should be (publisher, topic, source), not (publisher, source, topic).
Also consider replacing/extending the existing JNI _create()
function rather than having two. This reduces code duplication and you already check for a NULL source being passed down so it should handle both Java methods.
Glenn
Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters, source and symbol, as opposed to a single string currently found in the MamaPublisher
class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction.
All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of
the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received
this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This message may contain confidential information and is intended for specific recipients unless explicitly noted otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of Intercontinental Exchange, Inc. (ICE), Euronext or any of their subsidiaries or affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message is desired.
|
|
Hi Glenn,
I have applied the changes you recommended and created a new patch. Please see attached.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..aa1c4c6 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -76,40 +76,47 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _create
- * Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
- (JNIEnv* env, jobject this, jobject transport, jstring topic)
+ (JNIEnv* env, jobject this, jobject transport, jstring topic, jstring source)
{
- mamaPublisher cPublisher = NULL;
+ mamaPublisher cPublisher = NULL;
mamaTransport cTransport = NULL;
- const char* cTopic = NULL;
+ const char* cSource = NULL;
+ const char* cTopic = NULL;
jlong transportPointer = 0;
mama_status status = MAMA_STATUS_OK;
char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
-
/*Get the transport pointer*/
assert(transport!=NULL);
transportPointer = (*env)->GetLongField(env, transport,
transportPointerFieldId_g);
+
cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
- assert(transportPointer!=0);
+ assert(transportPointer!=0);
/*Get the char* from the jstring*/
if(NULL!=topic)
{
cTopic = (*env)->GetStringUTFChars(env,topic,0);
if(!cTopic)return;
}
-
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+
if(MAMA_STATUS_OK!=(mamaPublisher_create(
&cPublisher,
cTransport,
cTopic,
- NULL,
+ cSource,
NULL)))
{
- if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
utils_buildErrorStringForStatus(
errorString, UTILS_MAX_ERROR_STRING_LENGTH,
"Failed to create publisher.", status);
@@ -121,6 +128,7 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
CAST_POINTER_TO_JLONG(cPublisher));
if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
return;
}
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..31bb1f5 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -34,10 +34,15 @@ public class MamaPublisher
/*A long value containing a pointer to the underlying C publisher structure*/
private long publisherPointer_i = 0;
+
+ public void create (MamaTransport transport, String topic)
+ {
+ _create(transport,topic,null);
+ }
- public void create (MamaTransport transport, String topic)
+ public void create (MamaTransport transport, String topic, String source)
{
- _create(transport,topic);
+ _create(transport,topic,source);
}
public void send (MamaMsg msg)
@@ -76,7 +81,7 @@ public class MamaPublisher
_sendFromInbox(inbox,msg);
}
- private native void _create (MamaTransport transport, String topic);
+ private native void _create (MamaTransport transport, String topic, String source);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
toggle quoted message
Show quoted text
From: Glenn McClements [mailto:gmcclements@...]
Sent: Monday, September 08, 2014 7:14 AM
To: Meyer, Chad J; openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
For consistency though with the C++ interface, it should be (publisher, topic, source), not (publisher, source, topic).
Also consider replacing/extending the existing JNI _create()
function rather than having two. This reduces code duplication and you already check for a NULL source being passed down so it should handle both Java methods.
Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters, source and symbol, as opposed to a single string currently
found in the MamaPublisher class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as
an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of
JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified
that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect
any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage
arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This message may contain confidential information and is intended for specific recipients unless explicitly noted otherwise. If you have reason to believe you are
not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of Intercontinental Exchange, Inc. (ICE), Euronext or any of their subsidiaries or affiliates, and does not constitute a contract
or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message is desired.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you.
Please refer to http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
|
|
Hi Glenn,
I have applied the changes you recommended and created a new patch. Please see attached.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..aa1c4c6 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -76,40 +76,47 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _create
- * Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
- (JNIEnv* env, jobject this, jobject transport, jstring topic)
+ (JNIEnv* env, jobject this, jobject transport, jstring topic, jstring source)
{
- mamaPublisher cPublisher = NULL;
+ mamaPublisher cPublisher = NULL;
mamaTransport cTransport = NULL;
- const char* cTopic = NULL;
+ const char* cSource = NULL;
+ const char* cTopic = NULL;
jlong transportPointer = 0;
mama_status status = MAMA_STATUS_OK;
char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
-
/*Get the transport pointer*/
assert(transport!=NULL);
transportPointer = (*env)->GetLongField(env, transport,
transportPointerFieldId_g);
+
cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
- assert(transportPointer!=0);
+ assert(transportPointer!=0);
/*Get the char* from the jstring*/
if(NULL!=topic)
{
cTopic = (*env)->GetStringUTFChars(env,topic,0);
if(!cTopic)return;
}
-
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+
if(MAMA_STATUS_OK!=(mamaPublisher_create(
&cPublisher,
cTransport,
cTopic,
- NULL,
+ cSource,
NULL)))
{
- if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
utils_buildErrorStringForStatus(
errorString, UTILS_MAX_ERROR_STRING_LENGTH,
"Failed to create publisher.", status);
@@ -121,6 +128,7 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
CAST_POINTER_TO_JLONG(cPublisher));
if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
return;
}
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..31bb1f5 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -34,10 +34,15 @@ public class MamaPublisher
/*A long value containing a pointer to the underlying C publisher structure*/
private long publisherPointer_i = 0;
+
+ public void create (MamaTransport transport, String topic)
+ {
+ _create(transport,topic,null);
+ }
- public void create (MamaTransport transport, String topic)
+ public void create (MamaTransport transport, String topic, String source)
{
- _create(transport,topic);
+ _create(transport,topic,source);
}
public void send (MamaMsg msg)
@@ -76,7 +81,7 @@ public class MamaPublisher
_sendFromInbox(inbox,msg);
}
- private native void _create (MamaTransport transport, String topic);
+ private native void _create (MamaTransport transport, String topic, String source);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Regards,
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
toggle quoted message
Show quoted text
From: Glenn McClements [mailto:gmcclements@...]
Sent: Monday, September 08, 2014 7:14 AM
To: Meyer, Chad J; openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
For consistency though with the C++ interface, it should be (publisher, topic, source), not (publisher, source, topic).
Also consider replacing/extending the existing JNI _create()
function rather than having two. This reduces code duplication and you already check for a NULL source being passed down so it should handle both Java methods.
Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters, source and symbol, as opposed to a single string currently
found in the MamaPublisher class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as
an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of
JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified
that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect
any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage
arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This message may contain confidential information and is intended for specific recipients unless explicitly noted otherwise. If you have reason to believe you are
not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of Intercontinental Exchange, Inc. (ICE), Euronext or any of their subsidiaries or affiliates, and does not constitute a contract
or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message is desired.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you.
Please refer to http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
|
|
Cheers for the new patch Chad, looks good.
At this stage we really need two things to progress getting this into OpenMAMA - firstly, can you raise a Bugzilla ticket, just to make it a bit easier to track the progress of the patch. Secondly, can you provide some evidence of testing? Generally we'd ask for unit tests, but the Java framework needs a bit of work, so in this case can you show a simple example application which demonstrates the usage of the new API?
Thanks again for the contribution.
Damian
toggle quoted message
Show quoted text
On Mon, Sep 15, 2014 at 3:31 PM, Meyer, Chad J <chad.j.meyer@...> wrote:
Hi Glenn,
I have applied the changes you recommended and created a new patch. Please see attached.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..aa1c4c6 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -76,40 +76,47 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _create
- * Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
- (JNIEnv* env, jobject this, jobject transport, jstring topic)
+ (JNIEnv* env, jobject this, jobject transport, jstring topic, jstring source)
{
- mamaPublisher cPublisher = NULL;
+ mamaPublisher cPublisher = NULL;
mamaTransport cTransport = NULL;
- const char* cTopic = NULL;
+ const char* cSource = NULL;
+ const char* cTopic = NULL;
jlong transportPointer = 0;
mama_status status = MAMA_STATUS_OK;
char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
-
/*Get the transport pointer*/
assert(transport!=NULL);
transportPointer = (*env)->GetLongField(env, transport,
transportPointerFieldId_g);
+
cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
- assert(transportPointer!=0);
+ assert(transportPointer!=0);
/*Get the char* from the jstring*/
if(NULL!=topic)
{
cTopic = (*env)->GetStringUTFChars(env,topic,0);
if(!cTopic)return;
}
-
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+
if(MAMA_STATUS_OK!=(mamaPublisher_create(
&cPublisher,
cTransport,
cTopic,
- NULL,
+ cSource,
NULL)))
{
- if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
utils_buildErrorStringForStatus(
errorString, UTILS_MAX_ERROR_STRING_LENGTH,
"Failed to create publisher.", status);
@@ -121,6 +128,7 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
CAST_POINTER_TO_JLONG(cPublisher));
if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
return;
}
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..31bb1f5 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -34,10 +34,15 @@ public class MamaPublisher
/*A long value containing a pointer to the underlying C publisher structure*/
private long publisherPointer_i = 0;
+
+ public void create (MamaTransport transport, String topic)
+ {
+ _create(transport,topic,null);
+ }
- public void create (MamaTransport transport, String topic)
+ public void create (MamaTransport transport, String topic, String source)
{
- _create(transport,topic);
+ _create(transport,topic,source);
}
public void send (MamaMsg msg)
@@ -76,7 +81,7 @@ public class MamaPublisher
_sendFromInbox(inbox,msg);
}
- private native void _create (MamaTransport transport, String topic);
+ private native void _create (MamaTransport transport, String topic, String source);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Regards,
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
From: Glenn McClements [mailto:gmcclements@...]
Sent: Monday, September 08, 2014 7:14 AM
To: Meyer, Chad J; openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
For consistency though with the C++ interface, it should be (publisher, topic, source), not (publisher, source, topic).
Also consider replacing/extending the existing JNI _create()
function rather than having two. This reduces code duplication and you already check for a NULL source being passed down so it should handle both Java methods.
Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters, source and symbol, as opposed to a single string currently
found in the MamaPublisher class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as
an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of
JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified
that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect
any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage
arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This message may contain confidential information and is intended for specific recipients unless explicitly noted otherwise. If you have reason to believe you are
not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of Intercontinental Exchange, Inc. (ICE), Euronext or any of their subsidiaries or affiliates, and does not constitute a contract
or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message is desired.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you.
Please refer to http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
_______________________________________________
Openmama-dev mailing list
Openmama-dev@...
https://lists.openmama.org/mailman/listinfo/openmama-dev
|
|
Hey Chad,
I was just taking a look over this again, and decided that I'd stick it into Bugzilla to keep track of it there. If you'd like to sign up for an account you can add yourself as a CC to BZ164. We can follow up with any other required information there (though the main thing outstanding remains some evidence of testing, as mentioned in my previous mail).
Cheers,
Damian
toggle quoted message
Show quoted text
On Thu, Sep 18, 2014 at 11:56 AM, Damian Maguire <damian@...> wrote: Cheers for the new patch Chad, looks good.
At this stage we really need two things to progress getting this into OpenMAMA - firstly, can you raise a Bugzilla ticket, just to make it a bit easier to track the progress of the patch. Secondly, can you provide some evidence of testing? Generally we'd ask for unit tests, but the Java framework needs a bit of work, so in this case can you show a simple example application which demonstrates the usage of the new API?
Thanks again for the contribution.
Damian
|
|
Hi Damian,
Added comments about a week ago to the Bugzilla ticket referenced below regarding what I did for testing. Please let me know if you need more evidence of testing.
Regards,
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan
| 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
toggle quoted message
Show quoted text
From: Damian Maguire [mailto:damian@...]
Sent: Thursday, September 25, 2014 10:09 AM
To: Meyer, Chad J
Cc: Glenn McClements; openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
Hey Chad,
I was just taking a look over this again, and decided that I'd stick it into Bugzilla to keep track of it there. If you'd like to sign up for an account you can add yourself as a CC to
BZ164. We can follow up with any other required information there (though the main thing outstanding remains some evidence of testing, as mentioned in my previous mail).
On Thu, Sep 18, 2014 at 11:56 AM, Damian Maguire <damian@...> wrote:
Cheers for the new patch Chad, looks good.
At this stage we really need two things to progress getting this into OpenMAMA - firstly, can you raise a
Bugzilla ticket, just to make it a bit easier to track the progress of the patch. Secondly, can you provide some evidence of testing? Generally we'd ask for unit tests, but the Java framework needs a bit
of work, so in this case can you show a simple example application which demonstrates the usage of the new API?
Thanks again for the contribution.
Hi Glenn,
I have applied the changes you recommended and created a new patch. Please see attached.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..aa1c4c6 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -76,40 +76,47 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _create
- * Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
- (JNIEnv* env, jobject this, jobject transport, jstring topic)
+ (JNIEnv* env, jobject this, jobject transport, jstring topic, jstring source)
{
- mamaPublisher cPublisher = NULL;
+ mamaPublisher cPublisher = NULL;
mamaTransport cTransport = NULL;
- const char* cTopic = NULL;
+ const char* cSource = NULL;
+ const char* cTopic = NULL;
jlong transportPointer = 0;
mama_status status = MAMA_STATUS_OK;
char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
-
/*Get the transport pointer*/
assert(transport!=NULL);
transportPointer = (*env)->GetLongField(env, transport,
transportPointerFieldId_g);
+
cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
- assert(transportPointer!=0);
+ assert(transportPointer!=0);
/*Get the char* from the jstring*/
if(NULL!=topic)
{
cTopic = (*env)->GetStringUTFChars(env,topic,0);
if(!cTopic)return;
}
-
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+
if(MAMA_STATUS_OK!=(mamaPublisher_create(
&cPublisher,
cTransport,
cTopic,
- NULL,
+ cSource,
NULL)))
{
- if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
utils_buildErrorStringForStatus(
errorString, UTILS_MAX_ERROR_STRING_LENGTH,
"Failed to create publisher.", status);
@@ -121,6 +128,7 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
CAST_POINTER_TO_JLONG(cPublisher));
if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
return;
}
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..31bb1f5 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -34,10 +34,15 @@ public class MamaPublisher
/*A long value containing a pointer to the underlying C publisher structure*/
private long publisherPointer_i = 0;
+
+ public void create (MamaTransport transport, String topic)
+ {
+ _create(transport,topic,null);
+ }
- public void create (MamaTransport transport, String topic)
+ public void create (MamaTransport transport, String topic, String source)
{
- _create(transport,topic);
+ _create(transport,topic,source);
}
public void send (MamaMsg msg)
@@ -76,7 +81,7 @@ public class MamaPublisher
_sendFromInbox(inbox,msg);
}
- private native void _create (MamaTransport transport, String topic);
+ private native void _create (MamaTransport transport, String topic, String source);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Regards,
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel:
(718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
From: Glenn McClements [mailto:gmcclements@...]
Sent: Monday, September 08, 2014 7:14 AM
To: Meyer, Chad J;
openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
For consistency though with the C++ interface, it should be (publisher, topic, source), not (publisher, source, topic).
Also consider replacing/extending the existing JNI _create()
function rather than having two. This reduces code duplication and you already check for a NULL source being passed down so it should
handle both Java methods.
Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters,
source and symbol, as opposed to a single string currently found in the MamaPublisher class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel:
(718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as
an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of
JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified
that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect
any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage
arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This message may contain confidential information and is intended for specific recipients unless explicitly
noted otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of Intercontinental Exchange, Inc. (ICE), Euronext or any of their subsidiaries
or affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding
message is desired.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market
prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of
the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received
this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
_______________________________________________
Openmama-dev mailing list
Openmama-dev@...
https://lists.openmama.org/mailman/listinfo/openmama-dev
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you.
Please refer to http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
|
|
Damian Maguire <d.maguire@...>
Thanks for the ping Chad, I'll get looking at this as soon as I can and let you know if we have any questions.
Cheers,
Damian
On 23/10/14 15:10, Meyer, Chad J wrote:
toggle quoted message
Show quoted text
Hi Damian,
Added comments about a week ago to the Bugzilla ticket referenced below regarding what I did for testing. Please let me know if you need more evidence of testing.
Regards,
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan| 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
From: Damian Maguire [mailto:damian@...]
Sent: Thursday, September 25, 2014 10:09 AM
To: Meyer, Chad J
Cc: Glenn McClements;
openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
Hey Chad,
I was just taking a look over this again, and decided that I'd stick it into Bugzilla to keep track of it there. If you'd like to sign up for an account you can add yourself as a CC to
BZ164. We can follow up with any other required information there (though the main thing outstanding remains some evidence of testing, as mentioned in my previous mail).
On Thu, Sep 18, 2014 at 11:56 AM, Damian Maguire <damian@...> wrote:
Cheers for the new patch Chad, looks good.
At this stage we really need two things to progress getting this into OpenMAMA - firstly, can you raise a
Bugzilla ticket, just to make it a bit easier to track the progress of the patch. Secondly, can you provide some evidence of testing? Generally we'd ask for unit tests, but the Java
framework needs a bit of work, so in this case can you show a simple example application which demonstrates the usage of the new API?
Thanks again for the contribution.
Hi Glenn,
I have applied the changes you recommended and created a new patch. Please see attached.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..aa1c4c6 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -76,40 +76,47 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _create
- * Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
- (JNIEnv* env, jobject this, jobject transport, jstring topic)
+ (JNIEnv* env, jobject this, jobject transport, jstring topic, jstring source)
{
- mamaPublisher cPublisher = NULL;
+ mamaPublisher cPublisher = NULL;
mamaTransport cTransport = NULL;
- const char* cTopic = NULL;
+ const char* cSource = NULL;
+ const char* cTopic = NULL;
jlong transportPointer = 0;
mama_status status = MAMA_STATUS_OK;
char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
-
/*Get the transport pointer*/
assert(transport!=NULL);
transportPointer = (*env)->GetLongField(env, transport,
transportPointerFieldId_g);
+
cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
- assert(transportPointer!=0);
+ assert(transportPointer!=0);
/*Get the char* from the jstring*/
if(NULL!=topic)
{
cTopic = (*env)->GetStringUTFChars(env,topic,0);
if(!cTopic)return;
}
-
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+
if(MAMA_STATUS_OK!=(mamaPublisher_create(
&cPublisher,
cTransport,
cTopic,
- NULL,
+ cSource,
NULL)))
{
- if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
utils_buildErrorStringForStatus(
errorString, UTILS_MAX_ERROR_STRING_LENGTH,
"Failed to create publisher.", status);
@@ -121,6 +128,7 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
CAST_POINTER_TO_JLONG(cPublisher));
if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
return;
}
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..31bb1f5 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -34,10 +34,15 @@ public class MamaPublisher
/*A long value containing a pointer to the underlying C publisher structure*/
private long publisherPointer_i = 0;
+
+ public void create (MamaTransport transport, String topic)
+ {
+ _create(transport,topic,null);
+ }
- public void create (MamaTransport transport, String topic)
+ public void create (MamaTransport transport, String topic, String source)
{
- _create(transport,topic);
+ _create(transport,topic,source);
}
public void send (MamaMsg msg)
@@ -76,7 +81,7 @@ public class MamaPublisher
_sendFromInbox(inbox,msg);
}
- private native void _create (MamaTransport transport, String topic);
+ private native void _create (MamaTransport transport, String topic, String source);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Regards,
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel:
(718) 242-5165 | M:
(215) 801-2606 |
chad.j.meyer@...
From: Glenn McClements [mailto:gmcclements@...]
Sent: Monday, September 08, 2014 7:14 AM
To: Meyer, Chad J;
openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
For consistency though with the C++ interface, it should be (publisher, topic, source), not (publisher, source, topic).
Also consider replacing/extending the existing JNI _create()
function rather than having two. This reduces code duplication and you already check for a NULL source being passed down so it should
handle both Java methods.
Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters,
source and symbol, as opposed to a single string currently found in the MamaPublisher class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel:
(718) 242-5165 | M:
(215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as
an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of
JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified
that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect
any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage
arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This message may contain confidential information and is intended for specific recipients unless explicitly
noted otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of Intercontinental Exchange, Inc. (ICE), Euronext or any of their subsidiaries
or affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding
message is desired.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market
prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of
the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received
this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
_______________________________________________
Openmama-dev mailing list
Openmama-dev@...
https://lists.openmama.org/mailman/listinfo/openmama-dev
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction.
All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of
the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received
this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
|
|
Hi Damian,
I have attached a patch in the bugzilla ticket containing a new JUnit test case for testing the new create method.
Regards,
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan
| 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
toggle quoted message
Show quoted text
From: Damian Maguire [mailto:d.maguire@...]
Sent: Thursday, October 23, 2014 10:34 AM
To: Meyer, Chad J; Damian Maguire
Cc: openmama-dev@...; Glenn McClements
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
Thanks for the ping Chad, I'll get looking at this as soon as I can and let you know if we have any questions.
Cheers,
Damian
On 23/10/14 15:10, Meyer, Chad J wrote:
Hi Damian,
Added comments about a week ago to the Bugzilla ticket referenced below regarding what I did for testing. Please let me know if you need more evidence of testing.
Regards,
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan| 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
From: Damian Maguire [mailto:damian@...]
Sent: Thursday, September 25, 2014 10:09 AM
To: Meyer, Chad J
Cc: Glenn McClements; openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
Hey Chad,
I was just taking a look over this again, and decided that I'd stick it into Bugzilla to keep track of it there. If you'd like to sign up for an account you can add yourself as a CC to
BZ164. We can follow up with any other required information there (though the main thing outstanding remains some evidence of testing, as mentioned in my previous mail).
On Thu, Sep 18, 2014 at 11:56 AM, Damian Maguire <damian@...> wrote:
Cheers for the new patch Chad, looks good.
At this stage we really need two things to progress getting this into OpenMAMA - firstly, can you raise a
Bugzilla ticket, just to make it a bit easier to track the progress of the patch. Secondly, can you provide some evidence of testing? Generally we'd ask for unit tests, but the Java framework needs a bit
of work, so in this case can you show a simple example application which demonstrates the usage of the new API?
Thanks again for the contribution.
Hi Glenn,
I have applied the changes you recommended and created a new patch. Please see attached.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..aa1c4c6 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -76,40 +76,47 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _create
- * Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
- (JNIEnv* env, jobject this, jobject transport, jstring topic)
+ (JNIEnv* env, jobject this, jobject transport, jstring topic, jstring source)
{
- mamaPublisher cPublisher = NULL;
+ mamaPublisher cPublisher = NULL;
mamaTransport cTransport = NULL;
- const char* cTopic = NULL;
+ const char* cSource = NULL;
+ const char* cTopic = NULL;
jlong transportPointer = 0;
mama_status status = MAMA_STATUS_OK;
char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
-
/*Get the transport pointer*/
assert(transport!=NULL);
transportPointer = (*env)->GetLongField(env, transport,
transportPointerFieldId_g);
+
cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
- assert(transportPointer!=0);
+ assert(transportPointer!=0);
/*Get the char* from the jstring*/
if(NULL!=topic)
{
cTopic = (*env)->GetStringUTFChars(env,topic,0);
if(!cTopic)return;
}
-
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+
if(MAMA_STATUS_OK!=(mamaPublisher_create(
&cPublisher,
cTransport,
cTopic,
- NULL,
+ cSource,
NULL)))
{
- if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
utils_buildErrorStringForStatus(
errorString, UTILS_MAX_ERROR_STRING_LENGTH,
"Failed to create publisher.", status);
@@ -121,6 +128,7 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
CAST_POINTER_TO_JLONG(cPublisher));
if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
return;
}
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..31bb1f5 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -34,10 +34,15 @@ public class MamaPublisher
/*A long value containing a pointer to the underlying C publisher structure*/
private long publisherPointer_i = 0;
+
+ public void create (MamaTransport transport, String topic)
+ {
+ _create(transport,topic,null);
+ }
- public void create (MamaTransport transport, String topic)
+ public void create (MamaTransport transport, String topic, String source)
{
- _create(transport,topic);
+ _create(transport,topic,source);
}
public void send (MamaMsg msg)
@@ -76,7 +81,7 @@ public class MamaPublisher
_sendFromInbox(inbox,msg);
}
- private native void _create (MamaTransport transport, String topic);
+ private native void _create (MamaTransport transport, String topic, String source);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Regards,
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel:
(718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
From: Glenn McClements [mailto:gmcclements@...]
Sent: Monday, September 08, 2014 7:14 AM
To: Meyer, Chad J;
openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
For consistency though with the C++ interface, it should be (publisher, topic, source), not (publisher, source, topic).
Also consider replacing/extending the existing JNI _create()
function rather than having two. This reduces code duplication and you already check for a NULL source being passed down so it should handle both
Java methods.
Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters, source and symbol, as opposed
to a single string currently found in the MamaPublisher class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel:
(718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official
confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase
& Co., its subsidiaries and affiliates. This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure,
copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system
into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any
way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This message may contain confidential information and is intended for specific recipients unless explicitly noted
otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of Intercontinental Exchange, Inc. (ICE), Euronext or any of their subsidiaries or
affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message
is desired.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices,
data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission
may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained
herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility
of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error,
please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
_______________________________________________
Openmama-dev mailing list
Openmama-dev@...
https://lists.openmama.org/mailman/listinfo/openmama-dev
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices,
data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission
may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained
herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility
of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error,
please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you.
Please refer to http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
|
|
Damian Maguire <d.maguire@...>
Thanks Chad, we'll take a look.
D
On 28/10/14 19:43, Meyer, Chad J wrote:
toggle quoted message
Show quoted text
Hi Damian,
I have attached a patch in the bugzilla ticket containing a new JUnit test case for testing the new create method.
Regards,
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan| 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
From: Damian Maguire [mailto:d.maguire@...]
Sent: Thursday, October 23, 2014 10:34 AM
To: Meyer, Chad J; Damian Maguire
Cc:
openmama-dev@...; Glenn McClements
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
Thanks for the ping Chad, I'll get looking at this as soon as I can and let you know if we have any questions.
Cheers,
Damian
On 23/10/14 15:10, Meyer, Chad J wrote:
Hi Damian,
Added comments about a week ago to the Bugzilla ticket referenced below regarding what I did for testing. Please let me know if you need more evidence of testing.
Regards,
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan| 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel: (718) 242-5165 | M: (215) 801-2606 |
chad.j.meyer@...
From: Damian Maguire [mailto:damian@...]
Sent: Thursday, September 25, 2014 10:09 AM
To: Meyer, Chad J
Cc: Glenn McClements;
openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
Hey Chad,
I was just taking a look over this again, and decided that I'd stick it into Bugzilla to keep track of it there. If you'd like to sign up for an account you can add yourself as a CC to
BZ164. We can follow up with any other required information there (though the main thing outstanding remains some evidence of testing, as mentioned in my previous mail).
On Thu, Sep 18, 2014 at 11:56 AM, Damian Maguire <damian@...> wrote:
Cheers for the new patch Chad, looks good.
At this stage we really need two things to progress getting this into OpenMAMA - firstly, can you raise a
Bugzilla ticket, just to make it a bit easier to track the progress of the patch. Secondly, can you provide some evidence of testing? Generally we'd ask for unit tests, but the Java
framework needs a bit of work, so in this case can you show a simple example application which demonstrates the usage of the new API?
Thanks again for the contribution.
Hi Glenn,
I have applied the changes you recommended and created a new patch. Please see attached.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..aa1c4c6 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -76,40 +76,47 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _create
- * Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
- (JNIEnv* env, jobject this, jobject transport, jstring topic)
+ (JNIEnv* env, jobject this, jobject transport, jstring topic, jstring source)
{
- mamaPublisher cPublisher = NULL;
+ mamaPublisher cPublisher = NULL;
mamaTransport cTransport = NULL;
- const char* cTopic = NULL;
+ const char* cSource = NULL;
+ const char* cTopic = NULL;
jlong transportPointer = 0;
mama_status status = MAMA_STATUS_OK;
char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
-
/*Get the transport pointer*/
assert(transport!=NULL);
transportPointer = (*env)->GetLongField(env, transport,
transportPointerFieldId_g);
+
cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
- assert(transportPointer!=0);
+ assert(transportPointer!=0);
/*Get the char* from the jstring*/
if(NULL!=topic)
{
cTopic = (*env)->GetStringUTFChars(env,topic,0);
if(!cTopic)return;
}
-
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+
if(MAMA_STATUS_OK!=(mamaPublisher_create(
&cPublisher,
cTransport,
cTopic,
- NULL,
+ cSource,
NULL)))
{
- if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
utils_buildErrorStringForStatus(
errorString, UTILS_MAX_ERROR_STRING_LENGTH,
"Failed to create publisher.", status);
@@ -121,6 +128,7 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
CAST_POINTER_TO_JLONG(cPublisher));
if(cTopic)(*env)->ReleaseStringUTFChars(env,topic, cTopic);
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
return;
}
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..31bb1f5 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -34,10 +34,15 @@ public class MamaPublisher
/*A long value containing a pointer to the underlying C publisher structure*/
private long publisherPointer_i = 0;
+
+ public void create (MamaTransport transport, String topic)
+ {
+ _create(transport,topic,null);
+ }
- public void create (MamaTransport transport, String topic)
+ public void create (MamaTransport transport, String topic, String source)
{
- _create(transport,topic);
+ _create(transport,topic,source);
}
public void send (MamaMsg msg)
@@ -76,7 +81,7 @@ public class MamaPublisher
_sendFromInbox(inbox,msg);
}
- private native void _create (MamaTransport transport, String topic);
+ private native void _create (MamaTransport transport, String topic, String source);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Regards,
Chad Meyer
|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel:
(718) 242-5165 | M:
(215) 801-2606 |
chad.j.meyer@...
From: Glenn McClements [mailto:gmcclements@...]
Sent: Monday, September 08, 2014 7:14 AM
To: Meyer, Chad J;
openmama-dev@...
Subject: Re: [Openmama-dev] [PATCH 2.3.1] MamaPublisher: Overloaded MamaPublisher create method
For consistency though with the C++ interface, it should be (publisher, topic, source), not (publisher, source, topic).
Also consider replacing/extending the existing JNI _create()
function rather than having two. This reduces code duplication and you already check for a NULL source being passed down so it should handle both
Java methods.
Hi,
Attached is a patch for OpenMAMA JNI that overloads the MamaPublisher create method. For consistency purposes, the new method requires two String parameters, source and symbol, as opposed
to a single string currently found in the MamaPublisher class.
diff --git a/mama/jni/src/c/mamapublisherjni.c b/mama/jni/src/c/mamapublisherjni.c
index 518bacf..629a51b 100644
--- a/mama/jni/src/c/mamapublisherjni.c
+++ b/mama/jni/src/c/mamapublisherjni.c
@@ -78,7 +78,7 @@ static void MAMACALLTYPE sendCompleteCB (mamaPublisher publisher,
* Method: _create
* Signature: (Lcom/wombat/mama/Transport;Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2
(JNIEnv* env, jobject this, jobject transport, jstring topic)
{
mamaPublisher cPublisher = NULL;
@@ -125,6 +125,66 @@ JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create
return;
}
+ /*
+ * Class: com_wombat_mama_MamaPublisher
+ * Method: _create
+ * Signature: (Lcom/wombat/mama/MamaTransport;Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_wombat_mama_MamaPublisher__1create__Lcom_wombat_mama_MamaTransport_2Ljava_lang_String_2Ljava_lang_String_2
+ (JNIEnv* env, jobject this, jobject transport, jstring source, jstring symbol)
+{
+ mamaPublisher cPublisher = NULL;
+ mamaTransport cTransport = NULL;
+ const char* cSource = NULL;
+ const char* cSymbol = NULL;
+ jlong transportPointer = 0;
+ mama_status status = MAMA_STATUS_OK;
+ char errorString[UTILS_MAX_ERROR_STRING_LENGTH];
+
+ /*Get the transport pointer*/
+ assert(transport!=NULL);
+ transportPointer = (*env)->GetLongField(env, transport,
+ transportPointerFieldId_g);
+ cTransport = CAST_JLONG_TO_POINTER(mamaTransport, transportPointer);
+ assert(transportPointer!=0);
+
+ /*Get the char* from the jstring*/
+ if(NULL!=source)
+ {
+ cSource = (*env)->GetStringUTFChars(env,source,0);
+ if(!cSource)return;
+ }
+ if(NULL!=symbol)
+ {
+ cSymbol = (*env)->GetStringUTFChars(env,symbol,0);
+ if(!cSymbol)return;
+ }
+
+ if(MAMA_STATUS_OK!=(mamaPublisher_create(
+ &cPublisher,
+ cTransport,
+ cSymbol,
+ cSource,
+ NULL)))
+ {
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+ utils_buildErrorStringForStatus(
+ errorString, UTILS_MAX_ERROR_STRING_LENGTH,
+ "Failed to create publisher.", status);
+ utils_throwMamaException(env,errorString);
+ return;
+ }
+
+ (*env)->SetLongField(env,this,publisherPointerFieldId_g,
+ CAST_POINTER_TO_JLONG(cPublisher));
+
+ if(cSource)(*env)->ReleaseStringUTFChars(env,source, cSource);
+ if(cSymbol)(*env)->ReleaseStringUTFChars(env,symbol, cSymbol);
+
+ return;
+}
+
/*
* Class: com_wombat_mama_MamaPublisher
* Method: _send
diff --git a/mama/jni/src/com/wombat/mama/MamaPublisher.java b/mama/jni/src/com/wombat/mama/MamaPublisher.java
index 0146945..c1e8dc8 100644
--- a/mama/jni/src/com/wombat/mama/MamaPublisher.java
+++ b/mama/jni/src/com/wombat/mama/MamaPublisher.java
@@ -39,6 +39,11 @@ public class MamaPublisher
{
_create(transport,topic);
}
+
+ public void create (MamaTransport transport, String source, String symbol)
+ {
+ _create(transport,source,symbol);
+ }
public void send (MamaMsg msg)
{
@@ -77,6 +82,8 @@ public class MamaPublisher
}
private native void _create (MamaTransport transport, String topic);
+
+ private native void _create (MamaTransport transport, String source, String symbol);
private native void _send (MamaMsg msg);
--
1.8.4.msysgit.0
Chad Meyer|
Corporate & Investment Bank | PIM Market Data Services |
J.P. Morgan | 4 Metrotech Center 23rd Floor Brooklyn, NY 11201
| Tel:
(718) 242-5165 | M:
(215) 801-2606 |
chad.j.meyer@...
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official
confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase
& Co., its subsidiaries and affiliates. This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure,
copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system
into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any
way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This message may contain confidential information and is intended for specific recipients unless explicitly noted
otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of Intercontinental Exchange, Inc. (ICE), Euronext or any of their subsidiaries or
affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message
is desired.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices,
data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission
may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained
herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility
of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error,
please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
_______________________________________________
Openmama-dev mailing list
Openmama-dev@...
https://lists.openmama.org/mailman/listinfo/openmama-dev
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices,
data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission
may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained
herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility
of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error,
please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction.
All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates.
This transmission may contain information that is proprietary, privileged, confidential and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of
the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received
this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to
http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.
|
|