Repository navigation
Say in AGENTS.md how to get the data, build and run the examples - #41
Merged
Merged
Conversation
AGENTS.md now opens with "Run the examples", which takes a fresh clone to the output of the Device Detection and IP Intelligence GettingStartedOnPrem examples in order. It covers the prerequisites, the free data files in the layout on rc today and in the cxx/data layout that #37 brings, the Maven build of an examples folder against the published packages, the java commands, what the output looks like, the cloud examples' resource keys, and the pitfalls found in the repository. The Releases section from #39 is added with the same text in the same place, so either pull request merges cleanly after the other.
#37 moves the examples, tests and CI to the data repository in cxx/data, and merges before this. The run steps now give only that layout. The steps and pitfalls for the old data submodules and Git LFS are gone, and so is the choice between two layouts. The examples find a missing free file's link with FileFinder and run the download script for it, with Windows PowerShell on Windows and sh elsewhere, so the steps say so, and the IP Intelligence argument and the Enterprise path are the ones DataFileHelper uses now. The line endings pitfall is gone, because the data repository keeps its shell script LF.
jwrosewell
marked this pull request as ready for review
November 4, 2026 18:07
Merged
jwrosewell
added a commit
that referenced
this pull request
Nov 4, 2026
Releases what has collected on `rc` since #30: - [#37](#37) Use the data repository for the examples, tests and CI - [#41](#41) Say in AGENTS.md how to get the data, build and run the examples - [#42](#42) Point package metadata at this repository and fix stale links - [#39](#39) Describe the rc approach to releases in AGENTS.md - [#40](#40) Check the callback URL before the JavaScript builder writes it - [#44](#44) Close every FlowData, Pipeline and metadata collection, and fail the build when one is left open ## Release note From [#44](#44): - `ComponentMetaData.getProperties()`, `ProfileMetaData.getValues()`, `ProfileMetaData.getValues(String)` and `FiftyOneAspectPropertyMetaData.getValues()` now declare `CloseableIterable` rather than `Iterable`, which is what the on-premise engines have always returned. Close the collection, for example in a try-with-resources statement, so that it releases the engine's data set straight away. Source that assigns the result to an `Iterable` still compiles. Code compiled against the old declared types needs recompiling, and a class that implements one of these interfaces needs its method to declare `CloseableIterable`, so this is a small breaking change. The release stays a patch release. - `PipelineBuilder.buildFromConfiguration` now closes the elements it has already built when building fails. - The servlet filter and the Spring interceptor now close the request's FlowData on every path. ## Notes The cxx submodule moves from [4.5.102](https://github.com/51Degrees/51degrees-cxx/releases/tag/4.5.102) to [4.5.103](https://github.com/51Degrees/51degrees-cxx/releases/tag/4.5.103). That release adds the [data](https://github.com/51Degrees/data) repository at `cxx/data` and changes nothing under `src/`. No commit asks for a major or minor version change, so the publish moves only patch numbers. The last release into `main` was #30, merged at 06:35 UTC on 4 November 2026.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge order
Merge this after #37, which moves the examples, tests and CI to the data
repository in
cxx/data. The run steps here describe only that layout, sothey are wrong on
rcuntil #37 is in.Why
AGENTS.mdheld notes for changing the code, and nothing on running anexample. Someone new to the repository, asked only to get an example running
and show it, had to piece the steps together from the root README, the two
example READMEs, the poms and the example sources, and would still meet the
problems listed under "Pitfalls" by trial and error.
What changes
AGENTS.mdopens with a new section, "Run the examples", which gives thesteps in order for the Device Detection and IP Intelligence
GettingStartedOnPremconsole examples.device-detection.versionandip-intelligence.version, 4.5.128 onrcand on Use the data repository for the examples, tests and CI #37's head, from Maven Central unless
-Pdevis given(
examples/*/pom.xml). The publisheddevice-detection.hash.engine.on-premiseand
ip-intelligence.engine.on-premise4.5.128 jars were downloaded andtheir entries listed, and they hold the native libraries named under
"Pitfalls". The
device-detection.sharedandip-intelligence.sharedtestjars the examples also take are on Maven Central at 4.5.128.
or
mvnw),ci/options.json(Java 8, 11, 17 and 21) and the tools thedata repository's download scripts need. On Linux and macOS that is
curl,gzipandmd5sum(md5on macOS), and on Windows it is WindowsPowerShell 5.1 or PowerShell 7.
cxx/data, andcxx/data/get-data-files.shorget-data-files.ps1downloads them. OnWindows the step runs the script with
powershell -NoProfile -ExecutionPolicy Bypass -File, asrunDownloadinboth
DataFileHelper.javafiles does, because the policy Windows sets bydefault can refuse a script file.
mvn -pl console -am package -DskipTests, run in an examplesfolder, is the form
ci/run-integration-tests.ps1uses for the cloud webexample. The fat jar comes from the
jar-with-dependenciesassembly thateach
console/pom.xmlbinds topackage.java -cp <jar> <class>from the root.FileFinder.getFilePathsearches only below
user.dirwhenproject.rootis not set, and theexamples find
logback.xml, the data file, a missing file's.linkandtheir options XML that way.
findDataFileinDataFileHelper.javarunsthe download script for a free file that is missing. The IP Intelligence
example defaults to
ip-intelligence/51Degrees-EnterpriseIpiV41.ipi(
DataFileHelper.ENTERPRISE_DATA_FILE_REL_PATH), so it is givencxx/data/ip-intelligence/51Degrees-LiteV41.ipias its first argument,which it downloads when the file is missing.
GettingStartedOnPrem.javafiles, bothEvidenceHelper.javafiles, bothDataFileHelper.javafiles and the IPIntelligence
PropertyHelper.tryGet, which turns a property the data filelacks into an "Unknown" line rather than an exception.
examples/device-detection/README.mdgives, andKeyHelperandGettingStartedCloud.mainsay where the key is read from.cover, in the published jars.
The second commit removes what the first said about the layout
rchadbefore #37, being the steps for the old data submodules and Git LFS, the
choice between two layouts, the Git LFS pointer pitfall and the line endings
pitfall. The data repository's
.gitattributeskeeps its shell script and its links LF, so the line endings pitfall no longer
applies.
Every other section is unchanged. The "Releases" section from #39 is added
with the same text in the same place. #37 rewrites the "Data files and
project.root" notes further down, which this pull request leaves alone.How it was checked
Use the data repository for the examples, tests and CI #37's head (8e50767), being both
DataFileHelper.javafiles, bothGettingStartedOnPrem.javafiles, the IP IntelligencegettingStartedOnPrem.xml,FileFinder.java, the example poms andci/fetch-assets.ps1, and against the data repository at the commit cxx4.5.103 pins (e448dcf) for the scripts, their options and the shell
script's executable bit.
git merge-treemerges this branch with Use the data repository for the examples, tests and CI #37's head, with Describe the rc approach to releases in AGENTS.md #39's head(6ca4f17) and with
rc, each with no conflict.AGENTS.mdalone.Commands that neither CI nor the README gives
mvn -pl console -am package -DskipTestsin an examples folder adapts CI'scommand for the cloud web example to the console module.
java -cpcommands use the README form with today's jar names andGettingStartedOnPremin place ofOfflineProcessing, and are run from theroot with paths from there.
Found on the way, not changed here
examples/device-detection/README.mdandexamples/ip-intelligence/README.mdrun
javafrom the examples folder, whereFileFindercannot reach the datafile in
cxx, and name jars at 4.4.20 and 4.4.19.Still to check
AGENTS.md, is the check.