This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new b70721d0c9a CAMEL-20388: Restore the old cookieStore Strategy (#13837)
b70721d0c9a is described below

commit b70721d0c9a1c22d30cd2e1c30787d35405972f7
Author: Federico Mariani <34543311+cro...@users.noreply.github.com>
AuthorDate: Wed Apr 17 14:27:58 2024 +0200

    CAMEL-20388: Restore the old cookieStore Strategy (#13837)
---
 .../internal/streaming/SubscriptionHelper.java     | 46 ++++++++++++++++------
 1 file changed, 34 insertions(+), 12 deletions(-)

diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelper.java
 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelper.java
index a4d750568af..d0dd17aafdf 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelper.java
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/SubscriptionHelper.java
@@ -16,21 +16,19 @@
  */
 package org.apache.camel.component.salesforce.internal.streaming;
 
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
+import java.io.IOException;
+import java.net.CookieManager;
+import java.net.CookiePolicy;
+import java.net.CookieStore;
+import java.net.URI;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.stream.Stream;
 
 import org.apache.camel.CamelException;
-import org.apache.camel.component.salesforce.SalesforceComponent;
-import org.apache.camel.component.salesforce.SalesforceEndpoint;
-import org.apache.camel.component.salesforce.SalesforceEndpointConfig;
-import org.apache.camel.component.salesforce.SalesforceHttpClient;
-import org.apache.camel.component.salesforce.StreamingApiConsumer;
+import org.apache.camel.component.salesforce.*;
 import org.apache.camel.component.salesforce.api.SalesforceException;
 import org.apache.camel.component.salesforce.internal.SalesforceSession;
 import org.apache.camel.support.service.ServiceSupport;
@@ -42,15 +40,15 @@ import org.cometd.client.BayeuxClient.State;
 import org.cometd.client.http.jetty.JettyHttpClientTransport;
 import org.cometd.client.transport.ClientTransport;
 import org.eclipse.jetty.client.Request;
+import org.eclipse.jetty.http.HttpCookie;
+import org.eclipse.jetty.http.HttpCookieStore;
 import org.eclipse.jetty.http.HttpHeader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.cometd.bayeux.Channel.META_CONNECT;
-import static org.cometd.bayeux.Channel.META_HANDSHAKE;
-import static org.cometd.bayeux.Channel.META_SUBSCRIBE;
+import static org.cometd.bayeux.Channel.*;
 import static org.cometd.bayeux.Message.ERROR_FIELD;
 import static org.cometd.bayeux.Message.SUBSCRIPTION_FIELD;
 
@@ -393,6 +391,9 @@ public class SubscriptionHelper extends ServiceSupport {
             session.login(null);
         }
 
+        CookieStore cookieStore = new CookieManager().getCookieStore();
+        HttpCookieStore httpCookieStore = new HttpCookieStore.Default();
+
         ClientTransport transport = new JettyHttpClientTransport(options, 
httpClient) {
             @Override
             protected void customize(Request request) {
@@ -410,6 +411,27 @@ public class SubscriptionHelper extends ServiceSupport {
                 String finalAccessToken = new String(accessToken);
                 request.headers(h -> h.add(HttpHeader.AUTHORIZATION, "OAuth " 
+ finalAccessToken));
             }
+
+            @Override
+            protected void storeCookies(URI uri, Map<String, List<String>> 
cookies) {
+                try {
+                    CookieManager cookieManager = new 
CookieManager(cookieStore, CookiePolicy.ACCEPT_ALL);
+                    cookieManager.put(uri, cookies);
+
+                    for (java.net.HttpCookie httpCookie : 
cookieManager.getCookieStore().getCookies()) {
+                        httpCookieStore.add(uri, HttpCookie.from(httpCookie));
+                    }
+                } catch (IOException x) {
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("Could not parse cookies", x);
+                    }
+                }
+            }
+
+            @Override
+            protected HttpCookieStore getHttpCookieStore() {
+                return httpCookieStore;
+            }
         };
 
         BayeuxClient client = new BayeuxClient(getEndpointUrl(component), 
transport);

Reply via email to