Created JsonUtils to create properly configured ObjectMapper
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/69072689 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/69072689 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/69072689 Branch: refs/heads/master Commit: 6907268939de07eebd919abdc6c547c4c2043a7d Parents: ff1898b Author: Dhiraj Bokde <dhira...@yahoo.com> Authored: Wed Jul 13 23:11:37 2016 -0700 Committer: Dhiraj Bokde <dhira...@yahoo.com> Committed: Wed Jul 13 23:11:37 2016 -0700 ---------------------------------------------------------------------- .../salesforce/SalesforceConsumer.java | 3 +- .../salesforce/api/dto/AbstractDTOBase.java | 4 +- .../salesforce/internal/SalesforceSession.java | 3 +- .../client/DefaultAnalyticsApiClient.java | 2 +- .../internal/client/DefaultRestClient.java | 2 +- .../salesforce/internal/client/JsonUtils.java | 35 +++++++++++++ .../internal/datetime/DateTimeDeserializer.java | 52 +++++++++++++++++++ .../internal/datetime/DateTimeModule.java | 31 ++++++++++++ .../internal/datetime/DateTimeSerializer.java | 48 ++++++++++++++++++ .../internal/joda/DateTimeDeserializer.java | 53 -------------------- .../internal/joda/DateTimeModule.java | 31 ------------ .../internal/joda/DateTimeSerializer.java | 48 ------------------ .../internal/processor/JsonRestProcessor.java | 8 +-- .../internal/streaming/PushTopicHelper.java | 3 +- .../api/MultiSelectPicklistJsonTest.java | 7 ++- .../salesforce/internal/LoginTokenTest.java | 7 ++- .../apache/camel/maven/CamelSalesforceMojo.java | 3 +- 17 files changed, 191 insertions(+), 149 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java index e606a81..93d8faa 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java @@ -28,6 +28,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.salesforce.internal.client.DefaultRestClient; +import org.apache.camel.component.salesforce.internal.client.JsonUtils; import org.apache.camel.component.salesforce.internal.client.RestClient; import org.apache.camel.component.salesforce.internal.streaming.PushTopicHelper; import org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper; @@ -42,7 +43,7 @@ import org.cometd.bayeux.client.ClientSessionChannel; public class SalesforceConsumer extends DefaultConsumer { - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = JsonUtils.createObjectMapper(); private static final String EVENT_PROPERTY = "event"; private static final String TYPE_PROPERTY = "type"; private static final String CREATED_DATE_PROPERTY = "createdDate"; http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java index f05735c..060605c 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java @@ -23,13 +23,15 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.camel.component.salesforce.internal.client.JsonUtils; + // disable null values in json output @JsonInclude(JsonInclude.Include.NON_NULL) // avoid running into Salesforce backward compatibility breaks @JsonIgnoreProperties(ignoreUnknown = true) public abstract class AbstractDTOBase { - private static final ObjectMapper MAPPER = new ObjectMapper(); + private static final ObjectMapper MAPPER = JsonUtils.createObjectMapper(); @Override public String toString() { http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/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 8d6d1cc..3f6ce0c 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 @@ -33,6 +33,7 @@ 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.component.salesforce.api.dto.RestError; +import org.apache.camel.component.salesforce.internal.client.JsonUtils; import org.apache.camel.component.salesforce.internal.dto.LoginError; import org.apache.camel.component.salesforce.internal.dto.LoginToken; import org.apache.camel.util.ObjectHelper; @@ -82,7 +83,7 @@ public class SalesforceSession implements Service { String loginUrl = config.getLoginUrl(); config.setLoginUrl(loginUrl.endsWith("/") ? loginUrl.substring(0, loginUrl.length() - 1) : loginUrl); - this.objectMapper = new ObjectMapper(); + this.objectMapper = JsonUtils.createObjectMapper(); this.listeners = new CopyOnWriteArraySet<SalesforceSessionListener>(); } http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java index cd3cb06..45efeeb 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java @@ -56,7 +56,7 @@ public class DefaultAnalyticsApiClient extends AbstractClientBase implements Ana SalesforceHttpClient httpClient) throws SalesforceException { super(version, session, httpClient); - objectMapper = new ObjectMapper(); + objectMapper = JsonUtils.createObjectMapper(); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/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 9d5849e..50560a2 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 @@ -64,7 +64,7 @@ public class DefaultRestClient extends AbstractClientBase implements RestClient this.format = format; // initialize error parsers for JSON and XML - this.objectMapper = new ObjectMapper(); + this.objectMapper = JsonUtils.createObjectMapper(); this.xStream = new XStream(); xStream.processAnnotations(RestErrors.class); xStream.processAnnotations(RestChoices.class); http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/JsonUtils.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/JsonUtils.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/JsonUtils.java new file mode 100644 index 0000000..e894ce3 --- /dev/null +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/JsonUtils.java @@ -0,0 +1,35 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.salesforce.internal.client; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +import org.apache.camel.component.salesforce.internal.datetime.DateTimeModule; + +/** + * Factory class for creating {@linkplain com.fasterxml.jackson.databind.ObjectMapper} + */ +public abstract class JsonUtils { + public static ObjectMapper createObjectMapper() { + // enable date time support including Java 1.8 ZonedDateTime + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); + objectMapper.registerModule(new DateTimeModule()); + return objectMapper; + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeDeserializer.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeDeserializer.java new file mode 100644 index 0000000..39c19c3 --- /dev/null +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeDeserializer.java @@ -0,0 +1,52 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.salesforce.internal.datetime; + +import java.io.IOException; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + + +public class DateTimeDeserializer extends JsonDeserializer<ZonedDateTime> { + + private final DateTimeFormatter formatter = new DateTimeFormatterBuilder() + .appendPattern("yyyy-MM-dd'T'HH:mm:ss[.A][,A]") + .appendOffset("+HH:mm", "Z") + .toFormatter(); + + public DateTimeDeserializer() { + super(); + } + + @Override + public ZonedDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + JsonToken currentToken = jsonParser.getCurrentToken(); + if (currentToken == JsonToken.VALUE_STRING) { + String dateTimeAsString = jsonParser.getText().trim(); + return formatter.parse(dateTimeAsString, ZonedDateTime::from); + } + throw deserializationContext.mappingException(getClass()); + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeModule.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeModule.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeModule.java new file mode 100644 index 0000000..aec2df8 --- /dev/null +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeModule.java @@ -0,0 +1,31 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.salesforce.internal.datetime; + + +import java.time.ZonedDateTime; + +import com.fasterxml.jackson.databind.module.SimpleModule; + +public class DateTimeModule extends SimpleModule { + + public DateTimeModule() { + super(); + addSerializer(ZonedDateTime.class, new DateTimeSerializer()); + addDeserializer(ZonedDateTime.class, new DateTimeDeserializer()); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeSerializer.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeSerializer.java new file mode 100644 index 0000000..0ad029e --- /dev/null +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/datetime/DateTimeSerializer.java @@ -0,0 +1,48 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.salesforce.internal.datetime; + + + +import java.io.IOException; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + + +public class DateTimeSerializer extends JsonSerializer<ZonedDateTime> { + + private final DateTimeFormatter formatter = new DateTimeFormatterBuilder() + .appendPattern("yyyy-MM-dd'T'HH:mm:ss") + .appendOffset("+HH:mm", "Z") + .toFormatter(); + + public DateTimeSerializer() { + super(); + } + + @Override + public void serialize(ZonedDateTime dateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { + jsonGenerator.writeString(formatter.format(dateTime)); + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeDeserializer.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeDeserializer.java deleted file mode 100644 index 0f4b771..0000000 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeDeserializer.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.component.salesforce.internal.joda; - -import java.io.IOException; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeFormatterBuilder; -import java.time.temporal.TemporalQuery; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; - - -public class DateTimeDeserializer extends JsonDeserializer<ZonedDateTime> { - - private final DateTimeFormatter formatter = new DateTimeFormatterBuilder() - .appendPattern("yyyy-MM-dd'T'HH:mm:ss") - .appendOffset("+HH:mm", "Z") - .toFormatter(); - - public DateTimeDeserializer() { - super(); - } - - @Override - public ZonedDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { - JsonToken currentToken = jsonParser.getCurrentToken(); - if (currentToken == JsonToken.VALUE_STRING) { - String dateTimeAsString = jsonParser.getText().trim(); - return formatter.parse(dateTimeAsString, ZonedDateTime::from); - } - throw deserializationContext.mappingException(getClass()); - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeModule.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeModule.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeModule.java deleted file mode 100644 index 8ce74f1..0000000 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeModule.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.component.salesforce.internal.joda; - - -import java.time.ZonedDateTime; - -import com.fasterxml.jackson.databind.module.SimpleModule; - -public class DateTimeModule extends SimpleModule { - - public DateTimeModule() { - super(); - addSerializer(ZonedDateTime.class, new DateTimeSerializer()); - addDeserializer(ZonedDateTime.class, new DateTimeDeserializer()); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeSerializer.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeSerializer.java deleted file mode 100644 index bcc216f..0000000 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/joda/DateTimeSerializer.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.component.salesforce.internal.joda; - - - -import java.io.IOException; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeFormatterBuilder; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; - - -public class DateTimeSerializer extends JsonSerializer<ZonedDateTime> { - - private final DateTimeFormatter formatter = new DateTimeFormatterBuilder() - .appendPattern("yyyy-MM-dd'T'HH:mm:ss") - .appendOffset("+HH:mm", "Z") - .toFormatter(); - - public DateTimeSerializer() { - super(); - } - - @Override - public void serialize(ZonedDateTime dateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { - jsonGenerator.writeString(formatter.format(dateTime)); - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java index 53f31b3..1e8f948 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java @@ -24,7 +24,6 @@ import java.util.List; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; @@ -39,7 +38,7 @@ import org.apache.camel.component.salesforce.api.dto.SObjectBasicInfo; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; import org.apache.camel.component.salesforce.api.dto.SearchResult; import org.apache.camel.component.salesforce.api.dto.Version; -import org.apache.camel.component.salesforce.internal.joda.DateTimeModule; +import org.apache.camel.component.salesforce.internal.client.JsonUtils; import org.eclipse.jetty.util.StringUtil; public class JsonRestProcessor extends AbstractRestProcessor { @@ -55,10 +54,7 @@ public class JsonRestProcessor extends AbstractRestProcessor { if (endpoint.getConfiguration().getObjectMapper() != null) { this.objectMapper = endpoint.getConfiguration().getObjectMapper(); } else { - this.objectMapper = new ObjectMapper(); - // enable date time support including Joda DateTime - this.objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - this.objectMapper.registerModule(new DateTimeModule()); + this.objectMapper = JsonUtils.createObjectMapper(); } } http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java index 3321b4f..a92924d 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java @@ -26,6 +26,7 @@ import org.apache.camel.CamelException; import org.apache.camel.component.salesforce.SalesforceEndpointConfig; import org.apache.camel.component.salesforce.api.SalesforceException; import org.apache.camel.component.salesforce.api.dto.CreateSObjectResult; +import org.apache.camel.component.salesforce.internal.client.JsonUtils; import org.apache.camel.component.salesforce.internal.client.RestClient; import org.apache.camel.component.salesforce.internal.client.SyncResponseCallback; import org.apache.camel.component.salesforce.internal.dto.PushTopic; @@ -36,7 +37,7 @@ import org.slf4j.LoggerFactory; public class PushTopicHelper { private static final Logger LOG = LoggerFactory.getLogger(PushTopicHelper.class); - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = JsonUtils.createObjectMapper(); private static final String PUSH_TOPIC_OBJECT_NAME = "PushTopic"; private static final long API_TIMEOUT = 60; // Rest API call timeout private final SalesforceEndpointConfig config; http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java index 393c1d6..a3c2500 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java @@ -19,16 +19,19 @@ package org.apache.camel.component.salesforce.api; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.dto.generated.MSPTest; +import org.apache.camel.component.salesforce.internal.client.JsonUtils; import org.junit.Test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; public class MultiSelectPicklistJsonTest { private static final String TEST_JSON = "{\"MspField\":\"Value1;Value2;Value3\"}"; private static final String TEST_NULL_JSON = "{\"MspField\":null}"; - private static ObjectMapper objectMapper = new ObjectMapper(); + private static ObjectMapper objectMapper = JsonUtils.createObjectMapper(); @Test public void testMarshal() throws Exception { http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java index a0494db..5ac63be 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java @@ -18,12 +18,15 @@ package org.apache.camel.component.salesforce.internal; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.camel.component.salesforce.internal.client.JsonUtils; import org.apache.camel.component.salesforce.internal.dto.LoginToken; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; public class LoginTokenTest { @@ -42,7 +45,7 @@ public class LoginTokenTest { + " \"issued_at\": \"1442798068621\",\n" + " \"an_unrecognised_field\": \"foo\"\n" + "}"; - ObjectMapper mapper = new ObjectMapper(); + ObjectMapper mapper = JsonUtils.createObjectMapper(); Exception e = null; LoginToken token = null; try { http://git-wip-us.apache.org/repos/asf/camel/blob/69072689/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java index 7a93db6..3e0324b 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java @@ -52,6 +52,7 @@ import org.apache.camel.component.salesforce.api.dto.SObjectField; import org.apache.camel.component.salesforce.internal.PayloadFormat; import org.apache.camel.component.salesforce.internal.SalesforceSession; import org.apache.camel.component.salesforce.internal.client.DefaultRestClient; +import org.apache.camel.component.salesforce.internal.client.JsonUtils; import org.apache.camel.component.salesforce.internal.client.RestClient; import org.apache.camel.component.salesforce.internal.client.SyncResponseCallback; import org.apache.camel.util.IntrospectionSupport; @@ -309,7 +310,7 @@ public class CamelSalesforceMojo extends AbstractMojo { try { // use Jackson json - final ObjectMapper mapper = new ObjectMapper(); + final ObjectMapper mapper = JsonUtils.createObjectMapper(); // call getGlobalObjects to get all SObjects final Set<String> objectNames = new TreeSet<String>();