**
I though someone already did that..
Jython + ARS wrappers..
you may want to look at http://www.mattreinfeldt.com/site/ ... website..
 
I had it at one point..

 
On 10/28/06, Marc Nations <[EMAIL PROTECTED]> wrote:
** Hello all,

For starters, I'm trying to integrate the Remedy API into a Python
application. That is my ultimate goal. So if anyone has any experience
with that or knows where some sample code is, I'd appreciate it. I'm
going to use ctypes to make the dll calls and am building the
structures.

However, I've hit a wall so far with Python so I decided to run some
example code in C and follow the process. I don't understand what is
happening here, so I'm hoping someone could explain it to me. I am
running the example given in the Remedy API documentation (with a
couple of small modifications):

Let me start off by saying that the code works, however almost
seemingly by accident. The problem is when I step through it using
Visual Studio, it doesn't respond like I thought it would. Here's the
problem:

Right now I have the application set up to fail at the initialization
stage. So at Step A (marked below) I should see a failure after the
ARInitialization call is made. However that is not the case. Instead I
get back a response of '0', and it does not fall into the exception
loop.

Instead it moves on and attempts the ARGetListSchema call. At Step B is
when the error for the initialization is actually recognized. So then
it falls in the exception loop, prints out the error that was supposed
to be printed in ARInit loop, and finishes execution.

This also means that the status list is not being freed like is
supposed to happen during the FreeARStatusList proc. It's still there
when the next function is called.

So in the end the application does work, but it's not failing at the
correct place. So until I understand how this is supposed to properly
work, there's no way I'll be able to get it interfaced over to another
language. Does anyone know what either I or it is doing wrong?

Thanks,
Marc


// ARS.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include " ar.h"
#include "arextern.h"
#include "arfree.h"

void printStatusList(ARStatusList *theList)
{
       unsigned int i;
       for (i=0; i< theList -> numItems; i++)
       {
               if (theList -> statusList[i].appendedText == NULL ||
                       theList -> statusList[i].appendedText == '\0')
                       printf("%s", theList -> statusList[i].messageText);
               else
                       printf("%s:%s", theList -> statusList[i].messageText,
                               theList -> statusList[i].appendedText);
                       printf("(ARERR %d)\n", theList -> statusList[i].messageNum);
                       printf("(Type %d)\n", theList -> statusList[i].messageType);
       }
}

int main(void)
{
       ARControlStruct control =
{0,0,"TEST_REMEDY","TEST
_REMEDY02","",0,"","TSTREMEDY01"};
       ARNameList formNameList;
       unsigned int i;
       unsigned int ARInt;
       unsigned int ARGetInt;
       ARStatusList status;

       ARInt = ARInitialization(&control, &status);

----------------------------------------------------------STEP
A--------------------------------------------

       printf("(ARInt %d)\n", ARInt);

       if ( ARInt >= AR_RETURN_ERROR)
       {
               printStatusList(&status);
               FreeARStatusList(&status, FALSE);
               return 1;
       }

       FreeARStatusList(&status, FALSE);


       ARGetInt = ARGetListSchema(&control, 0,
                               AR_LIST_SCHEMA_ALL|AR_HIDDEN_INCREMENT,
                               NULL,NULL,
                               &formNameList, &status);

----------------------------------------------------------STEP
B--------------------------------------------

       if(ARGetInt >= AR_RETURN_ERROR)
               printStatusList(&status);
       else
       {
               for (i=0; i<formNameList.numItems; i++)
                       printf("%s\n",formNameList.nameList[i]);
       }

       FreeARStatusList(&status, FALSE);
       FreeARNameList(&formNameList, FALSE);
       if(ARTermination(&control,&status) >= AR_RETURN_ERROR)
               printStatusList(&status);
       FreeARStatusList(&status, FALSE);
}
 
__20060125_______________________This posting was submitted with HTML in it___



--
Patrick Zandi __20060125_______________________This posting was submitted with HTML in it___

Reply via email to