Author: rhuijben Date: Wed Sep 24 14:25:38 2014 New Revision: 1627333 URL: http://svn.apache.org/r1627333 Log: Tweak ra_serf report xml generation code a tiny bit to use the shorter '<element />' notation for elements that are always just markers for enabling a feature instead of '<element></element>'.
This simplifies and shortens the requests a tiny bit and returns a few of those requests to their easier to process neon form. * subversion/libsvn_ra_serf/blame.c (create_file_revs_body): Use short form for merge info flag. * subversion/libsvn_ra_serf/commit.c (create_checkout_body): Use short form for element. * subversion/libsvn_ra_serf/get_lock.c (create_getlock_body): Use short form for element. * subversion/libsvn_ra_serf/lock.c (create_lock_body): Use short form for two elements. * subversion/libsvn_ra_serf/log.c (create_log_body): Use short form for quite a few elements. * subversion/libsvn_ra_serf/merge.c (create_merge_body): Use short form for quite a few elements. * subversion/libsvn_ra_serf/ra_serf.h (svn_ra_serf__add_empty_tag_buckets): New function. * subversion/libsvn_ra_serf/xml.c (svn_ra_serf__add_empty_tag_buckets): New function. Modified: subversion/trunk/subversion/libsvn_ra_serf/blame.c subversion/trunk/subversion/libsvn_ra_serf/commit.c subversion/trunk/subversion/libsvn_ra_serf/get_lock.c subversion/trunk/subversion/libsvn_ra_serf/lock.c subversion/trunk/subversion/libsvn_ra_serf/log.c subversion/trunk/subversion/libsvn_ra_serf/merge.c subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h subversion/trunk/subversion/libsvn_ra_serf/xml.c Modified: subversion/trunk/subversion/libsvn_ra_serf/blame.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/blame.c?rev=1627333&r1=1627332&r2=1627333&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_serf/blame.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/blame.c Wed Sep 24 14:25:38 2014 @@ -302,9 +302,8 @@ create_file_revs_body(serf_bucket_t **bo if (blame_ctx->include_merged_revisions) { - svn_ra_serf__add_tag_buckets(buckets, - "S:include-merged-revisions", NULL, - alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, + "S:include-merged-revisions", NULL); } svn_ra_serf__add_tag_buckets(buckets, Modified: subversion/trunk/subversion/libsvn_ra_serf/commit.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/commit.c?rev=1627333&r1=1627332&r2=1627333&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_serf/commit.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/commit.c Wed Sep 24 14:25:38 2014 @@ -226,7 +226,8 @@ create_checkout_body(serf_bucket_t **bkt svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:href"); svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:activity-set"); - svn_ra_serf__add_tag_buckets(body_bkt, "D:apply-to-version", NULL, alloc); + svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc, + "D:apply-to-version", SVN_VA_NULL); svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:checkout"); *bkt = body_bkt; Modified: subversion/trunk/subversion/libsvn_ra_serf/get_lock.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/get_lock.c?rev=1627333&r1=1627332&r2=1627333&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_serf/get_lock.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/get_lock.c Wed Sep 24 14:25:38 2014 @@ -243,7 +243,8 @@ create_getlock_body(serf_bucket_t **body "xmlns", "DAV:", SVN_VA_NULL); svn_ra_serf__add_open_tag_buckets(buckets, alloc, "prop", SVN_VA_NULL); - svn_ra_serf__add_tag_buckets(buckets, "lockdiscovery", NULL, alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, + "lockdiscovery", SVN_VA_NULL); svn_ra_serf__add_close_tag_buckets(buckets, alloc, "prop"); svn_ra_serf__add_close_tag_buckets(buckets, alloc, "propfind"); Modified: subversion/trunk/subversion/libsvn_ra_serf/lock.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/lock.c?rev=1627333&r1=1627332&r2=1627333&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_serf/lock.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/lock.c Wed Sep 24 14:25:38 2014 @@ -412,11 +412,11 @@ create_lock_body(serf_bucket_t **body_bk SVN_VA_NULL); svn_ra_serf__add_open_tag_buckets(buckets, alloc, "lockscope", SVN_VA_NULL); - svn_ra_serf__add_tag_buckets(buckets, "exclusive", NULL, alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, "exclusive", SVN_VA_NULL); svn_ra_serf__add_close_tag_buckets(buckets, alloc, "lockscope"); svn_ra_serf__add_open_tag_buckets(buckets, alloc, "locktype", SVN_VA_NULL); - svn_ra_serf__add_tag_buckets(buckets, "write", NULL, alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, "write", SVN_VA_NULL); svn_ra_serf__add_close_tag_buckets(buckets, alloc, "locktype"); if (ctx->lock->comment) Modified: subversion/trunk/subversion/libsvn_ra_serf/log.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/log.c?rev=1627333&r1=1627332&r2=1627333&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_serf/log.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/log.c Wed Sep 24 14:25:38 2014 @@ -442,23 +442,22 @@ create_log_body(serf_bucket_t **body_bkt if (log_ctx->changed_paths) { - svn_ra_serf__add_tag_buckets(buckets, - "S:discover-changed-paths", NULL, - alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, + "S:discover-changed-paths", + SVN_VA_NULL); } if (log_ctx->strict_node_history) { - svn_ra_serf__add_tag_buckets(buckets, - "S:strict-node-history", NULL, - alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, + "S:strict-node-history", SVN_VA_NULL); } if (log_ctx->include_merged_revisions) { - svn_ra_serf__add_tag_buckets(buckets, - "S:include-merged-revisions", NULL, - alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, + "S:include-merged-revisions", + SVN_VA_NULL); } if (log_ctx->revprops) @@ -473,16 +472,14 @@ create_log_body(serf_bucket_t **body_bkt } if (log_ctx->revprops->nelts == 0) { - svn_ra_serf__add_tag_buckets(buckets, - "S:no-revprops", NULL, - alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, + "S:no-revprops", SVN_VA_NULL); } } else { - svn_ra_serf__add_tag_buckets(buckets, - "S:all-revprops", NULL, - alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, + "S:all-revprops", SVN_VA_NULL); } if (log_ctx->paths) @@ -497,9 +494,8 @@ create_log_body(serf_bucket_t **body_bkt } } - svn_ra_serf__add_tag_buckets(buckets, - "S:encode-binary-props", NULL, - alloc); + svn_ra_serf__add_empty_tag_buckets(buckets, alloc, + "S:encode-binary-props", SVN_VA_NULL); svn_ra_serf__add_close_tag_buckets(buckets, alloc, "S:log-report"); Modified: subversion/trunk/subversion/libsvn_ra_serf/merge.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/merge.c?rev=1627333&r1=1627332&r2=1627333&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_serf/merge.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/merge.c Wed Sep 24 14:25:38 2014 @@ -358,15 +358,22 @@ create_merge_body(serf_bucket_t **bkt, svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:href"); svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:source"); - svn_ra_serf__add_tag_buckets(body_bkt, "D:no-auto-merge", NULL, alloc); - svn_ra_serf__add_tag_buckets(body_bkt, "D:no-checkout", NULL, alloc); + svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc, + "D:no-auto-merge", SVN_VA_NULL); + svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc, + "D:no-checkout", SVN_VA_NULL); svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:prop", SVN_VA_NULL); - svn_ra_serf__add_tag_buckets(body_bkt, "D:checked-in", NULL, alloc); - svn_ra_serf__add_tag_buckets(body_bkt, "D:" SVN_DAV__VERSION_NAME, NULL, alloc); - svn_ra_serf__add_tag_buckets(body_bkt, "D:resourcetype", NULL, alloc); - svn_ra_serf__add_tag_buckets(body_bkt, "D:" SVN_DAV__CREATIONDATE, NULL, alloc); - svn_ra_serf__add_tag_buckets(body_bkt, "D:creator-displayname", NULL, alloc); + svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc, + "D:checked-in", SVN_VA_NULL); + svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc, + "D:" SVN_DAV__VERSION_NAME, SVN_VA_NULL); + svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc, + "D:resourcetype", SVN_VA_NULL); + svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc, + "D:" SVN_DAV__CREATIONDATE, SVN_VA_NULL); + svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc, + "D:creator-displayname", SVN_VA_NULL); svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:prop"); merge_lock_token_list(ctx->lock_tokens, NULL, body_bkt, alloc, pool); Modified: subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h?rev=1627333&r1=1627332&r2=1627333&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h (original) +++ subversion/trunk/subversion/libsvn_ra_serf/ra_serf.h Wed Sep 24 14:25:38 2014 @@ -892,6 +892,16 @@ svn_ra_serf__add_close_tag_buckets(serf_ serf_bucket_alloc_t *bkt_alloc, const char *tag); +/* Add the appropriate serf buckets to AGG_BUCKET representing the XML + * open tag with name TAG, and then immediately closes the tag using the /> + * notation + */ +void +svn_ra_serf__add_empty_tag_buckets(serf_bucket_t *agg_bucket, + serf_bucket_alloc_t *bkt_alloc, + const char *tag, + ...) SVN_NEEDS_SENTINEL_NULL; + /* * Add the appropriate serf buckets to AGG_BUCKET with xml-escaped * version of DATA. Modified: subversion/trunk/subversion/libsvn_ra_serf/xml.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/xml.c?rev=1627333&r1=1627332&r2=1627333&view=diff ============================================================================== --- subversion/trunk/subversion/libsvn_ra_serf/xml.c (original) +++ subversion/trunk/subversion/libsvn_ra_serf/xml.c Wed Sep 24 14:25:38 2014 @@ -324,6 +324,49 @@ svn_ra_serf__add_open_tag_buckets(serf_b } void +svn_ra_serf__add_empty_tag_buckets(serf_bucket_t *agg_bucket, + serf_bucket_alloc_t *bkt_alloc, + const char *tag, ...) +{ + va_list ap; + const char *key; + serf_bucket_t *tmp; + + tmp = SERF_BUCKET_SIMPLE_STRING_LEN("<", 1, bkt_alloc); + serf_bucket_aggregate_append(agg_bucket, tmp); + + tmp = SERF_BUCKET_SIMPLE_STRING(tag, bkt_alloc); + serf_bucket_aggregate_append(agg_bucket, tmp); + + va_start(ap, tag); + while ((key = va_arg(ap, char *)) != NULL) + { + const char *val = va_arg(ap, const char *); + if (val) + { + tmp = SERF_BUCKET_SIMPLE_STRING_LEN(" ", 1, bkt_alloc); + serf_bucket_aggregate_append(agg_bucket, tmp); + + tmp = SERF_BUCKET_SIMPLE_STRING(key, bkt_alloc); + serf_bucket_aggregate_append(agg_bucket, tmp); + + tmp = SERF_BUCKET_SIMPLE_STRING_LEN("=\"", 2, bkt_alloc); + serf_bucket_aggregate_append(agg_bucket, tmp); + + tmp = SERF_BUCKET_SIMPLE_STRING(val, bkt_alloc); + serf_bucket_aggregate_append(agg_bucket, tmp); + + tmp = SERF_BUCKET_SIMPLE_STRING_LEN("\"", 1, bkt_alloc); + serf_bucket_aggregate_append(agg_bucket, tmp); + } + } + va_end(ap); + + tmp = SERF_BUCKET_SIMPLE_STRING_LEN("/>", 2, bkt_alloc); + serf_bucket_aggregate_append(agg_bucket, tmp); +} + +void svn_ra_serf__add_close_tag_buckets(serf_bucket_t *agg_bucket, serf_bucket_alloc_t *bkt_alloc, const char *tag)