From da58bc0791dd4cad6f243f5830d9e9e742b343f2 Mon Sep 17 00:00:00 2001 From: James Rosewell Date: Tue, 3 Nov 2026 18:36:49 +0000 Subject: [PATCH 1/8] README: what it does, how to install it and where it came from (#26) The README now opens with what the code does in the words developers search for, then the install command, try-it links and, where there are any, the repositories it was created from. It ends with a Find out more section, and the logo is a file in the repository. Everything else the README said is kept. --- .github/images/logo.png | Bin 0 -> 17167 bytes README.md | 55 ++++++++++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 .github/images/logo.png diff --git a/.github/images/logo.png b/.github/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4be7430064391b6e021bb33b74ecb4a2d4fcbaad GIT binary patch literal 17167 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 -This repository holds the 51Degrees Java packages. Each package is still -published to Maven Central under its own coordinates, and the examples show -how a project of your own uses them. +**Java packages for the Pipeline API, Device Detection, IP Intelligence and Location** + +Our User-Agent parser for Java supports Device Detection, browser detection, mobile detection, and crawler detection on-premise or in the cloud. IP Intelligence adds IP geolocation, including IP to country data. + +It reads User-Agent and User-Agent Client Hints, HTTP request headers that carry browser and device information. For cloud bot detection, Human Confidence reports confidence that a person is viewing the page. + +## Install + +Each product is a separate Maven Central package. For Device Detection, cloud or on-premise: + +```xml + + + com.51degrees + device-detection + 4.5.x + +``` + +The product guides below list the other packages. To build from source, see [Getting the code](#getting-the-code). + +Try the [User-Agent tester](https://51degrees.com/developers/user-agent-tester?utm_source=github&utm_medium=readme&utm_campaign=51degrees-java&utm_content=readme.md&utm_term=install) and [IP tester](https://51degrees.com/developers/ip-tester?utm_source=github&utm_medium=readme&utm_campaign=51degrees-java&utm_content=readme.md&utm_term=install). For cloud use, [create a Resource Key](https://configure.51degrees.com/?utm_source=github&utm_medium=readme&utm_campaign=51degrees-java&utm_content=readme.md&utm_term=install). + +Created from `pipeline-java`, `device-detection-java`, `ip-intelligence-java`, `location-java`, `device-detection-java-examples`, and `ip-intelligence-java-examples`, this repository continues their work. | Product | Read first | Documentation | | --- | --- | --- | @@ -67,9 +88,9 @@ mvn install -DskipTests -pl device-detection -am mvn surefire:test ``` -The cloud tests need a resource key, passed as `-DTestResourceKey=`. The +The cloud tests need a Resource Key, passed as `-DTestResourceKey=`. The on-premise IP Intelligence tests need the Lite or Enterprise data file, which -is not in the repository; see `ip-intelligence/README.md` for how to get it. +is not in the repository. See `ip-intelligence/README.md` for how to get it. Tests find data files by searching from the root of this repository, so run Maven from here rather than from inside a package folder. @@ -106,6 +127,16 @@ with the plain version, such as `4.5.127`. ## History +| Earlier repository | What it held | +| --- | --- | +| [pipeline-java](https://github.com/51Degrees/pipeline-java) | The Pipeline API | +| [device-detection-java](https://github.com/51Degrees/device-detection-java) | Device Detection | +| [ip-intelligence-java](https://github.com/51Degrees/ip-intelligence-java) | IP Intelligence | +| [location-java](https://github.com/51Degrees/location-java) | Location | +| [device-detection-java-examples](https://github.com/51Degrees/device-detection-java-examples) | Device Detection examples | +| [ip-intelligence-java-examples](https://github.com/51Degrees/ip-intelligence-java-examples) | IP Intelligence examples | + + The folders `pipeline`, `device-detection`, `ip-intelligence`, `location` and the two example folders were brought in from the separate repositories [pipeline-java](https://github.com/51Degrees/pipeline-java), @@ -120,6 +151,14 @@ SHA. The history of a file before the import is under its old path, so read it from the imported commit, for example `git log aff7c544 -- pom.xml` for what is now `pipeline/pom.xml`. -## Licence +## License [European Union Public Licence v1.2](LICENSE) + +## Find out more + +- [Device Detection](https://51degrees.com/device-detection?utm_source=github&utm_medium=readme&utm_campaign=51degrees-java&utm_content=readme.md&utm_term=find-out-more) +- [IP Intelligence](https://51degrees.com/ip-intelligence?utm_source=github&utm_medium=readme&utm_campaign=51degrees-java&utm_content=readme.md&utm_term=find-out-more) +- [Bots and humans](https://51degrees.com/bots-and-humans?utm_source=github&utm_medium=readme&utm_campaign=51degrees-java&utm_content=readme.md&utm_term=find-out-more) +- [Documentation](https://51degrees.com/documentation/index.html?utm_source=github&utm_medium=readme&utm_campaign=51degrees-java&utm_content=readme.md&utm_term=find-out-more) +- https://github.com/51Degrees/51degrees-cxx From 99217cd6dfd9b27ad88f0dbc63e88838936ea1d2 Mon Sep 17 00:00:00 2001 From: James Rosewell Date: Tue, 3 Nov 2026 18:36:58 +0000 Subject: [PATCH 2/8] Check that only rc merges into the default branch (#29) --- .github/workflows/only-rc-into-main.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/workflows/only-rc-into-main.yml diff --git a/.github/workflows/only-rc-into-main.yml b/.github/workflows/only-rc-into-main.yml new file mode 100644 index 000000000..69e19ca3a --- /dev/null +++ b/.github/workflows/only-rc-into-main.yml @@ -0,0 +1,11 @@ +name: Only rc into main + +# A pull request into the default branch must come from rc. See +# 51Degrees/common-ci .github/workflows/only-rc-into-main.yml. +on: + pull_request: + +jobs: + rc: + name: Only rc into main + uses: 51Degrees/common-ci/.github/workflows/only-rc-into-main.yml@main From 9ffbcf87e4830e7bea685dda4449b60e84d80ae2 Mon Sep 17 00:00:00 2001 From: James Rosewell Date: Tue, 3 Nov 2026 19:53:17 +0000 Subject: [PATCH 3/8] Point links to the archived Java repositories at their folders here (#31) pipeline-java, device-detection-java, ip-intelligence-java, location-java, device-detection-java-examples and ip-intelligence-java-examples are archived, and the note at the top of each README names the folder of this repository that now holds its code. Four READMEs and 33 example source files still linked those repositories, so each of the 39 links now points at the same file, folder or README heading on main here. Only the URLs change. The History section of the root README, two Java string constants, the creator context demo page and its test, and the four parent poms that the open package text pull request (#27) changes keep their links. --- device-detection/README.md | 4 ++-- examples/device-detection/README.md | 2 +- .../devicedetection/examples/console/GettingStartedCloud.java | 2 +- .../examples/console/GettingStartedOnPrem.java | 2 +- .../devicedetection/examples/console/MatchMetrics.java | 2 +- .../devicedetection/examples/console/MetadataCloud.java | 2 +- .../devicedetection/examples/console/MetadataOnPrem.java | 2 +- .../devicedetection/examples/console/NativeModelCloud.java | 2 +- .../devicedetection/examples/console/OfflineProcessing.java | 2 +- .../examples/console/PerformanceBenchmark.java | 2 +- .../fiftyone/devicedetection/examples/console/TacCloud.java | 2 +- .../devicedetection/examples/console/UpdateDataFile.java | 2 +- .../devicedetection/examples/web/GettingStartedWebCloud.java | 2 +- .../devicedetection/examples/web/GettingStartedWebOnPrem.java | 2 +- .../ipintelligence/examples/console/CompareOnPrem.java | 2 +- .../examples/console/GetAllPropertiesCloud.java | 2 +- .../ipintelligence/examples/console/GettingStartedCloud.java | 2 +- .../examples/console/GettingStartedCloudMixed.java | 2 +- .../ipintelligence/examples/console/GettingStartedMixed.java | 2 +- .../ipintelligence/examples/console/GettingStartedOnPrem.java | 2 +- .../ipintelligence/examples/console/MetadataCloud.java | 2 +- .../ipintelligence/examples/console/MetadataOnPrem.java | 2 +- .../ipintelligence/examples/console/MetricsOnPrem.java | 2 +- .../ipintelligence/examples/console/OfflineProcessing.java | 2 +- .../ipintelligence/examples/console/PerformanceBenchmark.java | 2 +- .../ipintelligence/examples/console/SuspiciousOnPrem.java | 2 +- .../ipintelligence/examples/console/UpdateDataFile.java | 2 +- .../ipintelligence/examples/web/GettingStartedApi.java | 2 +- .../examples/web/GettingStartedWebCloudMixed.java | 2 +- .../ipintelligence/examples/web/GettingStartedWebCloud.java | 2 +- .../ipintelligence/examples/web/GettingStartedWebMixed.java | 2 +- .../ipintelligence/examples/web/GettingStartedWebOnPrem.java | 2 +- ip-intelligence/README.md | 2 +- .../java/fiftyone/geolocation/examples/CombiningServices.java | 2 +- .../fiftyone/geolocation/examples/cloud/GettingStarted.java | 2 +- pipeline/README.md | 4 ++-- .../java/pipeline/developerexamples/usagesharing/Main.java | 2 +- 37 files changed, 39 insertions(+), 39 deletions(-) diff --git a/device-detection/README.md b/device-detection/README.md index 575ed61c9..c393a561e 100644 --- a/device-detection/README.md +++ b/device-detection/README.md @@ -212,14 +212,14 @@ or shaded. The names come from an `Automatic-Module-Name` manifest entry, so the jars remain ordinary non-modular jars, build identically on every JDK from 8 upwards, and nothing changes for consumers who stay on the classpath. See the -[pipeline-java README](https://github.com/51Degrees/pipeline-java#native-library-access) +[pipeline-java README](https://github.com/51Degrees/51degrees-java/blob/main/pipeline/README.md#native-library-access) for the pipeline module names and for how to configure element builders when a jar is on the module path. ## Examples Examples can be found in -[device-detection-java-examples](https://github.com/51Degrees/device-detection-java-examples) +[device-detection-java-examples](https://github.com/51Degrees/51degrees-java/tree/main/examples/device-detection) repository. ## Tests diff --git a/examples/device-detection/README.md b/examples/device-detection/README.md index 8d38975ed..5d2edd339 100644 --- a/examples/device-detection/README.md +++ b/examples/device-detection/README.md @@ -150,4 +150,4 @@ A fat jar cannot narrow this any further, because everything inside it is part o unnamed module. To grant native access to 51Degrees code alone you need the individual jars, with `pipeline.engines.fiftyone` and `device-detection.hash.engine.on-premise` on the module path - see the -[device-detection-java README](https://github.com/51Degrees/device-detection-java#native-library-access). +[device-detection-java README](https://github.com/51Degrees/51degrees-java/blob/main/device-detection/README.md#native-library-access). diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedCloud.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedCloud.java index 573ea86b4..c97a1868a 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedCloud.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedCloud.java @@ -158,7 +158,7 @@ private static void analyzeEvidence(Map evidence, * * @include{doc} example-getting-started-cloud.txt * - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/main/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedCloud.java). * * @include{doc} example-require-resourcekey.txt */ diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedOnPrem.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedOnPrem.java index 113be2a40..9d8819565 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedOnPrem.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedOnPrem.java @@ -184,6 +184,6 @@ private static void analyzeEvidence(Map evidence, * @example console/GettingStartedOnPrem.java * @include{doc} example-getting-started-onpremise.txt *

- * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/GettingStartedOnPrem.java). * @include{doc} example-require-datafile.txt */ diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MatchMetrics.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MatchMetrics.java index 26a305721..a54bfe71c 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MatchMetrics.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MatchMetrics.java @@ -235,7 +235,7 @@ static void run(String dataFile, List> evidenceList, * [performance options](/documentation/4.5/_device_detection__features__performance_options.html) * page. * # Location - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/console/src/main/java/fiftyone/devicedetection/examples/console/MatchMetrics.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MatchMetrics.java). * */ diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataCloud.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataCloud.java index aaebc3151..8ca360fab 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataCloud.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataCloud.java @@ -147,7 +147,7 @@ private static void outputProperties(DeviceDetectionCloudEngine engine, PrintWri * keys that, when added to the evidence collection in flow data, could have some impact on the * result returned by device detection. * - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataCloud.java). * * @include{doc} example-require-datafile.txt */ diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataOnPrem.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataOnPrem.java index 677b322e4..a58e739ab 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataOnPrem.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataOnPrem.java @@ -231,7 +231,7 @@ private static String truncateToNl(String text) { * keys that, when added to the evidence collection in flow data, could have some impact on the * result returned by device detection. * - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/main/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/MetadataOnPrem.java). * * @include{doc} example-require-datafile.txt */ diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java index 0a5f472b0..e920f8c9d 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java @@ -133,5 +133,5 @@ static void analyseNativeModel(String nativemodel, Pipeline pipeline, PrintWrite * pricing page](https://51degrees.com/pricing?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-devicedetection-examples-console-nativemodelcloud.java&utm_term=top). Once this is done, a resource key with the * properties required by this example can be created at [here](https://configure.51degrees.com/QKyYH5XT?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-devicedetection-examples-console-nativemodelcloud.java&utm_term=top). * - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java). */ \ No newline at end of file diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/OfflineProcessing.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/OfflineProcessing.java index d044ae365..031c63368 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/OfflineProcessing.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/OfflineProcessing.java @@ -262,7 +262,7 @@ private static Map getPopulatedProperties(DeviceData data, Strin * @example console/OfflineProcessing.java * @include{doc} example-offline-processing-hash.txt *

- * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/console/src/main/java/fiftyone/devicedetection/examples/console/OfflineProcessing.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/OfflineProcessing.java). * @include{doc} example-require-datafile.txt */ diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/PerformanceBenchmark.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/PerformanceBenchmark.java index 72172d4e2..aeaf3180c 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/PerformanceBenchmark.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/PerformanceBenchmark.java @@ -403,7 +403,7 @@ public PerformanceConfiguration(Constants.PerformanceProfiles profile, * and [hash dataset options](/documentation/4.5/_device_detection__hash.html#DeviceDetection_Hash_DataSetProduction_Performance) * for more information about adjusting performance. * - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/console/src/main/java/fiftyone/devicedetection/examples/console/PerformanceBenchmark.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/PerformanceBenchmark.java). * * @include{doc} example-require-datafile.txt */ diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/TacCloud.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/TacCloud.java index 0db97d885..91213032b 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/TacCloud.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/TacCloud.java @@ -138,7 +138,7 @@ static void analyseTac(String tac, Pipeline pipeline, PrintWriter output) throws * [pricing page](https://51degrees.com/pricing?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-devicedetection-examples-console-taccloud.java&utm_term=top). Once this is done, a resource key with the * properties required by this example can be created [here](https://configure.51degrees.com/QKyYH5XT?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-devicedetection-examples-console-taccloud.java&utm_term=top). * - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/console/src/main/java/fiftyone/devicedetection/examples/console/TacCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/TacCloud.java). * * @include{doc} example-require-resourcekey.txt */ \ No newline at end of file diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/UpdateDataFile.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/UpdateDataFile.java index 54c34bf39..6dae1a226 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/UpdateDataFile.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/UpdateDataFile.java @@ -162,7 +162,7 @@ .setUpdateRandomisationMax(10*60) * ``` * # Location - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java/blob/master/device-detection-java-examples/console/src/main/java/fiftyone/devicedetection/examples/console/UpdateDataFile.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/UpdateDataFile.java). * * @include{doc} example-require-licensekey.txt */ diff --git a/examples/device-detection/web/getting-started.cloud/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebCloud.java b/examples/device-detection/web/getting-started.cloud/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebCloud.java index 83c9c0c31..53046d3b9 100644 --- a/examples/device-detection/web/getting-started.cloud/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebCloud.java +++ b/examples/device-detection/web/getting-started.cloud/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebCloud.java @@ -133,7 +133,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { * * @include{doc} example-getting-started-web.txt * - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/web/getting-started.cloud/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/web/getting-started.cloud/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebCloud.java). * * @include{doc} example-require-resourcekey.txt * diff --git a/examples/device-detection/web/getting-started.onprem/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebOnPrem.java b/examples/device-detection/web/getting-started.onprem/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebOnPrem.java index c9a780e9b..22b31c746 100644 --- a/examples/device-detection/web/getting-started.onprem/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebOnPrem.java +++ b/examples/device-detection/web/getting-started.onprem/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebOnPrem.java @@ -145,7 +145,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) { * * @include{doc} example-getting-started-web.txt * - * This example is available in full on [GitHub](https://github.com/51Degrees/device-detection-java-examples/blob/master/web/getting-started.onprem/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/device-detection/web/getting-started.onprem/src/main/java/fiftyone/devicedetection/examples/web/GettingStartedWebOnPrem.java). * * @include{doc} example-require-datafile.txt * diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/CompareOnPrem.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/CompareOnPrem.java index c411b9a9d..06538b059 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/CompareOnPrem.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/CompareOnPrem.java @@ -54,7 +54,7 @@ * The output CSV file contains the input truth and the result fields for easy * evaluation. * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/CompareOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/CompareOnPrem.java). * * This example requires an enterprise IP Intelligence data file (.ipi). * To obtain an enterprise data file for testing, please [contact us](https://51degrees.com/contact-us?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-ipintelligence-examples-console-compareonprem.java&utm_term=contact-us). diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GetAllPropertiesCloud.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GetAllPropertiesCloud.java index a21d88e83..3a55152aa 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GetAllPropertiesCloud.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GetAllPropertiesCloud.java @@ -31,7 +31,7 @@ * 2. How to process an IP address and retrieve all available properties * 3. How to enumerate through all the properties returned by the service * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/GetAllPropertiesCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GetAllPropertiesCloud.java). * * To run this example, you will eventually need to create a Resource Key. A Resource Key is used as * shorthand to store the particular set of properties you are interested in as well as any diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloud.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloud.java index ed23f80b5..fb63e8546 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloud.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloud.java @@ -31,7 +31,7 @@ * 2. How to pass input data (evidence) to the Pipeline * 3. How to retrieve the results * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloud.java). * * To run this example, you will eventually need to create a Resource Key. A Resource Key is used as * shorthand to store the particular set of properties you are interested in as well as any diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloudMixed.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloudMixed.java index a5cbe3c67..e5bf11069 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloudMixed.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloudMixed.java @@ -31,7 +31,7 @@ * 2. How to pass input data (User-Agent and IP address) to the Pipeline * 3. How to retrieve device and IP intelligence results from a single pipeline * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloudMixed.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedCloudMixed.java). * * To run this example, you will eventually need to create a Resource Key. A Resource Key is used as * shorthand to store the particular set of properties you are interested in as well as any diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedMixed.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedMixed.java index 8014fc2bf..9bab40ab5 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedMixed.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedMixed.java @@ -33,7 +33,7 @@ * 2. How to pass combined evidence (User-Agent and IP address) to the Pipeline * 3. How to retrieve results from both engines * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedMixed.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedMixed.java). * * This example requires: * - A Device Detection data file (.hash format) diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedOnPrem.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedOnPrem.java index 1637f76c8..8c6e4d0b9 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedOnPrem.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedOnPrem.java @@ -31,7 +31,7 @@ * 2. How to pass input data (evidence) to the Pipeline * 3. How to retrieve the results * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/GettingStartedOnPrem.java). * * This example requires an enterprise IP Intelligence data file (.ipi). * To obtain an enterprise data file for testing, please [contact us](https://51degrees.com/contact-us?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-ipintelligence-examples-console-gettingstartedonprem.java&utm_term=header). diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataCloud.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataCloud.java index 15a1af9a4..00da31c62 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataCloud.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataCloud.java @@ -39,7 +39,7 @@ * cloud. If you are only using a single product (for example, IP intelligence) then not all * of these keys will be relevant. * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataCloud.java). * * To run this example, you will eventually need to create a Resource Key. A Resource Key is used as * shorthand to store the particular set of properties you are interested in as well as any diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataOnPrem.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataOnPrem.java index 4b3224857..7a96b562f 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataOnPrem.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataOnPrem.java @@ -50,7 +50,7 @@ * The example will output the available properties along with details about their data types and descriptions. * This helps you understand what IP Intelligence data you can access for your use case. * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetadataOnPrem.java). * * Required Maven Dependencies: * - [com.51degrees:ip-intelligence](https://central.sonatype.com/artifact/com.51degrees/ip-intelligence) diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetricsOnPrem.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetricsOnPrem.java index 0c81a3b34..aaf6ddac4 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetricsOnPrem.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetricsOnPrem.java @@ -38,7 +38,7 @@ * verifying the published metrics associated with 51Degrees' * IP intelligence service. * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/MetricsOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/MetricsOnPrem.java). * * This example requires an enterprise IP Intelligence data file (.ipi). * To obtain an enterprise data file for testing, please [contact us](https://51degrees.com/contact-us?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-ipintelligence-examples-console-metricsonprem.java&utm_term=contact-us). diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/OfflineProcessing.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/OfflineProcessing.java index 354ca5387..983d25997 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/OfflineProcessing.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/OfflineProcessing.java @@ -42,7 +42,7 @@ * * Evidence files can be obtained from the [ip-intelligence-data repository](https://github.com/51Degrees/ip-intelligence-data). * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/OfflineProcessing.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/OfflineProcessing.java). * * This example requires an enterprise IP Intelligence data file (.ipi). * To obtain an enterprise data file for testing, please [contact us](https://51degrees.com/contact-us?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-ipintelligence-examples-console-offlineprocessing.java&utm_term=header). diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/PerformanceBenchmark.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/PerformanceBenchmark.java index a4180e6f2..2be3b4599 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/PerformanceBenchmark.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/PerformanceBenchmark.java @@ -32,7 +32,7 @@ * This can help you optimize your IP Intelligence configuration for your specific use case * and understand the performance characteristics of different settings. * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/PerformanceBenchmark.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/PerformanceBenchmark.java). * * This example requires an enterprise IP Intelligence data file (.ipi). * To obtain an enterprise data file for testing, please [contact us](https://51degrees.com/contact-us?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-ipintelligence-examples-console-performancebenchmark.java&utm_term=header). diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/SuspiciousOnPrem.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/SuspiciousOnPrem.java index 8e6ee75b5..dd46f9cc5 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/SuspiciousOnPrem.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/SuspiciousOnPrem.java @@ -33,7 +33,7 @@ * 2. How to combine diversity values with other network related values to * assess the likelihood of an IP address being something suspicious. * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/SuspiciousOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/SuspiciousOnPrem.java). * * This example requires an enterprise IP Intelligence data file (.ipi). * To obtain an enterprise data file for testing, please [contact us](https://51degrees.com/contact-us?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=console-src-main-java-fiftyone-ipintelligence-examples-console-suspiciousonprem.java&utm_term=contact-us). diff --git a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/UpdateDataFile.java b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/UpdateDataFile.java index 88ee407cd..144931e2c 100644 --- a/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/UpdateDataFile.java +++ b/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/UpdateDataFile.java @@ -151,7 +151,7 @@ .setUpdateRandomisationMax(10*60) * ``` * # Location - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/console/src/main/java/fiftyone/ipintelligence/examples/console/UpdateDataFile.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/console/src/main/java/fiftyone/ipintelligence/examples/console/UpdateDataFile.java). * * To test this example, you need to: * 1. Host an IP Intelligence data file (.ipi) at a custom URL accessible to this application diff --git a/examples/ip-intelligence/web/getting-started.api/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedApi.java b/examples/ip-intelligence/web/getting-started.api/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedApi.java index 588976708..2de381969 100644 --- a/examples/ip-intelligence/web/getting-started.api/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedApi.java +++ b/examples/ip-intelligence/web/getting-started.api/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedApi.java @@ -38,7 +38,7 @@ * A cloud example, such as GettingStartedCloud, can be pointed at this server as a * custom endpoint. * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/web/getting-started.api/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedApi.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/web/getting-started.api/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedApi.java). * * Required Maven Dependencies: * - [com.51degrees:ip-intelligence](https://central.sonatype.com/artifact/com.51degrees/ip-intelligence) diff --git a/examples/ip-intelligence/web/getting-started.cloud.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloudMixed.java b/examples/ip-intelligence/web/getting-started.cloud.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloudMixed.java index 279133750..4090fc110 100644 --- a/examples/ip-intelligence/web/getting-started.cloud.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloudMixed.java +++ b/examples/ip-intelligence/web/getting-started.cloud.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloudMixed.java @@ -32,7 +32,7 @@ * 2. How evidence from the web request is automatically passed to both engines * 3. How to retrieve results from both engines in your web application * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/web/getting-started.cloud.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloudMixed.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/web/getting-started.cloud.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloudMixed.java). * * To run this example, you will eventually need to create a Resource Key. A Resource Key is used as * shorthand to store the particular set of properties you are interested in as well as any diff --git a/examples/ip-intelligence/web/getting-started.cloud/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloud.java b/examples/ip-intelligence/web/getting-started.cloud/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloud.java index eb2d74e97..dbcb50e7f 100644 --- a/examples/ip-intelligence/web/getting-started.cloud/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloud.java +++ b/examples/ip-intelligence/web/getting-started.cloud/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloud.java @@ -31,7 +31,7 @@ * 2. How evidence from the web request is automatically passed to the Pipeline * 3. How to retrieve the results in your web application * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/web/getting-started.cloud/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloud.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/web/getting-started.cloud/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebCloud.java). * * To run this example, you will eventually need to create a Resource Key. A Resource Key is used as * shorthand to store the particular set of properties you are interested in as well as any diff --git a/examples/ip-intelligence/web/getting-started.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebMixed.java b/examples/ip-intelligence/web/getting-started.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebMixed.java index 6be4130a2..9969e3262 100644 --- a/examples/ip-intelligence/web/getting-started.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebMixed.java +++ b/examples/ip-intelligence/web/getting-started.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebMixed.java @@ -32,7 +32,7 @@ * 2. How evidence from the web request is automatically passed to both engines * 3. How to retrieve results from both engines in your web application * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/main/web/getting-started.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebMixed.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/web/getting-started.mixed/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebMixed.java). * * This example requires: * - A Device Detection data file (.hash format) diff --git a/examples/ip-intelligence/web/getting-started.onprem/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebOnPrem.java b/examples/ip-intelligence/web/getting-started.onprem/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebOnPrem.java index a5595d706..d73bafdf8 100644 --- a/examples/ip-intelligence/web/getting-started.onprem/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebOnPrem.java +++ b/examples/ip-intelligence/web/getting-started.onprem/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebOnPrem.java @@ -31,7 +31,7 @@ * 2. How evidence from the web request is automatically passed to the Pipeline * 3. How to retrieve the results in your web application * - * This example is available in full on [GitHub](https://github.com/51Degrees/ip-intelligence-java-examples/blob/master/web/getting-started.onprem/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebOnPrem.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/examples/ip-intelligence/web/getting-started.onprem/src/main/java/fiftyone/ipintelligence/examples/web/GettingStartedWebOnPrem.java). * * This example requires an enterprise IP Intelligence data file (.ipi). * To obtain an enterprise data file for testing, please [contact us](https://51degrees.com/contact-us?utm_source=code&utm_medium=example&utm_campaign=51degrees-java&utm_content=web-getting-started.onprem-src-main-java-fiftyone-ipintelligence-examples-web-gettingstartedwebonprem.java&utm_term=header). diff --git a/ip-intelligence/README.md b/ip-intelligence/README.md index a3d470e8e..2b087fe20 100644 --- a/ip-intelligence/README.md +++ b/ip-intelligence/README.md @@ -104,7 +104,7 @@ This is not recommended unless absolutely necessary and should be used with caut ## Examples Examples can be found in -[ip-intelligence-java-examples](https://github.com/51Degrees/ip-intelligence-java-examples) +[ip-intelligence-java-examples](https://github.com/51Degrees/51degrees-java/tree/main/examples/ip-intelligence) repository. ## Tests diff --git a/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/CombiningServices.java b/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/CombiningServices.java index 999ba8892..748499f05 100644 --- a/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/CombiningServices.java +++ b/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/CombiningServices.java @@ -53,7 +53,7 @@ * Getting started example of using 51Degrees geo-location alongside 51Degrees * device detection. * - * This example is available in full on [GitHub](https://github.com/51Degrees/location-java/blob/master/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/CombiningServices.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/CombiningServices.java). * * Required Maven Dependencies: * - [com.51degrees.geo-location](https://central.sonatype.com/artifact/com.51degrees/geo-location/) diff --git a/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/cloud/GettingStarted.java b/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/cloud/GettingStarted.java index be73df1ef..553517c6a 100644 --- a/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/cloud/GettingStarted.java +++ b/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/cloud/GettingStarted.java @@ -42,7 +42,7 @@ * * Getting started example of using cloud geo-location. * - * This example is available in full on [GitHub](https://github.com/51Degrees/location-java/blob/master/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/cloud/GettingStarted.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/location/geo-location.shell.examples/src/main/java/fiftyone/geolocation/examples/cloud/GettingStarted.java). * * Required Maven Dependencies: * - [com.51degrees.geo-location](https://central.sonatype.com/artifact/com.51degrees/geo-location/) diff --git a/pipeline/README.md b/pipeline/README.md index 718333c20..a860e40c0 100644 --- a/pipeline/README.md +++ b/pipeline/README.md @@ -94,7 +94,7 @@ consumers who stay on the classpath. Device detection users need to grant access to a second module as well. The JNI `native` declarations live in `device-detection.hash.engine.on-premise`, and JEP 472 checks binding them against the module that declares them - see the -[device-detection-java README](https://github.com/51Degrees/device-detection-java#native-library-access). +[device-detection-java README](https://github.com/51Degrees/51degrees-java/blob/main/device-detection/README.md#native-library-access). ### Configuring builders from the module path @@ -122,7 +122,7 @@ Most packages contain tests which use junit and mockito. These tests can be run There are several examples available in the `pipeline.developer-examples` folder that demonstrate how to make use of the Pipeline API in isolation. These are described in the table below. If you want examples that demonstrate how to use 51Degrees products such as device detection, -then these are available in the corresponding [repository](https://github.com/51Degrees/device-detection-java) +then these are available in the corresponding [repository](https://github.com/51Degrees/51degrees-java/tree/main/device-detection) and on our [website](https://51degrees.com/documentation/_examples__device_detection__index.html?utm_source=github&utm_medium=readme&utm_campaign=51degrees-java&utm_content=readme.md&utm_term=examples). | Example | Description | diff --git a/pipeline/pipeline.developer-examples/pipeline.developer-examples.usage-sharing/src/main/java/pipeline/developerexamples/usagesharing/Main.java b/pipeline/pipeline.developer-examples/pipeline.developer-examples.usage-sharing/src/main/java/pipeline/developerexamples/usagesharing/Main.java index 06c4f4ce4..407759b4d 100644 --- a/pipeline/pipeline.developer-examples/pipeline.developer-examples.usage-sharing/src/main/java/pipeline/developerexamples/usagesharing/Main.java +++ b/pipeline/pipeline.developer-examples/pipeline.developer-examples.usage-sharing/src/main/java/pipeline/developerexamples/usagesharing/Main.java @@ -58,7 +58,7 @@ * For details of what each setting does, see the * [Share Usage reference](/documentation/4.5/_pipeline_api__features__usage_sharing.html) * - * This example is available in full on [GitHub](https://github.com/51Degrees/pipeline-java/blob/main/pipeline.developer-examples/pipeline.developer-examples.usage-sharing/src/main/java/pipeline/developerexamples/usagesharing/Main.java). + * This example is available in full on [GitHub](https://github.com/51Degrees/51degrees-java/blob/main/pipeline/pipeline.developer-examples/pipeline.developer-examples.usage-sharing/src/main/java/pipeline/developerexamples/usagesharing/Main.java). * * Expected output: * ``` From 5ac0cd496356e65eb6a6c2ba4490dd72a8d252cc Mon Sep 17 00:00:00 2001 From: James Rosewell Date: Tue, 3 Nov 2026 21:00:22 +0000 Subject: [PATCH 4/8] Drop the moved example folders and fix the native model example name (#33) The examples moved to examples/, which the device detection and IP Intelligence Doxyfiles already read, so the old folders go. Point the location IMAGE_PATH at the shared documentation images, and name the native model example console/NativeModelCloud.java in place of the doubled example command. --- device-detection/docs/Doxyfile | 5 +---- .../devicedetection/examples/console/NativeModelCloud.java | 2 +- ip-intelligence/docs/Doxyfile | 1 - location/docs/Doxyfile | 2 +- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/device-detection/docs/Doxyfile b/device-detection/docs/Doxyfile index 2c34c2ac9..0cbff9b26 100644 --- a/device-detection/docs/Doxyfile +++ b/device-detection/docs/Doxyfile @@ -820,7 +820,6 @@ WARN_LOGFILE = INPUT = ../device-detection/src/main \ ../device-detection.cloud/src/main \ - ../device-detection.shell.examples/src/main \ ../device-detection.hash.engine.on-premise/src/main \ ../device-detection.shared/src/main \ ../../examples/device-detection \ @@ -897,9 +896,7 @@ EXCLUDE_SYMBOLS = # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = ../device-detection.shell.examples \ - ../device-detection.web.examples \ - ../../examples/device-detection \ +EXAMPLE_PATH = ../../examples/device-detection \ ../../../documentation/src/snippets # If the value of the EXAMPLE_PATH tag contains directories, you can use the diff --git a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java index e920f8c9d..754f0596a 100644 --- a/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java +++ b/examples/device-detection/console/src/main/java/fiftyone/devicedetection/examples/console/NativeModelCloud.java @@ -119,7 +119,7 @@ static void analyseNativeModel(String nativemodel, Pipeline pipeline, PrintWrite } } /*! - * @example @example console/NativeModel.java + * @example console/NativeModelCloud.java * * This example shows how to use the 51Degrees Cloud service to look up the details of a device * based on a given 'native model name'. Native model name is a string of characters that are diff --git a/ip-intelligence/docs/Doxyfile b/ip-intelligence/docs/Doxyfile index 6b9d53dae..836e6d2b9 100644 --- a/ip-intelligence/docs/Doxyfile +++ b/ip-intelligence/docs/Doxyfile @@ -820,7 +820,6 @@ WARN_LOGFILE = INPUT = ../ip-intelligence/src/main \ ../ip-intelligence.cloud/src/main \ - ../ip-intelligence.shell.examples/src/main \ ../ip-intelligence.engine.on-premise/src/main \ ../ip-intelligence.shared/src/main \ ../../examples/ip-intelligence \ diff --git a/location/docs/Doxyfile b/location/docs/Doxyfile index f6c4b5094..953e37e3b 100644 --- a/location/docs/Doxyfile +++ b/location/docs/Doxyfile @@ -917,7 +917,7 @@ EXAMPLE_RECURSIVE = YES # that contain images that are to be included in the documentation (see the # \image command). -IMAGE_PATH = images +IMAGE_PATH = ../../../documentation/docs/images # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program From edbf8fcffa3564e0eae1e2b517d15f862aca90e6 Mon Sep 17 00:00:00 2001 From: James Rosewell Date: Tue, 3 Nov 2026 22:30:05 +0000 Subject: [PATCH 5/8] Link this repository from the native library message and the demo page (#32) When the native library fails to load, both on-premise engines suggest rebuilding the binary from the source code and instructions in device-detection-java or ip-intelligence-java, which are archived. The instructions for building the native binary are now in the README of device-detection/ and ip-intelligence/ here, beside the engine source, so the message links those folders. The creator context demo page linked pipeline-java as the source of the demo and of the code it runs on, and now links pipeline/ here. The test that checks the page ends with somewhere to go next asserts the new address. --- .../hash/engine/onpremise/interop/Constants.java | 2 +- .../ipintelligence/engine/onpremise/interop/Constants.java | 2 +- .../src/main/resources/fodid/creator-context/page.html | 2 +- .../developerexamples/fodid/CreatorContextPageTests.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/device-detection/device-detection.hash.engine.on-premise/src/main/java/fiftyone/devicedetection/hash/engine/onpremise/interop/Constants.java b/device-detection/device-detection.hash.engine.on-premise/src/main/java/fiftyone/devicedetection/hash/engine/onpremise/interop/Constants.java index af5116e58..1fa22d3ef 100644 --- a/device-detection/device-detection.hash.engine.on-premise/src/main/java/fiftyone/devicedetection/hash/engine/onpremise/interop/Constants.java +++ b/device-detection/device-detection.hash.engine.on-premise/src/main/java/fiftyone/devicedetection/hash/engine/onpremise/interop/Constants.java @@ -29,7 +29,7 @@ public class Constants { "possible, you may be able to use a different library by " + "rebuilding the binary on the target system using the source " + "code and instructions available on " + - "https://github.com/51degrees/device-detection-java."; + "https://github.com/51Degrees/51degrees-java/tree/main/device-detection."; /** * Message returned when the native library could not be loaded. diff --git a/ip-intelligence/ip-intelligence.engine.on-premise/src/main/java/fiftyone/ipintelligence/engine/onpremise/interop/Constants.java b/ip-intelligence/ip-intelligence.engine.on-premise/src/main/java/fiftyone/ipintelligence/engine/onpremise/interop/Constants.java index a51211766..7c09eb920 100644 --- a/ip-intelligence/ip-intelligence.engine.on-premise/src/main/java/fiftyone/ipintelligence/engine/onpremise/interop/Constants.java +++ b/ip-intelligence/ip-intelligence.engine.on-premise/src/main/java/fiftyone/ipintelligence/engine/onpremise/interop/Constants.java @@ -29,7 +29,7 @@ public class Constants { "possible, you may be able to use a different library by " + "rebuilding the binary on the target system using the source " + "code and instructions available on " + - "https://github.com/51degrees/ip-intelligence-java."; + "https://github.com/51Degrees/51degrees-java/tree/main/ip-intelligence."; /** * Message returned when the native library could not be loaded. diff --git a/pipeline/pipeline.developer-examples/pipeline.developer-examples.fodid/src/main/resources/fodid/creator-context/page.html b/pipeline/pipeline.developer-examples/pipeline.developer-examples.fodid/src/main/resources/fodid/creator-context/page.html index 0690d416a..41821e1ed 100644 --- a/pipeline/pipeline.developer-examples/pipeline.developer-examples.fodid/src/main/resources/fodid/creator-context/page.html +++ b/pipeline/pipeline.developer-examples/pipeline.developer-examples.fodid/src/main/resources/fodid/creator-context/page.html @@ -147,7 +147,7 @@

Find out more

The source of this demo and of the code it runs on.

diff --git a/pipeline/pipeline.developer-examples/pipeline.developer-examples.fodid/src/test/java/pipeline/developerexamples/fodid/CreatorContextPageTests.java b/pipeline/pipeline.developer-examples/pipeline.developer-examples.fodid/src/test/java/pipeline/developerexamples/fodid/CreatorContextPageTests.java index 9459f60b3..61d32d13c 100644 --- a/pipeline/pipeline.developer-examples/pipeline.developer-examples.fodid/src/test/java/pipeline/developerexamples/fodid/CreatorContextPageTests.java +++ b/pipeline/pipeline.developer-examples/pipeline.developer-examples.fodid/src/test/java/pipeline/developerexamples/fodid/CreatorContextPageTests.java @@ -303,7 +303,7 @@ public void The_Page_Ends_With_Find_Out_More() throws Exception { String page = pageText(); assertTrue(page.contains("Find out more"), "the page says where next"); assertTrue(page.contains("utm_campaign=51degrees-java"), "campaign tag"); - assertTrue(page.contains("https://github.com/51Degrees/pipeline-java"), + assertTrue(page.contains("https://github.com/51Degrees/51degrees-java/tree/main/pipeline"), "the repository is linked"); } } From 6b2a9dea5276757a7fff40efd1368c4b451d1218 Mon Sep 17 00:00:00 2001 From: James Rosewell Date: Tue, 3 Nov 2026 23:33:58 +0000 Subject: [PATCH 6/8] Link the hardware profile engine to its specification page (#34) --- .../cloud/flowelements/HardwareProfileCloudEngine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ip-intelligence/ip-intelligence.cloud/src/main/java/fiftyone/ipintelligence/cloud/flowelements/HardwareProfileCloudEngine.java b/ip-intelligence/ip-intelligence.cloud/src/main/java/fiftyone/ipintelligence/cloud/flowelements/HardwareProfileCloudEngine.java index bf288c8ee..ed7910e5a 100644 --- a/ip-intelligence/ip-intelligence.cloud/src/main/java/fiftyone/ipintelligence/cloud/flowelements/HardwareProfileCloudEngine.java +++ b/ip-intelligence/ip-intelligence.cloud/src/main/java/fiftyone/ipintelligence/cloud/flowelements/HardwareProfileCloudEngine.java @@ -35,7 +35,7 @@ * Engine that takes the JSON response from the {@link CloudRequestEngine} and * uses it to populate a {@link MultiIPIDataCloud} instance for easier * consumption. - * @see Specification + * @see Specification */ public class HardwareProfileCloudEngine extends PropertyKeyedCloudEngineBase { From ebb595b78b3c4ddd6fb9436348586b4235499ff4 Mon Sep 17 00:00:00 2001 From: Automation51D <60396166+Automation51D@users.noreply.github.com> Date: Wed, 4 Nov 2026 05:31:27 +0100 Subject: [PATCH 7/8] Merged Pull Request '#36 update-packages/rc->rc: Update packages' Co-authored-by: Automation51D <51DCI@51Degrees.com> --- examples/device-detection/pom.xml | 2 +- examples/ip-intelligence/pom.xml | 4 ++-- examples/ip-intelligence/web/getting-started.api/pom.xml | 2 +- location/pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/device-detection/pom.xml b/examples/device-detection/pom.xml index 47e7b11a2..d7617e6e6 100644 --- a/examples/device-detection/pom.xml +++ b/examples/device-detection/pom.xml @@ -50,7 +50,7 @@ 4.13.2 true 1.30 - 4.5.126 + 4.5.128 2.22.2 https://oss.sonatype.org diff --git a/examples/ip-intelligence/pom.xml b/examples/ip-intelligence/pom.xml index 9653a86aa..945f34223 100644 --- a/examples/ip-intelligence/pom.xml +++ b/examples/ip-intelligence/pom.xml @@ -50,8 +50,8 @@ 4.13.2 true 1.30 - 4.5.96 - 4.5.126 + 4.5.128 + 4.5.128 2.22.2 https://oss.sonatype.org diff --git a/examples/ip-intelligence/web/getting-started.api/pom.xml b/examples/ip-intelligence/web/getting-started.api/pom.xml index ce2f2b0b1..5cb1db7d1 100644 --- a/examples/ip-intelligence/web/getting-started.api/pom.xml +++ b/examples/ip-intelligence/web/getting-started.api/pom.xml @@ -37,7 +37,7 @@ 2.0.20 1.3.16 - 4.5.48 + 4.5.128 20231013 diff --git a/location/pom.xml b/location/pom.xml index ac0e576ed..e3e332f3f 100644 --- a/location/pom.xml +++ b/location/pom.xml @@ -60,7 +60,7 @@ 1.8 ${project.version} - ${project.version} + 4.5.128 4.13.2 1.7.36 From 282fc0b25b677faf73eb9453861bffec449a432e Mon Sep 17 00:00:00 2001 From: Automation51D <60396166+Automation51D@users.noreply.github.com> Date: Wed, 4 Nov 2026 06:18:03 +0100 Subject: [PATCH 8/8] Merged Pull Request '#35 update-submodules/rc->rc: Update submodules' Co-authored-by: Automation51D <51DCI@51Degrees.com> --- cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cxx b/cxx index e0a6561f5..1bec7b570 160000 --- a/cxx +++ b/cxx @@ -1 +1 @@ -Subproject commit e0a6561f521476151fbd4ba4710b94edf3c0c0b5 +Subproject commit 1bec7b570575e2e180b52435599bef9b03e35ad8