Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/CI-ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ PR comment: /component-test kafka http
### `pr-build-main.yml` — Build and test

- **Trigger**: `pull_request` (main branch), `workflow_dispatch`
- **Matrix**: JDK 17, 21, 25 (25 is experimental)
- **Matrix**: JDK 21, 25 (25 is experimental)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JDK 25 no more experimental but to deal in another PR

- **Steps**:
1. Full build via `regen.sh` (`mvn install -DskipTests -Pregen`)
2. Check for uncommitted generated files
Expand Down Expand Up @@ -138,7 +138,7 @@ Notes:
- **The section names its JDK** (`flake-label` on the action, `--label` on the
script, also recorded in `flakes.json`). The PR-comment artifact is uploaded
with `overwrite: true` across the JDK matrix on the grounds that the content is
identical between entries. Flake data is the one part that is not: if JDK 17
identical between entries. Flake data is the one part that is not: if JDK 21
flakes and JDK 25 does not, whichever finishes last decides what the comment
shows. The label means the reader can tell which entry a shown flake came from,
and the per-JDK artifacts remain the complete record.
Expand Down Expand Up @@ -260,7 +260,7 @@ source-artifact-id:it-module-path:command

## Multi-JDK Artifact Behavior

All non-experimental JDK matrix entries (17, 21) upload the CI comment artifact with `overwrite: true`. This ensures a comment is posted even if one JDK build fails. Since the comment content is identical across JDKs (same modules are tested regardless of JDK version), last writer wins.
All non-experimental JDK matrix entries (21) upload the CI comment artifact with `overwrite: true`. This ensures a comment is posted even if one JDK build fails. Since the comment content is identical across JDKs (same modules are tested regardless of JDK version), last writer wins.

## Comment Markers

Expand Down
9 changes: 2 additions & 7 deletions .github/workflows/pr-build-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,8 @@ jobs:
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
java: ['17', '25']
java: ['21', '25']
experimental: [ false ]
include:
- java: '17'
# JDK 17 is kept for runtime compatibility testing.
# Skip the enforcer which requires JDK 21+ (needed to compile JDK 21-specific classes).
maven_extra_args: '-Denforcer.phase=none'

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand Down Expand Up @@ -218,7 +213,7 @@ jobs:
# The comment content is identical across JDKs (same modules tested),
# so last writer wins. However, we only upload (and overwrite) when the
# comment file actually exists — a cancelled build (e.g., JDK 25 killed
# while JDK 17 fails) won't have the file and must not overwrite an
# while JDK 21 fails) won't have the file and must not overwrite an
# artifact from a matrix entry that did produce it.
#
# The recovered-flake section is the one part that is NOT identical across
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Guidelines for AI agents working on this codebase.
Apache Camel is an integration framework supporting routing rules in Java, XML and YAML DSLs.

- Version: 4.24.0-SNAPSHOT
- Java: 17+
- Java: 21+
- Build: Maven 3.9.12+

## AI Agent Rules of Engagement
Expand Down
27 changes: 2 additions & 25 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
def MAVEN_PARAMS = "-B -e -fae -V -Dnoassembly -Dsurefire.rerunFailingTestsCount=2 -Dfailsafe.rerunFailingTestsCount=1"
def MAVEN_TEST_PARAMS = env.MAVEN_TEST_PARAMS ?: "-Dci.env.name=apache.org"
def MAVEN_TEST_PARAMS_UBUNTU = env.MAVEN_TEST_PARAMS ?: "-Dci.env.name=apache.org"
def MAVEN_JDK_17_PARAMS = "-Denforcer.skip=true"
/*
Below parameters are required for camel/core/camel-core module's test cases to pass on ppc64 and s390x
- xpathExprGrpLimit: limits the number of groups an Xpath expression can contain
Expand Down Expand Up @@ -52,7 +51,7 @@ pipeline {
parameters {
booleanParam(name: 'VIRTUAL_THREAD', defaultValue: false, description: 'Perform the build using virtual threads')
choice(name: 'PLATFORM_FILTER', choices: ['all', 'ppc64le', 's390x', 'ubuntu-avx'], description: 'Run on specific platform')
choice(name: 'JDK_FILTER', choices: ['all', 'jdk_17_latest' ,'jdk_21_latest', 'jdk_25_latest'], description: 'Run on specific jdk')
choice(name: 'JDK_FILTER', choices: ['all', 'jdk_21_latest', 'jdk_25_latest'], description: 'Run on specific jdk')
}
agent none
stages {
Expand All @@ -77,34 +76,14 @@ pipeline {
axes {
axis {
name 'JDK_NAME'
values 'jdk_17_latest', 'jdk_21_latest', 'jdk_25_latest'
values 'jdk_21_latest', 'jdk_25_latest'
}
axis {
name 'PLATFORM'
values 'ppc64le', 's390x', 'ubuntu-avx'
}
}
excludes {
exclude {
axis {
name 'JDK_NAME'
values 'jdk_17_latest'
}
axis {
name 'PLATFORM'
values 'ppc64le'
}
}
exclude {
axis {
name 'JDK_NAME'
values 'jdk_17_latest'
}
axis {
name 'PLATFORM'
values 's390x'
}
}
exclude {
axis {
name 'JDK_NAME'
Expand Down Expand Up @@ -165,8 +144,6 @@ pipeline {
if ("${JDK_NAME}" == "jdk_21_latest") {
// Enable virtual threads and coverage required later by Sonar check
sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS_UBUNTU -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true install -Dcamel.threads.virtual.enabled=${params.VIRTUAL_THREAD} -Pcoverage"
} else if ("${JDK_NAME}" == "jdk_17_latest") {
sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS $MAVEN_JDK_17_PARAMS -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true install"
} else {
sh "./mvnw $MAVEN_PARAMS $MAVEN_TEST_PARAMS -Darchetype.test.skip -Dmaven.test.failure.ignore=true -Dcheckstyle.skip=true install"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<release>17</release>
<release>21</release>
</configuration>
</plugin>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<release>17</release>
<release>21</release>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<release>17</release>
<release>21</release>
</configuration>
</plugin>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<release>17</release>
<release>21</release>
</configuration>
</plugin>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<release>17</release>
<release>21</release>
</configuration>
</plugin>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<release>17</release>
<release>21</release>
</configuration>
</plugin>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ from("direct:hmac-algorithm")
.to("mock:unencrypted");
----

A list of the available algorithms in Java 17 is available via the https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html[Java Security Standard Algorithm Names] documentation.
A list of the available algorithms in Java 21 is available via the https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html[Java Security Standard Algorithm Names] documentation.


== Specifying an Initialization Vector
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ ldap:ldapServerBean[?options]
----

The _ldapServerBean_ portion of the URI refers to a
https://docs.oracle.com/en/java/javase/17/docs/api/java.naming/javax/naming/directory/DirContext.html[DirContext]
https://docs.oracle.com/en/java/javase/21/docs/api/java.naming/javax/naming/directory/DirContext.html[DirContext]
bean in the registry. The LDAP component only supports producer
endpoints, which means that an `ldap` URI cannot appear in the `from` at
the start of a route.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -356,19 +356,19 @@ The camel.ssl supports 28 options, which are listed below.
| `camel.ssl.cipherSuitesInclude` | Filters TLS/SSL cipher suites algorithms names. This filter is used for including algorithms that matches the naming pattern. Multiple names can be separated by comma. Notice that if the cipherSuites option has been configured then the include/exclude filters are not in use. | | String
| `camel.ssl.clientAuthentication` | Sets the configuration for server-side client-authentication requirements | NONE | String
| `camel.ssl.enabled` | Enables SSL in your Camel application. | false | boolean
| `camel.ssl.keyManagerAlgorithm` | Algorithm name used for creating the KeyManagerFactory. See \https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html | | String
| `camel.ssl.keyManagerAlgorithm` | Algorithm name used for creating the KeyManagerFactory. See \https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html | | String
| `camel.ssl.keyManagerProvider` | To use a specific provider for creating KeyManagerFactory. The list of available providers returned by java.security.Security.getProviders() or null to use the highest priority provider implementing the secure socket protocol. | | String
| `camel.ssl.keyStore` | The key store to load. The key store is by default loaded from classpath. If you must load from file system, then use file: as prefix. file:nameOfFile (to refer to the file system) classpath:nameOfFile (to refer to the classpath; default) http:uri (to load the resource using HTTP) ref:nameOfBean (to lookup an existing KeyStore instance from the registry, for example for testing and development). | | String
| `camel.ssl.keystorePassword` | Sets the SSL Keystore password. | | String
| `camel.ssl.keyStoreProvider` | To use a specific provider for creating KeyStore. The list of available providers returned by java.security.Security.getProviders() or null to use the highest priority provider implementing the secure socket protocol. | | String
| `camel.ssl.keyStoreType` | The type of the key store to load. See \https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html | | String
| `camel.ssl.keyStoreType` | The type of the key store to load. See \https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html | | String
| `camel.ssl.namedGroups` | List of TLS/SSL named groups (key exchange groups). Multiple names can be separated by comma. Named groups control which key exchange algorithms are available during the TLS handshake, including post-quantum hybrid groups such as X25519MLKEM768. | | String
| `camel.ssl.namedGroupsExclude` | Filters TLS/SSL named groups. This filter is used for excluding named groups that match the naming pattern. Multiple names can be separated by comma. Notice that if the namedGroups option has been configured then the include/exclude filters are not in use. | | String
| `camel.ssl.namedGroupsInclude` | Filters TLS/SSL named groups. This filter is used for including named groups that match the naming pattern. Multiple names can be separated by comma. Notice that if the namedGroups option has been configured then the include/exclude filters are not in use. | | String
| `camel.ssl.provider` | To use a specific provider for creating SSLContext. The list of available providers returned by java.security.Security.getProviders() or null to use the highest priority provider implementing the secure socket protocol. | | String
| `camel.ssl.secureRandomAlgorithm` | Algorithm name used for creating the SecureRandom. See \https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html | | String
| `camel.ssl.secureRandomAlgorithm` | Algorithm name used for creating the SecureRandom. See \https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html | | String
| `camel.ssl.secureRandomProvider` | To use a specific provider for creating SecureRandom. The list of available providers returned by java.security.Security.getProviders() or null to use the highest priority provider implementing the secure socket protocol. | | String
| `camel.ssl.secureSocketProtocol` | The protocol for the secure sockets created by the SSLContext. See \https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html | TLSv1.3 | String
| `camel.ssl.secureSocketProtocol` | The protocol for the secure sockets created by the SSLContext. See \https://docs.oracle.com/en/java/javase/21/docs/specs/security/standard-names.html | TLSv1.3 | String
| `camel.ssl.selfSigned` | Whether to generate a self-signed certificate for development use when no keystore is configured. This can be used in development environment to easily enable HTTPS without providing a keystore. Do NOT use this in production as the certificate is not trusted and is regenerated on each restart. | false | boolean
| `camel.ssl.selfSignedKeyType` | The key algorithm to use when generating the self-signed certificate for development use (requires selfSigned to be enabled). Supported values are EC (default, NIST P-256) and RSA (2048-bit). | EC | String
| `camel.ssl.sessionTimeout` | Timeout in seconds to use for SSLContext. The default is 24 hours. | 86400 | int
Expand Down
Loading
Loading