essobedo commented on code in PR #12208:
URL: https://github.com/apache/camel/pull/12208#discussion_r1410378457
##########
components/camel-cxf/camel-cxf-rest/pom.xml:
##########
@@ -126,43 +126,30 @@
<dependency>
<groupId>org.apache.cxf</groupId>
- <artifactId>cxf-rt-transports-http-jetty</artifactId>
+ <artifactId>cxf-rt-transports-http-undertow</artifactId>
Review Comment:
Why replace jetty with undertow? CXF is a component highly used, we really
need very good reasons to do such change.
##########
components/camel-cxf/camel-cxf-rest/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java:
##########
@@ -18,12 +18,7 @@
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TreeMap;
+import java.util.*;
Review Comment:
ditto
##########
components/camel-cxf/camel-cxf-rest/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java:
##########
@@ -212,13 +207,15 @@ public Object bindCamelMessageBodyToRequestBody(Message
camelMessage, Exchange c
throws Exception {
Object request = camelMessage.getBody(MessageContentsList.class);
- if (request != null) {
+ if (request != null && request instanceof MessageContentsList) {
Review Comment:
If `request instanceof MessageContentsList` is true, it means that request
is != null so it could simply be `request instanceof MessageContentsList mcl`
##########
components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java:
##########
@@ -70,22 +65,17 @@
import org.apache.camel.util.StringHelper;
import org.apache.camel.util.URISupport;
import org.apache.camel.util.UnsafeUriCharactersEncoder;
+import org.eclipse.jetty.ee10.servlet.FilterHolder;
+import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee10.servlet.ServletHolder;
+import org.eclipse.jetty.ee10.servlet.SessionHandler;
+import org.eclipse.jetty.ee10.servlets.CrossOriginFilter;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.jmx.MBeanContainer;
-import org.eclipse.jetty.server.AbstractConnector;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.*;
Review Comment:
ditto
##########
components/camel-jetty/src/main/java/org/apache/camel/component/jetty11/CamelInputStreamContentProvider.java:
##########
@@ -18,9 +18,9 @@
import java.io.InputStream;
-import org.eclipse.jetty.client.util.InputStreamContentProvider;
+import org.eclipse.jetty.io.content.InputStreamContentSource;
-public class CamelInputStreamContentProvider extends
InputStreamContentProvider {
+public class CamelInputStreamContentProvider extends InputStreamContentSource {
Review Comment:
I would rename the class too otherwise it is missleading
##########
components/camel-platform-http/src/test/java/org/apache/camel/component/platform/http/JettyCustomPlatformHttpConsumer.java:
##########
@@ -63,51 +64,64 @@ protected void doStart() throws Exception {
private ContextHandler createHandler(PlatformHttpEndpoint endpoint, String
path) {
ContextHandler contextHandler = new ContextHandler();
contextHandler.setContextPath(path);
- contextHandler.setResourceBase(".");
+ contextHandler.setBaseResourceAsString(".");
contextHandler.setClassLoader(Thread.currentThread().getContextClassLoader());
- contextHandler.setAllowNullPathInfo(true);
- contextHandler.setHandler(new AbstractHandler() {
+ contextHandler.setAllowNullPathInContext(true);
+
+ contextHandler.setHandler(new Handler.Abstract() {
@Override
- public void handle(
- String s, Request request, HttpServletRequest
httpServletRequest, HttpServletResponse httpServletResponse) {
+ public boolean handle(Request request, Response response, Callback
callback) throws Exception {
Exchange exchg = null;
try {
- BufferedReader reader = httpServletRequest.getReader();
String bodyRequest = "";
- String strCurrentLine;
- while ((strCurrentLine = reader.readLine()) != null) {
- bodyRequest += strCurrentLine;
+ while (true) {
+ Content.Chunk chunk = request.read();
+ if (chunk.isLast()) {
+ break;
+ }
+
+ byte[] bytes = new
byte[chunk.getByteBuffer().remaining()];
Review Comment:
Maybe you can simply call `chunk.getByteBuffer().array()` to get the byte
array that backs the buffer
##########
components/camel-jetty/src/test/java/org/apache/camel/component/jetty/MultiPartFormTest.java:
##########
@@ -98,7 +98,8 @@ public void process(Exchange exchange) throws Exception {
// "text/plain", data.getContentType());
assertEquals("log4j2.properties", data.getName(), "Got
the wrong name");
-
assertTrue(data.getDataSource().getInputStream().available() > 0,
+ String fileContent = new
String(data.getDataSource().getInputStream().readAllBytes());
+ assertTrue(fileContent.length() > 0,
Review Comment:
Another way to do the same thing (checking if the stream is empty if I got
it right), could be to check if `data.getDataSource().getInputStream().read()
!= -1`
##########
components/camel-openstack/src/test/java/org/apache/camel/component/openstack/it/OpenstackWiremockTestSupport.java:
##########
@@ -32,7 +31,6 @@ public class OpenstackWiremockTestSupport extends
CamelTestSupport {
@BeforeAll
public static void startServer() {
WireMockConfiguration configuration = options().dynamicPort();
- configuration.extensions(new ResponseTemplateTransformer(false));
Review Comment:
Is-it by default now?
##########
components/camel-platform-http/src/test/java/org/apache/camel/component/platform/http/JettyCustomPlatformHttpConsumer.java:
##########
@@ -63,51 +64,64 @@ protected void doStart() throws Exception {
private ContextHandler createHandler(PlatformHttpEndpoint endpoint, String
path) {
ContextHandler contextHandler = new ContextHandler();
contextHandler.setContextPath(path);
- contextHandler.setResourceBase(".");
+ contextHandler.setBaseResourceAsString(".");
contextHandler.setClassLoader(Thread.currentThread().getContextClassLoader());
- contextHandler.setAllowNullPathInfo(true);
- contextHandler.setHandler(new AbstractHandler() {
+ contextHandler.setAllowNullPathInContext(true);
+
+ contextHandler.setHandler(new Handler.Abstract() {
@Override
- public void handle(
- String s, Request request, HttpServletRequest
httpServletRequest, HttpServletResponse httpServletResponse) {
+ public boolean handle(Request request, Response response, Callback
callback) throws Exception {
Exchange exchg = null;
try {
- BufferedReader reader = httpServletRequest.getReader();
String bodyRequest = "";
- String strCurrentLine;
- while ((strCurrentLine = reader.readLine()) != null) {
- bodyRequest += strCurrentLine;
+ while (true) {
+ Content.Chunk chunk = request.read();
+ if (chunk.isLast()) {
+ break;
+ }
+
+ byte[] bytes = new
byte[chunk.getByteBuffer().remaining()];
+ chunk.getByteBuffer().get(bytes);
+ String chunkString = new String(bytes,
StandardCharsets.UTF_8);
+ bodyRequest += chunkString;
Review Comment:
Maybe we can use a StringBuilder instead?
##########
components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/WireMockJettyServerFactory.java:
##########
@@ -16,30 +16,67 @@
*/
package org.apache.camel.component.rest.openapi;
+import com.github.tomakehurst.wiremock.common.HttpsSettings;
+import com.github.tomakehurst.wiremock.common.JettySettings;
import com.github.tomakehurst.wiremock.core.Options;
import com.github.tomakehurst.wiremock.http.AdminRequestHandler;
import com.github.tomakehurst.wiremock.http.HttpServer;
import com.github.tomakehurst.wiremock.http.StubRequestHandler;
-import com.github.tomakehurst.wiremock.jetty.JettyHttpServer;
import com.github.tomakehurst.wiremock.jetty.JettyHttpServerFactory;
+import com.github.tomakehurst.wiremock.jetty11.Jetty11HttpServer;
+import com.github.tomakehurst.wiremock.jetty11.SslContexts;
+import org.eclipse.jetty.io.NetworkTrafficListener;
+import org.eclipse.jetty.server.*;
Review Comment:
ditto
##########
components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java:
##########
@@ -49,13 +49,7 @@
import org.apache.camel.support.service.ServiceHelper;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
-import org.eclipse.jetty.client.HttpProxy;
-import org.eclipse.jetty.client.Origin;
-import org.eclipse.jetty.client.ProxyConfiguration;
-import org.eclipse.jetty.client.Socks4Proxy;
-import org.eclipse.jetty.client.api.Authentication;
-import org.eclipse.jetty.client.util.BasicAuthentication;
-import org.eclipse.jetty.client.util.DigestAuthentication;
+import org.eclipse.jetty.client.*;
Review Comment:
ditto
##########
components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java:
##########
@@ -49,356 +30,368 @@
import org.apache.camel.component.salesforce.internal.SalesforceSession;
import org.apache.camel.support.service.ServiceSupport;
import org.apache.commons.io.IOUtils;
-import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.HttpContentResponse;
-import org.eclipse.jetty.client.api.ContentProvider;
-import org.eclipse.jetty.client.api.ContentResponse;
-import org.eclipse.jetty.client.api.Request;
-import org.eclipse.jetty.client.api.Response;
-import org.eclipse.jetty.client.api.Result;
-import org.eclipse.jetty.client.util.BufferingResponseListener;
-import org.eclipse.jetty.client.util.ByteBufferContentProvider;
-import org.eclipse.jetty.client.util.InputStreamContentProvider;
+import org.eclipse.jetty.client.*;
+import org.eclipse.jetty.client.internal.HttpContentResponse;
import org.eclipse.jetty.http.HttpField;
import org.eclipse.jetty.http.HttpFields;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.http.HttpStatus;
+import org.eclipse.jetty.io.Content;
+import org.eclipse.jetty.io.content.ByteBufferContentSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
Review Comment:
ditto
##########
components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/HttpProxyIntegrationTest.java:
##########
@@ -50,146 +49,146 @@
@Parameterized
public class HttpProxyIntegrationTest extends AbstractSalesforceTestBase {
- private static final Logger LOG =
LoggerFactory.getLogger(HttpProxyIntegrationTest.class);
- private static final String HTTP_PROXY_HOST = "localhost";
- private static final String HTTP_PROXY_USER_NAME = "camel-user";
- private static final String HTTP_PROXY_PASSWORD = "camel-user-password";
- private static final String HTTP_PROXY_REALM = "proxy-realm";
-
- private static Server server;
- private static int httpProxyPort;
-
- private static final AtomicBoolean WENT_THROUGH_PROXY = new
AtomicBoolean();
-
- @Parameter
- private Consumer<SalesforceComponent> configurationMethod;
-
- @Parameters
- public static Iterable<Consumer<SalesforceComponent>> methods() {
- return
Arrays.asList(HttpProxyIntegrationTest::configureProxyViaComponentProperties,
-
HttpProxyIntegrationTest::configureProxyViaClientPropertiesMap);
- }
-
- @Test
- public void testGetVersions() throws Exception {
- doTestGetVersions("");
- doTestGetVersions("Xml");
-
- assertTrue(WENT_THROUGH_PROXY.get(), "Should have gone through the
test proxy");
- }
-
- @SuppressWarnings("unchecked")
- private void doTestGetVersions(String suffix) throws Exception {
- // test getVersions doesn't need a body
- // assert expected result
- Object o = template().requestBody("direct:getVersions" + suffix,
(Object) null);
- List<Version> versions = null;
- if (o instanceof Versions) {
- versions = ((Versions) o).getVersions();
- } else {
- versions = (List<Version>) o;
- }
- assertNotNull(versions);
- LOG.debug("Versions: {}", versions);
- }
-
- @BeforeAll
- public static void setupServer() throws Exception {
- // start a local HTTP proxy using Jetty server
- server = new Server();
-
- ServerConnector connector = new ServerConnector(server);
-
- connector.setHost(HTTP_PROXY_HOST);
- server.addConnector(connector);
-
- final String authenticationString
- = "Basic " + Base64.getEncoder().encodeToString(
- (HTTP_PROXY_USER_NAME + ":" +
HTTP_PROXY_PASSWORD).getBytes(StandardCharsets.ISO_8859_1));
-
- ConnectHandler connectHandler = new ConnectHandler() {
- @Override
- protected boolean handleAuthentication(HttpServletRequest request,
HttpServletResponse response, String address) {
- // validate proxy-authentication header
- final String header =
request.getHeader(PROXY_AUTHORIZATION.toString());
- if (!authenticationString.equals(header)) {
- LOG.warn("Missing header {}", PROXY_AUTHORIZATION);
- // ask for authentication header
- response.setHeader(PROXY_AUTHENTICATE.toString(),
String.format("Basic realm=\"%s\"", HTTP_PROXY_REALM));
- return false;
- }
- LOG.info("Request contains required header {}",
PROXY_AUTHORIZATION);
- WENT_THROUGH_PROXY.set(true);
- return true;
- }
- };
- server.setHandler(connectHandler);
-
- LOG.info("Starting proxy server...");
- server.start();
-
- httpProxyPort = connector.getLocalPort();
- LOG.info("Started proxy server on port {}", httpProxyPort);
- }
-
- @Override
- protected void createComponent() throws Exception {
-
- super.createComponent();
- final SalesforceComponent salesforce = (SalesforceComponent)
context().getComponent("salesforce");
-
- // set HTTP client properties
- final HashMap<String, Object> properties = new HashMap<>();
- properties.put("timeout", "60000");
- properties.put("removeIdleDestinations", "true");
- salesforce.setHttpClientProperties(properties);
-
- configurationMethod.accept(salesforce);
- }
-
- @AfterAll
- public static void cleanup() throws Exception {
- // stop the proxy server after component
- LOG.info("Stopping proxy server...");
- server.stop();
- LOG.info("Stopped proxy server");
- }
-
- @Override
- protected RouteBuilder doCreateRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
-
- // testGetVersion
- from("direct:getVersions").to("salesforce:getVersions");
-
- // allow overriding format per endpoint
-
from("direct:getVersionsXml").to("salesforce:getVersions?format=XML");
-
- }
- };
- }
-
- private static void configureProxyViaComponentProperties(final
SalesforceComponent salesforce) {
- salesforce.setHttpProxyHost(HTTP_PROXY_HOST);
- salesforce.setHttpProxyPort(httpProxyPort);
- salesforce.setHttpProxySecure(false);
- salesforce.setHttpProxyUsername(HTTP_PROXY_USER_NAME);
- salesforce.setHttpProxyPassword(HTTP_PROXY_PASSWORD);
- salesforce.setHttpProxyAuthUri(String.format("http://%s:%s",
HTTP_PROXY_HOST, httpProxyPort));
- salesforce.setHttpProxyRealm(HTTP_PROXY_REALM);
- }
-
- private static void configureProxyViaClientPropertiesMap(final
SalesforceComponent salesforce) {
- final Map<String, Object> properties =
salesforce.getHttpClientProperties();
- properties.put(SalesforceComponent.HTTP_PROXY_HOST, HTTP_PROXY_HOST);
- properties.put(SalesforceComponent.HTTP_PROXY_PORT, httpProxyPort);
- properties.put(SalesforceComponent.HTTP_PROXY_IS_SECURE, false);
- properties.put(SalesforceComponent.HTTP_PROXY_USERNAME,
HTTP_PROXY_USER_NAME);
- properties.put(SalesforceComponent.HTTP_PROXY_PASSWORD,
HTTP_PROXY_PASSWORD);
- properties.put(SalesforceComponent.HTTP_PROXY_AUTH_URI,
String.format("http://%s:%s", HTTP_PROXY_HOST, httpProxyPort));
- properties.put(SalesforceComponent.HTTP_PROXY_REALM, HTTP_PROXY_REALM);
- }
+ private static final Logger LOG =
LoggerFactory.getLogger(HttpProxyIntegrationTest.class);
Review Comment:
It looks like you used the wrong indent so it is very hard to review
##########
components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/SalesforceSecurityHandler.java:
##########
@@ -55,7 +49,8 @@ public class SalesforceSecurityHandler implements
ProtocolHandler {
private final SalesforceSession session;
private final int maxAuthenticationRetries;
private final int maxContentLength;
- private final ResponseNotifier notifier;
+// TODO
+// private final ResponseNotifier notifier;
Review Comment:
For all TODO added, don't forget to create a dedicated ticket for it
##########
components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java:
##########
@@ -49,356 +30,368 @@
import org.apache.camel.component.salesforce.internal.SalesforceSession;
import org.apache.camel.support.service.ServiceSupport;
import org.apache.commons.io.IOUtils;
-import org.eclipse.jetty.client.HttpClient;
-import org.eclipse.jetty.client.HttpContentResponse;
-import org.eclipse.jetty.client.api.ContentProvider;
-import org.eclipse.jetty.client.api.ContentResponse;
-import org.eclipse.jetty.client.api.Request;
-import org.eclipse.jetty.client.api.Response;
-import org.eclipse.jetty.client.api.Result;
-import org.eclipse.jetty.client.util.BufferingResponseListener;
-import org.eclipse.jetty.client.util.ByteBufferContentProvider;
-import org.eclipse.jetty.client.util.InputStreamContentProvider;
+import org.eclipse.jetty.client.*;
Review Comment:
ditto
##########
components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java:
##########
@@ -74,884 +44,885 @@
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import static org.junit.jupiter.api.Assertions.*;
@Tag("standalone")
public class RestApiIntegrationTest extends AbstractSalesforceTestBase {
- /**
- * Request DTO for Salesforce APEX REST calls. See
- *
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_rest_methods.htm.
- */
- public static class MerchandiseRequest extends AbstractDTOBase {
- private Merchandise__c merchandise;
-
- public MerchandiseRequest(final Merchandise__c merchandise) {
- this.merchandise = merchandise;
- }
-
- public Merchandise__c getMerchandise() {
- return merchandise;
- }
-
- public void setMerchandise(final Merchandise__c merchandise) {
- this.merchandise = merchandise;
- }
- }
-
- /**
- * Response DTO for Salesforce APEX REST calls. See
- *
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_rest_methods.htm.
- */
- public static class MerchandiseResponse extends Merchandise__c {
- // XML response contains a type string with the SObject type name
- private String type;
-
- public String getType() {
- return type;
- }
-
- public void setType(final String type) {
- this.type = type;
- }
- }
-
- private static final AtomicInteger NEW_LINE_ITEM_ID = new
AtomicInteger(100);
-
- private static final String TEST_DOCUMENT_ID = "Test Document";
-
- private static final AtomicInteger TEST_LINE_ITEM_ID = new
AtomicInteger(1);
-
- private String merchandiseId;
- private String accountId;
- private String contactId;
-
- @AfterEach
- public void removeData() {
-
template.request("salesforce:deleteSObject?sObjectName=Merchandise__c&sObjectId="
+ merchandiseId, (Processor) e -> {
- // NOOP
- });
- template.requestBody("direct:deleteLineItems", "");
- }
-
- @BeforeEach
- public void setupData() {
- final Merchandise__c merchandise = new Merchandise__c();
- merchandise.setName("Test Merchandise");
- merchandise.setPrice__c(10.0);
- merchandise.setTotal_Inventory__c(100.0);
- merchandise.setDescription__c("Test Merchandise!");
- final CreateSObjectResult merchandiseResult
- = template().requestBody("salesforce:createSObject",
merchandise, CreateSObjectResult.class);
-
- merchandiseId = merchandiseResult.getId();
- }
-
- private void createLineItem() {
- Line_Item__c lineItem = new Line_Item__c();
- final String lineItemId =
String.valueOf(TEST_LINE_ITEM_ID.incrementAndGet());
- lineItem.setName(lineItemId);
- CreateSObjectResult result =
template().requestBody("direct:createLineItem", lineItem,
CreateSObjectResult.class);
- }
-
- private void createLineItems(int count) {
- List<Line_Item__c> lineItems = new ArrayList<>();
- for (int i = 0; i < count; i++) {
- Line_Item__c lineItem = new Line_Item__c();
- final String lineItemId =
String.valueOf(TEST_LINE_ITEM_ID.incrementAndGet());
- lineItem.setName(lineItemId);
- lineItems.add(lineItem);
- }
- template().requestBody("direct:createLineItems", lineItems);
- }
-
- private void createAccountAndContact() {
- final Account account = new Account();
- account.setName("Child Test");
- String accountExternalId = UUID.randomUUID().toString();
- account.setExternal_Id__c(accountExternalId);
- CreateSObjectResult accountResult
- = template().requestBody("salesforce:createSObject", account,
CreateSObjectResult.class);
- accountId = accountResult.getId();
-
- final Account accountRef = new Account();
- accountRef.setExternal_Id__c(accountExternalId);
- final Contact contact = new Contact();
- contact.setAccount(accountRef);
- contact.setLastName("RelationshipTest");
- CreateSObjectResult contactResult
- = template().requestBody("salesforce:createSObject", contact,
CreateSObjectResult.class);
- contactId = contactResult.getId();
- }
-
- private void deleteAccountAndContact() {
- if (accountId != null) {
-
template.request("salesforce:deleteSObject?sObjectName=Account&sObjectId=" +
accountId, (Processor) e -> {
- // NOOP
- });
- }
- if (contactId != null) {
-
template.request("salesforce:deleteSObject?sObjectName=Contact&sObjectId=" +
contactId, (Processor) e -> {
- // NOOP
- });
- }
- }
-
- @Test
- public void testApexCall() throws Exception {
- // request merchandise with id in URI template
- Merchandise__c merchandise
- = template().requestBodyAndHeader("direct:apexCallGet", null,
"id", merchandiseId, Merchandise__c.class);
- assertNotNull(merchandise);
-
- // request merchandise with id as query param
- merchandise =
template().requestBodyAndHeader("direct:apexCallGetWithId", null,
- SalesforceEndpointConfig.APEX_QUERY_PARAM_PREFIX + "id",
merchandiseId,
- Merchandise__c.class);
- assertNotNull(merchandise);
-
- // patch merchandise
- // clear fields that won't be modified
- merchandise.clearBaseFields();
- merchandise.setId(merchandiseId);
- merchandise.setPrice__c(null);
- merchandise.setTotal_Inventory__c(null);
-
- merchandise = template().requestBody("direct:apexCallPatch", new
MerchandiseRequest(merchandise), Merchandise__c.class);
- assertNotNull(merchandise);
-
- Exchange exchange = new DefaultExchange(context);
- template.send("direct:apexCallPostCustomError", exchange);
- SalesforceException exception =
exchange.getException(SalesforceException.class);
- assertNotNull(exception);
- assertEquals("test response",
IOUtils.toString(exception.getResponseContent(), StandardCharsets.UTF_8));
- }
-
- @Test
- public void testApexCallDetectResponseType() throws Exception {
- // request merchandise with id in URI template
- Merchandise__c merchandise
- =
template().requestBodyAndHeader("direct:apexCallGetDetectResponseType", null,
"id", merchandiseId,
- Merchandise__c.class);
- assertNotNull(merchandise);
- }
-
- @Test
- public void returnsHttpResponseStatusAndText() {
- Exchange exchange = new DefaultExchange(context);
- template().send("direct:query", exchange);
- assertEquals("200",
exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE));
-
assertNotNull(exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_TEXT));
- }
-
- @Test
- public void testCreateUpdateDelete() throws Exception {
- final Merchandise__c merchandise = new Merchandise__c();
- merchandise.setName("Wee Wee Wee Plane");
- merchandise.setDescription__c("Microlite plane");
- merchandise.setPrice__c(2000.0);
- merchandise.setTotal_Inventory__c(50.0);
- final CreateSObjectResult result
- = template().requestBody("salesforce:createSObject",
merchandise, CreateSObjectResult.class);
- assertNotNull(result);
- assertTrue(result.getSuccess(), "Create success");
-
- // test JSON update
- // make the plane cheaper
- merchandise.setPrice__c(1500.0);
- // change inventory to half
- merchandise.setTotal_Inventory__c(25.0);
- // also need to set the Id
- merchandise.setId(result.getId());
-
- assertNotNull(
- template().requestBodyAndHeader("salesforce:updateSObject",
merchandise, SalesforceEndpointConfig.SOBJECT_ID,
- result.getId()));
-
- // delete the newly created SObject
-
assertNotNull(template().requestBody("salesforce:deleteSObject?sObjectName=Merchandise__c",
result.getId()));
- }
-
- @Test
- public void testRelationshipCreateDelete() throws Exception {
- final Account account = new Account();
- account.setName("Account 1");
- String accountExternalId = UUID.randomUUID().toString();
- account.setExternal_Id__c(accountExternalId);
- final CreateSObjectResult accountResult
- = template().requestBody("salesforce:createSObject", account,
CreateSObjectResult.class);
- assertNotNull(accountResult);
- assertTrue(accountResult.getSuccess(), "Create success");
-
- final Account accountRef = new Account();
- accountRef.setExternal_Id__c(accountExternalId);
- final Contact contact = new Contact();
- contact.setAccount(accountRef);
- contact.setLastName("RelationshipTest");
- final CreateSObjectResult contactResult
- = template().requestBody("salesforce:createSObject", contact,
CreateSObjectResult.class);
- assertNotNull(contactResult);
- assertTrue(contactResult.getSuccess(), "Create success");
-
- // delete the Contact
- template().requestBodyAndHeader("salesforce:deleteSObject",
contactResult.getId(), "sObjectName", "Contact");
-
- // delete the Account
- template().requestBodyAndHeader("salesforce:deleteSObject",
accountResult.getId(), "sObjectName", "Account");
- }
-
- @Test
- public void testFieldsToNull() throws Exception {
- final Account account = new Account();
- account.setName("Account 1");
- account.setSite("test site");
- final CreateSObjectResult accountResult
- = template().requestBody("salesforce:createSObject", account,
CreateSObjectResult.class);
- assertNotNull(accountResult);
- assertTrue(accountResult.getSuccess(), "Create success");
-
- account.setId(accountResult.getId());
- account.setSite(null);
- account.getFieldsToNull().add("Site");
-
- final Object updateAccountResult =
template().requestBodyAndHeader("salesforce:updateSObject", account,
- SalesforceEndpointConfig.SOBJECT_ID, account.getId());
- assertNotNull(updateAccountResult);
-
- Account updatedAccount = (Account)
template().requestBodyAndHeader("salesforce:getSObject?sObjectFields=Id,Name,Site",
- account.getId(), "sObjectName", "Account");
- assertNull(updatedAccount.getSite());
-
- // delete the Account
- template().requestBodyAndHeader("salesforce:deleteSObject",
accountResult.getId(), "sObjectName", "Account");
- }
-
- @Test
- public void testRelationshipUpdate() throws Exception {
- final Contact contact = new Contact();
- contact.setLastName("RelationshipTest");
- final CreateSObjectResult contactResult
- = template().requestBody("salesforce:createSObject", contact,
CreateSObjectResult.class);
- assertNotNull(contactResult);
- assertTrue(contactResult.getSuccess(), "Create success");
-
- final Account account = new Account();
- account.setName("Account 1");
- String accountExternalId = UUID.randomUUID().toString();
- account.setExternal_Id__c(accountExternalId);
- final CreateSObjectResult accountResult
- = template().requestBody("salesforce:createSObject", account,
CreateSObjectResult.class);
- assertNotNull(accountResult);
- assertTrue(accountResult.getSuccess(), "Create success");
-
- final Account accountRef = new Account();
- accountRef.setExternal_Id__c(accountExternalId);
- contact.setAccount(accountRef);
- contact.setId(contactResult.getId());
-
- final Object updateContactResult =
template().requestBodyAndHeader("salesforce:updateSObject", contact,
- SalesforceEndpointConfig.SOBJECT_ID, contact.getId());
- assertNotNull(updateContactResult);
-
- // delete the Contact
- template().requestBodyAndHeader("salesforce:deleteSObject",
contactResult.getId(), "sObjectName", "Contact");
-
- // delete the Account
- template().requestBodyAndHeader("salesforce:deleteSObject",
accountResult.getId(), "sObjectName", "Account");
- }
-
- @Test
- public void testCreateUpdateDeleteTasks() throws Exception {
- final Task taken = new Task();
- taken.setDescription("Task1");
- taken.setActivityDate(ZonedDateTime.of(1700, 1, 2, 3, 4, 5, 6,
ZoneId.systemDefault()));
- final CreateSObjectResult result =
template().requestBody("salesforce:createSObject", taken,
CreateSObjectResult.class);
- assertNotNull(result);
- assertTrue(result.getSuccess(), "Create success");
-
- // test JSON update
- // make the plane cheaper
- taken.setId(result.getId());
- taken.setActivityDate(ZonedDateTime.of(1991, 1, 2, 3, 4, 5, 6,
ZoneId.systemDefault()));
-
-
assertNotNull(template().requestBodyAndHeader("salesforce:updateSObject",
taken, SalesforceEndpointConfig.SOBJECT_ID,
- result.getId()));
-
- // delete the newly created SObject
-
assertNotNull(template().requestBody("salesforce:deleteSObject?sObjectName=Task",
result.getId()));
- }
-
- @Test
- public void testCreateUpdateDeleteWithId() throws Exception {
- Line_Item__c lineItem = new Line_Item__c();
- final String lineItemId =
String.valueOf(TEST_LINE_ITEM_ID.incrementAndGet());
- lineItem.setName(lineItemId);
- CreateSObjectResult result =
template().requestBody("direct:createLineItem", lineItem,
CreateSObjectResult.class);
- assertNotNull(result);
- assertTrue(result.getSuccess());
-
- // get line item with Name 1
- lineItem =
template().requestBody("salesforce:getSObjectWithId?sObjectIdName=Name&sObjectName=Line_Item__c",
- lineItemId, Line_Item__c.class);
- assertNotNull(lineItem);
-
- // test insert with id
- // set the unit price and sold
- lineItem.setUnit_Price__c(1000.0);
- lineItem.setUnits_Sold__c(50.0);
- // update line item with Name NEW_LINE_ITEM_ID
- final String newLineItemId =
String.valueOf(NEW_LINE_ITEM_ID.incrementAndGet());
- lineItem.setName(newLineItemId);
-
- UpsertSObjectResult upsertResult =
template().requestBodyAndHeader("direct:upsertSObject", lineItem,
- SalesforceEndpointConfig.SOBJECT_EXT_ID_VALUE, newLineItemId,
UpsertSObjectResult.class);
- assertNotNull(upsertResult);
- assertTrue(upsertResult.getSuccess());
-
- // clear read only parent type fields
- lineItem.setMerchandise__c(null);
- // change the units sold
- lineItem.setUnits_Sold__c(25.0);
-
- // update line item with Name NEW_LINE_ITEM_ID
- upsertResult = template().requestBodyAndHeader("direct:upsertSObject",
lineItem,
- SalesforceEndpointConfig.SOBJECT_EXT_ID_VALUE, newLineItemId,
UpsertSObjectResult.class);
- assertNotNull(upsertResult);
-
- // delete the SObject with Name NEW_LINE_ITEM_ID
- assertNotNull(template().requestBody("direct:deleteSObjectWithId",
newLineItemId));
- }
-
- @Test
- public void testUpsert() throws Exception {
- Line_Item__c lineItem = new Line_Item__c();
- final String lineItemId =
String.valueOf(TEST_LINE_ITEM_ID.incrementAndGet());
- lineItem.setName(lineItemId);
- UpsertSObjectResult result =
template().requestBody("direct:upsertSObject", lineItem,
UpsertSObjectResult.class);
- assertNotNull(result);
- assertNotNull(lineItem.getName());
- assertTrue(result.getSuccess());
- assertTrue(result.getCreated());
- }
-
- @Test
- public void testGetBasicInfo() throws Exception {
- final SObjectBasicInfo objectBasicInfo =
template().requestBody("direct:getBasicInfo", null, SObjectBasicInfo.class);
- assertNotNull(objectBasicInfo);
-
- // set test Id for testGetSObject
- assertFalse(objectBasicInfo.getRecentItems().isEmpty(), "RecentItems
is empty");
- merchandiseId = objectBasicInfo.getRecentItems().get(0).getId();
- }
-
- @Test
- public void testGetBlobField() throws Exception {
- // get document with Name "Test Document"
- final HashMap<String, Object> headers = new HashMap<>();
- headers.put(SalesforceEndpointConfig.SOBJECT_NAME, "Document");
- headers.put(SalesforceEndpointConfig.SOBJECT_EXT_ID_NAME, "Name");
- final Document document
- =
template().requestBodyAndHeaders("salesforce:getSObjectWithId",
TEST_DOCUMENT_ID, headers, Document.class);
- assertNotNull(document);
-
- // get Body field for this document
- try (final InputStream body =
template().requestBody("direct:getBlobField", document, InputStream.class)) {
- assertNotNull(body);
- assertTrue(body.available() > 0);
- }
- }
-
- @Test
- public void testUploadBlob() throws Exception {
- final InputStream inputStream =
this.getClass().getResourceAsStream("/camel-test-doc.pdf");
- final byte[] bytes = inputStream.readAllBytes();
- ObjectMapper mapper = new ObjectMapper();
- String enc = mapper.convertValue(bytes, String.class);
- ContentVersion cv = new ContentVersion();
- cv.setVersionDataUrl(enc);
- cv.setPathOnClient("camel-test-doc.pdf");
- cv.setTitle("Camel Test Doc");
- final CreateSObjectResult result =
- template.requestBody("salesforce:createSObject", cv,
CreateSObjectResult.class);
- assertNotNull(result.getId());
- }
-
- @Test
- public void testGetDescription() throws Exception {
- final SObjectDescription sObjectDescription
- = template().requestBody("direct:getDescription", null,
SObjectDescription.class);
- assertNotNull(sObjectDescription);
- }
-
- @Test
- public void testGetGlobalObjects() throws Exception {
- final GlobalObjects globalObjects =
template().requestBody("direct:getGlobalObjects", null, GlobalObjects.class);
- assertNotNull(globalObjects);
- }
-
- @Test
- public void testGetResources() throws Exception {
- @SuppressWarnings("unchecked")
- final Map<String, String> resources = (Map<String, String>)
template().requestBody("direct:getResources", "");
- assertNotNull(resources);
- assertTrue(resources.containsKey("metadata"));
- }
-
- @Test
- public void testGetSObject() throws Exception {
- final Merchandise__c merchandise =
template().requestBody("direct:getSObject", merchandiseId,
Merchandise__c.class);
- assertNotNull(merchandise);
-
- assertNull(merchandise.getTotal_Inventory__c());
- assertNotNull(merchandise.getPrice__c());
- }
-
- @Test
- public void testGetVersions() throws Exception {
- // test getVersions doesn't need a body
- // assert expected result
- final Object o = template().requestBody("direct:getVersions", (Object)
null);
- List<Version> versions = null;
- if (o instanceof Versions) {
- versions = ((Versions) o).getVersions();
- } else {
- @SuppressWarnings("unchecked")
- final List<Version> tmp = (List<Version>) o;
- versions = tmp;
- }
- assertNotNull(versions);
- }
-
- @Test
- public void testQuery() throws Exception {
- createLineItem();
- final QueryRecordsLine_Item__c queryRecords
- = template().requestBody("direct:query", null,
QueryRecordsLine_Item__c.class);
- assertNotNull(queryRecords);
- // verify polymorphic query resulted in the correct type
- assertEquals(User.class,
queryRecords.getRecords().get(0).getOwner().getClass());
- final Line_Item__c lineItem = queryRecords.getRecords().get(0);
- User user = (User) queryRecords.getRecords().get(0).getOwner();
- assertNotNull(user.getUsername());
- assertNotNull(lineItem.getRecordType());
- }
-
- @Test
- public void testQueryDetectResponseClass() throws Exception {
- createLineItem();
- final QueryRecordsLine_Item__c queryRecords
- = template().requestBody("direct:queryDetectResponseClass",
null, QueryRecordsLine_Item__c.class);
- assertNotNull(queryRecords);
- }
-
- @Test
- public void testQueryWithSObjectName() throws Exception {
- createLineItem();
- final QueryRecordsLine_Item__c queryRecords
- = template().requestBody("direct:queryWithSObjectName", null,
QueryRecordsLine_Item__c.class);
- assertNotNull(queryRecords);
- // verify polymorphic query resulted in the correct type
- assertEquals(User.class,
queryRecords.getRecords().get(0).getOwner().getClass());
- final Line_Item__c lineItem = queryRecords.getRecords().get(0);
- User user = (User) queryRecords.getRecords().get(0).getOwner();
- assertNotNull(user.getUsername());
- assertNotNull(lineItem.getRecordType());
- }
-
- @Test
- public void testQueryStreamResults() throws Exception {
- final int createCount = 300;
- createLineItems(createCount);
- Exchange exchange = new DefaultExchange(context);
- template().send("direct:queryStreamResult", exchange);
- Iterator<?> queryRecords = exchange.getMessage(Iterator.class);
-
assertNotNull(exchange.getMessage().getHeader("CamelSalesforceQueryResultTotalSize"));
- int count = 0;
- while (queryRecords.hasNext()) {
- count = count + 1;
- queryRecords.next();
- }
- assertTrue(count >= createCount);
- }
-
- @Test
- public void querySyncAsyncDoesntTimeout() throws Exception {
- final Object result = template.requestBody("direct:querySyncAsync",
"");
- assertNotNull(result);
- }
-
- @Test
- public void testParentRelationshipQuery() throws Exception {
- try {
- createAccountAndContact();
- final QueryRecordsContact queryRecords
- = template().requestBody("direct:parentRelationshipQuery",
null, QueryRecordsContact.class);
- Account account = queryRecords.getRecords().get(0).getAccount();
- assertNotNull(account, "Account was null");
- } finally {
- deleteAccountAndContact();
- }
- }
-
- @Test
- public void testChildRelationshipQuery() throws Exception {
- try {
- createAccountAndContact();
- final QueryRecordsAccount queryRecords
- = template().requestBody("direct:childRelationshipQuery",
null, QueryRecordsAccount.class);
-
- assertFalse(queryRecords.getRecords().isEmpty());
- Account account1 = queryRecords.getRecords().get(0);
- assertFalse(account1.getContacts().getRecords().isEmpty());
- } finally {
- deleteAccountAndContact();
- }
- }
-
- @Test
- public void testQueryAll() throws Exception {
- final QueryRecordsLine_Item__c queryRecords
- = template().requestBody("direct:queryAll", null,
QueryRecordsLine_Item__c.class);
- assertNotNull(queryRecords);
- }
-
- @Test
- public void testQueryAllStreamResults() throws Exception {
- final int createCount = 300;
- createLineItems(createCount);
- final Iterator<Line_Item__c> queryRecords
- = template().requestBody("direct:queryAllStreamResult", "",
Iterator.class);
- int count = 0;
- while (queryRecords.hasNext()) {
- count = count + 1;
- queryRecords.next();
- }
- assertTrue(count >= createCount);
- }
-
- @Test
- public void testRetry() throws Exception {
- final SalesforceComponent sf = context().getComponent("salesforce",
SalesforceComponent.class);
- final String accessToken = sf.getSession().getAccessToken();
-
- final SslContextFactory.Client sslContextFactory = new
SslContextFactory.Client();
- sslContextFactory.setSslContext(new
SSLContextParameters().createSSLContext(context));
- final ClientConnector connector = new ClientConnector();
- connector.setSslContextFactory(sslContextFactory);
- final HttpClientTransport transport = new
HttpClientTransportOverHTTP(connector);
- final HttpClient httpClient = new HttpClient(transport);
- httpClient.setConnectTimeout(60000);
- httpClient.start();
-
- final String uri = sf.getLoginConfig().getLoginUrl() +
"/services/oauth2/revoke?token=" + accessToken;
- final Request logoutGet =
httpClient.newRequest(uri).method(HttpMethod.GET).timeout(1, TimeUnit.MINUTES);
-
- final ContentResponse response = logoutGet.send();
- assertEquals(HttpStatus.OK_200, response.getStatus());
-
- testGetGlobalObjects();
- }
-
- @Test
- public void testRetryFailure() throws Exception {
- final SalesforceComponent sf = context().getComponent("salesforce",
SalesforceComponent.class);
- final String accessToken = sf.getSession().getAccessToken();
-
- final SslContextFactory.Client sslContextFactory = new
SslContextFactory.Client();
- sslContextFactory.setSslContext(new
SSLContextParameters().createSSLContext(context));
- final ClientConnector connector = new ClientConnector();
- connector.setSslContextFactory(sslContextFactory);
- final HttpClientTransport transport = new
HttpClientTransportOverHTTP(connector);
- final HttpClient httpClient = new HttpClient(transport);
- httpClient.setConnectTimeout(60000);
- httpClient.start();
-
- final String uri = sf.getLoginConfig().getLoginUrl() +
"/services/oauth2/revoke?token=" + accessToken;
- final Request logoutGet =
httpClient.newRequest(uri).method(HttpMethod.GET).timeout(1, TimeUnit.MINUTES);
-
- final ContentResponse response = logoutGet.send();
- assertEquals(HttpStatus.OK_200, response.getStatus());
-
- // set component config to bad password to cause relogin attempts to
- // fail
- final String password = sf.getLoginConfig().getPassword();
- sf.getLoginConfig().setPassword("bad_password");
-
- try {
- testGetGlobalObjects();
- fail("Expected CamelExecutionException!");
- } catch (final CamelExecutionException e) {
- if (e.getCause() instanceof SalesforceException) {
- final SalesforceException cause = (SalesforceException)
e.getCause();
- assertEquals(HttpStatus.BAD_REQUEST_400,
cause.getStatusCode(), "Expected 400 on authentication retry failure");
- } else {
- fail("Expected SalesforceException!");
- }
- } finally {
- // reset password and retries to allow other tests to pass
- sf.getLoginConfig().setPassword(password);
- }
- }
-
- @Test
- public void testSearch() throws Exception {
-
- final Object obj = template().requestBody("direct:search", (Object)
null);
- assertNotNull(obj);
- }
-
- @Test
- public void testStatus300() throws Exception {
- // get test merchandise
- // note that the header value overrides sObjectFields in endpoint
- final Merchandise__c merchandise =
template().requestBodyAndHeader("direct:getSObject", merchandiseId,
"sObjectFields",
- "Name,Description__c,Price__c,Total_Inventory__c",
- Merchandise__c.class);
- assertNotNull(merchandise);
- assertNotNull(merchandise.getName());
- assertNotNull(merchandise.getPrice__c());
- assertNotNull(merchandise.getTotal_Inventory__c());
-
- CreateSObjectResult result = null;
- try {
- merchandise.clearBaseFields();
- result = template().requestBody("salesforce:createSObject",
merchandise, CreateSObjectResult.class);
- assertNotNull(result);
- assertNotNull(result.getId());
-
- // look by external Id to cause 300 error
- // note that the request SObject overrides settings on the endpoint
- // for LineItem__c
- try {
-
template().requestBody("salesforce:getSObjectWithId?sObjectIdName=Name",
merchandise, Merchandise__c.class);
- fail("Expected SalesforceException with statusCode 300");
- } catch (final CamelExecutionException e) {
- final Throwable cause = e.getCause();
- assertTrue(cause instanceof
SalesforceMultipleChoicesException);
- final SalesforceMultipleChoicesException multipleChoices =
(SalesforceMultipleChoicesException) cause;
- assertEquals(300, multipleChoices.getStatusCode());
- final List<String> choices = multipleChoices.getChoices();
- assertNotNull(choices);
- assertFalse(choices.isEmpty());
- }
- } finally {
- // delete the test clone
- if (result != null) {
-
template().requestBody("salesforce:deleteSObject?sObjectName=Merchandise__c",
result.getId());
- }
- }
- }
-
- @Test
- public void testStatus400() throws Exception {
- // get test merchandise
- // note that the header value overrides sObjectFields in endpoint
- final Merchandise__c merchandise =
template().requestBodyAndHeader("direct:getSObject", merchandiseId,
"sObjectFields",
- "Description__c,Price__c", Merchandise__c.class);
- assertNotNull(merchandise);
- assertNotNull(merchandise.getPrice__c());
- assertNull(merchandise.getTotal_Inventory__c());
-
- merchandise.clearBaseFields();
- // required field Total_Inventory__c is missing
- CreateSObjectResult result = null;
- try {
- result = template().requestBody("salesforce:createSObject",
merchandise, CreateSObjectResult.class);
- fail("Expected SalesforceException with statusCode 400");
- } catch (final CamelExecutionException e) {
- final Throwable cause = e.getCause();
- assertTrue(cause instanceof SalesforceException);
- final SalesforceException badRequest = (SalesforceException) cause;
- assertEquals(400, badRequest.getStatusCode());
- assertEquals(1, badRequest.getErrors().size());
- assertEquals("[Total_Inventory__c]",
badRequest.getErrors().get(0).getFields().toString());
- } finally {
- // delete the clone if created
- if (result != null) {
- template().requestBody("salesforce:deleteSObject",
result.getId());
- }
- }
- }
-
- @Test
- public void testStatus404() throws Exception {
- // try to get a non existent SObject
- try {
- template().requestBody("direct:getSObject", "ILLEGAL_ID",
Merchandise__c.class);
- fail("Expected SalesforceException");
- } catch (final CamelExecutionException e) {
- final Throwable cause = e.getCause();
- assertTrue(cause instanceof NoSuchSObjectException);
- final NoSuchSObjectException noSuchObject =
(NoSuchSObjectException) cause;
- assertEquals(404, noSuchObject.getStatusCode());
- assertEquals(1, noSuchObject.getErrors().size());
- }
- }
-
- @Test
- public void testFetchingGlobalObjects() throws Exception {
- final GlobalObjects globalObjects =
template().requestBody("salesforce:getGlobalObjects", null,
GlobalObjects.class);
-
- assertNotNull(globalObjects);
- assertFalse(globalObjects.getSobjects().isEmpty());
- }
-
- @Test
- public void testBodyIsPreservedAfterError() throws Exception {
- Contact contact = new Contact();
-
- final Object result =
template.requestBody("direct:createSObjectContinueOnException", contact);
- assertNotNull(result);
- assertEquals(contact, result);
- }
-
- @Override
- protected RouteBuilder doCreateRouteBuilder() throws Exception {
-
- // create test route
- return new RouteBuilder() {
- @Override
- public void configure() {
-
- // testGetVersion
- from("direct:getVersions").to("salesforce:getVersions");
-
- // testGetResources
- from("direct:getResources").to("salesforce:getResources");
-
- // testGetGlobalObjects
-
from("direct:getGlobalObjects").to("salesforce:getGlobalObjects");
-
- // testGetBasicInfo
-
from("direct:getBasicInfo").to("salesforce:getBasicInfo?sObjectName=Merchandise__c");
-
- // testGetDescription
-
from("direct:getDescription").to("salesforce:getDescription?sObjectName=Merchandise__c");
-
- // testGetSObject
- from("direct:getSObject")
-
.to("salesforce:getSObject?sObjectName=Merchandise__c&sObjectFields=Description__c,Price__c");
-
- from("direct:deleteLineItems")
- .to("salesforce:query?sObjectQuery=SELECT Id FROM
Line_Item__C&sObjectClass="
- + QueryRecordsLine_Item__c.class.getName())
- .filter(simple("${body.records.size} > 0"))
- .split(simple("${body.records}"),
-
AggregationStrategies.flexible().accumulateInCollection(ArrayList.class))
- .transform(simple("${body.id}"))
- .end()
- .split(simple("${collate(200)}"))
- .to("salesforce:compositeDeleteSObjectCollections")
- .end();
-
-
from("direct:createLineItem").to("salesforce:createSObject?sObjectName=Line_Item__c");
-
- from("direct:createLineItems")
- .split(simple("${collate(200)}"))
- .to("salesforce:compositeCreateSObjectCollections");
-
- from("direct:upsertSObject")
-
.to("salesforce:upsertSObject?sObjectName=Line_Item__c&sObjectIdName=Name");
-
- // testDeleteSObjectWithId
- from("direct:deleteSObjectWithId")
-
.to("salesforce:deleteSObjectWithId?sObjectName=Line_Item__c&sObjectIdName=Name");
-
- // testGetBlobField
- from("direct:getBlobField")
-
.to("salesforce:getBlobField?sObjectName=Document&sObjectBlobFieldName=Body");
-
- // testQuery
- from("direct:queryDetectResponseClass")
- .to("salesforce:query?sObjectQuery=SELECT Id, name,
Typeof Owner WHEN User Then Username End, recordTypeId, RecordType.Name "
- + "from Line_Item__c "
- + "ORDER BY CreatedDate DESC "
- + "LIMIT 1");
-
- // testQuery
- from("direct:query")
- .to("salesforce:query?sObjectQuery=SELECT Id, name,
Typeof Owner WHEN User Then Username End, recordTypeId, RecordType.Name "
- + "from Line_Item__c "
- + "ORDER BY CreatedDate DESC "
- + "LIMIT 1"
- + "&sObjectClass=" +
QueryRecordsLine_Item__c.class.getName());
-
- // testQuery
- from("direct:queryWithSObjectName")
- .to("salesforce:query?sObjectQuery=SELECT Id, name,
Typeof Owner WHEN User Then Username End, recordTypeId, RecordType.Name from
Line_Item__c"
- + "&sObjectName=QueryRecordsLine_Item__c");
-
- // testQuery
- from("direct:queryStreamResult")
- .setHeader("sObjectClass",
constant(QueryRecordsLine_Item__c.class.getName()))
- .setHeader("Sforce-Query-Options",
constant("batchSize=200"))
- .to("salesforce:query?sObjectQuery=SELECT Id, name,
Typeof Owner WHEN User Then Username End, recordTypeId, RecordType.Name from
Line_Item__c Order By Name"
- + "&streamQueryResult=true");
-
- // testQuery
- from("direct:queryAllStreamResult")
- .setHeader("sObjectClass",
constant(QueryRecordsLine_Item__c.class.getName()))
- .setHeader("Sforce-Query-Options",
constant("batchSize=200"))
- .to("salesforce:queryAll?sObjectQuery=SELECT Id, name,
Typeof Owner WHEN User Then Username End, recordTypeId, RecordType.Name from
Line_Item__c Order By Name"
- + "&streamQueryResult=true");
-
- // testParentRelationshipQuery
- from("direct:parentRelationshipQuery")
- .process(exchange -> exchange.getIn()
- .setBody("SELECT LastName, Account.Name FROM
Contact WHERE Id = '" + contactId + "'"))
- .to("salesforce:query?sObjectClass=" +
QueryRecordsContact.class.getName() + "");
-
- // testChildRelationshipQuery
- from("direct:childRelationshipQuery")
- .process(exchange -> exchange.getIn()
- .setBody("SELECT Id, Name, (SELECT Id,
LastName FROM Contacts)" + " FROM Account WHERE Id = '"
- + accountId + "'"))
- .to("salesforce:query?sObjectClass=" +
QueryRecordsAccount.class.getName() + "");
-
- // testQueryAll
- from("direct:queryAll")
- .to("salesforce:queryAll?sObjectQuery=SELECT name from
Line_Item__c&sObjectClass="
- + QueryRecordsLine_Item__c.class.getName() + "");
-
- from("direct:querySyncAsync")
- .to("direct:querySync")
- .to("direct:queryAsync");
-
-
from("direct:querySync?synchronous=false").routeId("r.querySync")
-
.to("salesforce:query?rawPayload=true&sObjectQuery=Select Id From Contact Where
Name = 'Sync'");
-
-
from("direct:queryAsync?synchronous=true").routeId("r.queryAsync")
-
.to("salesforce:query?rawPayload=true&sObjectQuery=Select Id From Contact
Where Name = 'Sync'");
-
- // testSearch
- from("direct:search").to("salesforce:search?sObjectSearch=FIND
{Wee}");
-
- // testApexCall
- from("direct:apexCallGet")
-
.to("salesforce:apexCall?apexMethod=GET&apexUrl=Merchandise/{id}&sObjectName=Merchandise__c");
-
- // testApexCall
- from("direct:apexCallGetDetectResponseType")
-
.to("salesforce:apexCall?apexMethod=GET&apexUrl=Merchandise/{id}");
-
- from("direct:apexCallGetWithId")
-
.to("salesforce:apexCall/Merchandise/?apexMethod=GET&id=dummyId" +
"&sObjectClass="
- + Merchandise__c.class.getName());
-
-
from("direct:apexCallPatch").to("salesforce:apexCall/Merchandise/"
- +
"?apexMethod=PATCH&sObjectClass=" + MerchandiseResponse.class.getName());
-
-
from("direct:apexCallPostCustomError").to("salesforce:apexCall/Merchandise/"
- +
"?apexMethod=POST&sObjectClass=java.lang.String");
-
-
from("direct:createSObjectContinueOnException").onException(Exception.class).continued(true).end()
- .to("salesforce:createSObject");
- }
- };
- }
+ /**
Review Comment:
Wrong indent too
##########
test-infra/camel-test-infra-jetty/src/test/java/org/apache/camel/test/infra/jetty/services/JettyConfiguration.java:
##########
@@ -251,13 +251,15 @@ private SecurityHandler
basicAuth(List<KeyValueHolder<String, String>> userInfoL
l.setName(realm);
l.setUserStore(us);
- Constraint constraint = new Constraint();
- constraint.setName(Constraint.__BASIC_AUTH);
- constraint.setRoles(new String[] { "user" });
- constraint.setAuthenticate(true);
+ Constraint.Builder constraintBuilder = new Constraint.Builder();
+ constraintBuilder.name("Basic Auth");
+ constraintBuilder.roles("user");
+ // constraint.setName(Constraint.__BASIC_AUTH);
+ // constraint.setRoles(new String[] { "user" });
+ // constraint.setAuthenticate(true);
Review Comment:
Can be removed
##########
components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceHttpClient.java:
##########
@@ -97,15 +97,14 @@ private static ClientConnector
newConnector(SslContextFactory.Client sslContextF
return connector;
}
- @Override
public HttpRequest newHttpRequest(HttpConversation conversation, URI uri) {
final SalesforceHttpRequest request = new SalesforceHttpRequest(this,
conversation, uri);
request.timeout(timeout, TimeUnit.MILLISECONDS);
return request;
}
@Override
- public Request copyRequest(HttpRequest oldRequest, URI newURI) {
+ public Request copyRequest(Request oldRequest, URI newURI) {
Review Comment:
Please remove the useless extra space added
##########
components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/AbstractSalesforceExecution.java:
##########
@@ -37,13 +37,7 @@
import org.apache.camel.support.jsse.SSLContextParameters;
import org.apache.camel.support.service.ServiceHelper;
import org.apache.camel.util.StringHelper;
-import org.eclipse.jetty.client.HttpProxy;
-import org.eclipse.jetty.client.Origin;
-import org.eclipse.jetty.client.ProxyConfiguration;
-import org.eclipse.jetty.client.Socks4Proxy;
-import org.eclipse.jetty.client.api.Authentication;
-import org.eclipse.jetty.client.util.BasicAuthentication;
-import org.eclipse.jetty.client.util.DigestAuthentication;
+import org.eclipse.jetty.client.*;
Review Comment:
ditto
##########
components/camel-platform-http/src/test/java/org/apache/camel/component/platform/http/JettyCustomPlatformHttpConsumer.java:
##########
@@ -16,14 +16,12 @@
*/
package org.apache.camel.component.platform.http;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
+import java.io.*;
Review Comment:
ditto
##########
components/camel-cxf/camel-cxf-rest/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java:
##########
@@ -212,13 +207,15 @@ public Object bindCamelMessageBodyToRequestBody(Message
camelMessage, Exchange c
throws Exception {
Object request = camelMessage.getBody(MessageContentsList.class);
- if (request != null) {
+ if (request != null && request instanceof MessageContentsList) {
return ((MessageContentsList) request).get(0);
}
request = camelMessage.getBody();
if (request instanceof List) {
request = ((List<?>) request).get(0);
+ } else if (request != null && request instanceof byte[]) {
Review Comment:
ditto
##########
components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBaseTest.java:
##########
@@ -31,175 +26,175 @@
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.support.DefaultExchange;
import org.apache.camel.support.DefaultMessage;
-import org.eclipse.jetty.client.HttpConversation;
-import org.eclipse.jetty.client.api.Request;
-import org.eclipse.jetty.client.api.Response;
-import org.eclipse.jetty.client.api.Response.CompleteListener;
-import org.eclipse.jetty.client.api.Result;
+import org.eclipse.jetty.client.Request;
+import org.eclipse.jetty.client.Response;
+import org.eclipse.jetty.client.Result;
+import org.eclipse.jetty.client.transport.HttpConversation;
import org.eclipse.jetty.http.HttpFields;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
public class AbstractClientBaseTest {
- static class Client extends AbstractClientBase {
- Client(final SalesforceSession session, final SalesforceLoginConfig
loginConfig) throws SalesforceException {
- super(null, session, mock(SalesforceHttpClient.class), loginConfig,
- 1 /* 1 second termination timeout */);
- }
-
- @Override
- protected SalesforceException createRestException(final Response
response, final InputStream responseContent) {
- return null;
- }
+ static class Client extends AbstractClientBase {
Review Comment:
ditto
##########
components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/SalesforceSessionTest.java:
##########
@@ -16,101 +16,99 @@
*/
package org.apache.camel.component.salesforce.internal;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
-
import org.apache.camel.component.salesforce.SalesforceHttpClient;
import org.apache.camel.component.salesforce.SalesforceLoginConfig;
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.eclipse.jetty.client.api.ContentResponse;
-import org.eclipse.jetty.client.api.Request;
+import org.eclipse.jetty.client.ContentResponse;
+import org.eclipse.jetty.client.Request;
import org.eclipse.jetty.http.HttpStatus;
import org.junit.jupiter.api.Test;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class SalesforceSessionTest {
- private static final int TIMEOUT = 1;
+ private static final int TIMEOUT = 1;
- private final KeyStoreParameters parameters;
+ private final KeyStoreParameters parameters;
Review Comment:
ditto
##########
components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/SalesforceSecurityHandler.java:
##########
@@ -26,15 +26,9 @@
import org.apache.camel.component.salesforce.api.SalesforceException;
import org.apache.camel.component.salesforce.api.dto.RestError;
import org.apache.camel.component.salesforce.internal.SalesforceSession;
-import org.eclipse.jetty.client.HttpContentResponse;
-import org.eclipse.jetty.client.HttpConversation;
-import org.eclipse.jetty.client.ProtocolHandler;
-import org.eclipse.jetty.client.ResponseNotifier;
-import org.eclipse.jetty.client.api.ContentResponse;
-import org.eclipse.jetty.client.api.Request;
-import org.eclipse.jetty.client.api.Response;
-import org.eclipse.jetty.client.api.Result;
-import org.eclipse.jetty.client.util.BufferingResponseListener;
+import org.eclipse.jetty.client.*;
Review Comment:
ditto
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]