So compatible with 2.7.6b for now.
#define soap_call___jpsrv__UpdateJobs soap_call___ns1__UpdateJobs
#define soap_call___jpsrv__QueryJobs soap_call___ns1__QueryJobs
#endif
+#define dprintf(FMT, ARGS...) fprintf(stderr, FMT, ##ARGS);
+#define check_fault(SOAP, ERR) glite_jp_clientCheckFault((SOAP), (ERR), NULL, 0)
+#include "glite/jp/ws_fault.c"
/* insert simulating FeedIndex call */
#define INSERT "insert into feeds value ('93', '12345', '8', '0' , 'http://localhost:8901', '2005-10-14 10:48:27', 'COND2');"
#define DELETE "delete from feeds where feedid = '12345';"
-static int check_fault(struct soap *soap,int err);
-
-
int main(int argc,char *argv[])
{
memset(&out, 0, sizeof(out));
in.feedId = soap_strdup(soap, "12345");
- in.feedDone = false_;
+ in.feedDone = GLITE_SECURITY_GSOAP_FALSE;
in.__sizejobAttributes = 2;
in.jobAttributes = soap_malloc(soap,
in.__sizejobAttributes * sizeof(*(in.jobAttributes)));
rec->attributes[0] = soap_malloc(soap, sizeof(*(rec->attributes[0])));
rec->attributes[0]->name = soap_strdup(soap, "http://egee.cesnet.cz/en/Schema/LB/Attributes:user");
rec->attributes[0]->value = soap_malloc(soap, sizeof(*(rec->attributes[0]->value)));
- rec->attributes[0]->value->string = soap_strdup(soap, "CertSubj");
- rec->attributes[0]->value->blob = NULL;
+ GSOAP_STRING(rec->attributes[0]->value) = soap_strdup(soap, "CertSubj");
+ GSOAP_BLOB(rec->attributes[0]->value) = NULL;
rec->attributes[0]->timestamp = 333;
rec->attributes[0]->origin = jptype__attrOrig__SYSTEM;
rec->attributes[0]->originDetail = NULL;
rec->attributes[1] = soap_malloc(soap, sizeof(*(rec->attributes[1])));
rec->attributes[1]->name = soap_strdup(soap, "http://egee.cesnet.cz/en/Schema/LB/Attributes:finalStatus");
rec->attributes[1]->value = soap_malloc(soap, sizeof(*(rec->attributes[0]->value)));
- rec->attributes[1]->value->string = soap_strdup(soap, "Done");
- rec->attributes[1]->value->blob = NULL;
+ GSOAP_STRING(rec->attributes[1]->value) = soap_strdup(soap, "Done");
+ GSOAP_BLOB(rec->attributes[1]->value) = NULL;
rec->attributes[1]->timestamp = 333;
rec->attributes[1]->origin = jptype__attrOrig__SYSTEM;
rec->attributes[1]->originDetail = NULL;
rec->attributes[0] = soap_malloc(soap, sizeof(*(rec->attributes[0])));
rec->attributes[0]->name = soap_strdup(soap, "http://egee.cesnet.cz/en/Schema/LB/Attributes:user");
rec->attributes[0]->value = soap_malloc(soap, sizeof(*(rec->attributes[0]->value)));
- rec->attributes[0]->value->string = soap_strdup(soap, "CertSubj");
- rec->attributes[0]->value->blob = NULL;
+ GSOAP_STRING(rec->attributes[0]->value) = soap_strdup(soap, "CertSubj");
+ GSOAP_BLOB(rec->attributes[0]->value) = NULL;
rec->attributes[0]->timestamp = 333;
rec->attributes[0]->origin = jptype__attrOrig__USER;
rec->attributes[0]->originDetail = NULL;
rec->attributes[1] = soap_malloc(soap, sizeof(*(rec->attributes[1])));
rec->attributes[1]->name = soap_strdup(soap, "http://egee.cesnet.cz/en/Schema/LB/Attributes:finalStatus");
rec->attributes[1]->value = soap_malloc(soap, sizeof(*(rec->attributes[0]->value)));
- rec->attributes[1]->value->string = soap_strdup(soap, "Ready");
- rec->attributes[1]->value->blob = NULL;
+ GSOAP_STRING(rec->attributes[1]->value) = soap_strdup(soap, "Ready");
+ GSOAP_BLOB(rec->attributes[1]->value) = NULL;
rec->attributes[1]->timestamp = 333;
rec->attributes[1]->origin = jptype__attrOrig__SYSTEM;
rec->attributes[1]->originDetail = NULL;
memset(rec, 0, sizeof(*rec));
rec->op = jptype__queryOp__EQUAL;
rec->value = soap_malloc(soap, sizeof(*(rec->value)));
- rec->value->string = soap_strdup(soap, "Done");
- rec->value->blob = NULL;
+ GSOAP_STRING(rec->value) = soap_strdup(soap, "Done");
+ GSOAP_BLOB(rec->value) = NULL;
cond->record[0] = rec;
// OR equal to Ready
memset(rec, 0, sizeof(*rec));
rec->op = jptype__queryOp__EQUAL;
rec->value = soap_malloc(soap, sizeof(*(rec->value)));
- rec->value->string = soap_strdup(soap, "Ready");
- rec->value->blob = NULL;
+ GSOAP_STRING(rec->value) = soap_strdup(soap, "Ready");
+ GSOAP_BLOB(rec->value) = NULL;
cond->record[1] = rec;
in.conditions[0] = cond;
memset(rec, 0, sizeof(*rec));
rec->op = jptype__queryOp__UNEQUAL;
rec->value = soap_malloc(soap, sizeof(*(rec->value)));
- rec->value->string = soap_strdup(soap, "God");
- rec->value->blob = NULL;
+ GSOAP_STRING(rec->value) = soap_strdup(soap, "God");
+ GSOAP_BLOB(rec->value) = NULL;
cond->record[0] = rec;
in.conditions[1] = cond;
for (i=0; i<out.jobs[j]->__sizeattributes; i++) {
printf("\t%s = %s\n",
out.jobs[j]->attributes[i]->name,
- out.jobs[j]->attributes[i]->value->string);
+ GSOAP_STRING(out.jobs[j]->attributes[i]->value));
}
}
}
}
-static int check_fault(struct soap *soap,int err) {
- struct SOAP_ENV__Detail *detail;
- struct jptype__genericFault *f;
- char *reason,indent[200] = " ";
-
- switch(err) {
- case SOAP_OK: puts("OK");
- break;
- case SOAP_FAULT:
- case SOAP_SVR_FAULT:
- if (soap->version == 2) {
- detail = soap->fault->SOAP_ENV__Detail;
- reason = soap->fault->SOAP_ENV__Reason;
- }
- else {
- detail = soap->fault->detail;
- reason = soap->fault->faultstring;
- }
- fputs(reason,stderr);
- putc('\n',stderr);
- assert(detail->__type == SOAP_TYPE__genericFault);
-#if GSOAP_VERSION >=20700
- f = ((struct _genericFault *) detail->fault)
-#else
- f = ((struct _genericFault *) detail->value)
-#endif
- -> jpelem__genericFault;
-
- while (f) {
- fprintf(stderr,"%s%s: %s (%s)\n",indent,
- f->source,f->text,f->description);
- f = f->reason;
- strcat(indent," ");
- }
- return -1;
-
- default: soap_print_fault(soap,stderr);
- return -1;
- }
- return 0;
-}
-
-
-
/* XXX: we don't use it */
SOAP_NMAC struct Namespace namespaces[] = { {NULL,NULL} };
#include "jpis_H.h"
#include "jpis_.nsmap"
#include "soap_version.h"
+#include "glite/security/glite_gscompat.h"
#include "db_ops.h"
// XXX: avoid 2 wsdl collisions - work only because ws_ps_typeref.h
// uses common types from jpis_H.h (awful)
// XXX: 2 is only for debugging, replace with e.g. 100
#define JOBIDS_STRIDE 2 // how often realloc matched jobids result
-#if GSOAP_VERSION >= 20706
-#define false_ xsd__boolean__false_
-#endif
-
/*------------------*/
/* Helper functions */
/*------------------*/
-
-static struct jptype__genericFault *jp2s_error(struct soap *soap,
- const glite_jp_error_t *err)
-{
- struct jptype__genericFault *ret = NULL;
- if (err) {
- ret = soap_malloc(soap,sizeof *ret);
- memset(ret,0,sizeof *ret);
- ret->code = err->code;
- ret->source = soap_strdup(soap,err->source);
- ret->text = soap_strdup(soap,strerror(err->code));
- ret->description = soap_strdup(soap,err->desc);
- ret->reason = jp2s_error(soap,err->reason);
- }
- return ret;
-}
-
-static void err2fault(const glite_jp_context_t ctx,struct soap *soap)
-{
- struct SOAP_ENV__Detail *detail = soap_malloc(soap,sizeof *detail);
- struct _genericFault *f = soap_malloc(soap,sizeof *f);
-
-
- f->jpelem__genericFault = jp2s_error(soap,ctx->error);
-
- detail->__type = SOAP_TYPE__genericFault;
-#if GSOAP_VERSION >= 20700
- detail->fault = f;
-#else
- detail->value = f;
-#endif
- detail->__any = NULL;
-
- soap_receiver_fault(soap,"Oh, shit!",NULL);
- if (soap->version == 2) soap->fault->SOAP_ENV__Detail = detail;
- else soap->fault->detail = detail;
-}
-
-
+#define dprintf(x)
+#include "glite/jp/ws_fault.c"
+#define err2fault(CTX, SOAP) glite_jp_server_err2fault((CTX), (SOAP))
lprintf("jobid='%s', attrs=%d\n", jobAttrs->jobid, jobAttrs->__sizeattributes);
- if (jobAttrs->remove) assert(*(jobAttrs->remove) == false_);
+ if (jobAttrs->remove) assert(*(jobAttrs->remove) == GLITE_SECURITY_GSOAP_FALSE);
if ((ret = glite_jpis_lazyInsertJob(ctx, ps, jobAttrs->jobid, jobAttrs->owner)) != 0) return ret;
for (iattrs = 0; iattrs < jobAttrs->__sizeattributes; iattrs++) {
if (get_op(in->conditions[i]->record[j]->op, &qop)) goto err;
add_attr_table(attr_md5, &attr_tables);
- if (in->conditions[i]->record[j]->value->string) {
+ if (GSOAP_STRING(in->conditions[i]->record[j]->value)) {
attr.name = in->conditions[i]->attr;
- attr.value = in->conditions[i]->record[j]->value->string;
+ attr.value = GSOAP_STRING(in->conditions[i]->record[j]->value);
attr.binary = 0;
glite_jpis_SoapToAttrOrig(soap,
in->conditions[i]->origin, &(attr.origin));
}
else {
attr.name = in->conditions[i]->attr;
- attr.value = in->conditions[i]->record[j]->value->blob->__ptr;
+ attr.value = GSOAP_BLOB(in->conditions[i]->record[j]->value)->__ptr;
attr.binary = 1;
- attr.size = in->conditions[i]->record[j]->value->blob->__size;
+ attr.size = GSOAP_BLOB(in->conditions[i]->record[j]->value)->__size;
glite_jpis_SoapToAttrOrig(soap,
in->conditions[i]->origin, &(attr.origin));
trio_asprintf(&qb,"%s %s attr_%|Ss.value %s \"%|Ss\"",
av[i]->value = soap_malloc(soap, sizeof(*(av[i]->value)));
memset(av[i]->value, 0, sizeof(*(av[i]->value)));
if (jav.binary) {
- av[i]->value->blob = soap_malloc(soap, sizeof(*(av[i]->value->blob)));
- memset(av[i]->value->blob, 0, sizeof(*(av[i]->value->blob)));
- av[i]->value->blob->__ptr = soap_malloc(soap, jav.size);
- memcpy(av[i]->value->blob->__ptr, jav.value, jav.size);
- av[i]->value->blob->__size = jav.size;
+ GSOAP_BLOB(av[i]->value) = soap_malloc(soap, sizeof(*(GSOAP_BLOB(av[i]->value))));
+ memset(GSOAP_BLOB(av[i]->value), 0, sizeof(*(GSOAP_BLOB(av[i]->value))));
+ GSOAP_BLOB(av[i]->value)->__ptr = soap_malloc(soap, jav.size);
+ memcpy(GSOAP_BLOB(av[i]->value)->__ptr, jav.value, jav.size);
+ GSOAP_BLOB(av[i]->value)->__size = jav.size;
// XXX: id, type, option - how to handle?
}
else {
- av[i]->value->string = soap_strdup(soap, jav.value);
+ GSOAP_STRING(av[i]->value) = soap_strdup(soap, jav.value);
}
// XXX: load timestamp and origin from DB
// need to add columns to DB
struct soap *soap = soap_new();
glite_gsplugin_Context plugin_ctx;
glite_jp_error_t err;
- char *src, hname[512];
+ char *src;
lprintf("MyFeedIndex for %s called\n", dest);
glite_gsplugin_init_context(&plugin_ctx);
#include "jpis_H.h"
#include "ws_typemap.h"
#include "ws_is_typeref.h"
+#include "glite/jp/ws_fault.c"
void glite_jpis_SoapToQueryOp(const enum jptype__queryOp in, glite_jp_queryop_t *out)
{
assert(in);
- if (in->string) {
+ if (GSOAP_STRING(in)) {
*binary = 0;
*size = 0;
- *value = strdup(in->string);
+ *value = strdup(GSOAP_STRING(in));
return 0;
}
- else if (in->blob) {
+ else if (GSOAP_BLOB(in)) {
*binary = 1;
- *size = in->blob->__size;
- memcpy(*value, in->blob->__ptr, in->blob->__size);
+ *size = GSOAP_BLOB(in)->__size;
+ memcpy(*value, GSOAP_BLOB(in)->__ptr, GSOAP_BLOB(in)->__size);
// XXX how to handle id, type, option?
return 0;
#include "jpps_H.h"
#include "ws_typemap.h"
#include "ws_ps_typeref.h"
+#include "glite/jp/ws_fault.c"
static void QueryOpToSoap(const glite_jp_queryop_t in, enum jptype__queryOp *out)
memset(val, 0, sizeof(*val) );
if (binary) {
- val->string = NULL;
- if ( !(val->blob = soap_malloc(soap, sizeof(*val->blob))) ) return SOAP_FAULT;
- val->blob->__size = size;
- if ( !(val->blob->__ptr = soap_malloc(soap, val->blob->__size)) ) return SOAP_FAULT;
- memcpy(val->blob->__ptr, in, val->blob->__size);
+ GSOAP_STRING(val) = NULL;
+ if ( !(GSOAP_BLOB(val) = soap_malloc(soap, sizeof(*GSOAP_BLOB(val)))) ) return SOAP_FAULT;
+ GSOAP_BLOB(val)->__size = size;
+ if ( !(GSOAP_BLOB(val)->__ptr = soap_malloc(soap, GSOAP_BLOB(val)->__size)) ) return SOAP_FAULT;
+ memcpy(GSOAP_BLOB(val)->__ptr, in, GSOAP_BLOB(val)->__size);
// XXX how to handle id, type, option?
}
else {
- val->blob = NULL;
- if ( !(val->string = soap_strdup(soap, in)) ) return SOAP_FAULT;
+ GSOAP_BLOB(val) = NULL;
+ if ( !(GSOAP_STRING(val) = soap_strdup(soap, in)) ) return SOAP_FAULT;
}
*out = val;
void glite_jpis_SoapToAttrVal(glite_jp_attrval_t *av, const struct jptype__attrValue *attr) {
memset(av, 0, sizeof(*av));
av->name = attr->name;
- av->binary = attr->value->blob ? 1 : 0;
- assert(av->binary || attr->value->string);
+ av->binary = GSOAP_BLOB(attr->value) ? 1 : 0;
+ assert(av->binary || GSOAP_STRING(attr->value));
if (av->binary) {
- av->value = attr->value->blob->__ptr;
- av->size =attr->value->blob->__size ;
+ av->value = GSOAP_BLOB(attr->value)->__ptr;
+ av->size = GSOAP_BLOB(attr->value)->__size ;
} else {
av->size = -1;
- av->value = attr->value->string;
+ av->value = GSOAP_STRING(attr->value);
}
SoapToAttrOrig(&av->origin, attr->origin);
av->origin_detail = attr->originDetail;