From: František Dvořák Date: Thu, 12 Jun 2008 13:31:04 +0000 (+0000) Subject: Ignore unknown attributes from JPPS. X-Git-Tag: merge_313_5_dst~5 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=806d0686f9748eae934c461a5e3d6db569c9bc6e;p=jra1mw.git Ignore unknown attributes from JPPS. --- diff --git a/org.glite.jp.index/src/common.c b/org.glite.jp.index/src/common.c index f6e8291..c3fb1a6 100644 --- a/org.glite.jp.index/src/common.c +++ b/org.glite.jp.index/src/common.c @@ -46,3 +46,15 @@ int glite_jpis_stack_error_source(glite_jp_context_t ctx, int code, const char * va_end(ap); return code; } + + +int glite_jpis_find_attr(char **attrs, const char *attr){ + size_t i; + + i = 0; + while (attrs[i]) { + if (strcasecmp(attr, attrs[i]) == 0) return 1; + i++; + } + return 0; +} diff --git a/org.glite.jp.index/src/common.h b/org.glite.jp.index/src/common.h index 19cebaa..7a3ecc3 100644 --- a/org.glite.jp.index/src/common.h +++ b/org.glite.jp.index/src/common.h @@ -14,4 +14,6 @@ int glite_jpis_stack_error_source(glite_jp_context_t ctx, int code, const char * int glite_jp_typeplugin_load(glite_jp_context_t ctx,const char *so); +int glite_jpis_find_attr(char **attrs, const char *attr); + #endif diff --git a/org.glite.jp.index/src/db_ops.c b/org.glite.jp.index/src/db_ops.c index 08b4345..38fa6a5 100644 --- a/org.glite.jp.index/src/db_ops.c +++ b/org.glite.jp.index/src/db_ops.c @@ -79,27 +79,17 @@ static int glite_jpis_db_queries_deserialize(glite_jp_query_rec_t **queries, void *blob, size_t blob_size) UNUSED; -static int find_attr(char **attrs, const char *attr){ - size_t i; - - i = 0; - while (attrs[i]) { - if (strcasecmp(attr, attrs[i]) == 0) return 1; - i++; - } - return 0; -} static int is_indexed(glite_jp_is_conf *conf, const char *attr) { - return find_attr(conf->indexed_attrs, attr); + return glite_jpis_find_attr(conf->indexed_attrs, attr); } static int is_singleval(glite_jp_is_conf *conf, const char *attr) { - return !find_attr(conf->multival_attrs, attr); + return !glite_jpis_find_attr(conf->multival_attrs, attr); } static int is_queriable(glite_jp_is_conf *conf, const char *attr){ - return find_attr(conf->queriable_attrs, attr); + return glite_jpis_find_attr(conf->queriable_attrs, attr); } static size_t db_arg1_length(glite_jpis_context_t isctx, glite_jp_query_rec_t *query) { diff --git a/org.glite.jp.index/src/soap_ops.c b/org.glite.jp.index/src/soap_ops.c index 2ebfef6..77bc313 100644 --- a/org.glite.jp.index/src/soap_ops.c +++ b/org.glite.jp.index/src/soap_ops.c @@ -52,6 +52,10 @@ static int updateJob(glite_jpis_context_t ctx, const char *ps, struct jptype__jo for (iattrs = 0; iattrs < jobAttrs->__sizeattributes; iattrs++) { attr = GLITE_SECURITY_GSOAP_LIST_GET(jobAttrs->attributes, iattrs); glite_jpis_SoapToAttrVal(&av, attr); + if (!glite_jpis_find_attr(ctx->conf->attrs, av.name)) { + fprintf(stderr, "unkown attribute '%s'\n", av.name); + continue; + } if ((ret = glite_jpis_insertAttrVal(ctx, jobAttrs->jobid, &av)) != 0) return ret; }