JQuickCurl añade condicionales en XML para decidir qué partes de un comando curl se envían
La librería Java permite envolver fragmentos de un comando curl en un elemento <if test="..."> que se evalúa en cada petición. Lo que no se cumple, no se envía.

JQuickCurl, la librería Java del ecosistema dromara que describe peticiones HTTP como comandos curl dentro de un catálogo XML, permite ya renderizado condicional mediante un elemento <if test="...">. La expresión se evalúa en cada invocación, en tiempo de ejecución, y solo el fragmento cuyo test salga verdadero se empalma en la línea de comandos final; el resto desaparece como si nunca se hubiera escrito.
El detalle que importa es de dónde salen los valores. La expresión lee del contexto de la petición, y ahí entran los argumentos anotados con @Param que se pasan al método de la interfaz Java. Es decir, no hay que construir el comando a mano ni ramificar en el código del llamante: la decisión vive junto a la definición de la petición.
Los tres casos que cubre
El primero es el ruido de depuración. Envolviendo el flag -v en un <if test="debug == true"> dentro del bloque <curl>, la misma llamada search("http", 1, true) añade la verbosidad y con false la quita. Misma forma de petición, una rama condicional.
El segundo son las cabeceras sensibles al entorno. Un X-Trace-Id solo cuando el traceId viene informado, y las cabeceras X-Env y Authorization solo si el entorno es prd. Sin if/else en Java y, lo que suele doler más en producción, sin cabeceras vacías viajando por la red.
El tercero es el cuerpo. Los fragmentos de payload también se pueden condicionar: se envía el bloque filter del JSON únicamente cuando includeFilter es verdadero. Aquí el autor avisa de algo que conviene tener presente: al empalmar trozos de JSON hay que verificar que el resultado sigue siendo JSON válido, y varios bloques pequeños se razonan mejor que una megaexpresión opaca.
Más allá del if
El DTD que acompaña al proyecto define más elementos de control: <foreach collection="..." item="..."> para repetir contenido sobre una colección con apertura, cierre y separador, y <choose> con <when test="..."> y <otherwise> para selección de varias ramas, al estilo de un switch.
El ejemplo ejecutable que publica el autor es un catálogo search.xml en el classpath y una interfaz SearchApi anotada, montada con JQuickCurlXmlParseFactory y JQuickXmlFactory. Apunta a httpbin.org/anything, que devuelve en la respuesta las cabeceras y argumentos que el servidor recibió de verdad, así que se puede comprobar a ojo que X-Demo aparece solo en la primera llamada.
El código está en el repositorio. La idea de fondo es razonable para quien mantiene integraciones HTTP: convertir un catálogo estático de comandos en un grafo de decisiones que se resuelve en cada invocación, en lugar de repartir condicionales por los llamantes. Queda por ver si el proyecto gana adopción fuera de su propia serie de artículos, porque hoy la documentación disponible es, en buena parte, la que va publicando su autor.


