shashank created CAMEL-25281:
--------------------------------
Summary: camel-pubnub - an endpoint without its own PubNub client
fails to start unless publishKey, secretKey and authKey are all set ("Parameter
specified as non-null is null")
Key: CAMEL-25281
URL: https://issues.apache.org/jira/browse/CAMEL-25281
Project: Camel
Issue Type: Bug
Components: camel-pubnub
Reporter: shashank
When no PubNub client is given (no {{pubnub}} bean to autowire, no
{{pubnub=#bean}}), {{PubNubEndpoint.doStart}} builds one from the endpoint
options:
{code:java}
PNConfiguration.builder(new UserId(configuration.getUuid()),
configuration.getSubscribeKey())
.publishKey(configuration.getPublishKey())
.secretKey(configuration.getSecretKey())
.authKey(configuration.getAuthKey())
.secure(configuration.isSecure()).build();
{code}
The builder of the PubNub Java SDK (Kotlin) rejects {{null}} in these setters,
so an endpoint that does not set all three keys fails to start:
{noformat}
ResolveEndpointFailed Failed to resolve endpoint:
pubnub://xxx?subscribeKey=xxxxxx&uuid=myuuid due to:
Parameter specified as non-null is null: method
com.pubnub.internal.java.v2.PNConfigurationImpl$Builder.publishKey, parameter
publishKey
{noformat}
But {{publishKey}} is only needed to publish, {{secretKey}} is a server-side
key that clients should not have, and {{authKey}} is deprecated (PAM v2). So an
endpoint with the options a subscriber needs ({{subscribeKey}} and the required
{{uuid}}), or a publisher without the secret key, does not start; only a user
who supplies a client bean, or sets all keys (including the server-side
{{secretKey}} and the deprecated {{authKey}}), gets a working endpoint. (The
examples in the component documentation also leave out the required {{uuid}},
so they fail earlier, on {{new UserId(null)}}, with or without this fix.) The
component tests all use a client bean, so they did not notice. The builder code
came with the upgrade to the PubNub 10 client (17cdc892ee, Camel 4.9); before,
the endpoint used the setters of the old {{PNConfiguration}}.
h3. Reproduction
{{PubNubConfigurationTest}}:
{{context.getEndpoint("pubnub:xxx?subscribeKey=mysubkey&uuid=myuuid")}} fails
with the error above ({{publishKey}}); with {{publishKey}} set it fails on
{{secretKey}}. Checked against the SDK (13.4.4) directly: {{publishKey(null)}},
{{secretKey(null)}} and {{authKey(null)}} all throw.
h3. Proposed fix
Call the three setters only for the keys that are configured; the builder's
defaults apply to the others. New tests in {{PubNubConfigurationTest}}: an
endpoint with only {{subscribeKey}} and {{uuid}}, one with a {{publishKey}},
one with all keys (the first two fail on main); the camel-pubnub suite passes
(17 tests). No upgrade note: endpoints that failed to start now start.
Affected: main (PubNub 13.4.4, verified); 4.14.x (PubNub 10.5.8) and 4.18.x
(PubNub 12.1.4) have the same builder code since 4.9 (not run against those SDK
versions).
Duplicate check (2026-10-02): JIRA text "pubnub" (17 issues) and "secretKey"
with "pubnub" (none): nothing on this. GitHub pull requests "pubnub":
dependency bumps and #15685 (closed bump to 10.0.0) only.
_Filed with Claude Code on behalf of allthingssecurity._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)