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