[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Marshaller_toDateTime parameters options
Maria,
Are you sure that the start of your getXmlTimeZone() procedure matches
the following one?
/FREE
select;
when (i_timeZone = WSDL_NO_TIMEZONE);
return '';
when (i_timeZone = WSDL_LOCAL_TIMEZONE);
timeZone = f_rtvSysval_char('QUTCOFFSET');
other;
timeZone = i_timeZone;
endsl;
// Get and verify time zone indicator
char = %subst(timeZone: 1: 1);
if (not isStartOfTimezone(char));
clear USR5005;
USR50051 = char;
AppMsg_sendEscMsgAndDump(AppMsg_new('USR5005': USR5005));
endif;
USR5023 is a generic escape message that is sent from an error handler
for unexpected errors. But the second level text "The following error
message prevented ..." implies message USR5005 was send from
getXmlTimeZone().
As far as I can see that can happen only when the "when" statement for
"WSDL_NO_TIMEZONE" is missing. Actually getXmlTimezone() started like this:
/FREE
if (i_timeZone = WSDL_LOCAL_TIMEZONE);
timeZone = f_rtvSysval_char('QUTCOFFSET');
else;
timeZone = i_timeZone;
endif;
But I asked you change to what is shown above when I mentioned:
Changed getXmlTimeZone(), replaced first if/endif block:
B01 select;
X01 when (i_timeZone = WSDL_NO_TIMEZONE);
return '';
X01 when (i_timeZone = WSDL_LOCAL_TIMEZONE);
timeZone = f_rtvSysval_char('QUTCOFFSET');
X01 other;
timeZone = i_timeZone;
E01 endsl;
Maybe that you missed that?
But I also should change message USR0023, because "Failed unmarshalling"
pointed me to the wrong direction.
Regards,
Thomas.
Am 28.11.2014 14:34, schrieb Maria Orcy Rosar:
> Good Morning, On behalf of Tomas I ran again the request, below are
> the job log details.
>
> HTTPAPI Ver 1.24 released 2012-01-23 OS/400 Ver V7R1M0
>
> New iconv() objects set, PostRem=819. PostLoc=0. ProtRem=819.
> ProtLoc=0
>
> WSDL2RPG Ver 1.15.9.a released 2013-09-27 (V7R1M0)
>
> ** 2014-11-28-08.27.22.095000: Entering
> BasicHttpBinding_IApplication_SubmitPartialCreditCardApplication(),
> compiled for V7R1M0 New iconv() objects set, PostRem=1208. PostLoc=0.
> ProtRem=819. ProtLoc=0
>
> WSDL2RPG: call stack frames: Program Library Act.Group
> Statement Procedure QCMD QSYS *DFTACTGRP
> /0519 QUICMENU QSYS *DFTACTGRP /00C1 QUIMNDRV
> QSYS *DFTACTGRP /0610 QUIMGFLW QSYS
> *DFTACTGRP /04D7 QUICMD QSYS *DFTACTGRP
> /056F QUOCPP QPDA *DFTACTGRP /0E4C QUOCMD
> QSYS *DFTACTGRP /01EA QUOCPP QPDA
> *DFTACTGRP /0E4C QUOCMD QSYS *DFTACTGRP
> /01EA FIPROAPP MARIAOLIB *DFTACTGRP
> _QRNP_PEP_FIPROAPP FIPROAPP MARIAOLIB *DFTACTGRP 49000
> FIPROAPP FIPRO10T MARIAOLIB *NEW
> _QRNP_PEP_FIPRO10T FIPRO10T MARIAOLIB *NEW 41300
> FIPRO10T FIPRO MARIAOLIB *NEW 91400
> BasicHttpBinding_IApplication_SubmitPartialCreditCardApplication
> WSDL2RPGRT WSDL2RPG *NEW 445800
> WSDL2R98_Marshaller_toDateTime WSDL2RPGRT WSDL2RPG *NEW
> 747700 WSDL2R98_getXmlTimeZone WSDL2RPGRT WSDL2RPG *NEW
> 35200 WSDL2R90_AppMsg_sendEscMsgAndDump WSDL2RPGRT WSDL2RPG
> *NEW 39300 WSDL2R71_http_DebugLog_dumpCallStack
> WSDL2RPGRT WSDL2RPG *NEW 20200
> WSDL2R80_CallStack_dump
>
>
>
> WSDL2RPG: call stack frames: Program Library Act.Group
> Statement Procedure QCMD QSYS *DFTACTGRP
> /0519 QUICMENU QSYS *DFTACTGRP /00C1 QUIMNDRV
> QSYS *DFTACTGRP /0610 QUIMGFLW QSYS
> *DFTACTGRP /04D7 QUICMD QSYS *DFTACTGRP
> /056F QUOCPP QPDA *DFTACTGRP /0E4C QUOCMD
> QSYS *DFTACTGRP /01EA QUOCPP QPDA
> *DFTACTGRP /0E4C QUOCMD QSYS *DFTACTGRP
> /01EA FIPROAPP MARIAOLIB *DFTACTGRP
> _QRNP_PEP_FIPROAPP FIPROAPP MARIAOLIB *DFTACTGRP 49000
> FIPROAPP FIPRO10T MARIAOLIB *NEW
> _QRNP_PEP_FIPRO10T FIPRO10T MARIAOLIB *NEW 41300
> FIPRO10T FIPRO MARIAOLIB *NEW 91400
> BasicHttpBinding_IApplication_SubmitPartialCreditCardApplication
> WSDL2RPGRT WSDL2RPG *NEW 446800
> WSDL2R98_Marshaller_toDateTime WSDL2RPGRT WSDL2RPG *NEW
> 35200 WSDL2R90_AppMsg_sendEscMsgAndDump WSDL2RPGRT WSDL2RPG
> *NEW 39300 WSDL2R71_http_DebugLog_dumpCallStack
> WSDL2RPGRT WSDL2RPG *NEW 20200
> WSDL2R80_CallStack_dump
>
>
> WSDL2RPG: USR5023: Failed unmarshalling value '*N' of field '*N'.
> Cause . . . . . : The following error message prevented the value of
> field '*N' from being retrieved from XPath '*N/*N'. Message text . :
> Time zone indicator * does not match one of the expected value of: Z,
> - or + received from procedure: BASICS1R1_f_sndPgmMsg and statement:
> 54400 ** 2014-11-28-08.30.13.861000: Leaving
> BasicHttpBinding_IApplication_SubmitPartialCreditCardApplication()
>
> Thank you, Maria Orcy Rosar City Furniture - IT Department
>
> -----Original Message----- From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> thomas.raddatz@xxxxxxxxxxx Sent: Thursday, November 27, 2014 2:41 AM
> To: HTTPAPI and FTPAPI Projects Subject: RE: Marshaller_toDateTime
> parameters options
>
> Tomas,
>
> At least we are one step further, because now you got an error when
> unmarshalling a value. That means, that you received a response from
> the server!
>
> Please enable the debug log, call the web service again and eventually
> send the log to me. For now I have no idea how to make my test web
> service not to add the timezone portion, which makes it difficult to
> test. Also I need to know the exact data type that you received from
> the server.
>
> At the moment I assume that it is a time value that causes the error,
> because the XML time format (e.g. 16:29:59) does not match the ISO
> format, that %time() expects. Hence it might be the
> UnMarshaller_toTime() that fails working when no timezone information
> is available:
>
> other; time = %time(inTimeShort.value); // no time zone inf.
> available endsl;
>
> On the other hand that cannot be the truth, because the unmarshaller
> calls parseXmlTime() to convert the time to ISO format.
>
> The UnMarshaller_toDate() unmarshaller should work just fine, because
> the XML date format (e.g. 2014-11-29) equals the ISO format:
>
> other; date = %date(inDate.value); // no time zone inf. available
> endsl;
>
> The same should be true for UnMarshaller_toDateTime(), because it
> calls adjustTimestamp(), if no timezone is present:
>
> other; timestamp = adjustTimestamp(inTimestamp); // no time zone inf.
> available endsl;
>
> I am stuck. I cannot reproduce the problem with the debugger, but the
> debug log should tell us the truth.
>
> Regards,
>
> Thomas.
>
>
>> Tomas Martinez <Tomasm@xxxxxxxxxxxxxxxxxx> hat am 26. November 2014
>> um 22:28 geschrieben:
>>
>>
>> Thomas, Thanks for the detail instructions. I made the changes and
>> everything compiled properly. But it looks like there is still
>> something missing because it doesn't like the fact the that TimeZone
>> is not there.
>>
>> We keep getting this error:
>>
>> WSDL2RPG: USR5023: Failed unmarshalling value '*N' of field '*N'.
>> Cause . . . . . : The following error message prevented the value of
>> field '*N' from being retrieved from XPath '*N/*N'. Message text .
>> : Time zone indicator * does not match one of the expected value of:
>> Z, - or +
>>
>> Thanks,
>>
>> Tomas Martinez -----Original Message----- From:
>> ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
>> [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Thomas
>> Raddatz Sent: Tuesday, November 25, 2014 8:44 AM To: HTTPAPI and
>> FTPAPI Projects Subject: Re: Marshaller_toDateTime parameters
>> options
>>
>> Tomas,
>>
>> Today there is no option to restrict the time zone portion from
>> being added to date and time values. But it is not that difficult to
>> add it.
>>
>> On my development system I changed the following source members:
>>
>> TYPES_H: --------
>>
>> Added: D WSDL_NO_TIMEZONE... D C '*NONE'
>>
>> WSDL2R98: ---------
>>
>> Changed Marshaller_toDate(), added %trimR): B01 if (%parms() >=
>> p_timeZone); value = value + %trimR(getXmlTimeZone(i_timeZone)); X01
>> else; value = value + %trimR(getXmlTimeZone(WSDL_LOCAL_TIMEZONE));
>> E01 endif;
>>
>> Changed Marshaller_toTime(), added %trimR): B01 if (%parms() >=
>> p_timeZone); value = value + %trimR(getXmlTimeZone(i_timeZone)); X01
>> else; value = value + %trimR(getXmlTimeZone(WSDL_LOCAL_TIMEZONE));
>> E01 endif;
>>
>> Changed getXmlTimeZone(), replaced first if/endif block: B01
>> select; X01 when (i_timeZone = WSDL_NO_TIMEZONE); return ''; X01
>> when (i_timeZone = WSDL_LOCAL_TIMEZONE); timeZone =
>> f_rtvSysval_char('QUTCOFFSET'); X01 other; timeZone = i_timeZone;
>> E01 endsl;
>>
>>
>> With these changes in place you can add WSDL_NO_TIMEZONE to the
>> procedure calls of your marshaller procedures like this:
>>
>> Before:
>>
>> '<tns1:date>' + Marshaller_toDate(
>> i_impl_echoDateTime.aDateTimeStructure.date ) + '</tns1:date>' +
>>
>> After:
>>
>> '<tns1:date>' + Marshaller_toDate(
>> i_impl_echoDateTime.aDateTimeStructure.date : WSDL_NO_TIMEZONE ) +
>> '</tns1:date>' +
>>
>> I am going to make my changes available with 1.16beta7 soon. But of
>> course you can modify your copy of WSDL2RPG right now.
>>
>> Regards,
>>
>> Thomas.
>>
>> Am 25.11.2014 01:45, schrieb Tomas Martinez:
>>> Hi,
>>>
>>> Marshaller_toDateTime() returns the Time zone if not provided, is
>>> there a way have it NOT return the time zone?
>>>
>>>
>>> The web service we are connecting to is having problems processing
>>> the time stamp that contains the Time Zone for certain fields and
>>> have asked us to stop sending it.
>>>
>>>
>>> Thanks you in advance for your help.
>>>
>>> Tomas T. Martinez | IT Department |Senior Systems Analyst City
>>> Furniture | 6701 N Hiatus Road | Tamarac, FL 33321 |
>>> [1]www.cityfurniture.com
>>>
>>> References
>>>
>>> 1. http://www.cityfurniture.com/
>>>
>>>
>>>
>>> --------------------------------------------------------------------
>>>
>>>
--
>>> - This is the FTPAPI mailing list. To unsubscribe, please go to:
>>> http://www.scottklement.com/mailman/listinfo/ftpapi
>>> --------------------------------------------------------------------
>>>
>>>
--
>>> -
>>>
>> ----------------------------------------------------------------------
>>
>>
- This is the FTPAPI mailing list. To unsubscribe, please go to:
>> http://www.scottklement.com/mailman/listinfo/ftpapi
>> ----------------------------------------------------------------------
>>
>>
-
>> ----------------------------------------------------------------------
>>
>>
- This is the FTPAPI mailing list. To unsubscribe, please go to:
>> http://www.scottklement.com/mailman/listinfo/ftpapi
>> -----------------------------------------------------------------------
>
>>
-----------------------------------------------------------------------
> This is the FTPAPI mailing list. To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
>
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------