|
On Jan 9, 2017, at 2:54 PM, Don Brown <DBrown@xxxxxxxxxx> wrote:
Thanks Jon
No I did not use the wizard.
I have not used that wizard before and not sure how to?
Could you advise where to find or what to search on?
Thank you
Sent from my iPhone
On 10 Jan. 2017, at 01:21, Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:now.
Glad it helped Dan - I'm afraid I don't have time to dig deeper right
you use the RDi wizard? If not, I would suggest trying that and comparing
You didn't answer the question as to how you derived the prototypes. Did
the results with what you have - it has to be something relatively trivial.
not
Jon Paris
www.partner400.com
www.SystemiDeveloper.com
On Jan 8, 2017, at 6:18 PM, Don Brown <DBrown@xxxxxxxxxx> wrote:
Thanks Jon.
I think you may have identified where this is failing.
The code that is attempting to retrieve the results of the search is
complexreturning anything although it does not generate an error.
resultJ = search(transGatewayJ: transReqJ);
I believe my problem is working out how to call what seems to be a
Braintreemethod.
If we look at the signature for that method we have;
public com.braintreegateway.DateRangeNode authorizedAt();
Signature: ()Lcom/braintreegateway/DateRangeNode;
The prototypes for this are;
D transReqC PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D TransactionSearchRequest':
D *CONSTRUCTOR)
D dateParams PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D TransactionSearchRequest':
D 'authorizedAt')
D
Class(*JAVA:'com.braintreegateway.-
D DateRangeNode')
D setRange PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D DateRangeNode':
D 'between')
D
Class(*JAVA:'com.braintreegateway.-
D SearchRequest')
D start O
Class(*JAVA:'java.util.Calendar')
D end O
Class(*JAVA:'java.util.Calendar')
D transGateway PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D BraintreeGateway':
D 'transaction')
D
Class(*JAVA:'com.braintreegateway.-
D TransactionGateway')
D transreqJ S O
Class(*JAVA:'com.braintreegateway.-
D TransactionSearchRequest')
D dateparamsJ S O
Class(*JAVA:'com.braintreegateway.-
D DateRangeNode')
D transgatewayJ S O Class(*JAVA:
D 'com.braintreegateway.-
D TransactionGateway')
transReqJ = transReqC();
dateParamsJ = dateParams(transReqJ);
transreqJ = setRange(dateParamsJ: startJ: endJ);
transGatewayJ = transGateway(gateway);
// Retrieve the transactions
resultJ = search(transGatewayJ: transReqJ);
The java line of code that does this is;
TransactionSearchRequest request = new
TransactionSearchRequest().authorizedAt().between(start, end);
Here is the full java test program that does retrieve a transaction ...
package test;
import java.util.Calendar;
import java.util.List;
import com.braintreegateway.BraintreeGateway;
import com.braintreegateway.Environment;
import com.braintreegateway.ResourceCollection;
import com.braintreegateway.Transaction;
import com.braintreegateway.TransactionGateway;
import com.braintreegateway.TransactionSearchRequest;
import com.braintreegateway.exceptions.AuthenticationException;
public class BraintreeClient {
public BraintreeClient() {
// System.out.println("Obtain client token from
();...");
// String clientToken = gateway.clientToken().generate
());// System.out.println("Client Token received:
"+clientToken);
try {
BraintreeGateway gateway = new
BraintreeGateway(Environment.SANDBOX, "hvcftg4259dkhjx8",
"pf5dy7b252n3hxhz",
"55e295ac1d16137f6ae6a2b267be3de3");
System.out.println(gateway.getConfiguration().getMerchantPath());
Calendar start = Calendar.getInstance();
start.set(Calendar.DATE, 3);
start.set(Calendar.MONTH, 0);
start.set(Calendar.YEAR, 2017);
start.set(Calendar.HOUR, 0);
start.set(Calendar.MINUTE, 0);
start.set(Calendar.SECOND, 0);
start.set(Calendar.MILLISECOND, 0);
System.out.println("start = " + start.getTime
(*JAVA:'java.lang.String')Calendar end = Calendar.getInstance();
end.set(Calendar.DATE, 5);
end.set(Calendar.HOUR, 23);
System.out.println("end = " + end.getTime());
TransactionSearchRequest request = new
TransactionSearchRequest().authorizedAt().between(start, end);
ResourceCollection<Transaction> collection =
gateway.transaction().search(request);
TransactionGateway tg = gateway.transaction();
// getFirst
Transaction t = collection.getFirst();
System.out.println("First Transaction: id =
"+t.getId()+", amount = "+t.getAmount());
} catch (AuthenticationException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new BraintreeClient();
}
}
When run the following is the output ...
/merchants/hvcftg4259dkhjx8
start = Tue Jan 03 00:00:00 EST 2017
end = Thu Jan 05 23:08:59 EST 2017
Jan 09, 2017 7:09:00 AM com.braintreegateway.util.Http httpRequest
INFO: [Braintree] [9/Jan/2017 07:09:00 +1000]] POST
/merchants/hvcftg4259dkhjx8/transactions/advanced_search_ids
Jan 09, 2017 7:09:01 AM com.braintreegateway.util.Http httpRequest
INFO: [Braintree] [9/Jan/2017 07:09:01 +1000]] POST
/merchants/hvcftg4259dkhjx8/transactions/advanced_search
First Transaction: id = 787kawhf, amount = 200.00
The full source code is below ...
H DftActGrp(*no) Thread(*serialize) DATEDIT(*YMD)
D/SPACE 3
D****************************************************************
D* PROGRAM-STATUS DATA STRUCTURE
D* SDSPGM - PROGRAM NAME
D* SDSPSD - PROGRAM STATUS CODE WHEN ERROR OCCURRED
D* SDSRTN - RPG ROUTINE WHERE ERROR OCCURRED
D* SDSWS - WORKSTATION ID
D* SDSUSR - USER PROFILE
D****************************************************************
D SDS SDS 429
D SDSPGM *PROC
D SDSPSD *STATUS
D SDSRTN *ROUTINE
D SDSPRM *PARMS
D SDSWS 244 253
D SDSUSR 254 263
D****************************************************************
D* Definition of Gateway Java Class
D****************************************************************
D gatewayC PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D BraintreeGateway':
D *CONSTRUCTOR)
D env O CLASS
(*JAVA:'java.lang.String')CONST
D merId O CLASS
(*JAVA:'java.lang.String')CONST
D privKey O CLASS
(*JAVA:'java.lang.String')CONST
D pubKey O CLASS
(*JAVA:'java.lang.String')CONST
D*
D getConfig PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D BraintreeGateway':
D 'getConfiguration')
D
Class(*JAVA:'com.braintreegateway.-
D Configuration')
D*
D calendarC PR O ExtProc(*JAVA:
D
'java.util.Calendar':'getInstance')
D
Class(*JAVA:'java.util.Calendar')
D STATIC
D*
D setVal PR ExtProc(*JAVA:
D 'java.util.Calendar':
D 'set')
D field 10I 0 VALUE
D value 10I 0 VALUE
D*
D transReqC PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D TransactionSearchRequest':
D *CONSTRUCTOR)
D*
D getPath PR O ExtProc(*JAVA:
D
'com.braintreegateway.Configuration':
D 'getMerchantPath')
D Class
(*JAVA:'java.lang.String')D*
D dateParams PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D TransactionSearchRequest':
D 'authorizedAt')
D
Class(*JAVA:'com.braintreegateway.-
D DateRangeNode')
D*
D setRange PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D DateRangeNode':
D 'between')
D
Class(*JAVA:'com.braintreegateway.-
D SearchRequest')
D start O
Class(*JAVA:'java.util.Calendar')
D end O
Class(*JAVA:'java.util.Calendar')
D*
D transGateway PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D BraintreeGateway':
D 'transaction')
D
Class(*JAVA:'com.braintreegateway.-
D TransactionGateway')
D*
D search PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D TransactionGateway':
D 'search')
D
Class(*JAVA:'com.braintreegateway.-
D ResourceCollection')
D O
Class(*JAVA:'com.braintreegateway.-
D TransactionSearchRequest')
D*
D makestring PR O EXTPROC(*JAVA:
D 'java.lang.String':
D *CONSTRUCTOR)
D bytes 30A CONST VARYING
D*
D getId PR O ExtProc(*JAVA:
D
'com.braintreegateway.Transaction':
D 'getId')
D Class
(*JAVA:'java.lang.String')D*
D getAmount PR O ExtProc(*JAVA:
D
'com.braintreegateway.Transaction':
D 'getAmount')
D Class
ResourceCollection':'getFirst')D*
D getFirst PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D
(*JAVA:'java.lang.Object')D Class
(*JAVA:'java.lang.String')D*
D getIds PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D ResourceCollection':'getIds')
D*** Class(*java:'com.braintreegateway.-
D*** ResourceCollection')
D Class(*JAVA:'java.util.List')
D*
D get pr o class(*java :
'java.lang.Object')
D extproc(*java
D : 'java.util.List'
D : 'get')
D index 10i 0 value
D*
D newString pr o extproc(*java
D : 'java.lang.String'
D : *constructor)
D value 25a const varying
D*
D stringC PR O ExtProc(*JAVA:
D 'java.lang.String':
D *CONSTRUCTOR)
D 120A Const Varying
D*
D getBytes PR 40A ExtProc(*JAVA:
D 'java.lang.String':
D 'getBytes') Varying
*
D getBytesLong PR 120A ExtProc(*JAVA:
D 'java.lang.String':
D 'getBytes') Varying
*
D gateway S O Class(*JAVA:
D 'com.braintreegateway.-
D BraintreeGateway')
*
D transgatewayJ S O Class(*JAVA:
D 'com.braintreegateway.-
D TransactionGateway')
*
* display message without reply
*
D debugMessage PR
D PRMDBG 1 CONST
D PRMMSG 51 CONST
*
* display message with reply
*
D debugMessage2 PR 2
D PRMDBG 1 CONST
D PRMMSG 50 CONST
D PRMRTN S 2
*
D envJ S O Class
(*JAVA:'java.lang.String')D env S 40A
D meridJ S O Class
(*JAVA:'java.lang.String')D merid S 40A
D privKeyJ S O Class
(*JAVA:'java.lang.String')D privKey S 40A
D pubKeyJ S O Class
(*JAVA:'java.lang.String')D pubKey S 40A
D configJ S O
Class(*JAVA:'com.braintreegateway.-
D Configuration')
D config S 40A
D pathJ S O Class
(*JAVA:'java.lang.Object')D path S 40A
D dateparamsJ S O
Class(*JAVA:'com.braintreegateway.-
D DateRangeNode')
D dateparamsX S 40A
D startJ S O
Class(*JAVA:'java.util.Calendar')
D start S 40A
D endJ S O
Class(*JAVA:'java.util.Calendar')
D end S 40A
D transreqJ S O
Class(*JAVA:'com.braintreegateway.-
D TransactionSearchRequest')
D transactionJ S O Class
coreD resultJ S O
Class(*JAVA:'com.braintreegateway.-
D ResourceCollection')
D transJ S O
Class(*JAVA:'com.braintreegateway.-
D Transaction')
/free
exsr test01;
*inlr = *on;
begsr test01;
//***************************//
// Authentication credential //
//***************************//
envJ = makestring('sandbox');
merIdJ = makestring('hvcftg4259dkhjx8');
privKeyJ = makestring('pf5dy7b252n3hxhz');
pubKeyJ = makestring('55e295ac1d16137f6ae6a2b267be3de3');
//***************************//
// Setup sdtart and End dates//
//***************************//
startJ = calendarC();
setVal(startJ: 5: 1); // day
setVal(startJ: 2: 0); // month
setVal(startJ: 1: 2017); // year
setVal(StartJ: 10: 0); // hour
setVal(startJ: 12: 0); // minute
setVal(startJ: 13: 0); // second
setVal(startJ: 14: 0); // millisecon
endJ = calendarC();
setVal(endJ: 5: 5); // day
setVal(endJ: 2: 0); // month
setVal(endJ: 1: 2017); // year
setVal(endJ: 10: 0); // hour
setVal(endJ: 12: 0); // minute
setVal(endJ: 13: 0); // second
setVal(endJ: 14: 0); // millisecond
//**************************//
// Connect to Gateway //
//**************************//
gateway = gatewayC(envJ: merIdJ: privKeyJ: pubKeyJ);
// Checking if we got a conection by retrieving the path
configJ = getConfig(gateway);
config = getBytes(configJ);
pathJ = getPath(configJ);
path = getBytes(pathJ);
// Create search request
transReqJ = transReqC();
dateParamsJ = dateParams(transReqJ);
transreqJ = setRange(dateParamsJ: startJ: endJ);
transGatewayJ = transGateway(gateway);
// Retrieve the transactions
monitor;
resultJ = search(transGatewayJ: transReqJ);
on-error;
endmon;
transJ = getFirst(resultJ);
endsr;
/end-free
C/SPACE 3
D****************************************************************
D* Define procedure - debug message
D****************************************************************
P debugMessage B
D debugMessage PI
D PRMDBG 1 CONST
D PRMMSG 51 CONST
C PRMDBG IFEQ 'Y'
C PRMMSG DSPLY
C ENDIF
P DebugMessage E
D****************************************************************
D* Define procedure - debug message with reply
D****************************************************************
P debugMessage2 B
D debugMessage2 PI 2
D PRMDBG 1 CONST
D PRMMSG 50 CONST
D PRMRTN S 2
C PRMDBG IFEQ 'Y'
C PRMMSG DSPLY PRMRTN
C ENDIF
C
C RETURN PRMRTN
P DebugMessage2 E
Don Brown
From: Jon Paris <jon.paris@xxxxxxxxxxxxxx>
To: Java400 <java400-l@xxxxxxxxxxxx>
Date: 09/01/2017 04:09 AM
Subject: Re: ILERPG call to Java get list fails and generates
unknownsdump
Sent by: "JAVA400-L" <java400-l-bounces@xxxxxxxxxxxx>
Without the whole thing I'm afraid I can't help much ... too many
theyhere. The fact that earlier method calls didn't blow up doesn't mean
ofworked! So all of the protos etc. need checking.
How did you create the prototypes? Using the RDi tooling?
One thing I did notice was that in the error messages you posted, many
reallythe names are prefixed by a capital L. Is that a typo? or did they
(*JAVA:'com.braintreegateway.-paper that way in the log? for example shouldn't Ljava.util.List be
java.util.List ?
Jon Paris
www.partner400.com
www.SystemiDeveloper.com
On Jan 7, 2017, at 10:47 PM, Don Brown <DBrown@xxxxxxxxxx> wrote:
The definition of result is;
D result S O Class
nowD ResourceCollection')
I thought the problem may have been java version related but I have
thetried it on 1.7 64 bit and exactly the same error.services
Don Brown
MSD Information Technology
Suite 5/29 McDougall Street Milton Q 4064
( 07 3368 7888
+ PO Box 1629 MILTON Q 4054
Ê 07 3368 7877
* Don.Brown@xxxxxxxxxx
È 0408 751 644
þ www.msd.net.au www.architect4web.com.au
I am a proud supporter of THE REFERRAL NETWORK and recommend the
of the other member businesses. For more information please checkout
one.
website www.refnet.net.aucore
From: Jon Paris <jon.paris@xxxxxxxxxxxxxx>
To: Java400 <java400-l@xxxxxxxxxxxx>
Date: 07/01/2017 12:52 AM
Subject: Re: ILERPG call to Java get list fails and generates
dump
Sent by: "JAVA400-L" <java400-l-bounces@xxxxxxxxxxxx>
What is the definition of the object result?
Jon Paris
www.partner400.com
www.SystemiDeveloper.com
On Jan 5, 2017, at 11:56 PM, Don Brown <DBrown@xxxxxxxxxx> wrote:here.
I posted this on the Midrange-L list and it was suggested I post it
I am hoping someone can point me in the right direction with this
details
Java is crashing when I use a method that should return a java list
object..
I checked the class using the javap -s command in qsh I get the
all
about the class; (All class details from this are included below)
The method I am using is gstIds
public java.util.List getIds();
Signature: ()Ljava/util/List;
I have the prototype defined in my program as follows;
D getIds PR O ExtProc(*JAVA:
D 'com.braintreegateway.-
D ResourceCollection':'getIds')
D Class(*JAVA:'java.util.List')
D listIdJ S O Class(*JAVA:'java.util.List')
The following code snippet precedes the error but running in debug
-dump.statements complete normally
// Create search request
transReqJ = transReqC();
dateParamsJ = dateParams(transReqJ);
transreqJ = setRange(dateParamsJ: startJ: endJ);
transGatewayJ = transGateway(gateway);
// Retrieve the transactions
result = search(transGatewayJ: transReqJ);
When the following line is executed it results in a gpf and system
There is a stack trace showing on the screen but is meaningless to me
calling
See below.
listIdJ = getIds(result);
The joblog shows error MSG:RNX0301 Java exception received when
used
XAPSW/STTAPP100RJava method.
Cause . . . . . : RPG procedure STTAPP100R in program
received Java exception "**UNKNOWN ERROR**" when calling method"getIds"
with signature "()Ljava.util.List;" in class
"com.braintreegateway.ResourceCollection".
Results from javap -s
javap -s com.braintreegateway.ResourceCollection
The java.version property was detected as input. This property is
(Lcom/braintreegateway/Pager;Lcom/braintreegateway/util/NodeWrapper;)Vas
output only and has no effect on JVM initialization.com.braintreegateway.ResourceCollection(com.braintreegateway.Pager,
Compiled from "ResourceCollection.java"
public class com.braintreegateway.ResourceCollection extends
java.lang.Object implements java.lang.Iterable{
public
com.braintreegateway.util.NodeWrapper);
Signature:
(Lcom/braintreegateway/ResourceCollection;)Ljava/util/List;access$000(com.braintreegateway.ResourceCollection);
public int getMaximumSize();
Signature: ()I
public java.util.Iterator iterator();
Signature: ()Ljava/util/Iterator;
public java.lang.Object getFirst();
Signature: ()Ljava/lang/Object;
public java.util.List getIds();
Signature: ()Ljava/util/List;
static java.util.List
Signature:
mailingmailing
Stack Trace from screen when error occurs
----------- Stack Backtrace -----------
gpProtectedRunCallInMethod+0x24 (0xD07F3BC0 [libj9vm24.so+0x15bc0])
signalProtectAndRunGlue+0x14 (0xD080F090 [libj9vm24.so+0x31090])
j9sig_protect+0x138 (0xD0872F54 [libj9prt24.so+0x1f54])
gpProtectAndRun+0xc4 (0xD080F19C [libj9vm24.so+0x3119c])
gpCheckCallin+0x44 (0xD07F4398 [libj9vm24.so+0x16398])
callVirtualObjectMethodA+0x38 (0xD07F8538 [libj9vm24.so+0x1a538])
J9_i5OS_CallObjectMethodA+0xac (0xD054C8B0 [libi5osenv.so+0xd8b0])
(0x000036F0)
Don Brown
--
This is the Java Programming on and around the IBM i (JAVA400-L)
list
To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-l.
--
This is the Java Programming on and around the IBM i (JAVA400-L)
mailing
list
To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-l.
--
This is the Java Programming on and around the IBM i (JAVA400-L)
mailinglist
To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-l.
--
This is the Java Programming on and around the IBM i (JAVA400-L)
mailing listlist
To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-l.
--
This is the Java Programming on and around the IBM i (JAVA400-L)
listTo post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-l.
--
This is the Java Programming on and around the IBM i (JAVA400-L) mailing
To post a message email: JAVA400-L@xxxxxxxxxxxx--
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-l.
This is the Java Programming on and around the IBM i (JAVA400-L) mailing list
To post a message email: JAVA400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/java400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.