For releases 5.4.0 and later, please see the Java Client releases page.
- #1206 - README update to JCenter url
- #1263 - Switch jackson-dataformat-xml dependency to testCompile
- RowBatcher - bulk export of all rows or documents from a view (internal Jira issue)
- Refactored and Concurrent Bulk IO - concurrent calls to Data Services (internal Jira issue)
- #1197, #1223 - Added PathSplitter, JSONSplitter complementing existing splitters
- #1239 - Full outer join in Optic
- #1248 - Multi-valued equality expressions in Optic builder
- #981 - DOMWriter doesn't serialize namespaced XML properly
- #1238 - MetadataExtraction with DocumentWriteSet not extracting properties
- #1242 - RawCombinedQueryDefinition in QueryBatcher throws NPE
- #1244 - sevice property name typo in ServiceCompareTask
- #1185 - Splitter for large XML file
- #1209 - Cookbook example bridging from QueryBatcher to Data Services
- #1118 - Upgrade to OkHttp 4.4.0 release and gradle wrapper upgrade
- #1153 - Able to write empty document properties
- #1196 - Optional forest name parameter on DocumentManager search
- New package to make it easy to implement connectors for dataflow frameworks. Refer to https://github.com/marklogic/java-client-api/wiki/Bulk-Data-Services page for details.
- Two new splitters complementing JacksonCSVSplitter. LineSplitter for line-delimited payloads (JSON) and ZipSplitter splitter for entries in a zipfile
- #1163 - Eliminated potential for deadlocks between batches with URI sort and support for multibyte characters within uris
- #1177 - Addressed security vulnerability in Jackson by upgrading Jackson dependency
- #636 - Support for debugging connection issues
- #1104 - Fix for mimetype extensions in determining formats for Data Services
- #1107 - Expose server error information on the client
- #1117 - Few StructuredQueryBuilder methods enhanced to return StructuredQueryDefinition
- #911 - Streaming Multipart for OkHttp
- #1080 - Returns version id for multiple documents in single request
- #1101 - Parameter names as strings in Optic bindings to literals
- #885 - SecurityContext details exposed via getters
- #1090, #1098 - Removed deprecated interfaces and XOM dependency
- #1103 - OWASP recommendations to default parsers
- #862 - Support for Java 9, OpenJDK 10 and OpenJDK 11
- #965 - Enable QueryBatcher to take in a RawCtsQueryDefinition
- #1038 - Deadlock detection in multi-statement transactions
- #1052 - Splitter with CSV Implementation
- #1057 - Dependency on JAXB libraries conditional on Java version
- #995 - Support for Kerberos keytab file to authenticate
- #1020 - Provide missing DatabaseClientFactory Bean configuration
- #1046 - Jackson library upgrade to version 2.9.8
- #1006 - Data Services First - MarkLogic's support for microservices
- #999 - Connect only to primary host for load balancer scenario
- #991 - Correct cookie expiration for Application Load Balancer
- #989 - Manage cookies for used for host affinity in Transaction
- #968 - Deprecate XOMHandle
- #943 - Add base class for Proxy Services and integrate with the DatabaseClient
- #942 - Add value conversion utilities for Proxy Services
- #951 - Add utility to produce an SJS/Xquery main module from Proxy services function declaration
- 881 - Added a BlockingRunsPolicy for rejected tasks for better threadpool utilization
- 920 - Prevents QueryBatcher hang when you have a single thread
- 971 - Passed the TrustManager to SSLContext so that the trust manager is taken into account
- #839 - Export Data from Documents as Rows using DMSDK's ExportRowsViaTemplateListener by supplying a query and a TDE template name
- #853 - Exposed new Optic enhancements such as fromSql, fromSparql etc
- #882 - QueryBatcher Enhancements - Listeners can be registered with onJobCompletion to run listeners when the QueryJob is completed. Also methods have been added to get the primary client of the Batcher.
- #891 - The Batchers will automatically close the listeners registered with them if they have implemented AutoCloseable and have some resources to close
- #647 - Added an overload in WriteBatcher to add DocumentWriteOperation
- #835 - During Failover, if the hosts come back up from offline status, it would be automatically added back to the list of hosts
- #877 - Changed the Java Client API maven project to a gradle project
- #874 - EvalResultIterator implements Closeable and it can be now used in the try with resources pattern
- #892 - Removed NewCookie and replaced it with OkHttp Cookie thereby eliminating the mock implementation of RuntimDelegate class
- #567 - Cookbook recipe for moving data out of one MarkLogic database to another (intra/inter cluster) and having server and JVM transforms mid way.
- #909 - Added an overload for ModifyPlanBase.where to accept PlanCondition
- #879 - Increase queue size (will use more memory) for QueryBatcher so iterator thread won't be distracted running batches as often and can be more focused on feeding the queue
- #850 - Deprecated getQuerySuccessListeners and added getUrisReadyListeners
- #836 - A Failover Bug where WriteBatcher hangs forever in awaitCompletion due to internal inconsistency
- #474 - Performance Optimization when calling XMLOutputFactory::newInstance
- #826 - Fixed inconsistency in to return the correct number of writes so far for WriteBatches
- #860 - removed many License files and replaced it with LEGALNOTICES.txt
- #639 - support DocumentManager.setReadTransform for DocumentManager.search calls
- #690 - Get a JobTicket by JobId
- #752 - Allow setting JobId for a JobTicket
- #756 - Add RawCtsQueryDefinition support for values queries
- #787 - Support advancing LSQT
- #813 - Add NoResponseListener for failover scenarios which throw EOFException
- #818 - Document failover support
- #822 - Add initialization step for QueryBatchListener
- #838 - Add HostAvailabilityListener.RetryListener and QueryBatcher.retryWithFailureListeners to facilitate listeners retrying during failover scenarios
This release fixes many bugs related to failover scenarios
- #473 - add "ML-Agent-ID: java" header to improve request origination metrics
- #526 - Possible Race Condition during black-listing of hosts
- #557, #570 - Failures during failover require new HostAvailabilityListener.RetryListener
- #562 - Cookbook recipe for bulk export to JDBC
- #563 - Cookbook recipe for incremental load from JDBC
- #565 - Cookbook recipe for bulk load from JDBC
- #579 - Job not getting stopped when number of available hosts < 'minHosts' property
- #641 - Upgrade all dependencies
- #725 - Fix ServerEvaluationCall.evalAs(Class) closing underlying streams prematurely
- #744 - Fix a WriteBatcher hang in awaitCompletion after forest failover
- #768 - Document supported Java runtime
- #775 - Fix QueryManagerImpl which incorrectly hardcoded start page to 1
- #785 - Support HTTPS with OKhttp
- #798 - Fix WriteBatcher from retrying when job is stopped
- #802 - Remove a spurious warning about StringQueryDefinitionImpl
- #811 - Fix OkHttpServices which threw NPE when release() method called more than once
- #720 - Add a RawCtsQueryDefinition to parallel RawCombinedQueryDefinition and RawStructuredQueryDefinition
- #722 - add support for minimum distance on near-query
- #65 - Replace internal HTTP library Jersey with OkHttp to improve performance, future readiness #391, and overcome version conflicts #769, #282
- #470 - Share http connection pool across DatabaseClient instances to allow scenarios where many DatabaseClient instances are desirable
- #367 - Upgrade version of jdom2 dependency to 2.0.6 to overcome vulnerability in dependency xalan-2.7.1
- #368 - Remove dependency on jersey-apache-client4-1.17 to overcome vulnerability in dependency HttpClient 4.1.1
- #711 - Upgrade dependencies slf4j-api to 1.7.25
- #715 - Upgrade dependencies jdom2 to 2.0.6, gson to 2.8.0, and htmlcleaner to 2.19
- #400 - Optic API
- #402 - geo double precision and geo polygon search
- #404 - add Kerberos support
- #413 - add support for document metadata values
- #406 - certificate-based authentication
- #414 - Bitemporal ML9 features - version URI, Wipe, Protect, document patch
- #465 - Data Movement SDK
- #466 - add StructuredQueryBuilder.coordSystem to set Geo coordinate system
- #473 - send header "ML-Agent-ID: java" with every HTTP request so REST layer can track which calls come from Java Client API
- #550 - add Capability NODE_UPDATE
- many javadoc improvements
- #210 - fail fast when library module path doesn't begin with /ext
- #234 - offer a way to close the input source for XMLStreamReaderHandle
- #241 - fix misleading WARN warning message from values call
- #249 - fixes DocumentPatchBuilder.replaceValue with numbers or booleans
- #256 - be explicit about desired format of QBE response
- #262 - update SearchHandle to support search:extracted elements
- #288 - support changes made in server-generated metadata for binary docs
- #292 - support changes made in search:search response with extracted results
- #294 - DocumentPage.size was including metadata in counts but should not have
- #365 - reduce duplicate code in JerseyServices
- #421 - Some of the read handlers do not populate properly formats and mime-types when used with ResourceServices
- #424 - remove logback dependency so slf4j works as it should
- #436 - rename java-client-api-M.m.p.jar JAR to marklogic-client-api-M.m.p.jar
- #448 - Efficiencies: avoid Object construction, auto-boxing, etc.
- #486 - PojoRepository.count(query) does not scope count with the query
- #524 - add support for markdown javadocs
- #560 - support new 428 status code for missing content version
- #582 - NullPointerException thrown while doing eval() with client object created with incorrect credentials
- #610 - remove support for deprecated keyvalue endpoint
- #621 - remove deprecated APIs
- #651 - don't set the handle format from the descriptor if it's null
- #687 - clean up indenting across the project## 3.0.7
- some javadoc improvements and code/test cleanup
- #423 - add support to SearchHandle for extract-resolution time
- #592, #594, #598 - chunked HTTP broke certain XML parsers unless we set XMLInputFactory.isCoalescing to true
- full list here
- some javadoc improvements and code/test cleanup
- #380 - rename SPARQLQueryDefinition.setOptimzeLevel to setOptimizeLevel
- #392 - add DocumentWriteSet.addAs methods
- #432 - a more portable variant to initialize (and teardown) a test server
- #433 - moving JAXBContext initialization into a static, lazily initialized field
- #434 - pass thru full response body when an error message doesn't conform to expected formats
- #437 - fix support for Date range queries; upgrade to latest Jackson
- #467 - call shutdown on ThreadSafeClientConnManager (the HTTP connection pool) to avoid any lingering connections in CLOSE_WAIT
- #472 - remove unnecessary INFO logging from RuleDefinition
- expose PojoRepository.getId
- full list here
- some javadoc improvements and code/test cleanup
- #176 - deprecate QueryOptionsHandle since it depends on QueryOptions which is already deprecated
- #261, #266, #382, #388, and #390 - fix several errors when woodstox is used
- #364 and #381 - respect all cookies (including load-balancer created cookies) when Transaction is used
- add method ServerTransform.addParameter
- #378 - add DATE type support to RDFTypes
- #396 - fix DocumentManager.write(DocumentWriteSet, ServerTransform, Transaction) to use ServerTransform
- #395 - fix RuleManager.matchAs(content, ruleListHandle) which was throwing NPE
- full list here
- Semantics API - GraphManager for CRUD of semantic graphs; SPARQLQueryManager for executing SPARQL queries (select, describe, construct, and ask) and using SPARQL Update
- Enable MarkLogic Jena API (separate project)
- Enable MarkLogic Sesame API (separate project)
- Search Extract - add support to SearchHandle (actually MatchDocumentSummary) for content extracted by the extract-document-data option
- Bi-Temporal enhancements - support bulk write of bitemporal documents; expose bitemporal system time
- Bulk delete
- Many bug fixes
- Pojo Façade - persist POJOs as JSON objects and use a simple API to query them with all the power of MarkLogic's search engine
- Eval (and Invoke) - directly access MarkLogic's powerful server-side XQuery or JavaScript
- Bulk Read & Write - send and retrieve documents and metadata in batches for significant performance improvements
- JSON - JacksonHandle, JacksonDatabindHandle, and JacksonParserHandle make wrangling JSON a pleasure
- JavaScript Extensions - develop production-ready server-side extensions using ready-to-go scaffolding
For more details, please read this deeper dive