You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dh...@apache.org on 2017/08/03 07:46:23 UTC

[2/7] camel git commit: CAMEL-10743: Added guard for Apex REST APIs and other minor fixes for JSON Schema support

CAMEL-10743: Added guard for Apex REST APIs and other minor fixes for JSON Schema support


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fa4e6123
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fa4e6123
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fa4e6123

Branch: refs/heads/master
Commit: fa4e6123fbd4f264a1d685c4f5250672e8f23c22
Parents: 0a7433d
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Wed Aug 2 23:16:52 2017 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Thu Aug 3 00:43:52 2017 -0700

----------------------------------------------------------------------
 .../salesforce/api/dto/AbstractSObjectBase.java      |  2 +-
 .../salesforce/api/utils/DateTimeDeserializer.java   |  4 ++++
 .../salesforce/api/utils/DateTimeSerializer.java     | 12 ++++++++++++
 .../salesforce/internal/SalesforceSession.java       |  5 +++++
 .../internal/client/DefaultRestClient.java           | 15 ++++++++++++---
 5 files changed, 34 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fa4e6123/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java
index 183a7aa..404bfa2 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java
@@ -21,7 +21,7 @@ import java.time.ZonedDateTime;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
 //CHECKSTYLE:OFF
-public class AbstractSObjectBase extends AbstractDTOBase {
+public abstract class AbstractSObjectBase extends AbstractDTOBase {
 
     // WARNING: these fields have case sensitive names,
     // the field name MUST match the field name used by Salesforce

http://git-wip-us.apache.org/repos/asf/camel/blob/fa4e6123/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeDeserializer.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeDeserializer.java
index e62496e..fefa68b 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeDeserializer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeDeserializer.java
@@ -41,4 +41,8 @@ public class DateTimeDeserializer extends JsonDeserializer<ZonedDateTime> {
         throw JsonMappingException.from(deserializationContext, "Expected String value, got: " + currentToken);
     }
 
+    @Override
+    public Class<?> handledType() {
+        return ZonedDateTime.class;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/fa4e6123/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeSerializer.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeSerializer.java
index ccf936a..26c8a39 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeSerializer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeSerializer.java
@@ -20,8 +20,11 @@ import java.io.IOException;
 import java.time.ZonedDateTime;
 
 import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonSerializer;
 import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
 
 
 public class DateTimeSerializer extends JsonSerializer<ZonedDateTime> {
@@ -35,4 +38,13 @@ public class DateTimeSerializer extends JsonSerializer<ZonedDateTime> {
         jsonGenerator.writeString(DateTimeUtils.formatDateTime(dateTime));
     }
 
+    @Override
+    public Class<ZonedDateTime> handledType() {
+        return ZonedDateTime.class;
+    }
+
+    @Override
+    public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType type) throws JsonMappingException {
+        visitor.expectStringFormat(type);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/fa4e6123/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
index a21a3eb..7aaaca0 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
@@ -249,6 +249,11 @@ public class SalesforceSession implements Service {
                 LOG.info("Login successful");
                 accessToken = token.getAccessToken();
                 instanceUrl = Optional.ofNullable(config.getInstanceUrl()).orElse(token.getInstanceUrl());
+                // strip trailing '/'
+                int lastChar = instanceUrl.length() - 1;
+                if (instanceUrl.charAt(lastChar) == '/') {
+                    instanceUrl = instanceUrl.substring(0, lastChar);
+                }
 
                 // notify all session listeners
                 for (SalesforceSessionListener listener : listeners) {

http://git-wip-us.apache.org/repos/asf/camel/blob/fa4e6123/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
index 2f3bad9..01a0f29 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
@@ -393,9 +393,18 @@ public class DefaultRestClient extends AbstractClientBase implements RestClient
             request = getRequest(httpMethod, apexCallUrl(apexUrl, queryParams));
             // set request SObject and content type
             if (requestDto != null) {
-                request.content(new InputStreamContentProvider(requestDto));
-                request.header(HttpHeader.CONTENT_TYPE,
-                        PayloadFormat.JSON.equals(format) ? APPLICATION_JSON_UTF8 : APPLICATION_XML_UTF8);
+                // guard against requests that do not support bodies
+                switch (request.getMethod()) {
+                case "PUT":
+                case "PATCH":
+                case "POST":
+                    request.content(new InputStreamContentProvider(requestDto));
+                    request.header(HttpHeader.CONTENT_TYPE,
+                            PayloadFormat.JSON.equals(format) ? APPLICATION_JSON_UTF8 : APPLICATION_XML_UTF8);
+                    break;
+                default:
+                    // ignore body for other methods
+                }
             }
 
             // requires authorization token