Skip to content

Commit c7aeb4f

Browse files
author
Edgar Medrano
committed
Version 0.3
BUGFIX: Some datatypes where not well implemented and cannot be handled by Axis 1.1 BUGFIX: Adapter.p was not generating the call to procedure adapter before calling subprocedure
1 parent 0df0688 commit c7aeb4f

17 files changed

+619
-182
lines changed

Adapter.p

+35-24
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,11 @@ DEFINE STREAM strFile.
151151
END. /** for each ttmethod **/
152152
END. /** for each ttProcedure **/
153153

154-
/*Codigo posterior a la identificacion*/
154+
/*Discard unknown methods and nodes*/
155+
{&WRITE-CODE} " WHEN ""multiRef"" THEN~n".
156+
{&WRITE-CODE} " DO:~n".
157+
{&WRITE-CODE} " /*IGNORE*/~n".
158+
{&WRITE-CODE} " END.~n".
155159
{&WRITE-CODE} " OTHERWISE~n".
156160
{&WRITE-CODE} " DO:~n".
157161
{&WRITE-CODE} " vhndResponseMessage = createFault(vhndResponseBody,""soap:Server.UnknownMethod"",""The specified method is unknown."",THIS-PROCEDURE:FILE-NAME,vchrEnvelopeNS).~n".
@@ -311,8 +315,8 @@ DEFINE STREAM strFile.
311315
NO-LOCK
312316
BY ttParam.iSeq:
313317
{&WRITE-CODE} SUBSTITUTE(
314-
" getInTable(iphndRequestMessage,""&1Array"",(BUFFER &1:HANDLE)).~n"
315-
, ttProcedure.cName + "_" + ttParam.cName).
318+
" getInTable(iphndRequestMessage,""&1"",(BUFFER &2:HANDLE)).~n"
319+
,ttParam.cName, ttProcedure.cName + "_" + ttParam.cName).
316320
END. /** for each ttparam **/
317321

318322
{&WRITE-CODE} "~n".
@@ -322,37 +326,44 @@ DEFINE STREAM strFile.
322326
ASSIGN vchrComma = " ".
323327
IF ttMethod.cName <> "" THEN
324328
DO:
325-
{&WRITE-CODE} SUBSTITUTE(" RUN &1(iphndRequestMessage,iphndResponseMessage).~n",ttProcedure.cName).
326-
{&WRITE-CODE} SUBSTITUTE(" RUN &1 IN vhnd&2 (~n",ttProcedure.cName + "_" + ttMethod.cName, ichNameSpace + STRING(ttMethod.iProcId)).
329+
{&WRITE-CODE} SUBSTITUTE(" RUN &1Adapter(iphndRequestMessage,iphndResponseMessage).~n",ttProcedure.cName).
330+
{&WRITE-CODE} SUBSTITUTE(" RUN &1 IN vhnd&2",ttMethod.cName, ichNameSpace + STRING(ttMethod.iProcId)).
327331
END.
328332
ELSE
329333
DO:
330-
{&WRITE-CODE} SUBSTITUTE(" RUN &1 PERSISTENT SET vhnd&2 (~n", ttProcedure.cPath, ichNameSpace + STRING(ttMethod.iProcId)).
334+
{&WRITE-CODE} SUBSTITUTE(" RUN &1 PERSISTENT SET vhnd&2", ttProcedure.cPath, ichNameSpace + STRING(ttMethod.iProcId)).
331335
END.
332336

333-
FOR EACH ttParam
337+
IF CAN-FIND(FIRST ttParam
334338
WHERE ttParam.iProcId = ttMethod.iProcId
335-
AND ttParam.cMethodName = ttMethod.cName
336-
NO-LOCK
337-
BY ttParam.iSeq:
338-
IF ttParam.cDataType = "TABLE" THEN
339-
DO:
340-
{&WRITE-CODE} SUBSTITUTE(" &1&2 TABLE &3~n", vchrComma, ttParam.cDirection, ttProcedure.cName + "_" + ttParam.cName).
341-
END.
342-
ELSE
343-
DO:
344-
IF ttParam.cDirection = "INPUT" THEN
339+
AND ttParam.cMethodName = ttMethod.cName) THEN
340+
DO:
341+
{&WRITE-CODE} " (~n".
342+
FOR EACH ttParam
343+
WHERE ttParam.iProcId = ttMethod.iProcId
344+
AND ttParam.cMethodName = ttMethod.cName
345+
NO-LOCK
346+
BY ttParam.iSeq:
347+
IF ttParam.cDataType = "TABLE" THEN
345348
DO:
346-
{&WRITE-CODE} SUBSTITUTE(" &1getIn&2(iphndRequestMessage,""&3"")~n", vchrComma, ttParam.cDataType, (IF ttParam.cMethodName = "" THEN ttProcedure.cName + "_" ELSE "") + ttParam.cName).
349+
{&WRITE-CODE} SUBSTITUTE(" &1&2 TABLE &3~n", vchrComma, ttParam.cDirection, ttProcedure.cName + "_" + ttParam.cName).
347350
END.
348351
ELSE
349352
DO:
350-
{&WRITE-CODE} SUBSTITUTE(" &1&2 &3~n", vchrComma, ttParam.cDirection, ttParam.cName).
353+
IF ttParam.cDirection = "INPUT" THEN
354+
DO:
355+
{&WRITE-CODE} SUBSTITUTE(" &1getIn&2(iphndRequestMessage,""&3"")~n", vchrComma, ttParam.cDataType, (IF ttParam.cMethodName = "" THEN ttProcedure.cName + "_" ELSE "") + ttParam.cName).
356+
END.
357+
ELSE
358+
DO:
359+
{&WRITE-CODE} SUBSTITUTE(" &1&2 &3~n", vchrComma, ttParam.cDirection, ttParam.cName).
360+
END.
351361
END.
352-
END.
353-
ASSIGN vchrComma = ",".
354-
END. /** for each ttparam **/
355-
{&WRITE-CODE} " ) NO-ERROR.~n".
362+
ASSIGN vchrComma = ",".
363+
END. /** for each ttparam **/
364+
{&WRITE-CODE} " )".
365+
END.
366+
{&WRITE-CODE} " NO-ERROR.~n".
356367
{&WRITE-CODE} "~n".
357368

358369
/*Copiar los valores de las variables de salida*/
@@ -372,7 +383,7 @@ DEFINE STREAM strFile.
372383
IF ttParam.cDataType = "TABLE" THEN
373384
DO:
374385
/*{&WRITE-CODE} SUBSTITUTE(" setOutTable(iphndResponseMessage,""&1Array"",hnd&2).~n", (IF ttParam.cMethodName = "" THEN ttProcedure.cName + "_" ELSE "") + ttParam.cName, ttProcedure.cName + "_" + ttParam.cName).*/
375-
{&WRITE-CODE} SUBSTITUTE(" setOutTable(iphndResponseMessage,""&1Array"",(BUFFER &2:HANDLE)).~n", (IF ttParam.cMethodName = "" THEN ttProcedure.cName + "_" ELSE "") + ttParam.cName, ttProcedure.cName + "_" + ttParam.cName).
386+
{&WRITE-CODE} SUBSTITUTE(" setOutTable(iphndResponseMessage,""&1"",(BUFFER &2:HANDLE)).~n", ttParam.cName, ttProcedure.cName + "_" + ttParam.cName).
376387
END.
377388
ELSE
378389
DO:

README.TXT

+4
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ TODO
3434

3535
HISTORY
3636

37+
2009.10.22 Version 0.3
38+
BUGFIX: Some datatypes where not well implemented and cannot be handled by Axis 1.1
39+
BUGFIX: Adapter.p was not generating the call to procedure adapter before calling subprocedure
40+
3741
2006.05.01 Version 0.2 beta
3842
BUGFIX: The message saying "Unable to use Namespace: []" was removed
3943
BUGFIX: The malformed webservice address is now correct

WSDL.p

+4-54
Original file line numberDiff line numberDiff line change
@@ -148,56 +148,6 @@ DEFINE VARIABLE vhaWSDLRoot AS HANDLE NO-UNDO.
148148
END. /** for each tttable **/
149149
END. /** for each ttProcedure **/
150150

151-
/** Complex Types used for Responses **/
152-
/*
153-
FOR EACH ttProcedure
154-
NO-LOCK:
155-
FOR EACH ttMethod
156-
WHERE ttMethod.iProcId = ttProcedure.iProcId
157-
NO-LOCK:
158-
vhaWSDL:CREATE-NODE(vhaTemp, "s:complexType", "ELEMENT").
159-
vhaTemp:SET-ATTRIBUTE("name", SUBSTITUTE("&1Result", ttProcedure.cName + (IF ttMethod.cName = "" THEN "" ELSE "_") + ttMethod.cName)).
160-
vhaXMLNode:APPEND-CHILD(vhaTemp).
161-
vhaWSDL:CREATE-NODE(vhaAll, "s:all", "ELEMENT").
162-
vhaTemp:APPEND-CHILD(vhaAll).
163-
164-
IF CAN-FIND(FIRST ttParam
165-
WHERE ttParam.iProcId = ttMethod.iProcId
166-
AND (ttParam.cMethodName = ttMethod.cName
167-
OR ttParam.cMethodName = "")
168-
AND ttParam.cDirection <> "INPUT") THEN
169-
DO:
170-
171-
FOR EACH ttParam
172-
WHERE ttParam.iProcId = ttMethod.iProcId
173-
AND ttParam.cMethodName = ttMethod.cName
174-
AND ttParam.cDirection <> "INPUT"
175-
NO-LOCK
176-
BY ttParam.cMethodName
177-
BY ttParam.iSeq:
178-
vhaWSDL:CREATE-NODE(vhaTemp2, "s:element", "ELEMENT").
179-
vhaTemp2:SET-ATTRIBUTE("name", ttProcedure.cName + "_" + ttParam.cName).
180-
181-
IF ttParam.cDataType <> "TABLE" THEN
182-
vhaTemp2:SET-ATTRIBUTE("type", SUBSTITUTE("s:&1", GetWSDLDataType(INPUT ttParam.cDataType))).
183-
ELSE
184-
vhaTemp2:SET-ATTRIBUTE("type", SUBSTITUTE("s0:&1Array", ttProcedure.cName + "_" + ttParam.cName)).
185-
186-
vhaAll:APPEND-CHILD(vhaTemp2).
187-
END. /** for each ttparam **/
188-
END. /** can-find **/
189-
ELSE
190-
DO:
191-
vhaWSDL:CREATE-NODE(vhaTemp2, "s:element", "ELEMENT").
192-
vhaTemp2:SET-ATTRIBUTE("name", "returnValue").
193-
vhaTemp2:SET-ATTRIBUTE("type", "string").
194-
vhaAll:APPEND-CHILD(vhaTemp2).
195-
END. /** else do **/
196-
197-
END. /** for each ttmethod **/
198-
END. /** for each ttProcedure **/
199-
*/
200-
201151
/** Messages **/
202152
FOR EACH ttProcedure
203153
NO-LOCK:
@@ -206,11 +156,11 @@ DEFINE VARIABLE vhaWSDLRoot AS HANDLE NO-UNDO.
206156
NO-LOCK:
207157

208158
/** Request **/
209-
IF CAN-FIND(FIRST ttParam
159+
/*IF CAN-FIND(FIRST ttParam
210160
WHERE ttParam.iProcId = ttMethod.iProcId
211161
AND (ttParam.cMethodName = ttMethod.cName
212162
OR ttParam.cMethodName = "")
213-
AND ttParam.cDirection <> "OUTPUT") THEN
163+
AND ttParam.cDirection <> "OUTPUT") THEN*/
214164
DO:
215165
vhaWSDL:CREATE-NODE(vhaXMLParentNode, "message", "ELEMENT").
216166
vhaXMLParentNode:SET-ATTRIBUTE("name", ttProcedure.cName + (IF ttMethod.cName = "" THEN "" ELSE "_") + ttMethod.cName).
@@ -238,11 +188,11 @@ DEFINE VARIABLE vhaWSDLRoot AS HANDLE NO-UNDO.
238188
END.
239189

240190
/** Response **/
241-
IF CAN-FIND(FIRST ttParam
191+
/*IF CAN-FIND(FIRST ttParam
242192
WHERE ttParam.iProcId = ttMethod.iProcId
243193
AND (ttParam.cMethodName = ttMethod.cName
244194
OR ttParam.cMethodName = "")
245-
AND ttParam.cDirection <> "INPUT") THEN
195+
AND ttParam.cDirection <> "INPUT") THEN*/
246196
DO:
247197
vhaWSDL:CREATE-NODE(vhaXMLParentNode, "message", "ELEMENT").
248198
vhaXMLParentNode:SET-ATTRIBUTE("name", SUBSTITUTE("&1Response", ttProcedure.cName + (IF ttMethod.cName = "" THEN "" ELSE "_") + ttMethod.cName)).

0 commit comments

Comments
 (0)