ShoriClientBuilder
Builder fluido para construir e inicializar instancias de ShoriClient.
Este builder gestiona toda la complejidad de inicialización interna del SDK: resolución de dependencias circulares, configuración del pool de conexiones HTTP, configuración SSL y creación de todos los módulos necesarios.
Uso básico
ShoriClient client = ShoriClient.builder()
.environment(ShoriEnvironment.PROD)
.portalId("mi-portal-id")
.tenantId("mi-tenant-id")
.apiKey("mi-api-key")
.build();
Configuración completa
ShoriClient client = ShoriClient.builder()
.environment(ShoriEnvironment.UAT)
.portalId("portal-id")
.tenantId("tenant-id")
.apiKey("api-key")
.allowInsecureSsl(true) // Para ambientes con SSL auto-firmado
.timeoutSeconds(60) // Timeout personalizado
.downloadPath("/opt/descargas") // Ruta para archivos descargados
.build();
Uso en Spring Boot
@Configuration
public class ShoriConfiguration {
@Value("${shori.portal-id}")
private String portalId;
@Value("${shori.tenant-id}")
private String tenantId;
@Value("${shori.api-key}")
private String apiKey;
@Bean(destroyMethod = "close")
public ShoriClient shoriClient() {
return ShoriClient.builder()
.environment(ShoriEnvironment.PROD)
.portalId(portalId)
.tenantId(tenantId)
.apiKey(apiKey)
.build();
}
}
Metodos
environment(ShoriEnvironment environment)
Establece el ambiente de Shori al que se conectará el cliente.
Cada ambiente tiene URLs pre-configuradas. Usar el ambiente correcto es fundamental para evitar modificar datos de producción en pruebas.
ShoriEnvironment#DEV- Desarrollo localShoriEnvironment#UAT- User Acceptance TestingShoriEnvironment#PROD- Producción
Parametros:
environment— Ambiente de Shori a utilizar
Retorna: Este builder para encadenamiento fluido
portalId(String portalId)
Establece el identificador del portal de Shori.
El Portal ID es un UUID que identifica tu portal dentro de la plataforma Shori. Se envía en cada request como cabecera HTTP.
Parametros:
portalId— UUID del portal (ej:"0306444E-38B1-403D-8753-EC9C2BC43215")
Retorna: Este builder para encadenamiento fluido
Lanza:
ValidationException— si es nulo o vacío al llamar#build()
tenantId(String tenantId)
Establece el identificador del tenant (inquilino) de Shori.
El Tenant ID identifica la organización dentro de la plataforma Shori. Se envía en cada request como cabecera HTTP.
Parametros:
tenantId— UUID del tenant (ej:"80ff134a-cae2-4a4a-92b9-a109bdee1183")
Retorna: Este builder para encadenamiento fluido
Lanza:
ValidationException— si es nulo o vacío al llamar#build()
apiKey(String apiKey)
Establece la clave de API para autenticación con Shori.
La API Key se usa únicamente para obtener el token de acceso Bearer. Nunca se envía en los requests de negocio.
Parametros:
apiKey— Clave de API proporcionada por Shori
Retorna: Este builder para encadenamiento fluido
Lanza:
ValidationException— si es nulo o vacío al llamar#build()
allowInsecureSsl(boolean allowInsecureSsl)
Configura si el cliente debe aceptar certificados SSL auto-firmados.
Útil en ambientes de desarrollo y UAT donde los servidores pueden tener certificados no emitidos por una CA de confianza pública.
Advertencia: No usar true en producción ya que
desactiva la verificación del certificado del servidor.
Parametros:
allowInsecureSsl—truepara aceptar certificados auto-firmados. Por defecto:true
Retorna: Este builder para encadenamiento fluido
timeoutSeconds(int timeoutSeconds)
Establece el timeout de conexión y respuesta en segundos.
Este timeout aplica tanto para establecer la conexión como para
esperar la respuesta del servidor. Si el servidor no responde en este
tiempo, se lanza una ApiException.
Parametros:
timeoutSeconds— Segundos de timeout. Por defecto:30
Retorna: Este builder para encadenamiento fluido
Lanza:
ValidationException— si el valor es menor o igual a cero
downloadPath(String downloadPath)
Establece la ruta del sistema de archivos donde se guardarán los documentos descargados desde el repositorio.
Si no se especifica, se usa la carpeta temporal del sistema operativo
(System.getProperty("java.io.tmpdir")).
Parametros:
downloadPath— Ruta absoluta (ej:"/opt/app/downloads"o"C:\\app\\downloads")
Retorna: Este builder para encadenamiento fluido
maxConnections(int maxConnections)
Establece el número máximo de conexiones simultáneas por módulo en el pool HTTP.
Shori SDK conecta a 3 hosts distintos
(módulos caso, repo e identify), por lo que el tamaño
total del pool será maxConnections × 3.
Ejemplo: si maxConnections = 10, el pool admite hasta 30 conexiones
activas en total: 10 hacia caso, 10 hacia repo y 10 hacia identify.
- Valor por defecto:
5(suficiente para la mayoría de automatizaciones) - Para alta concurrencia (muchos threads simultáneos): aumentar a 10–20
- Si todos los threads superan el límite, se encolan y esperan — no fallan
// Automatización de alto volumen con 20 threads paralelos
ShoriClient client = ShoriClient.builder()
.environment(ShoriEnvironment.PROD)
.portalId("id")
.tenantId("id")
.apiKey("key")
.maxConnections(20) // 20 por módulo = 60 conexiones totales
.build();
Parametros:
maxConnections— Número máximo de conexiones por módulo. Debe ser mayor a 0. Por defecto:5
Retorna: Este builder para encadenamiento fluido
Lanza:
ValidationException— si el valor es menor o igual a cero
build()
Valida la configuración y construye la instancia de ShoriClient.
Este método inicializa todos los componentes internos del SDK:
- Valida que todos los parámetros requeridos estén presentes
- Construye la configuración
ShoriConfig - Inicializa el sistema de autenticación con lazy-loading
- Crea el pool de conexiones HTTP con la configuración SSL y timeouts
- Instancia todos los módulos (caso, repo, identify)
Retorna: Nueva instancia de ShoriClient completamente inicializada
Lanza:
ValidationException— si faltaenvironment,portalId,tenantIdoapiKey