Skip to content

ChangeLog

ar-agt edited this page Sep 16, 2026 · 752 revisions

Resources


jPOS 3.0.2-SNAPSHOT

  • Fix path traversal in ENABLE/DISABLE CLI commands by canonicalizing deploy paths and rejecting resolved files outside the deploy directory, blocking inputs such as ../../etc/passwd 991400fde

  • Serialize log compression through a shared background thread — introduce singleton LogCompressor backed by a TSpace work queue so DailyLogListener compressions run one at a time; deprecate getCompressorThread() 0661bf4f9

  • Add ObjectInputFilter to all deserialization points — introduce reject-list and allow-list filters in Serializer and JESpace to mitigate gadget-chain attacks (CWE-502); enforce maximum object graph depth of 32 631b45f48

  • Fix XXE vulnerability in XML2003Packager — remove backward-compatibility block that re-enabled DOCTYPE declarations and external entity processing, overriding XMLPackager's secure defaults 52b6bce21

  • Fix hostname verification bypass in GenericSSLSocketFactory — replace naive substring-based CN extraction with proper RFC 2253 DN parsing using X500Principal and LdapName/Rdn APIs to prevent CN injection attacks e41707078 GHSA-9vrg-2h5q-2xhg

  • Upgrade Bouncy Castle from 1.83 to 1.84, Micrometer core/prometheus from 1.16.4 to 1.16.5, and JLine from 3.30.6 to 4.0.12 PR704

  • Bump JUnit from 6.0.1 to 6.0.3 PR700

  • Add CMFChannel 7956676e

  • Add structured JSONL logging with PCI protection, tags and flat metadata. New JsonlLogWriter with built-in PAN masking, track/PIN wipe. Deprecates JsonLogWriter, XmlLogWriter, TxtLogWriter, MarkdownLogWriter PR680

  • Add core realm vocabulary and stable logging tags. Normalize channel/server/QBean realms; emit endpoint/session/participant as per-event tags 46994a76

  • KSN parse and serialize now uses standard 10-5-5 format PR676

  • CMF result codes aligned with ISO 8583:2023 and jPOS-CMF DocBook. Added 0085 (replaces 0885), 1813–1828 range codes PR682

  • Upgrade to Java 26 and Gradle 9.4.1 39a3daa2

  • Add ISO 8583:2023 composite data element (Dataset) support. New DatasetPackager, ICCDataPackager, ISODatasetField, fluent ISOMsg.with()/without() API, and cmfv3.xml packager with dataset-aware field definitions for DE-034, DE-043, DE-049, DE-055, DE-071, DE-104 PR683

  • Add MessageErrorIndicator for structured DE-018 (Message Error Indicator) wire encoding/decoding. Inner ErrorCode enum covers ISO 8583:2023 Table D.15 codes 0001–0013; FieldError factory methods support primitive, constructed, and composite DE errors PR684

  • Add LifeCycleId for structured DE-021 (Transaction Life Cycle Identification Data) encoding. Integrates with TxnId for trace identifier generation; fluent toBuilder() supports the financial presentment echo pattern PR685

  • Add PosCapability for structured DE-027 (POS Capability) encoding. Reuses PosDataCode.ReadingMethod and VerificationMethod enums for sub-fields 27-1/27-2; fluent builder for capacity and feature flags PR688

  • Fix DE-072 Data Record packager to use IFB_LLLLBINARY with length=9999 per ISO 8583:2023 (was IFB_LLLBINARY with length=999) in both cmf.xml and cmfv3.xml PR686

  • Fix cmfv3.xml DE-096 Key Management Data to IFB_LLLBINARY length=999; was incorrectly labelled "Reserved for ISO use" with IFB_LLLLBINARY length=9999 PR687

  • Fix cmfv3.xml DE-043 Card Acceptor Name/Location: add missing sub-fields geographic location (LLVAR ans..19) and additional address information (LLLVAR an..255) per ISO 8583:2023 Annex C PR689

  • Fix cmfv3.xml DE-043 and DE-049: remove dead emitBitmap/bitmapField attributes and unused IFB_BITMAP sub-field; DatasetPackager already encodes correct dataset envelopes regardless PR690

  • Fix cmfv3.xml DE-113.14 State Code: widen from 2 to 3 characters and rename to "State, Province, or Region Code" to align with ISO 3166-2 and ISO 8583:2023 DE-043 PR691

  • Fix cmfv3.xml DE-113: add missing sub-fields 64 (Source Station), 65 (Destination Station), and 66 (Card Scheme) PR692

  • Fix cmfv3.xml DE-113.68 PayFac ID: correct from AN1 (copy-paste error) to IFB_LLCHAR length=15; add full DE-113.67 (Tokenization Data) and DE-113.68 (PayFac Marketplace Data) composite sub-packagers PR693

  • Add DE-051 Customer Related Data as DatasetPackager with 5 datasets: PAR/PAN reference (0x71), contact (0x72), identification (0x73), wallet provider (0x74), account owner (0x75) PR694

  • Fix cmfv3.xml DE-113.67: replace sub-fields 4 (Wallet Provider Account Hash) and 5 (Tokenization Cardholder Name) with IF_NOP; superseded by DE-051 datasets 0x74 and 0x75 PR695

  • Fix cmfv3.xml DE-113.69/70/71: convert from fixed-length to variable-length packagers (IFB_LLCHAR/IFB_LLNUM) matching the AN..40/N..19 design intent PR696

  • Fix cmfv3.xml DE-044 Additional Response Data: convert from opaque IFB_LLLLBINARY to DatasetPackager with dataset 0x71 carrying display/receipt data and issuer telephone number PR697

  • Simplify DirPollAdaptor virtual-thread executor setup by switching to Executors.newVirtualThreadPerTaskExecutor() PR698

  • Bump jansi to 2.4.3, micrometer-core/micrometer-prometheus to 1.16.4, and jackson to 2.21.2; harden JESpaceTestCase expiration timings to avoid flaky boundary failures on slower hosts PR699

  • Added class-path and class-path-hash to SystemMonitor audit output, exposing the full runtime classpath and its SHA-1 fingerprint via Q2.getClassPath() and Q2.getClassPathHash() for deployment auditability.

  • Use try-with-resources in DirPoll and SimpleKeyFile f004bbe2c

  • Use TLS instead of deprecated SSL protocol in GenericSSLSocketFactory c2e712dac

  • Honor JAVA_OPTS and auto-detect JAVA_HOME in q2 launcher bab103383

  • Add Track1 IC card service code indicators PR712

  • Upgrade JLine to 4.0.14, Jackson to 2.21.3, and Gradle dependency plugins PR714

  • Avoid ConcurrentModificationException while dumping live Profiler instances PR715

  • Add EMVSMAdapter with EMV cryptogram generation, key derivation, secure messaging, and offline data authentication support PR718

  • Upgrade Gradle to 9.5.1 and JLine to 4.1.0; enable javadoc fail-on-error to catch malformed API docs early PR719

  • Add structured payload conversion for JsonlLogWriter, preserving frozen log-event payloads and rendering Profiler, Context, and nested LogEvent data as typed JSON 3edfeb442

  • Upgrade JLine to 4.1.1 and JUnit to 6.1.0 PR720

  • Support nested ISO field paths in JsonlLogWriter protect and wipe configuration PR721

  • Add Q2 node number to SystemMonitor SysInfo audit output PR723

  • Upgrade JLine to 4.1.3, JNA to 5.19.0, and Jackson to 2.22.0 PR724

  • Upgrade JNA to 5.19.1 and Micrometer to 1.17.0 PR726

  • Add DE-113.38 Cardholder Name Verification Result to cmf.xml and cmfv3.xml PR727 PR728

  • Add DE-113.34 Extended Authorization Indicator to cmf.xml and cmfv3.xml PR730

  • Add optional log-connections channel configuration while keeping routine connection logging enabled by default PR725

  • Upgrade JLine to 4.2.1 and Gradlex extra-java-module-info to 1.14.2 PR731

  • Support explicit enum keys in TransactionManager requires, optional, and provides context contracts PR733

  • Upgrade Jackson to 2.22.1 0c9dff05a

  • Normalize raw Track 2 sentinels and lowercase separators before card parsing PR735

  • Upgrade JLine to 4.3.1, Bouncy Castle to 1.85, and CycloneDX to 3.3.0 PR738

  • Add self-inclusive binary length prefixes for GenericPackager fields PR740

  • Bump JUnit to 6.1.2 PR745

  • Use JSSE endpoint identification for TLS hostname verification PR744

  • Upgrade Gradle to 9.6.1 PR746

  • Add longest-prefix fallback mode to Switch PR749

  • Upgrade Gradle to 9.7.0 and reduce test worker heap requirements PR752

  • Add CMF DE-113.72 Crypto Card Indicator and DE-113.73 Age Verification Data packagers PR753

  • Harden Context logging by suppressing values held under Inhibit keys PR754

  • Reduce Q2 observability memory use by streaming Prometheus scrapes, limiting TM histogram buckets, and bounding default JFR recordings PR756

  • Add registered log-event kind vocabulary with family projection and type-implied kinds PR760

  • Align core log emissions with the registered Kind vocabulary PR762

  • Fix PGP cleartext signature verification by stripping trailing spaces and tabs before signature verification 85eac1a20

  • Keep nested packager realms unchanged and identify nested fields with a field tag instead of a realm suffix; add the QBean component tag even with an explicit realm. Remove the unused protected ISOServer.realmChannel field PR764

  • Prevent embedded Q2 from terminating the host JVM on a startup exception; command-line Q2 retains its exit-on-error behavior PR766

  • Replace opaque info in SessionStart and SessionEnd payloads with typed host, remotePort, and localPort fields; add session duration to SessionEnd. Log consumers must accommodate the new payload shape PR768

  • Add content-derived wire-exchange trace IDs to ISOMsg and propagate them through IncomingListener, TransactionManager, and SendResponse. Channel trace-id now identifies the exchange rather than the connection; use the session tag for connection correlation and trace-claimed to link differing claimed IDs PR771

  • Remove TransactionManager's static thread-local context mapping and public static getSerializable(), getContext(), and getId() accessors. Callers must pass the transaction context and ID explicitly PR772

  • Have QueryHost claim the Context trace ID on outbound requests that have no existing claim, linking rebuilt outbound messages to the inbound transaction PR774

  • Document log kinds, families, realms, and tags; make LogEventOutputStream emit info rather than an empty event kind and clarify SysLogListener kind filtering 431ee99c1

  • Upgrade Gradle to 9.7.1, including the SDKMAN pin and wrapper checksum PR776

  • Preserve receive-side peer details when a socket closes concurrently, preventing disconnect diagnostics from masking the original I/O exception 2704e3972

  • Upgrade Jackson to 2.22.2, Bouncy Castle provider to 1.85.2, JLine to 4.4.3, SnakeYAML to 2.7, Micrometer core/Prometheus to 1.17.1, and JUnit to 6.1.3. Keep bcpg/bcutil at 1.85 and declare the provider explicitly for published Maven dependencies PR777

  • Fix ISODate.parseISODate() year inference for leap-day dates: evaluate candidate years independently so February 29 is not corrupted into March 1 by Calendar normalization. Reset all date/time fields between candidates to prevent DST-gap normalization from shifting later candidates, and capture the reference year before applying input fields so rollover cannot shift the candidate-year window PR779

  • Prevent DailyLogListener from overwriting same-day archives on POSIX systems by atomically reserving unused archive names before moving the active log; start compression only after a successful move PR781

  • Preserve log contents on rotation and compression failures: clean up only successfully reserved archive names, stop RotateLogListener numbered rotation on real move failures and attempt to reopen the active log, and publish compressed output only after successful compression and stream closure. Retain the raw archive on compression/publication failure (possibly under a compressed suffix), report failures, and fall back to the 128 KiB default for non-positive compression buffer sizes PR782

  • End ISOServer sessions normally when a request listener deliberately disconnects the channel, avoiding a subsequent receive and spurious session-error ("unconnected ISOChannel"). Preserve listener dispatch, disconnect/SessionEnd events, and logging of genuine receive, listener, and cleanup failures PR784

jPOS 3.0.1 -- released 2026-02-15

  • ProtectDebugInfo should implement Configurable 5eb548c0
  • Add SnapshotLogListener 100644
  • Add 'virtual-thread' property to ISOServer(default false), ChannelAdaptor(default false) and TransactionManager (default true) 53b10f20
  • Add /jpos/q2/status endpoint when metrics are enabled a721d79b
  • New Q2 constructor can receive a main classloader. 6bd16741
  • Add Q2.node() method 58897aca
  • Add property to debug iso errors PR636
  • DirPoll now support virtual threads 1cf1c60a
  • ChannelAdaptor - add soft-stop support f6ff4273
  • New Zimbabwe Gold currency ZWG 4ba7639f
  • Improved ChannelAdaptor reconnect logic 9fc517b4
  • Add restricted context support for non-String keys fe2209e6
  • Q2.node() is now static 1dd73cbf
  • Temporarily remove SSHd support due to multiple CVEs 50d4a80c
  • Early detection of dead peer c03c2ede
  • Fix FSDMsg pack on field with separator to not unpad PR641
  • Improve XMLPackager performance by reducing synchronized code PR645
  • Add MTI tag to counter metrics for transaction type identification PR650
  • Q2 template enhancements (comments) PR654
  • Upgrade mockito and gradle wrapper PR655
  • Avoid exceptions when dumping ctx PR656
  • feat(qmux): add support for pcode-based key mapping PR648
  • Fix channel name split issue in JPOS 3 PR634
  • Export org.jpos.iso.channel.* via JPMS PR629
  • Allow Environment to resolve multiline strings PR609
  • MUXPool: sanitize mux list on startup and be lenient about missing muxes PR659
  • Library updates e146216e Updated library versions:
    • commonscli: 1.9.0 → 1.11.0
    • commonslang3: 3.17.0 → 3.20.0
    • jline: 3.26.3 → 3.30.6
    • jna: 5.15.0 → 5.18.1
    • mockito: 5.20.0 → 5.21.0
    • mockitojupiter: 5.18.0 → 5.21.0
    • junit: 5.11.0 → 6.0.1
    • bouncycastle: 1.79 → 1.83
    • yaml: 2.0 → 2.5
    • micrometercore: 1.14.6 → 1.16.1
    • micrometerprometheus: 1.14.6 → 1.16.1
    • jackson: 2.17.2 → 2.20.1 Gradle plugins:
    • org.gradlex.extra-java-module-info: 1.9 → 1.13.1
    • org.owasp.dependencycheck: 11.1.0 → 12.1.9
    • org.cyclonedx.bom: 2.3.0 → 3.1.0 Updated Gradle wrapper:
    • Gradle: 9.2.0 → 9.2.1
  • Add LSPace a552b07d
  • ISOServer: catch BindException PR660
  • Environment equals match expression PR661
  • Add Metrics Utility class for accessing Micrometer metrics 3df6be39
  • Add ConfigValidator c63aeb33
  • Refactor Environment class to avoid regexp stackoverflow bb24ccbb
  • QServer: honor enabled attr for some children elements 33c69937
  • new QFactory method to instantiate from Element [PR699](new QFactory method to instantiate from Element)
  • Enable PrometheusMeterRegistry throwExceptionOnRegistrationFailure PR671
  • Add Environment.resolve(String) static method 77047e7d
  • Channel metrics refactor PR672

jPOS 3.0.0 (jPOS 'next') - released 2024-11-26

  • removed compat_1_5_2 module - will remain part of jPOS-2 branch 35c79e73
  • Honor JEP 411 - SecurityManager is now deprecated for removal 5c33c1a1
  • Add ZoneId to RotateLogListener's rotate event PR478
  • Use Duration in org.jpos.util.Chronometer 8cf9382b
  • Add TM managed timeout and max-timeout on participants 100644
  • IFEMC_LLCHAR the LL part of the field is defined as ASCII 480
  • QueryHost force abort when expired in continuations mode 481
  • Add support for CMF DE 027 - POS Capability PR486
  • MUXPool.send may block if no connected MUXes 487
  • Upgrade to Gradle 7.5 37c14676
  • Bump JLine to 3.21.0 12215687
  • Bump Mockito to 4.6.1 a6b4cb22
  • Bump JUnit to 5.8.2 e1a43b14
  • Bump BouncyCastle to 1.71 34eafb0e
  • Bump SLF4J to 1.7.36 1ee44273
  • Bump SnakeYAML to 1.30 3638dbd5
  • Add IFB_LLLLLLCHAR PR493
  • Add templates support PR494
  • Honor Q2 SHUTDOWN_TIMEOUT 3fd41d74
  • Add IFB_LLLHEX b684bb5f
  • Bump commons-cli to 1.5.0 3644a10e
  • Bump commons-lang3 to 3.12.0 57e7fb8d
  • Bump Mockito to 4.7.0 ffc2fbef
  • Remove org.easytesting:fest-assert dependency 17926711
  • Upgrade SnakeYAML to 1.33 e22edee5
  • Add SLE Currency d417dd35
  • Add Application Cryptogram Spec PR500
  • Properly recognize subsequent bytes in BER/TLV fields 26d08c12
  • add QBean.getStateAsString default impl 12831cf6
  • BSH provide access to Q2 server b044f71f
  • Upgrade Gradle to 7.6 b08ddd88
  • Baseline is now Java 19 7d38c2ac
  • Upgrade JLine to 3.22.0
  • DailyLogListener defaultDeleteRegex depends on compressedSuffix PR511
  • rc.CMF: add CONFIGURATION_ERROR, plus fixing typos and enum conflicts (PR512)[https://github.com/jpos/jPOS/pull/512]
  • Fix/isomsg set isocomponent PR513
  • BREAKING CHANGE - Remove TM Continuations 87b687a8
  • make CMF SYSTEM_ERROR_DB and SYSTEM_ERROR_TXN response inhibitors f717ad12
  • Dump GC stats to SystemMonitor 5099c683
  • Metrics: Set start timestamp to metrics histograms. 4cbcf42c
  • Upgrade JLine to 3.23.0 be165faf
  • Better ThreadDump in SystemMonitor (dump-stacktrace) 230df126
  • Negate expressions in Environment PR519
  • Basic support for string array auto-configuration (PR520)[https://github.com/jpos/jPOS/pull/520]
  • BASE1Header.formatHeader now shows reject data 54c5fd03
  • Add Context clone(Object...), hasKeys(Object...) ad keysNotPresent(Object...) 6dc55224
  • Add Context.merge(Context) 8591300c
  • KeySerialNumber overhaul 7a9468a7
  • Better logging for EuroSubFieldPackager unpack PR540
  • Better handling of multi-level nested isomsgs in non-bitmapped tagged sequences PR542
  • 8be658f7
  • Upgrade SnakeYaml to 2.0 - CVE-2022-1471 8be658f7
  • CMF add add result codes 1820, 1821, 1822, 1823 Add d82313ac
  • ASCIIChannel Only reply keep-alive if expecting it 9e9c1107
  • Remove OSGi support - Upgrade Gradle to 8.2 dba1e0cc
  • Remove QNode module b55b6c21
  • Upgrade BC to 2.73.2 - CVE-2023-33201 e30c9449
  • Add IFEPE_LLBINARY PR556
  • ISOMsg: add helper methods to identify the message class (PR557) c396c405
  • Q2 Enable environment property replacement anywhere PR554
  • SMAdapter: add new operation to encrypt clear PIN under PEK. PR558
  • Fixed BERTLVAsciiHexPackager getUninterpretLength always returns 0 with AsciiHex interpreter PR570
  • TSpace: simplifying usage of monotonic nanoTime() 5aaa2490
  • Protect against NTP sending clock backward b202cc1b
  • ISODate.parseISODate protect against Y2.1K d57a5436
  • Added a padding option to cryptogram builder PR577
  • ISOUtil.protect: better handling of track1 data f66f287b
  • Enable handling of complex field for IsoTagStringFieldPackager PR581
  • Q2 added --shutdown-delay=xx and --no-shutdown-hook switches PR582
  • Upgrade Gradle to 8.6, use Version Catalogs
  • Environment uses commaEncode to represent arrays c03744f8
  • Q2 arguments via q2.args environment 6f2658dc
  • ISOMsg.merge honors header fbebfee7
  • Track1 and Track2 now generate track data fb21890e
  • Add ISOUtil.toASCII and toLatin methods 81e10478
  • Add ISODate.formatDuration helper 44070167
  • KeyUsage is now serializable PR597
  • Add the chance to autoconfigure enum fields PR600
  • Bugfix in TSpace gc(1) not honoring GCLONG 4defbc69
  • Graduate TxnId to jPOS 86c3cce9
  • Graduate ProtectDebugInfo to jPOS b7359da6
  • Define padding method for each CryptogramDataBuilder PR613
  • Add SSH remote resize (WINCH) 53929360
  • Add NoCardValidator PR620
  • Add QBean eager-start support 8b09f4f3

jPOS 2.1.11-SNAPSHOT

  • Early detection of dead peer ec7d1a3c
  • Allow Environment to resolve multiline strings PR608

jPOS 2.1.10 - released 2025-03-09

  • Added a padding option to cryptogram builder PR577
  • Enable handling of complex field for IsoTagStringFieldPackager PR581
  • Q2 added --shutdown-delay=xx and --no-shutdown-hook switches PR582
  • ISOMsg.merge honors header fbebfee7
  • Track1 and Track2 now generate track data fb21890e
  • FSDProtectedLogListener now supports a parameter to optionally print ellipsis for truncated fields PR584
  • KeyUsage is now serializable PR597
  • Add the chance to autoconfigure enum fields PR600
  • Bugfix in TSpace gc(1) not honoring GCLONG 4defbc69
  • fixed ISOServer usable channels issue 602
  • Define padding method for each CryptogramDataBuilder PR612
  • Add NoCardValidator PR619
  • Add QBean eager-start support 03b3bc15
  • New ISOUtil.padISO9797Method2 method PR622
  • Display exceptions in Context.dump PR624
  • Mute BaseSMAdapter's log entries by default. PR630
  • New Q2 constructor can receive a main classloader. 7e16fe4e
  • Graduate TxnId to jPOS def04c89
  • New Zimbabwe Gold currency ZWG 4ba7639f
  • Improved ChannelAdaptor reconnect logic 2a02ff7b

jPOS 2.1.9 release 2023-12-22

  • Upgrade BouncyCastle to 1.70 508e689b
  • rc.CMF: add CONFIGURATION_ERROR, plus fixing typos and enum conflicts (PR512)[https://github.com/jpos/jPOS/pull/512]
  • Fix/isomsg set isocomponent PR513
  • make CMF SYSTEM_ERROR_DB and SYSTEM_ERROR_TXN response inhibitors PR514
  • TxnMgr: Handle race condition where txn gets early resumed a929f244
  • Metrics: Set start timestamp to metrics histograms. PR516
  • Upgrade JLine to 3.23.0 6c9d6b7d
  • Negate expressions in Environment PR518
  • Basic support for string array auto-configuration (PR520)[https://github.com/jpos/jPOS/pull/520]
  • MUXPool strategy handler PR524 forward port
  • BASE1Header.formatHeader now shows reject data a3e64f30
  • Add LogEvent.getCreatedAt() PR538
  • Better logging for EuroSubFieldPackager unpack PR540
  • Better handling of multi-level nested isomsgs in non-bitmapped tagged sequences PR542
  • Upgrade SnakeYaml to 2.0 - CVE-2022-1471 748aa3ba
  • CMF add add result codes 1820, 1821, 1822, 1823 Add 081263c6
  • ASCIIChannel Only reply keep-alive if expecting it 9e9c1107
  • QueryHost: timeout override through ctx entry PR550
  • Add IFEPE_LLBINARY PR554
  • ISOMsg: add helper methods to identify the message class PR557
  • Upgrade BC to 2.73.2 - CVE-2023-33201 65999725
  • SMAdapter: add new operation to encrypt clear PIN under PEK. PR558
  • QBeanSupport: Allow setting of a higher corePoolSize while creating new ScheduledThreadPoolExecutor PR559
  • Fixed leak in TransactionManager.names optimization (not required in jPOS 3) 86950d6e
  • Fixed BERTLVAsciiHexPackager getUninterpretLength always returns 0 with AsciiHex interpreter PR570
  • TSpace: simplifying usage of monotonic nanoTime() [PR571(https://github.com/jpos/jPOS/pull/571)]
  • Protect against NTP sending clock backward b202cc1b
  • ISODate.parseISODate protect against Y2.1K d57a5436

jPOS 2.1.8 released 2023-02-21

  • Initialize ServiceConfig prior to calling readCongig PR472
  • TransactionManager: abort on misconfigured groups PR474
  • Adding getBin(len) to Card and CardHolder (support 8-digit-bin) PR476
  • Add ZoneId to RotateLogListener's rotate event PR478
  • IFEMC_LLCHAR the LL part of the field is defined as ASCII 480
  • QueryHost force abort when expired in continuations mode 481
  • Add support for CMF DE 027 - POS Capability PR486
  • MUXPool.send may block if no connected MUXes 487
  • Add IFB_LLLLLLCHAR PR493
  • Add IFB_LLLHEX b684bb5f
  • Upgrade SnakeYAML to 1.33 cba2fc61
  • Add SLE Currency 942720fd
  • Add Application Cryptogram Spec PR499
  • Properly recognize subsequent bytes in BER/TLV fields PR502
  • add QBean.getStateAsString default impl 12831cf6
  • BSH provide access to Q2 server b044f71f
  • Upgrade Gradle to 7.6 208188d6
  • Upgrade SSH to 2.9.2 - Fixes CVE-2022-45047 82349cee
  • Upgrade JLine to 3.22.0 968af747
  • Remove JavaAssist dependency 82eef68b
  • MUXPool strategy handler PR524

jPOS 2.1.7 released 2022-01-22

  • Upgrade JLINE to 3.20.0 02447f6b
  • Connection confirmation message for BaseChannel in client mode PR412
  • Upgrade to Gradle 7.0.2 fbf3a78f
  • Add PosDataCode::isCardNotPresent PR413
  • MuxPool not honoring a timeout of 0 issue-414
  • Added CODE_OF_CONDUCT PR429
  • Bump SLF4J to 1.7.32 d23d09ee
  • Add IgnoreLogListener 0e36304b
  • NameRegister TxnMgr at end of startService issue-439
  • Add $cfg{...} syntax to Environment PR440
  • Fixed NPE as the check value is never set in the SecureKeyBlockBuilder issue-437
  • Add Q2 cmd line option to set the jpos.envdir PR441
  • CryptographicServiceMessage add removeField(s) methods d44004aa
  • Implement TVR parser PR444
  • Support for QBean start / stop in a non-blocking way PR446
  • Fixed race condition in Context resume aef3de5f
  • org.jpos.rc.Result add add hasFailure, hasWarning, hasInfo, hasIRC helpers a2d7eaed
  • ISOUtil new charEncode and charDecode PR448
  • Card.Track2 now handle short PANs issue-449
  • honor multiple EnviromentProviders in single property fc38c2ca
  • Add autoconfig support PR455
  • FSDProtectedLogListener protects FSDMsg PR456
  • Upgrade BouncyCastle to 1.69 475a0cef
  • Add support for multiple environments PR459
  • SECURITY: log4shell prevention d615199a jPOS doesn't use log4j, but in order to prevent jPOS based applications that do use log4j, we disable lookups at Q2 start.
  • Added Context.move and hasKey 67e4ee4b
  • Prevent loop in Environment.get c27ebd13
  • Add Environment awareness to the SimpleConfiguration Factory PR468

jPOS 2.1.6 released 2021-03-31

  • Replace System.currentTimeMillis() with Instant.now() in Space implementations PR369
  • Make RotateLogListener AutoCloseable so that we can clean up the test directory properly. PR373
  • TPS: Replace System.currentTimeMillis() with Instant.now(). PR374
  • ThroughputControl: Replace System.currentTimeMillis() with Instant.now() PR375
  • Space Tests: Replace System.currentTimeMillis() with Instant.now() PR376
  • ThroughputControlTestCase: Replace System.currentTimeMillis() with Instant.now() PR378
  • Add github workflow and fix some unreliable tests PR379
  • QMUXTestCase: Improve deploy directory isolation. PR380
  • Upgrade JLine to 3.18.0 dd4218a8
  • DUKPT: support KSN of length > 16 PR384
  • QClassLoader: Classloader creation is a privileged operation 3e1ccf6d
  • Allow empty defaults in environment references PR390
  • Improved EBCDIC handling of DE-48.0 (TCC) PR392
  • Upgrade JLine to 3.19.0 aba4b6b9
  • ChannelAdaptor honor 'enabled' on filters config PR396
  • TransactionManager to expose session increase/decrease logic PR398
  • Graduated SensitiveString from jPOS-EE 400eb89a
  • Upgrade OWASP dependency check to 6.1.1 718910c0
  • Upgrade Mockito to 3.8.0 071c467d
  • add GenericPackagerParams - support TLV/LTV encoded subfields - PR401

jPOS 2.1.5 released 2020-12-06

  • Security Module subsystem for the CLI PR296
  • Upgrade Gradle to 6.3 773215f6
  • TM alerts if group is not configured 9aa86842
  • Run tests under openjdk 14 PR288
  • Upgrade Javassist to 3.27.0 PR303
  • LoggerAdaptor honors LogListener's enabled attribute b638f1e2
  • Allow empty (conditional NOP) SE 0 in EuroSubFieldPackager PR310
  • BERTLVPackager throws a java.lang.ArithmeticException: divide by zero PR315
  • Relax ssh authorized_keys permissions check PR321
  • Add support for additional ssh key types PR322
  • Fix BERTLVPackager padding in PACKED_NUMERIC, PACKED_NUMERIC_DATE_YYMMDD and PACKED_NUMERIC_TIME_HHMMSS fields Issue #314
  • Add TransactionManager.prepareForLog(LogEvent) b5e1c009
  • Upgrade JLine to 3.16.0 8e11fa88
  • Card.Builder allows override of track1/2 pattern 5b65fede
  • Adding default values to ${} property expressions PR331
  • Run tests on OpenJDK 15. PR332
  • Update bouncycastle to version 1.66 PR305
  • Add support for variable length fields (LLVAR, LLLVAR) in FSDMsg PR340
  • Add cfg option packager-log-fieldname to GenericPackager when running in debug mode (defaults to true) PR348
  • Add check-connected flag to QueryHost PR351
  • Add EnvironmentProvider support 92cbcdb3
  • Upgrade JLine to 3.17.1 7844a383
  • new 'CVV' CLI command eb8cdaf7
  • BufferedLogListener uses its own ScheduledExecutor c1034b0d
  • Allow default environment override with uppercase version of property eb9687bc
  • Handle track2 without expiration PR361
  • handle [default] charset in ISOUtil.hex2byte PR364
  • Upgrade BouncyCastle to 1.67 bae04018
  • Improve JDBMSpace gc() SpaceError handling PR367
  • TM.getInTransit goes back to report head-tail 624485de
  • Upgrade Gradle to 6.7 PR354
  • Add ACL based permission support to LogRotationTestDirectory PR370

jPOS 2.1.4 released 2020-03-31

  • New ISOUtil.decodeHexDump method c3131b5c
  • New property allow-extra-fields for CheckFields PR224
  • Optimize Context.dumpMap to avoid locking during dumpEntry PR222
  • Run tests against all recent jdk versions. PR223
  • Migrate junit4 tests to junit5 PR228 PR229
  • Prevent recursive call to Context.dump b868d1d9
  • QFactory should unregister MBean on initiallization errors Issue 236
  • Fixed CheckFields regex pattern for local transaction date PR240
  • Allow varargs in ISOMsg.clone PR241
  • Break on ConcurrentModificationException when logging in Logger.log PR244
  • XMLPackager and XML2003Packager refactoring PR246
  • JCESecurityModule: expose more entry points for simulator systems PR247
  • SystemMonitor cache processName and localHost 932d5ca5
  • Upgrade jLine to 3.12.1, javassist to 3.25.0-GA, SLF4J to 1.7.28, SnakeYaml to 1.25, SSHD to 2.3.0 PR249
  • Add utility methods to interface IRC and enum CMF PR250
  • Set of minor fixes releted to TLV packagers, added Jacoco test report PR251
  • Handle undefined tags and prevention against an infinite loop PR252
  • Improved handling undefined tags by GenericTaggedFieldsPackager, added CharTagMap support PR253
  • Upgrade JLine to 3.13.0 4ae09d51
  • Add shortcut methods to PosDataCode PR256
  • Add new handy org.jpos.util.ServiceCode class PR259
  • Context.dump properly dumps arrays 831917ed
  • Upgrade to Gradle 6 PR262
  • Fix X509Certificate and gradle classifier deprecation warnings PR263
  • CVR parser based on the Mastercard format PR265
  • Q2 honor Environment when checking 'enabled' attribute 1a9fec97
  • Parser class for Issuer Application Data (IAD, 0x9F10) PR266
  • Support for LogEventWriters PR268
  • PosDataCode: safety length/null checks & safety copy PR271
  • Added FlatLogListener and mappers PR273
  • MacroField process field paths, not only ints PR282
  • Added QServer.getISOServer() 8e2d6f1a
  • Moved DateUtil class from jposee-syslog to jpos core PR283
  • Handle Q2 renameTo failure Issue #289
  • TM honors 'enabled' attribute 2a9b3f65
  • Use non-blocking SecureRandom for SensitiveString. PR146
  • Deprecate SunJSSESocketFactory PR294
  • Add haveged to travis to ensure it always has enough entropy PR293

jPOS 2.1.3 released 2019-06-16

  • NACChannel Minus length of length from the 2 byte msg length PR186
  • Add "RR" (round-robin) option to QServer PR187
  • CMFConverter protect against null cfg ddd9ee0a
  • Protect against NPE in ResultCode.warns 85f63b59
  • Upgrade javassist to 3.23-1-GA 647f8fe9
  • NPE in SystemMonitor metrics dump #189
  • QueryHost new property 'ignore-host-unreachable' ab045cc7
  • CheckFields Return CMF error on INVALID_CARD_NUMBER 37a418d0
  • Fixed DirPoll performance issue - high CPU/memory consumption Issue 190
  • CheckFields: if card is optional, but present, it has to be a good one ee4eeb28
  • PADChannel now logs event before running filters df8bbe1f
  • Added boolean rotate-on-startup configuration to RotateLogListener PR192
  • CMF changes (see issue 193 a0ef52b3
  • RotateLogListener log file name token replacement PR194
  • ThreadPool race condition - active count lost synchronicity Issue 196 2cd1537a
  • Remove deprecated Gradle 'osgi' plugin 46f40b91
  • ISOUtil's commaEncode now accepts variable arguments PR197
  • Upgrade to Gradle 5.0 d684c1fc
  • New functional supplier org.jpos.util.Recyclable 1ac1ad95
  • TransactionManager now destroys Destroyable participants 3ba0de4d
  • Use type inference in Context.get(key,timeout) 94e6e834
  • Upgrade commons-cli to 1.4 737213c3
  • Add SMAdapter.formKEYfromThreeClearComponents as public method 2416289b
  • Added functionality and bug fix to PosDatCode. PR199
  • ISOServer accept/disconnect events now hold weak reference to channel bc04e404
  • Add field max length initialization for IFEP_LLLBINARY PR202
  • Prevent XXE in XMLPackager 6d2a7b10
  • Optimize ISOMsg.dump 430e093d
  • Optimize ISOMsg.merge d60db2dd
  • Add format configuration to field packagers PR203
  • Add LLLTTvvvvv Ebcdic encoded header and value, length left zero padded. PR204
  • Add suuport for trimmed last field in variable length fields 9212cbaf
  • Add TLVList builder pattern PR205
  • Upgrade SLF4J to 1.7.26 10719729
  • ISOMsg allow hex notation in fpath fd475019
  • Update com.sleepycat:je to 18.3.12 PR208
  • Added modules/uuids support 4d35a7f1
  • Upgrade HdrHistogram to 2.1.11 ac167bee
  • Upgrade Gradle to 5.3 63cb7c1a
  • Add OWASP dependency check 3a5aa92f
  • Upgrade BouncyCastle to 1.61 1e6843d8
  • SimpleConfiguration supports 'sys:' and 'env:' prefix 95e7e690
  • Add Environment support 03a13d42
  • Set of small fixes for QMUX, SimpleMsg and SecurePrivateKey PR209
  • Use generics inferred return type in QFactory.newInstance and TransactionManager.getContext PR210
  • ChannelAdaptor disconnects on VetoException #211
  • Maintenance changes to SMAdapter PR213
  • SMAdapter keyblock handling extension PR215
  • Add IFB_LLLLCHAR field packager 61c4a16b

jPOS 2.1.2 - released 2018-09-19

  • Added Q2.ready() and Q2.ready(timeout) fbe61555
  • Added IFE_L* set of field packagers PR151
  • Issue 155: metrics related NPE when debug=false eb5c1f60
  • Adds CDATA tag to strings on log when needed PR155
  • Upgrade Gradle to 4.6 77ee81ae
  • Protect against log event exceptions PR162
  • Added Profiler accessor for events field so that external systems can process PR163
  • LoggerAdaptor now honors XmlConfigurable interface b27e8c0f
  • Upgrade BouncyCastle to 1.57 f0e76d33
  • Added RealmLogFilter to filter log events by their realm 914c220
  • Upgrade sshd to 1.7.0 ba48b9b3
  • Replaced sensitive data in CardHolder generated exceptions with safe PR167
  • Added IFAE_LLCHAR PR168
  • Maven artifact now do not include Main-Class nor Class-path Issue 169
  • Custom Exception Handler Pipelines PR170
  • ISOUtil.protect: Provide a protect method with a char to protect with. PR172
  • Added static StopWatch.get befa21f7
  • Added Automatic-Module-Name to MANIFEST.MF a83fee50
  • Upgrade JLine to 3.9.0 3408309a
  • IF_TCHAR pass encoding to getBytes method PR177
  • Added Pause participant bee3825e
  • Upgrade Gradle to 4.9 023d7030
  • New NACChnanel include-header-length property 3b5f9d60
  • FrozenLogEvent now honors log-source 3c1df1c9
  • DailyLogListener changes for support maxage property were added PR181
  • Added support for Venezuelan Bolivar Soberano 1d652a4d
  • Protect against ISOServer side effects by bad end user code PR185
  • Fix for Context.dumpMap is throwing ConcurrentModificationException #212
  • Added WHOAMI command 77b21471

jPOS 2.1.1 - released 2017-11-13

  • Added activeTransactions counter in TransactionManager PR133
  • Corrected error message in QueryHost when mux is not connected f46ed5cf
  • Added IgnoreLuhnCardValidator 0408ac5
  • Added SelectDestination participant 1ef57b2
  • Added Context persist, evict, clone, equals, hashCode methods 7c8b7fa
  • Logger adaptor honors 'redirect' property bec01ea
  • Added IRCConverter RC to IRC 8ea4184
  • BaseChannel now honors local-port if timeout is set a9c66f1
  • extract QBeans from META-INF/q2/deploy 1dc8a15
  • Bugfix in ISOUtil.bcd2str(String,boolean,byte) 4ca1c5b1
  • ChannelAdaptor and QMUX check in/out queues at config time 154cb021
  • SelectDestination support regexp eaf0a57c
  • iso87binary.xml DE55 now binary 4b4baa99
  • TSpace handle race condition with templates and expirables 31dd37e5
  • Added SpaceSource with IncomingListener support for remote spaces 1ab5d8f5
  • SendResponse now handle SpaceSource 436e2d06
  • Fine tune TransactionManager InputQueueMonitor 5cca039d
  • TransactionManager new abort-on-pause-timeout property (defaults to true) 1ad478f1
  • Added CALCLUHN command dcd75442
  • SendResponse adds support for header-strategy a0d0a4d2
  • Card now gets and validates service code from track1/track2 c9fdbf39
  • Temporary fix to unsorted tags in GenericTaggedFieldsPackager 686be859
  • TransactionManager getInTransit now users activeTransation counter 8dfe8d33
  • Added boolean ISOMsg.hasMTI() method PR140
  • org.jpos.util.Tags properly deal with empty tags df24aa52
  • org.jpos.rc.Result protect against null 'format' 545e8802
  • Allow in-memory LMKs in JCESecurityModule 4ad06b1e
  • added Serializer compact Map<String,String serializer 7a670e64
  • Added JCESecurityModule DUKPT Data Encrypt/Decrypt b4aabfbc
  • SystemMonitor show Java version/vendor/AES info 51edcc96
  • Added PGPHelper.encrypt/decrypt 3a7dd6b7
  • SystemSeed handle dual seed (system/custom) c6165d34
  • Context now back to <Object,Object> 05234c63
  • QMUX.notify add debug info cf8859e3
  • TM Debug and Trace now shows abbreviated package names and optional realm ad4a6fef
  • Context now tells apart String versus non-String keys 8eda685d
  • Added NativePackager 918023a6
  • ISOUtil.normalize now use unicode-like escaping f75807de
  • Upgraded HdrHistogram dependency 07ec0290
  • Dump metrics a4d66c5b
  • ISOUtil.hexdump with CharSet support PR146

jPOS 2.1.0 -- released 2017-05-27

  • Moved to semantic versioning
  • TransactionManager unified debug and trace d04e77c2
  • Upgrade Gradle to 3.3 04094a0
  • Upgrade JLine to 3.1.2 4394eef
  • Upgrade BouncyCastle to 1.56 6e864b0
  • Upgrade SSHD to 1.3.0 6780c94
  • Upgrade SLF4J to 1.7.22 ab85f61
  • SimpleConfiguration implements Serializable a5b1049
  • Prevention against locking of deploy directory scanning PR115
  • JESpace accept lock.timeout and txn.timeout 7e8e917
  • Removed SLF4J-NOP dependency 598d73f7
  • Add jPOS custom SLF4J provider dynamically PR123
  • QMUX supports per-MTI key override 73ace32
  • QMUX validate responses aac64d3
  • Added QMUX return-rejects property (default to false) 13b7991
  • Upgrade JLine to 3.2.0 1645444
  • Add metrics to TM 413ddbe4
  • Debug participant use FrozenLogEvent 669275d5
  • Avoid possible NPE when throwing ISOExceptions PR124
  • Provide default implementaion of TM.commit, abort and prepareForAbort 3f93807
  • Added general purpose IncomingListener 06dbce9
  • Added ContextConstants enum 090be9a
  • Added SendResponse participant 5ee0e52
  • Added Switch participant 33cdf7b
  • Added Caller.info helper class 1429584
  • Added org.jpos.rc package (RC, IRC, IRCConverter, CMF, CMFConverter, Result) 247ef72
  • Make sure Context key is a String 16b5737
  • Added ISOMsg.hasAny methods 9006fba
  • Added ISOAmount toString, hashCode, equals 2489e9d
  • Added jPOS CMF packager (cmf.xml) b2a9bce0
  • Added CheckFields participant e8813a3
  • Corrected TPS.peakWhen PR125
  • Handle debug on TMs without participants bb546013
  • Added TransactionConstants.FAIL (equals to ABORTED | READONLY | NO_JOIN) e6d3cfa
  • Added QueryHost participant 2cc2349
  • Upgrade to Gradle 3.5 6d2de3f
  • Fixed QMUX counters on async requests 903f1a2
  • Added metrics to QMUX 3157363
  • Removed 01_single.xml (use --pid=xxx instead) 9377319
  • ASCIIChannel, add length-digits property... PR127
  • Synchronize LogEvent.payLoad in toString eeed89f
  • Major issue with TM debug output 783e68a1
  • QMUX race condition detecting duplicate STAN 07c4c145
  • Added Profiler.getPartialInMillis() method 4d70f65
  • Added TransactionManager resumed metrics and metrics-highest-trackable-value property b57faf2
  • Log paused transaction counters in TransactionManager 1ce69fe
  • Removed shutdownQ2 operation from MBean 5f4c0a5
  • Added QBeanSupport.getDump 297f250
  • TM now uses loadMonitorExecutor e4ed756
  • Added a getter method for TransactionManager.pausedCounter PR131
  • Improved logic to calculate average TPS PR132
  • Added inhibit() indicator to IRC 2ad73e0

jPOS 2.0.10 -- released 2017-01-01

jPOS 2.0.9

  • Upgrade JLine to 3.0.0 f915457
  • CLI Builtin commands, colon to run subsystems, semicolon now escaped 2a285ac
  • CLISubSystem has access to CLIContext 04b8aaa
  • Upgrade to Jline 3.1.0 fac4811
  • INFO_NOT_FROM_CARD renamed to CONTACTLESS d6d9061
  • Upgrade to Gradle 3.2.1 a6ba5cf
  • optionally read license file from external file c893bf2d
  • Upgrade to JLine 3.1.1 43bf7e6
  • Removed double-logging in PADChannel 05da7cfa

jPOS 2.0.8 -- released 2016-10-16

jPOS 2.0.7

  • ISOMsg, no reason to declare never thrown ISOException PR107
  • Upgrade to Gradle wrapper 2.13 af1797c
  • Remove verbosity of common peer-disconnect event 1404032
  • QFactory.properties expands 'groovy' to org.jpos.q2.qbean.Groovy f663653
  • Fixed ISOUtil.byte2BitSet (3rd bitmap support) PR108
  • multiple dependency upgrades 1d3127c
  • small fixes, comments, and tiny performance improv PR109
  • Added jPOS default ISOCurrency overrides 5037153
  • ISOCurrency sorts JRE currencies by currencyCode 04ae697
  • Got rid of Xerces and JUnit addons deps 04ae697.
  • q2 --cli now defaults to deploy/cli directory 86e3450
  • ISOResponseListener converted into functional interface PR112
  • Bugfix in ISOUtil.asciiToEbcdic(byte[], int, int) 8a12c18
  • Implementation of pin block format 05 in JCESecurityModule PR114
  • Prevention against locking of deploy directory scanning PR115
  • ISOUtil now use Charset IBM1047 for EBCDIC conversions 6e2d3d3
  • Add --ssh et al, migrated to jline3 c6cc6024
  • Upgrade Gradle to 3.1 c3dbc3a
  • ISOField.dump dumps JSON data as field content 2326752
  • Added CLI 'deploy' subsystem PR116
  • Upgrade JE to 7.0.6 1d8c330
  • Upgrade BC to 1.55 ed5b64dc
  • Added CLI.exec methods d66511b
  • Correct 3rd bitmap handling for cases of contiguous or split bitmaps (3rd bm in a data element) PR118
  • BaseChannel add ability to override pack 79f31a8

jPOS 2.0.6 -- released 2016-04-02

jPOS 2.0.5

  • Upgrade to Gradle 2.8 ad26f77
  • Add org.jpos.util.Tags helper class c50fb0b
  • Add Tags hasAll, hasAny and hasNone methods 95db3dd
  • Reduced Context.dump verbosity 2e93815
  • SystemMonitor: Added OS version and load average a461b9f
  • MUXPool adds 'enabled' support a52b088
  • Enable PKI (RSA) cryptosystem in SMAdaptor PR99
  • Add support for IFB_HEX f9c83e4
  • Added reply-keepalive property to CSChannel and VAPChannel. Defaults to true f9c83e4f3a25...8028e07c47c1
  • Upgraded Gradle wrapper to 2.11 fc3e953
  • Update ISO-4217 currencies PR100
  • ISOCurrency now uses currencies from jvm PR101
  • Q2 uses WatchService to speedup deploy dir changes detection 44a9f54
  • Transition to org.jdom2 PR102
  • Serializable TSpace PR103
  • Q2 registers itself with the NameRegistrar bc7be43
  • Add Card, Track1, Track2, CardValidator, LUHNValidator 7ceb158
  • Possibility to use dCVV/CVC3 calculation PR105
  • Add IFEPE_LLLCHAR support for mastercard DE112 PR104

jPOS 2.0.4 -- released 2015-10-19

jPOS 2.0.3

  • Do not throw ISOException for a field not present in fpath PR91
  • TransactionManager resume checkpoints in profiler e9355878
  • Upgraded Gradle wrapper to 2.4 d4295d2
  • Added viewTests task d5e8bc2
  • BaseHeader and BASE1Header now operates on cloned copies of byte[] 6a4f430
  • TransactionManager: Reduce memory footprint of processed transactions 37f5f62b
  • Q2 do not force new classloader on first iteration d77dd3f2
  • Multiple minor improvements (PMD complains)
  • add ability to shutdown SystemMonitor 38173f6
  • commons-cli upgraded to 1.3.1 ce5ceb3
  • xerces upgraded to 2.11.0 888ec12
  • Upgrade to BC 1.52 d14b811
  • Added BaseChannel round-robin property f93d986
  • Added QBeanSupport.close(Closeable ...) helper ecb3f95
  • ChannelAdaptor reduced verbosity on failed connections 2e4bbc8
  • TransactionManager call profiler.checkPoint on prepareForAbort 9d4f40d
  • Logger.log catches LogListener Throwables 1646073c
  • Baseline is now Java 8 c6b996c
  • Better alignment of Context.log output 6e2a8bc
  • Added JSParticipant 28ba07f
  • Fixed issue with JBoss classloader 5d1d2f99
  • Fixed jPOS-118 DailyLogListener - OutOfMemory on compress PR-92
  • jPOS-115 add deny to iso server PR-94
  • Add process name and peak threads to SystemMonitor f47b6e8
  • Upgrade to Gradle wrapper 2.6 b3360be
  • Fixed jPOS-77 SimpleConfiguration.get fails when multiple entries are used PR97
  • Add TZCHECK cli command 34e5adc4
  • Add TimeZone info to SystemMonitor 9a84b00
  • Show Log timestamp in ISO-8601 format (UTC) cd5aafd4
  • Add Q2 --pid-file optional switch 8523b9ab
  • Add ISOUtil.readableFileSize method 618a2a5
  • Add free and usable diskspace on CWD FS 3febd1b
  • Add a timestamp to the transaction manager thread name PR98
  • Add SpaceLogListener d29efb1c
  • FrozenLogEvent implements Serializable 06d3401

jPOS 2.0.2 -- released 2015-06-09

jPOS 2.0.1

  • BaseChannel.receive throws IOException instead of ISOException if not connected 6d0a883
  • Added support encryption and decryption in JCEHandler PR84
  • Resolved memory leak in OneShotChannelAdaptorMK2 PR85
  • Handle channel-name and socket-info as Strings 7fa77c2
  • EuroSubFieldPackager reverted baae23b (issue with LL versus LLLL prefecture)
  • Added IFEP_LLLBINARY, IFEP_LLLCHAR, GICCSubFieldPackager and GICCChannel c615a1d
  • Added org.jpos.util.StopWatch 2cc4e6a
  • Added SystemSeed helper 129a187
  • SMAdapter.translateKeyScheme and JCESecurityModule implementation (PR86)
  • Got rid of detecting numeric tags in TLV packager to simplify and guarantee order of tags, MUXPool private methods made protected to allow subclassing (PR87)
  • SunJSSESocketFactory extends GenericSSLSocketFactory in order to avoid repeated code 8f682ad
  • GenericSSLSocketFactory adds support for enabledProtocols required per PCI compliance e8cf528
  • Fix thread allocation error with race conditions and improve thread naming PR88
  • TransactionManager more aggressive thread creation 0b41072
  • TransactionManager warning if in-transit transactions is too high 5603099
  • Updated deps: felix.framework to 5.0.0 org.osgi.core:6.0.0 xmlunit:1.6 c460076
  • JSONPackager temporarily on hold 42f8ad6
  • MUXPool now has ROUND_ROBIN_WITH_OVERRIDE and SPLIT_BY_DIVISO f14b4e2

jPOS 2.0.0 -- released 2015-02-25

jPOS 1.9.9

  • Add space to error DirPoll message to make more readable (PR66)
  • Use default logger when no log source logger or listeners (PR67)
  • TransactionManager.getOutstandingTransactions needs to check input-space that can be different than the standard space (9c83a64 )
  • Q2 checks if ClassLoader has been already registered with the MBeanServer 2dbd8de
  • Allow faster shutdown of dir polls PR70
  • SimpleKeyFile do not log if logger is null (7c92d0a) - this is a follow-up to PR67
  • Fix for PR67 backward compatibility (8d5da6e)
  • Added `ISOUtil.hexdump(byte[] buffer, int offset); (efb6e97)
  • Added TTTLLLV support e9defcf
  • Fix padding end issues in TLVList - PR77
  • PosDataCode now implements Loggeable (f25c784)
  • Added LogEvent.toString(String indent) helper method (0037ed6)
  • LogChannel support nested messages and new properties realm-field and realm-timestamp (5a11844)
  • Added TPS.setSimulatedNanoTime(long) (b411eda)
  • Improved LogEvent timestamp PR78
  • JCESecurityModule maintenance and added calculatePVVImpl PR80
  • BSHResquestListener now honor script's boolean return value PR81
  • Fix logging issue in calculatePVVImpl, Split formatPANPSN to separate methods, Add ARQC veryfication and ARPC generation support PR82
  • BaseChannel now throws IOException instead of ISOException on non ISOExceptions 6e08532 221196f d7a92bd
  • Enhanced DUKPT functionality (exportPIN) PR83

jPOS 1.9.8 -- released 2014-08-10

jPOS 1.9.7

  • Added OneShotChannelAdaptorMK2 (experimental, will replace OneShotChannelAdaptor) (2784deea)
  • Bugfix in AsciiHexInterpreter lowercase uninterpret (ab7a9a63)
  • TransactionManager: convert Thread[] to List, Use foreach, SpceUtil.wipe and generics (see PR47)
  • Added org.jpos.iso.PosDataCode (1fdfd1d)
  • QMUX use internal space, use reuse-space property for backward compatibility (d6194c3)
  • Added Context trace (cce6a27)
  • Fixes javadoc, deprecation and unchecked warnings PR-50
  • Generalized BaseChannel (PR-51)
  • Added contributed DecimalTagMapper (PR-53)
  • Added contributed TLV and EMV support (PR-52)
  • Protect sensitive data in ISOMsgPanel (401d820)
  • jPOS-65 ISOUtil.hexdump (offset+len) behaviour (e957d1c)
  • Added support for setting custom trailers. (Also fix long standing typo) (PR54)
  • Simplifications and improvements in SimpleMsg PR55
  • Replace ISOUtil.ENCODING with ISOUtil.CHARSET PR56
  • Enable nesting in *TaggedPackager other composite fields PR57
  • TLVList and TLVMsg implement Loggeable e044c24
  • Remove dependency on platform default encoding for ISOUtil.asciiToEbcdic (PR60)
  • Added xml-config (ae05521 )
  • Upgrade Gradle to 1.12 (548a57b)
  • ISOPackager interface does not extend LogSource anymore (ada3f0c)
  • Added ISOComponent.getFieldNumber() (b53edc7)
  • Added JSONPackager (9d1a86e)
  • Added TransactionManager getSerializable, getContext and getId ThreadLocal based statics (c6da5f3)
  • OSGi Activator now honors org.jpos.q2.autostart property (bfdaa4c)
  • Upgraded Gradle to 2.0 (af16f20)
  • Added src/dist/bin/q2.bat DOS script (e900fe1)
  • NameRegistrar now internally use TSpace, adds get(String,timeout) method (c5160f2)
  • Added PosDataCode.valueOf(byte[]) (e1a0c38)
  • Fixed TM ConcurrentMotificationException in TM stop introduced in PR47 (bd97570)
  • Added TRACK1 and TRACK2 flags to PosDataCode.ReadingMethods according to jPOS-CMF 1.0.11 (1335d6a)
  • Prevent ISOMsgFieldPackager.unpack NPE PR61
  • Initial support for types ZEK, DEK, MK-DAC, MK-DN PR62
  • SMAdapter: add methods for CAVV/AAV calculation and verification PR63
  • Added preliminary PGP support (ce66f8d)
  • Support for jar: protocol for FSDMsg schema (PR64)
  • QConfig and QXmlConfig now has get with timeout (aee43ca)
  • Fixed IFA_BITMAP issue with small bitmaps ([42b1f035])
  • QMUX.isConnected() check that QMUX is in running state (df69a8c)
  • EuroSubFieldPackager tag prefix is actually LLLL ([baae23b3])

jPOS 1.9.6 -- released 2014-03-22

jPOS 1.9.5

  • Added DUKPT support (dc24d14)

  • Added interface TaggedFieldPackager (568011e)

  • Upgrade to JE 5.0.73 (3d49428)

    WARNING This upgrade requires running the DbPreUpgrade_4_1 script using version 4.1.20.
    The command is:

    java -jar je-4.1.20.jar DbPreUpgrade_4_1 -h directoryName
    

    on every JE space created with the previous version. See JE's ChangeLog.

  • Avoid unpacking fields not required in requests (acfb52c)

  • Added new Space NRD (not read) operation (f50169206)

  • qbean.SystemMonitor now shows default encoding (26ebd40)

  • PR36 - Bugfix in MUXPool round-robin (a64ae215)

  • PR37 - Remove unpadding of binary fields in FSDMsg.pack method (112b0a3d)

  • jPOS-113 SimpleKeyFile.getKeys fails when key names have dots f552682

  • PR38 - Clean shutdown of DirPoll when file processing is in progress (7dd4090)

  • PR39 - Allow schema attribute separator to use in new separators (12486354)

  • BaseChannel.closeSocket is now protected (4caab615)

  • PR42 PIN mailer api

  • PR43 jPOS-100 Prevent multiple instances from running

  • Indonesian Rupiah (360) will have 2 decimals ef843b58

  • Added ISOCurrency parseFromISO87String and toISO87String - deprecated double convertFromISOMsg e67d4af

  • PR45 TLVMsg and TLVList improvements

  • Added SpaceUtil.outIfEmpty and outWhenEmpty 647ebfe

  • Bugfix in IFE_BITMAP not properly dealing with secondary bitmap e610f11

  • jPOS-116 XML parser behaviour causing field value to be set prematurely 1f8ce54

  • Improved TSpace performance by reducing calls to notifyAll e59d679

  • BSH script now expose cfg Configuration

  • Added new QConfig service ea9c1a3

  • Added merge-configuration support 35a1a208

jPOS 1.9.4 -- released 2013-12-24

jPOS 1.9.3

  • Added len,description constructor to IF_NOP
  • Added IFB_LLHEX (can be used to deal with encrypted track2s)
  • Added HexNibblesPrefixer (required by IFB_LLHEX)
  • Added OSGi support
  • Added 'qnode' (OSGi testbed)
  • DirPoll now supports file compression
  • Profiler can be reenabled
  • TransactionManager PAUSED transactions reuse profiler to provide combined elapsed times
  • Added org.jpos.iso.GenericSSLSocketFactory
  • jPOS-105 QServer should unregister as a space listener
  • jPOS-106 ChannelAdaptor reconnect flag uses non serializable Object
  • jPOS-108 FSDMsg consuming input stream
  • DirPoll.scan is now protected
  • MUX interface now extends ISOSource
  • QMUX.send now checks isConnected()
  • DirPoll now accepts a priority.regex boolean property (73c2f84)
  • jPOS-110 QMUX major start-up issue (1526dab)
  • DirPoll Retry when archive.timestamp is set to true (pull/33)
  • Generate optional app specific version info 02f739a

jPOS 1.9.2 -- released 2013-08-03

jPOS 1.9.1

  • TransactionManager sets activity related thread name
  • TransactionManager call-selector-on-abort property now defaults to true
  • Added QThreadPoolExecutor contributed by Damien pull/18
  • QServer now fire connect/disconnect events contributed by Chhil pull 22 and pull 23.
  • Assorted contributed code inspections
  • Bugfix for ArrayIndexOutOfRange in EuroSubFieldPackager
  • Contributed IFE_LLLLCHAR and IFE_LLLLBINARY field packagers
  • QExec now has an QFactory alias, logs stdout to jPOS logger
  • SystemMonitor can run optional scripts (using multiple script properties)
  • jPOS-104 make sure the TransactionManager sessions <= max-sessions <= max-active-sessions
  • jPOS-103 BaseChannel now has default 5 minutes timeout
  • jPOS-101 ISOAmount constructor forces ISOCurrency scale
  • org.jpos.iso.Connector now supports a preserve-source-header property (defaults to 'true') d
  • Q2 now honors optional 'enabled' attribute in QBean descriptors
  • PADChannel now supports 'delay' property.
  • Added org.jpos.util.ConcurrentUtil
  • jPOS-102 QMUX use ScheduledThreadPoolExecutor
  • jPOS-55 QMUX getKey - make sure MTI is padded to 4 positions
  • jPOS-63 Filter sensitive in org.jpos.transaction.Context dumpMap
  • jPOS-61 Extending SMAdapter for support validation and generation of EMV Application Cryptograms ARQC/TC/AAC and ARPC

jPOS 1.9.0 -- released 2013-03-02

jPOS 1.8.9

  • JESpace has now a default txn lock timeout of 5s (instead of JE's default 500ms)
  • BaseChannel removed double notification to observers at connect time
  • KeyStoreAdaptor now registers with the NameRegistrar at init time
  • Upgraded to Gradle wrapper 1.4
  • jPOS-98 Context not serializable to JESpace
  • Added org.jpos.util.BufferedExceptionLogListener
  • GenericPackager supports 'jar:' prefix in packager-config
  • Added INSTALL support (backported from jPOS-EE, extract META-INF/q2/installs from available jars)
  • Context.dumpMap is now protected
  • added IFE_LLLEBINARY (Binary version of IFE_LLLCHAR)
  • added EbcdicBinaryInterpreter
  • added ISOUtil.asciiToEbcdic(byte[] s, byte[] e, int offset)
  • added ISOUtil.char calcLUHN (String p)
  • added ISOUtil.String getRandomDigits(Random r, int l, int radix)
  • jPOS-95 jPOS-95 Handling different character encodings by FSDMsg
  • New Build system Gradle

jPOS 1.8.8 -- released 10/27/2012 (0c2925a)

jPOS 1.8.7

  • jPOS-94 KeepAlive not honored in BaseChannel.connect(Socket)
  • jPOS-92 CLI parser gets confused with spaces
  • jPOS-89 GroupSelector's select should not be called if prepare is ABORTING (IMPORTANT NOTICE: make sure you don't need to set the call-selector-on-abort property)
  • Added wait-for-workers-on-stop to ChannelAdaptor pull#14 8e97165
  • BaseChannel now has a setSoLinger method
  • jPOS-85 UnsupportedOperationException in BaseChannel.closeSocket when using SunJSSESocketFactory
  • XMLPackager.unpack input stream now honors header
  • FSDMsg binary fields can be used as key (they get converted to hex when looking for the schema) 74d306c
  • ISOServer start/end now shows remote port number in realm
  • Profiler.dump end event now shows partial time since last checkpoint 1d6fe26

jPOS 1.8.6 -- released 06/29/2012 (f075bf3)

jPOS 1.8.5

  • jPOS-80 Expose TPS data in TransactionManager via JMX ([https://github.com/jpos/jPOS/commit/53ab608c2981a893284f04570591c53bd7b1a724 53ab608])
  • jPOS-79 Add support for Configuration providers to Q2
  • jPOS-74 Add support for Secure Messaging in JCESecurityModule
  • jPOS-73 NPE in ISOServer run when configured outside Q2
  • jPOS-72 New MultiSessionChannelAdaptor
  • jPOS-71 Extended SMAdapter to support CVC3 verification
  • jPOS-68 Improved default server socket creating in ISOServer
  • jPOS-69 Fix ThreadPool.getPoolSize()
  • Upgraded BerkeleyDB to 4.1.10 (requires java -jar je-4.1.10.jar
  • DbPreUpgrade_4_1 -h before moving to version 5, see BDB Release * Notes
  • New TSpace gc strategy with dual expirables sets

jPOS 1.8.4 -- released 04/12/2011 (3eba026)

jPOS 1.8.3

  • jPOS-47 Add support to ISOUtil.protect to accept 'D' as delimiter
  • jPOS-48 Added methods to parse and format conversion rate fields
  • jPOS-50 Adding implementation of LocalSpace for JESpace
  • jPOS-51 Update ISOCurrency.properties
  • jPOS-49 Added service of packaging complex field (as binary) if it is defined as opaque
  • jPOS-46 SimpleMsg support in ProtectedLogListener
  • [jPOS-45[(https://jpos.org/issues/issue/jPOS-45) EncryptedPIN.extractAccountNumberPart with length of accountNumber < 13
  • jPOS-44 LogEvent: ConcurrentModificationException issue
  • jPOS-43 'truncate' attribute in fixed length fields
  • jPOS-5 XMLPackager header encoding
  • jPOS-3 XMLPackager header encoding
  • jPOS-42 QMUX, header and non ISOMsgs (i.e. FSDISOMsg)
  • raise ISOException if QMUX.getKey() does not have content besides the MTI * 20b388b

jPOS 1.8.2

  • jPOS 1.8.2 0141850

jPOS 1.8.1

  • bugfix: DirPoll sets processor even if Processor is not an instance of LogSource
  • jPOS-39 XMLPackager charset bytes issue
  • TransactionManager now support dynamic session creation [g142f8bb]
  • jPOS-40 QMUX startService method query
  • Added jPOS Archetype

jPOS 1.8.0

  • First jPOS version built by Maven - We have now jpos-1.8.0 and compat_1_5_2 as independent Maven artifacts. The 1.7 series has been tagged as v1_7

jPOS 1.7.1

  • jPOS-37 Add xml definition support for TransactionManager.statusListeners ([https://github.com/jpos/jPOS/commit/0b8b16e0de116b805dc4c6088f4b238426d47934 0b8b16e])
  • As of r3019, we moved the jPOS development to [http://github.com/ar/jPOS Github]
  • GenericPackager now uses an entity resolver (r3019)
  • Bugfix on MAC generation, use HashMap instead of TreeMap in JCEHandler (r3002)
  • jPOS-24 TSpace.dump now shows key count (r3008)

jPOS 1.7.0''' -- released 25/06/2010 (r3000)

  • Tagged as tags/v1_7_0

jPOS 1.6.9

  • jPOS-21 QServer registers the underlying ISOServer with the NameRegistrar, but not QServer itself (r2944)
  • Q2 now has an instanceId (r2949)
  • Q2 now support transient descriptors (r2950)
  • jPOS-23 Encoding issue in ISOMsg.getBytes(int) and ISOMsg.getBytes(String) (r2959)
  • ReConfiguration now deprecated (r2961)
  • BSHTransactionParticipant, BSHGroupSelector and BSHMethod moved to module txnmgr. Package renamed to org.jpos.transaction.participant (r2962)
  • ISORequest moved to compat_1_5_2 module (r2963)
  • jPOS-3 improved unpack exceptions
  • jPOS-12 Add ability to use 'header' as part of the key in QMUX's ''
  • jPOS-25 JESpace now implements Loggeable
  • jPOS-19 QMUX - add ability to use inner fields as keys (r2972)
  • jPOS-20 ChannelAdaptor write-only mode and timeout (r2974)
  • Q2 now supports NameSpaces and XInclude (r2982)
  • jPOS-30 LMK & scheme variants for JCESecurityModule (r2983)
  • jPOS-31 BaseChannel small issues packager before filters (r2989)
  • jPOS-32 Updated ISOCurrency.properties (r2996)
  • jPOS-33 NPE issue on unconnected ChannelAdaptor when calling isConnected() (r2997)
  • jPOS-34 ISODate now supports Locale (r2998)
  • jPOS-35 BaseChannel.receive now logs ISOMsg before applying filters (r2999)

jPOS 1.6.8 -- released 25/06/2010 (r2938)

  • Tagged as tags/v1_6_8

jPOS 1.6.7

  • Added ISOPackager.getDescription(), ISOMsg.dump() now shows packager's description as a comment (r2850)
  • HEXChannel new behavior [https://jpos.org/issues/issue/jPOS-6 jPOS-6] (r2851)
  • GenericPackager now push logger to sub packagers [https://jpos.org/issues/issue/jPOS-8 jPOS-8] (r2853)
  • Added Space.put operation (r2858)
  • Profiler support for duplicate checkpoint descriptions (r2859)
  • Include fpath option on hasField and unset (r2860)
  • [https://jpos.org/issues/issue/jPOS-10 jPOS-10] Issue with ProtectedLogListener and ISOMsg change to use TreeMap (r2861)
  • Added ISOMsg.getComponent(fpath) (r2864)
  • [https://jpos.org/issues/issue/jPOS-2 jPOS-2] ISOUtil​.​protect doesn​'​t properly mask track​-​1 trailer (r2867)
  • Add support for a FSDMsg to have a default key schema and not require every key to has its own schema (r2869)
  • [https://jpos.org/issues/issue/jPOS-13 jPOS-13] ISOMsg/ISOAmount serialization issue (r2873)
  • [https://jpos.org/issues/issue/jPOS-16 jPOS-16] LogEvent records log time and LogEvent lifespan (r2877)
  • [https://jpos.org/issues/issue/jPOS-17 jPOS-17] Added max-active-sessions and retry-timeout to TransactionManager (r2886)
  • Upgraded jDOM to 1.1.1 (r2887)
  • QServer has support for in and out queues (r2892)
  • Added new QMUXProxy, QMUXProxyAdaptor and RemoteQMUX (r2892)
  • Profiler now uses nanos instead of millis for better accuracy (r2898)
  • Added automatic profiling to TransactionManager (r2899)
  • Added org.jpos.util.TPS, TransactionManager StatusEvents, TMMonitor (r2919)
  • Updated JE libraries to 4.0.103 (r2929)
  • CardHolder(ISOMsg) expiration date is now optional (r2932)
  • TransactionManager's paused-timeout default is now 0 (r2933)

jPOS 1.6.6

  • Tagged as tags/v1_6_6

jPOS 1.6.5

  • DirPoll now accepts a 'zero-length' property (r2721)
  • Space interface now supports generics (r2729)
  • Added ISO-8583 v2003 support (r2731)
  • Added helper method boolean ISOMsg.getFields() (r2733)
  • Added Q2 start() and stop() methods (r2735)
  • OneShotChannelAdaptor now support handback-field(s) property (r2740)
  • New build target 'srcjar' for source browsing and debugging in IDEs like Eclipse (r2750)
  • Added org.jpos.util.WatchDog (r2752)
  • Added XML preamble to RotateLogListener (and DailyLogListener) r2761
  • Fixed issue with ISOMeter counters not going beyond 1M messages (r2763)
  • Added JESpace (r2784)
  • Added junit.jar to lib/test directory, and added tests and code for separator attribute and nested property elements in key fields for handling key fields with values like backslash and spaces (r2788).
  • ChannelAdaptor.getCountersAsString() now show idel time instead of last transaction timestamp (r2789)
  • Added BaseChanne.getDynamicHeader(header, image) (r2791)
  • QMUX fixed bug with notifications (xx4x/xx50) (r2804)
  • QMUX Handle situations where STAN length is > 6 in versions earlier than v2003 (r2808)
  • BaseChannel fixed important bug in clone that affects ISOServer (r2813)
  • XMLPackager now suppors payload as field content in addition to the 'value' attribute (r2817)
  • Aligned packing length error to match class name on several ISOFieldPackagers (r2818)
  • Provide direct route into Channel to allow sending of data in addition to ISOMsg (r2822)
  • Added Dumpable helper class and DebugFilter (r2827)
  • ISOComponent.getChildren is now a Map (r2836)
  • Bugfix in BCDInterpreter, RIGHT_PADDER_F, added IFB_FNUMERIC and IFB_FLLNUM (r2841)
  • QMUX XML config now support mtimapping element (r2842)

jPOS 1.6.4 -- released 25/5/2008 (r2710)

  • Tagged as tags/v1_6_4

jPOS 1.6.3

  • Default MAC implementations in JCESecurityModule for CBC-MAC and EDE-MAC based on MAC algorithms available in BouncyCastle JCE provider (r2633 - demsey)
  • Added FSDISOMsg, DummyPackager and FSDChannel (r2635)
  • Bugfix in BCDInterpreter related to padding (r2636)
  • Use ISO8859_1 encoding in FSDMsg and FSDISOMsg (r2640)
  • FSDMsg now has a setMap(Map) method (r2645)
  • FSDMsg added dummy separator (DS) (r2646)
  • Prevent defense in JDBMSpace.gc() and TSpace.gc() to avoid killing DefaultTimer on exeption (r2649)
  • Added Contributed QBeanFactory (r2656 - bharavi)
  • ISOUtil handle odd-length in hex2byte (String) (r2656 - bharavi)
  • Added Space.existAny(Object[] keys) and Space.existAny(Object[] keys, long timeout) (r2664)
  • NACChannel supports new optional property 'tpdu-swap', defaults to true, the old behavior (r2667)
  • Added IFMC_LLBINARY, patched EuroSubFieldPackager in order to deal with Binary fields (r2669)
  • Added TelnetXMLChannel (r2670 - mark)
  • Fixed bug in ISOMsg's bitmap when using fields > 192 (r2673)
  • Added ChannelInfoFilter (r2674)
  • Added SysLogListener (r2688)
  • Prevented ArrayIndexOutOfRange in ISOBasePackager.getFirstField() (r2700)
  • Optimized imports in DirPoll, removed dependencie with compat_1_5_2 [ReConfigurable] (r2701)
  • Added getEntry to Profiler (r2704 - dbergert)

jPOS 1.6.2 -- released 25/5/2008 (r2626)

  • Tagged as tags/v1_6_2

jPOS 1.6.1

  • added ISOCurrency.getCurrency(String) (r2466)
  • added ISOPackager.createISOMsg() factory method (r2469)
  • new SpaceTap class (r2475)
  • added IFA_LLLLBINARY (r2480)
  • added Context.resume(), new ISOResponseListener interface (Work in progress) (r2488)
  • added ISOServer.getISOChannel(String) method (r2490)
  • added getCountersAsString and resetCounters to QMUX and ChannelAdaptor MBean (r2494)
  • added getCountersAsString(*) to QServer and ISOServer (r2500)
  • ISOServer, QMUX and ChannelAdaptor are now loggeables (and would dump the counters) r2502
  • QMUX implements async functionality (r2509)
  • Added jPOS CLI support and some initial commands (r2517)
  • add new helpers to Configuration (getInts, getLongs, getDoubles...) (r2530)
  • new ThroughputControl and ThroughputControlFilter (r2530)
  • added ISOMsg.getBytes(int) (r2532)
  • bugfix in FSDMsg leading blanks on variable length fields, added EOF modifier (r2539)
  • added Space.push operation (r2541)
  • resumed transactions take precedence over standard ones (r2542)
  • added GZIPChannel flush (r2545)
  • fixed race condition in TransactionManager pausable context (r2547)
  • Added optional "recover" configuration property to TransactionManager (defaults to true, r2548)
  • ChannelAdaptor, added optional 'ignore-iso-exceptions' element (r2551)
  • bug fix in QMUX.mapMTI (issue matching retransmissions) (r2556)
  • QMUX support for ISO-8583 version 2003 (STAN's length is 12) (r2564)
  • Added new connect-timeout configuration property to BaseChannel (r2567)
  • BaseChannel now support [multiple] alternate-host and alternate-port (r2568)
  • License upgrade to AGPLv3.0 (r2569)
  • Removed MX4J-specific JMX extensions - MX4J is now optional (r2571)
  • Added NameRegistrar.getIfExists (r2576)
  • EBCDIC related packager support contributed by Alexander Yakovlev (r2593)
  • ISOMsg - added support for field paths (r2596)
  • ProtectedLogListener support field paths (r2598)

jPOS 1.6.0 -- released 21/4/2007 (r2465)

  • Upgrade to jdom-1.0.jar
  • Changed LogEvent to support new jdom version
  • Upgraded build system (uses jPOS-EE's approach
  • Added DailyLogListener
  • Use crimson instead of xerces
  • Created compat_1_5_2 module
  • Upgraded jdbm to 1.0
  • transient:* and persistent:* Spaces 'urns' now maps to TSpace and JDBMSpace
  • ISOMsg writeExternal and readExternal now honors packager if available
  • ISOMsg.set(int,String) can be used for ISOBinaryFields provided there's a packager associated with the ISOMsg (the string is interpreted as hex)
  • Added appropriate thread names
  • TransactionManager stuff moved to its own module 'txnmgr'
  • BaseChannel.disconnect closes socket before closing streams (better SSL behaveour)
  • ISOServer do not drop connection on VetoException
  • bugfix in Log4JListener (if watch=0 use default watch to avoid CPU going up to 100%
  • TSpace and JDBMSpace throws NPE at out time if either key or value are null
  • ISOCurrency's data moved to a ResourceBundle
  • Dump hexstring of binary fields in ISOBasePackager.unpack
  • Added IFE_AMOUNT
  • Added TransactionManager debug property
  • TransactionManager creates default persistent-space if one is not specified
  • TransactionManager honors participants configured after group selectors
  • TransactionManager now support RETRY action at prepare time (r2359)
  • QServer.stop - avoid npe on unstarted/misconfigured servers (r2360)
  • ISOChannelPanel now supports wipe and protect attributes (r2363)
  • Added IFE_SIGNED_NUMERIC and SignedEbcdicNumberInterpreter
  • Added sendKeepAlive() method to BaseChannel
  • New ´keep-alive´ element in ChannelAdaptor
  • FSDMsg trunk fields bigger than length
  • Reworked 3rd bitmap support
  • QMUX now support multiple ready indicators
  • NPE in Q2 startup when deploy directory is not available/readable
  • ISOServer now honors new keep-channels property (true|false)
  • Added bind-address and backlog properties to ISOServer
  • ISOServer: close ThreadPool on shutdown
  • FSDMsg truncate A fields larger than length
  • synchronized NameRegistrar
  • GenericSubFieldPackager - pack dummy fields if field is not available and inner message has no bitmap
  • QMUX now supports new .. configuration element (defaults to 41, 11).
  • Added org.jpos.transaction.participant.HasEntry general purpose Group Selector
  • TransactionManager attempts to call setTransactionManager(TransactionManager) on participants
  • Bugfix in IF_TCHAR (unpack offset - r2410)
  • Added Q2.shutdown (boolean join) (r2414)
  • Added Join participant (r2416)
  • Added keep-alive property to BaseChannel (r2417) - feature request #404
  • Include a call to tx & rx.interrupt so that an idle ISOMUX will honour terminate requests.
  • added setOverrideHeader(boolean) and isOverrideHeader() to BaseChannel
  • ISOUtil.normalize uses UTF-8 encoding
  • BaseChannel: added protected int getHeaderLength(ISOMsg m)
  • TransactionManager.stop() wait (via join) for sessions to terminate (r2422)
  • ISOServer/ThreadPool: Added socket closure in the event of ThreadPool exhaustion. Combined with a tightening of count of active, working and available Threads in ThreadPool itself (r2423).
  • Added IFA_LLLLLLCHAR field packager (r2424)
  • Bugfix in DailyTaskAdaptor in order to deal with daylight saving change (r2425)
  • XMLPackager honors optional 'header' element at unpack time. (r2426)
  • bugfix in ChannelAdaptor: honor reconnect delay on peer-disconnect exceptions (r2429)
  • Added new configuration element to QMUX (r2432)
  • genericpackager.dtd - added optional firstField element to fieldpackager and isofieldpackager (r2434)
  • QMUX added removeISORequestListener (r2435)
  • IFB_LLLHCHAR, IFB_LLLHECHAR and IFB_LLLHBINARY length can go up to 65535 (r2437)
  • ISOBasePackager - add support for composite MTIs (r2438)
  • BaseChannel accepts new max-packet-length optional property - new default size 100k (r2441)
  • bugfix: ISOServer clones max-packet-length
  • Added new MUXPool component (r2443)
  • TransactionManager minor optimization - do not take snapshot if psp is not actually persistent (r2444)
  • SpaceUtil new wipeAndOut helpers (r2447)
  • TransactionManager - new PAUSE support (r2448)
  • bugfix: GZipChannel compressed/uncompressed length (r2458)
  • TransactionManager new method getOutstandingTransactions (r2459)
  • added org.jpos.transaction.participant.Forward (r2459)
  • added org.jpos.transaction.participant.CheckPoint (r2460)
  • QFactory.properties added txnmgr and transaction-manager aliases (r2462)

jPOS 1.5.2

  • Tagged as v1_5_2 - only available via subversion

jPOS 1.5.1

  • org.jpos.util.DefaultTimer - set daemon flag
  • FSDMsg: use TSpace instead of TransientSpace
  • BASE1Header.unpack doesn't clone byte array
  • ChannelAdaptor now registers itself in the NameRegistrar
  • IFB_BITMAP, deal with primary bitmaps where bit 0 turned on doesn't mean we have a secondary bitmap.
  • FSDMsg, bugfix: read was breaking on FS, even if fs=false
  • ConnectionPool - Altered getConnection to wait if maxConnections is not reached and a new connection is pending even if waitIfBusy is false.
  • Added QBean based SystemMonitor (org.jpos.q2.qbean).
  • BSHFilter honors returned ISOMsg
  • Q2 prevents exiting the JVM when not running in standalone mode (i.e. inside an appserver)
  • org.jpos.ui.action.Exit now accepts an optional exit code
  • q2mod_jpos added ConnectionPoolAdaptor
  • BaseChannel.sendMessage (byte[] b, int offset, int len) was not honoring offset and length - fixed.
  • QMUX register itself with the NameRegistrar at ''init'' time instead of ''start''
  • NPE in ISOUtil.trimf
  • IF_NOP.pack now returns a zero-length byte array instead of null
  • EuroSubFieldPackager.pack fixed problem with ebcdic subfields
  • Added support for postpack F127.26
  • Fixed postpack fields 127 and 52
  • BSHTransactionParticipant implements AbortPartipant - added optional trace attribute
  • ISOBasePackager.unpack raises exception if field packager not configured
  • Added SunJSSESocketFactory.getConfiguration()
  • BaseChannel now honors local-iface and local-port properties
  • Fixed bug in ISODate.parseISODate, added unit tests
  • ChannelAdaptor doesn't disconnect on VetoException
  • BSHFilter handles VetoException
  • TLVList allow starting offset on unpack
  • FSDMsg.dump more YAML-ish and less XML-ish
  • q2modules - added OneShotChannelAdaptor
  • TLVList allow data stream being unpacked to end with padding (0x00 or 0xFF)
  • Bug fix in BCDInterpreter (when using RIGHT_PADDED_F)
  • Added GZIPChannel
  • ISOMsgPanel: Ask the message to be displayed for the highest field, rather than assume 128
  • ConnectionPool retries connections on errors (r2260)
  • GenericSubFieldPackager skip over null fields, this allows fields to be non-sequential in number. (r2262)
  • Q2 - Include thrown Errors in the problem renaming processing (.ENV extension)

jPOS 1.5.0

  • Released in 09/18/2005 (Tagged v1_5_0)

jPOS 1.4.9

  • new package org.jpos.tlv (TLVMsg, TLVList)
  • Added HEXChannel
  • LogEvent new constructors (no need for LogSource), added toString()
  • FSDMsg supports 'B' type (Binary data)
  • DirPoll - ability to archive processed requests
  • BaseChannel.disconnect - set SO_LINGER to zero
  • #423 - ISODate.parseISODate - force milliseconds down to zero.
  • Changed sendMessageTrailler signature in order to make packed image available.
  • Added interface ReadableConfiguration
  • Added Configuration.put
  • JDBMSpace and TSpace performs automatic gc by means of a Timer task
  • Added LocalSpace.addListener(key,listener,timeout)
  • New TSpace implementation
  • Added ObjectTemplate
  • bugfix in SpaceProxy jndi binding
  • BSHRequestListener whitelist support
  • Added BSHTransactionParticipant and BSHGroupSelector
  • Added XmlConfigurable to jpos-util.jar
  • Q2Configurable replaced by org.jpos.core.XmlConfigurable
  • Q2ConfigurationException replaced by ConfigurationException
  • ISOException accepts throwable as nested parameter (instead of Exception)
  • Bugfix in ISOUtil ebcdic tables
  • Enhanced support for SSL in ChannelAdaptor and QServer
  • Added IFB_LLLHCHAR
  • Bugfix in RowMap (escape "'")

jPOS 1.4.8

  • released Oct 2004 (tagged: v1_4_8)

jPOS 1.4.7

  • Added ExceptionLogFilter
  • Added setSocketFactory(ISOClientSocketFactory) to ISOChannel. All classes who implement ISOChannel will need to add this method.
  • Made SunJSSESocketFactory configurable. Can specify keystore and clientauth now in Q2.
  • SunJSSESocketFactory client authentication added.
  • Upgrade to JDom beta 10
  • LogEvent now handle JDom Elements
  • added org.jpos.transaction.GroupSelector
  • added JDBMSpace.getKeys()
  • Bugfix in ISOBasePackager (fields > 128)
  • Added SpaceUtil.nextLong(sp,key)
  • MX4J upgraded to 2.0.1
  • ISOServer: new factory method createSession
  • ISOServer: new method getLastConnectedISOChannel
  • BaseHeader implements Loggeable
  • ISOMsg.dump dumps header
  • BaseChannel.receive hexdumps header and binary image on ISOException
  • Added org.jpos.transaction package
  • Added ISOUtil.hexdump (byte[], int, int);
  • Bugfix in IFEB_LLNUM.unpack (ISOComponent, InputStream)
  • Added TinySpace, org.jpos.space.Request
  • CardSelector, added remove(CardBrand) method
  • CardBrand, added handBack object
  • Added Padder, Interpreter and Prefixer interfaces for easy implementation of field Packagers.
  • Added JDBMSpace template based in/rd
  • New ISOFieldPackager implementation (based on interpreters, padders and prefixers)
  • Added BSHLogListener
  • Track1 support in CardHolder
  • Added SpaceUtil
  • Added SpaceFactory(spaceUri), SpaceInterceptors
  • Added FSDMsg (Field Separator Delimited Message)
  • Bugfix: IFB_LLLHECHAR wrong maxlength
  • Added helper ISOUtil.hexdump (String)
  • Bugfix: handle ISOException in ISOMUX.doTransmit
  • Added ISOBasePackager.setFieldPackager (int, ISOFieldPackager)
  • Added JDBMSpace
  • Added Space.out (key,value,timeout) method
  • New ISO93BTLVPackager/TLVField, etc.
  • LogListener.log now returns a [possibly null] LogEvent
  • New package org.jpos.ui
  • Added org.jpos.bsh (BSHFilter, BSHRequestListener)
  • New method ISOUtil.str2bcd (String s, boolean padLeft, byte fill)
  • Bugfix: NPE in ISOServer.checkPermission when used standalone
  • Bugfix: RotateLogListener.logDebug () - synchronized
  • Support AspectJ 1.1

jPOS 1.4.6

  • released Jul 2003 (tagged: v1_4_6)

jPOS 1.4.5

  • Removed Q2 and related modules.
  • Added PersistentSpace
  • Added ISOMsg setSource/getSource
  • Support for ISOValidators (contributed by Jose Eduardo Leon)
  • New application: Q2
  • Replaced JMXRI by MX4J, new HTTPAdaptor, JNDIAdaptor and RMIAdaptor
  • Security: new 'allow' property in ISOServer (checks peer IP)
  • Added: packager/nyceiso8583.xml (contributed by Henry Chan q8e192@yahoo.com)
  • QSP: new thread-pool tag
  • ISOMeter, new scroll and refresh attributes (contributed by Kris Leite)

jPOS 1.4.4

  • released Sep 2002 (tagged: v1_4_4)

jPOS 1.4.3

  • Removed deprecated ISOFactory and ISOFactory based examples
  • New org.jpos.apps.qsp.Router class
  • SQLFilter and CalculateFilter contributed by Zhiyu Tang
  • QSP New tag
  • New org.jpos.space package and supporting classes
  • New MUX and Channel interfaces
  • New Stream based pack/unpack
  • New stream based approach to PADChannel
  • New ChannelPool
  • Bugfix: MacroFilter problem with nested ISOMsgs
  • XMLChannel: Better handling of message boundary
  • New BlockingQueue.dequeue (timeout) method
  • GenericPackager now support reading config file from XML InputStream (code contributed by Mat?as Salvador mhs@sisa.com.ar)
  • QSP's tag now support new "class" attribute (code contributed by Andres Alcarraz aalcarraz@cabal.com.uy)

jPOS 1.4.2

  • Released May 2002 (tagged: v1_4_2)

jPOS 1.4.1

  • Added IFA_LCHAR (contributed by Kris Leite)
  • New SubConfiguration class contributed by Andres Alcarraz
  • BaseChannel honours header
  • Sender and MacroFilter added support for specifying timezone in the $date
  • Added org.jpos.security package, examples, unit tests
  • QSP Sender task is now an MBean
  • new ISOMsg.unset (int []) method
  • MacroFilter now accepts "valid" and "unset" config properties
  • new WebServer task (integrates Jetty with QSP)
  • new TLVPackager
  • new EJBConnector (and EJBConnectorMBean)
  • new LogChannel/LogPackager can be used to reprocess jPOS's log files
  • Bugfix: AWT blocker activation interrupted (JDK1.4+QSP+GUI)
  • Bugfix: jmxri.jar added to jpos.jar's manifest

jPOS 1.4.0

  • Released Feb 2002 (tagged: v1_4_0)

jPOS 1.3.9

  • Added MacroFilter (useful to set sequencers, date, etc.)
  • Added SAFChannel (reliable Store and forward)
  • Sender task now support $date and $sequencer, sequencer property and one-shot.* Added preliminary JMX support
  • Tagged all files as v1_3_9_preJMX
  • added byte[] ISOUtil.hex2byte (String s)
  • added static Configuration QSP.getGlobalConfiguration()

jPOS 1.3.8

  • Released Nov 2001 (tagged: v1_3_8)

jPOS 1.3.7

  • Added static QSP.getTask (name);
  • QSP allows custom tags
  • Configuration now allow multiple properties with the same name.
  • New helper method in Configuration.
  • QSP qsp-config accepts name and property*.
  • QSP : name attribute is added as a property to configuration object.
  • QSP : added support for non-Runnable tasks.
  • bugfix: NullPointer in Header serialization (reported by Bharavi).
  • ConnectionPool QSP example (added by Rajal)
  • bugfix: XMLPackager - problem with inner messages (added unittest)
  • bugfix: ProtectedLogListener setting alien wiped fields
  •     (Thanks Soren Hilmer <sh@itplus.dk>).
    
  • bugfix: ISOBaseHeoder.unpack, use factory method for MTI too
  •     (Thanks Soren Hilmer <sh@itplus.dk>).
    
  • moved BASE1Header from org.jpos.iso to org.jpos.iso.header.
  • added org.jpos.iso.ISOHeader and org.jpos.iso.header package .
  • VAPChannel now uses org.jpos.iso.header stuff.

###jPOS 1.3.6 *Released Sep 2001 (tagged: v1_3_6)

jPOS 1.3.5

  • New renumber test in examples/isomsg
  • Added ISOMsg.move (old,new) method.
  • Added setFieldNumber to ISOComponent in order to effectively renumber
  • a component. --thanks Eoin!
  • BaseChannel setHeader before unpack (unpack can access header) --thanks Eoin!
  • Bugfix: extended bitmap was generated/expected when MAC present --thanks Hani!
  • Added ConnectionPool support (tpl and QSP) --thanks Rajal!
  • Added static launch(String) method to QSP
  • Added PackagerWrapper and CryptoPackager
  • Preliminary jUnit support (ant's "test" target)
  • Changed build.xml (conditionally build ext module if jars are available)
  • LoopbackChannel now clones incoming ISOMsg (in order to simulate a real channel)

###jPOS 1.3.4

  • Released Jun 2001 (tagged: v1_3_4)

jPOS 1.3.3

  • new Externalizable strategy on ISOMsg.
  • new class org.jpos.util.DefaultTimer().
  • RotateLogListener uses DefaultTimer (instead of its own Thread requires JDK1.3).
  • RotateLogListener accepts new 'maxSize' parameter.
  • new method ISOUtil.protect();
  • Added ProtectedLogListener.
  • LogEvent added getPayLoad() (required by ProtectedLogListener.
  • updated build and jars (Ant 1.4 - crimson, jaxp).
  • added log4j preliminary support.
  • Added BaseChannel.getServerSocket().
  • ISOBasePackager.unpack rethrows ISOException (should an Exception occur).
  • ISOBinaryField.setValue accepts either byte[] or String.
  • ISOMsgFieldPackager.pack allow components other than ISOMsg to be passed in.
  • BaseChannel.newSocket changed signature (no args now).
  • BaseChannel.accept now closes listening socket.
  • ISOMsg set(fldno,String), set(fldno,byte[]) and new constructor ISOMsg(mti).
  • New classes ISOServerFactory and ISOClientFactory
  • BaseChannel new easy to override sendMessage (encryption hook).
  • BaseChannel uses ISOClientFactory (SSL hook).
  • Changes to BaseChannel and ISOServer to support SocketFactories
  • Added SunJsseSocketFactory contributed by Bharavi Gade.

Clone this wiki locally