flumen

Streaming OsidList plumbing. OsidLists are I/O streams, not in-memory Collections — these implementations buffer, compose, merge, and pipe those streams across virtual threads, decoupling the producer that fills a list from the consumer that drains it.

Overview

An OsidList is a forward-only, single-consumer stream of typed domain objects. The flumen package supplies five cross-cutting streaming OsidList patterns — each implemented for every OsidObjectList across all OSID domains — that move work off the consumer thread and keep results flowing up the stack instead of buffering them into a Java Collection.

List Patterns

Buffered

Wraps an underlying list and drains it on a virtual thread into a bounded, lock-free queue, decoupling the producer from the consumer.

Pattern →

Piped

A concurrent producer/consumer list — one side pushes elements and signals completion, a single consumer pulls them elsewhere.

Pattern →

Composite

Chains N lists end to end, draining each completely before advancing to the next. Sources may be added while the consumer reads.

Pattern →

Parallel

Merges N independently-buffered lists into a single stream, returning elements in arrival order as each source produces them.

Pattern →

JDBC

Executes a prepared statement and streams the result set rows into OsidObjects, built by a generator and buffered on a virtual thread.

Pattern →

JDBC Grouped

Assembles one OsidObject from the several adjacent rows sharing a key — CTE, joined one-to-many, or localizable text — buffered on a virtual thread.

Pattern →