From 3f252d24e0a9f6b80cec598c4cd9b55a2fd8dc69 Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 18:08:13 +0400 Subject: [PATCH 01/12] attribute timezone in DataField and KeyValuePairField --- .../camel/dataformat/bindy/FormatFactory.java | 13 ++++++++---- .../bindy/annotation/DataField.java | 5 +++++ .../bindy/annotation/KeyValuePairField.java | 5 +++++ .../bindy/format/DatePatternFormat.java | 21 +++++++++++++++++-- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/FormatFactory.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/FormatFactory.java index f981b6a11a204..cf7720fe0aac2 100755 --- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/FormatFactory.java +++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/FormatFactory.java @@ -65,7 +65,10 @@ private FormatFactory() { * @throws IllegalArgumentException if not suitable formatter is found */ @SuppressWarnings("unchecked") - private static Format doGetFormat(Class clazz, String pattern, String locale, int precision, boolean impliedDecimalSeparator) throws Exception { + private static Format doGetFormat(Class clazz, String pattern, String locale, + String timezone, int precision, boolean impliedDecimalSeparator) + throws Exception + { if (clazz == byte.class || clazz == Byte.class) { return ObjectHelper.isNotEmpty(pattern) ? new BytePatternFormat(pattern, getLocale(locale)) @@ -97,7 +100,7 @@ private static Format doGetFormat(Class clazz, String pattern, String loca } else if (clazz == String.class) { return new StringFormat(); } else if (clazz == Date.class) { - return new DatePatternFormat(pattern, getLocale(locale)); + return new DatePatternFormat(pattern, timezone, getLocale(locale)); } else if (clazz == char.class || clazz == Character.class) { return new CharacterFormat(); } else if (clazz.isEnum()) { @@ -117,9 +120,10 @@ private static Format doGetFormat(Class clazz, String pattern, String loca */ public static Format getFormat(Class clazz, String locale, DataField data) throws Exception { String pattern = data.pattern(); + String timezone = data.timezone(); int precision = data.precision(); - return doGetFormat(clazz, pattern, locale, precision, data.impliedDecimalSeparator()); + return doGetFormat(clazz, pattern, locale, timezone, precision, data.impliedDecimalSeparator()); } /** @@ -132,9 +136,10 @@ public static Format getFormat(Class clazz, String locale, DataField data) */ public static Format getFormat(Class clazz, String locale, KeyValuePairField data) throws Exception { String pattern = data.pattern(); + String timezone = data.timezone(); int precision = data.precision(); - return doGetFormat(clazz, pattern, locale, precision, data.impliedDecimalSeparator()); + return doGetFormat(clazz, pattern, locale, timezone, precision, data.impliedDecimalSeparator()); } private static Locale getLocale(String locale) { diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/DataField.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/DataField.java index 8e48d5dc0456d..cacbb52467e11 100755 --- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/DataField.java +++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/DataField.java @@ -59,6 +59,11 @@ */ String pattern() default ""; + /** + * @return String timezone ID + */ + String timezone() default ""; + /** * Length of the data block if the record is set to a fixed length */ diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/KeyValuePairField.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/KeyValuePairField.java index dff42a12e9fdb..35f902bd27915 100644 --- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/KeyValuePairField.java +++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/annotation/KeyValuePairField.java @@ -57,6 +57,11 @@ */ String pattern() default ""; + /** + * @return String timezone ID + */ + String timezone() default ""; + /** * Position of the field in the message generated * diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java index 1b134134e2096..f297a66218585 100755 --- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java +++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java @@ -20,6 +20,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; +import java.util.TimeZone; import org.apache.camel.dataformat.bindy.PatternFormat; import org.apache.camel.util.ObjectHelper; @@ -28,6 +29,7 @@ public class DatePatternFormat implements PatternFormat { private String pattern; private Locale locale; + private TimeZone timezone; public DatePatternFormat() { } @@ -37,6 +39,16 @@ public DatePatternFormat(String pattern, Locale locale) { this.locale = locale; } + public DatePatternFormat(String pattern, String timezone, Locale locale) { + this.pattern = pattern; + this.locale = locale; + if (timezone.isEmpty()) { + this.timezone = TimeZone.getDefault(); + } else { + this.timezone = TimeZone.getTimeZone(timezone); + } + } + public String format(Date object) throws Exception { ObjectHelper.notNull(this.pattern, "pattern"); return this.getDateFormat().format(object); @@ -69,11 +81,16 @@ public Date parse(String string) throws Exception { } protected java.text.DateFormat getDateFormat() { + SimpleDateFormat result; if (locale != null) { - return new SimpleDateFormat(pattern, locale); + result = new SimpleDateFormat(pattern, locale); } else { - return new SimpleDateFormat(pattern); + result = new SimpleDateFormat(pattern); + } + if (timezone != null) { + result.setTimeZone(timezone); } + return result; } public String getPattern() { From 6e3a982b4c5691d41378b4b678584397e200930c Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:15:59 +0400 Subject: [PATCH 02/12] DateField.timezone test --- .../bindy/classtype/BindyCsvClassTypeTest.java | 18 ++++++++++++++++-- .../bindy/model/simple/oneclass/Order.java | 13 ++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/classtype/BindyCsvClassTypeTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/classtype/BindyCsvClassTypeTest.java index b661ee7e7f7ef..ee60d4fc619be 100644 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/classtype/BindyCsvClassTypeTest.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/classtype/BindyCsvClassTypeTest.java @@ -19,6 +19,7 @@ import java.math.BigDecimal; import java.util.Calendar; import java.util.GregorianCalendar; +import java.util.TimeZone; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.dataformat.bindy.model.simple.oneclass.Order; @@ -34,7 +35,7 @@ public class BindyCsvClassTypeTest extends CamelTestSupport { @Test public void testMarshallMessage() throws Exception { - String expected = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009\r\n"; + String expected = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009,17-02-2010 23:21:59\r\n"; getMockEndpoint("mock:in").expectedBodiesReceived(expected); @@ -48,7 +49,7 @@ public void testUnmarshallMessage() throws Exception { getMockEndpoint("mock:out").expectedMessageCount(1); getMockEndpoint("mock:out").message(0).body().isInstanceOf(Order.class); - String data = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009\r\n"; + String data = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009,16-02-2010 23:21:59\r\n"; template.sendBody("direct:out", data); assertMockEndpointsSatisfied(); @@ -64,6 +65,13 @@ public void testUnmarshallMessage() throws Exception { assertEquals("XX23456789", order.getInstrumentNumber()); assertEquals("Share", order.getInstrumentType()); assertEquals("EUR", order.getCurrency()); + + Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + // 4 hour shift + // 16-02-2010 23:21:59 by GMT+4 + calendar.set(2010, 1, 16, 19, 21, 59); + calendar.set(Calendar.MILLISECOND, 0); + assertEquals(calendar.getTime(), order.getOrderDateTime()); } public Order generateOrder() { @@ -83,6 +91,12 @@ public Order generateOrder() { calendar.set(2009, 0, 14); order.setOrderDate(calendar.getTime()); + calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + // 4 hour shift + // 17-02-2010 23:21:59 by GMT+4 + calendar.set(2010, 1, 17, 19, 21, 59); + order.setOrderDateTime(calendar.getTime()); + return order; } diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclass/Order.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclass/Order.java index 0b3369e92cc7a..7f503760df1a5 100755 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclass/Order.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclass/Order.java @@ -58,6 +58,9 @@ public class Order { @DataField(pos = 11, pattern = "dd-MM-yyyy") private Date orderDate; + @DataField(pos = 12, pattern = "dd-MM-yyyy HH:mm:ss", timezone = "GMT+4") + private Date orderDateTime; + public int getOrderNr() { return orderNr; } @@ -146,10 +149,18 @@ public void setOrderDate(Date orderDate) { this.orderDate = orderDate; } + public Date getOrderDateTime() { + return orderDateTime; + } + + public void setOrderDateTime(Date orderDateTime) { + this.orderDateTime = orderDateTime; + } + @Override public String toString() { return "Model : " + Order.class.getName() + " : " + this.orderNr + ", " + this.orderType + ", " + String.valueOf(this.amount) + ", " + this.instrumentCode + ", " + this.instrumentNumber + ", " + this.instrumentType + ", " + this.currency + ", " + this.clientNr + ", " + this.firstName + ", " + this.lastName + ", " - + String.valueOf(this.orderDate); + + String.valueOf(this.orderDate) + ", hel" + String.valueOf(this.orderDateTime); } } From c126d3f7e254d64d23be75d6b44df4a96d4d5603 Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:23:07 +0400 Subject: [PATCH 03/12] fix BindyCsvClassTypeTest for time timezone --- .../bindy/csv/BindyPojoSimpleCsvMarshallTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyPojoSimpleCsvMarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyPojoSimpleCsvMarshallTest.java index 9fcccbf924c93..1469937f92e8d 100755 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyPojoSimpleCsvMarshallTest.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindyPojoSimpleCsvMarshallTest.java @@ -19,6 +19,7 @@ import java.math.BigDecimal; import java.util.Calendar; import java.util.GregorianCalendar; +import java.util.TimeZone; import org.apache.camel.EndpointInject; import org.apache.camel.LoggingLevel; @@ -52,7 +53,7 @@ public class BindyPojoSimpleCsvMarshallTest extends AbstractJUnit4SpringContextT @DirtiesContext public void testMarshallMessage() throws Exception { - expected = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009\r\n"; + expected = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009,17-02-2010 23:27:59\r\n"; result.expectedBodiesReceived(expected); @@ -79,6 +80,13 @@ public Object generateModel() { calendar.set(2009, 0, 14); order.setOrderDate(calendar.getTime()); + calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + // 4 hour shift + // 16-02-2010 23:21:59 by GMT+4 + calendar.set(2010, 1, 17, 19, 27, 59); + calendar.set(Calendar.MILLISECOND, 0); + order.setOrderDateTime(calendar.getTime()); + return order; } From 1c5a432f72caa7eed115d99eca3ce3eff9e64581 Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:25:46 +0400 Subject: [PATCH 04/12] fix BindySimpleCsvNullMarshallTest --- .../dataformat/bindy/csv/BindySimpleCsvNullMarshallTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvNullMarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvNullMarshallTest.java index a9a0c0c5de0a7..e1b62bb772d02 100644 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvNullMarshallTest.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvNullMarshallTest.java @@ -38,7 +38,7 @@ public class BindySimpleCsvNullMarshallTest extends AbstractJUnit4SpringContextTests { private List> models = new ArrayList>(); - private String result = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,,450.45,EUR,14-01-2009\r\n"; + private String result = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,,450.45,EUR,14-01-2009,\r\n"; @Produce(uri = "direct:start") private ProducerTemplate template; From f31adf48dd65a010a9046075df8fdde21cf5961c Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:30:14 +0400 Subject: [PATCH 05/12] fix BindyCsvClassTypeAsStringTest --- .../BindyCsvClassTypeAsStringTest.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/classtype/BindyCsvClassTypeAsStringTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/classtype/BindyCsvClassTypeAsStringTest.java index 78ce191a96751..3bfe442bd98bb 100644 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/classtype/BindyCsvClassTypeAsStringTest.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/classtype/BindyCsvClassTypeAsStringTest.java @@ -19,6 +19,7 @@ import java.math.BigDecimal; import java.util.Calendar; import java.util.GregorianCalendar; +import java.util.TimeZone; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.dataformat.bindy.model.simple.oneclass.Order; @@ -34,7 +35,7 @@ public class BindyCsvClassTypeAsStringTest extends CamelTestSupport { @Test public void testMarshallMessage() throws Exception { - String expected = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009\r\n"; + String expected = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009,11-02-2010 23:21:59\r\n"; getMockEndpoint("mock:in").expectedBodiesReceived(expected); @@ -45,7 +46,7 @@ public void testMarshallMessage() throws Exception { @Test public void testUnmarshallMessage() throws Exception { - String data = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009\r\n"; + String data = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009,03-02-2010 23:21:59\r\n"; getMockEndpoint("mock:out").expectedMessageCount(1); getMockEndpoint("mock:out").message(0).body().isInstanceOf(Order.class); @@ -65,6 +66,13 @@ public void testUnmarshallMessage() throws Exception { assertEquals("XX23456789", order.getInstrumentNumber()); assertEquals("Share", order.getInstrumentType()); assertEquals("EUR", order.getCurrency()); + + Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + // 4 hour shift + // 03-02-2010 23:21:59 by GMT+4 + calendar.set(2010, 1, 3, 19, 21, 59); + calendar.set(Calendar.MILLISECOND, 0); + assertEquals(calendar.getTime(), order.getOrderDateTime()); } public Order generateOrder() { @@ -84,6 +92,13 @@ public Order generateOrder() { calendar.set(2009, 0, 14); order.setOrderDate(calendar.getTime()); + calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + // 4 hour shift + // 11-02-2010 23:21:59 by GMT+4 + calendar.set(2010, 1, 11, 19, 21, 59); + calendar.set(Calendar.MILLISECOND, 0); + order.setOrderDateTime(calendar.getTime()); + return order; } From d880d42c646ecb0c1d10fd7cedfde50fa2616614 Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:32:53 +0400 Subject: [PATCH 06/12] fix BindySimpleCsvMarshallDslTest --- .../bindy/csv/BindySimpleCsvMarshallDslTest.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallDslTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallDslTest.java index e7933dd19a65a..2453e21c96d67 100755 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallDslTest.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallDslTest.java @@ -17,12 +17,7 @@ package org.apache.camel.dataformat.bindy.csv; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import org.apache.camel.EndpointInject; import org.apache.camel.Produce; @@ -40,7 +35,7 @@ public class BindySimpleCsvMarshallDslTest extends AbstractJUnit4SpringContextTests { private List> models = new ArrayList>(); - private String result = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,450.45,EUR,14-01-2009\r\n"; + private String result = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,450.45,EUR,14-01-2009,17-05-2010 23:21:59\r\n"; @Produce(uri = "direct:start") private ProducerTemplate template; @@ -76,6 +71,12 @@ public List> generateModel() { calendar.set(2009, 0, 14); order.setOrderDate(calendar.getTime()); + calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + // 4 hour shift + // 17-05-2010 23:21:59 by GMT+4 + calendar.set(2010, 4, 17, 19, 21, 59); + order.setOrderDateTime(calendar.getTime()); + modelObjects.put(order.getClass().getName(), order); models.add(modelObjects); From 37c00ce2db1884273db0d456a6a099a11170d2d6 Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:34:49 +0400 Subject: [PATCH 07/12] fix BindySimpleCsvMarshallTest --- .../bindy/csv/BindySimpleCsvMarshallTest.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallTest.java index 4674d17bf1ae6..ba32a7c249807 100755 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallTest.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/csv/BindySimpleCsvMarshallTest.java @@ -17,12 +17,7 @@ package org.apache.camel.dataformat.bindy.csv; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import org.apache.camel.EndpointInject; import org.apache.camel.LoggingLevel; @@ -57,7 +52,7 @@ public class BindySimpleCsvMarshallTest extends AbstractJUnit4SpringContextTests @DirtiesContext public void testMarshallMessage() throws Exception { - expected = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009\r\n"; + expected = "1,B2,Keira,Knightley,ISIN,XX23456789,BUY,Share,400.25,EUR,14-01-2009,17-02-2011 23:21:59\r\n"; result.expectedBodiesReceived(expected); @@ -85,6 +80,12 @@ public List> generateModel() { calendar.set(2009, 0, 14); order.setOrderDate(calendar.getTime()); + calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + // 4 hour shift + // 17-02-2011 23:21:59 by GMT+4 + calendar.set(2011, 1, 17, 19, 21, 59); + order.setOrderDateTime(calendar.getTime()); + modelObjects.put(order.getClass().getName(), order); models.add(modelObjects); From 7463d7c995abaad3ada7b42b1454f3c760016f48 Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:39:38 +0400 Subject: [PATCH 08/12] remove trash --- .../camel/dataformat/bindy/model/simple/oneclass/Order.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclass/Order.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclass/Order.java index 7f503760df1a5..886747fe9e9e0 100755 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclass/Order.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/simple/oneclass/Order.java @@ -161,6 +161,6 @@ public void setOrderDateTime(Date orderDateTime) { public String toString() { return "Model : " + Order.class.getName() + " : " + this.orderNr + ", " + this.orderType + ", " + String.valueOf(this.amount) + ", " + this.instrumentCode + ", " + this.instrumentNumber + ", " + this.instrumentType + ", " + this.currency + ", " + this.clientNr + ", " + this.firstName + ", " + this.lastName + ", " - + String.valueOf(this.orderDate) + ", hel" + String.valueOf(this.orderDateTime); + + String.valueOf(this.orderDate) + ", " + String.valueOf(this.orderDateTime); } } From c701703a31b956a5bfa6bbf7f96f701582d7206c Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:48:17 +0400 Subject: [PATCH 09/12] add timezone checking into BindyComplexKeyValuePairStandaloneTest --- .../BindyComplexKeyValuePairStandaloneTest.java | 17 +++++++++++++---- .../model/fix/complex/onetomany/Header.java | 16 +++++++++++++++- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindyComplexKeyValuePairStandaloneTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindyComplexKeyValuePairStandaloneTest.java index d1e9bd1580cfd..368382645ed84 100644 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindyComplexKeyValuePairStandaloneTest.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindyComplexKeyValuePairStandaloneTest.java @@ -69,7 +69,11 @@ public void init() throws Exception { @Test public void testOneGroupMessage() throws Exception { - String message = "8=FIX 4.19=2034=135=049=INVMGR56=BRKR" + "1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test" + "22=448=BE000124567854=1" + "10=220"; + String message = "8=FIX 4.19=2034=135=049=INVMGR56=BRKR" + + "1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test" + + "22=448=BE000124567854=1" + + "10=220" + + "777=22-06-2013 12:21:11"; List data = Arrays.asList(message.split("\\u0001")); @@ -84,8 +88,10 @@ public void testOneGroupMessage() throws Exception { @Test public void testSeveralGroupMessage() throws Exception { - String message = "8=FIX 4.19=2034=135=049=INVMGR56=BRKR" + "1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test" + "22=448=BE000124567854=1" - + "22=548=BE000987654354=2" + "22=648=BE000999999954=3" + "10=220"; + String message = "8=FIX 4.19=2034=135=049=INVMGR56=BRKR" + + "1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test" + "22=448=BE000124567854=1" + + "22=548=BE000987654354=2" + "22=648=BE000999999954=3" + "10=220" + + "777=22-06-2013 12:21:11"; List data = Arrays.asList(message.split("\\u0001")); @@ -100,7 +106,10 @@ public void testSeveralGroupMessage() throws Exception { @Test public void testNoGroupMessage() throws Exception { - String message = "8=FIX 4.19=2034=135=049=INVMGR56=BRKR" + "1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test" + "10=220"; + String message = "8=FIX 4.19=2034=135=049=INVMGR56=BRKR" + + "1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test" + + "10=220" + + "777=22-06-2013 12:21:11"; List data = Arrays.asList(message.split("\\u0001")); diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/complex/onetomany/Header.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/complex/onetomany/Header.java index 1cc53a61947f3..031b8329e4bbe 100644 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/complex/onetomany/Header.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/complex/onetomany/Header.java @@ -19,6 +19,8 @@ import org.apache.camel.dataformat.bindy.annotation.KeyValuePairField; import org.apache.camel.dataformat.bindy.annotation.Link; +import java.util.Date; + @Link public class Header { @@ -46,6 +48,10 @@ public class Header { // target company id private String targetCompId; + @KeyValuePairField(tag = 777, pattern = "dd-MM-yyyy HH:mm:ss", timezone = "GMT-3") + // created + private Date created; + public String getBeginString() { return beginString; } @@ -94,10 +100,18 @@ public void setTargetCompId(String targetCompId) { this.targetCompId = targetCompId; } + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + @Override public String toString() { return Header.class.getName() + " --> 8: " + this.beginString + ", 9: " + this.bodyLength + ", 34: " + this.msgSeqNum + " , 35: " + this.msgType + ", 49: " - + this.sendCompId + ", 56: " + this.targetCompId; + + this.sendCompId + ", 56: " + this.targetCompId + ", 777: " + this.created; } } From 3935f7b22361036fd3f53b6eb7d1189342179b97 Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 22:52:13 +0400 Subject: [PATCH 10/12] add time to Order in BindyComplexKeyValuePairStandaloneTest --- .../bindy/model/fix/complex/onetomany/Order.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/complex/onetomany/Order.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/complex/onetomany/Order.java index cfbc31b8494ac..85077d460df42 100644 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/complex/onetomany/Order.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/complex/onetomany/Order.java @@ -16,6 +16,7 @@ */ package org.apache.camel.dataformat.bindy.model.fix.complex.onetomany; +import java.util.Date; import java.util.List; import org.apache.camel.dataformat.bindy.annotation.KeyValuePairField; @@ -44,6 +45,10 @@ public class Order { // Free text private String text; + @KeyValuePairField(tag = 777, pattern = "dd-MM-yyyy HH:mm:ss", timezone = "GMT-3") + // created + private Date created; + @OneToMany(mappedTo = "org.apache.camel.dataformat.bindy.model.fix.complex.onetomany.Security") private List securities; @@ -95,10 +100,19 @@ public void setText(String text) { this.text = text; } + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + @Override public String toString() { StringBuilder temp = new StringBuilder(); - temp.append(Order.class.getName() + " --> 1: " + this.account + ", 11: " + this.clOrdId + ", 58: " + this.text); + temp.append(Order.class.getName() + " --> 1: " + this.account + ", 11: " + this.clOrdId + + ", 58: " + this.text + ", 777: " + this.created); temp.append("\r"); if (this.securities != null) { From 435d8bc3d5f379c63310408e068f52a80be94d64 Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 23:01:32 +0400 Subject: [PATCH 11/12] add timezone checking in BindySimpleKeyValuePairMarshallDslTest --- .../BindySimpleKeyValuePairMarshallDslTest.java | 14 +++++++++----- .../dataformat/bindy/model/fix/simple/Order.java | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairMarshallDslTest.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairMarshallDslTest.java index c5cbe087fd028..846174c9763fb 100644 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairMarshallDslTest.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/fix/BindySimpleKeyValuePairMarshallDslTest.java @@ -16,10 +16,7 @@ */ package org.apache.camel.dataformat.bindy.fix; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import org.apache.camel.EndpointInject; import org.apache.camel.Produce; @@ -36,7 +33,8 @@ public class BindySimpleKeyValuePairMarshallDslTest extends AbstractJUnit4SpringContextTests { private List> models = new ArrayList>(); - private String result = "1=BE.CHM.00111=CHM0001-0122=448=BE000124567854=158=this is a camel - bindy test\r\n"; + private String result = "1=BE.CHM.00111=CHM0001-0122=448=BE0001245678" + + "54=158=this is a camel - bindy test777=17-02-2011 23:29:59\r\n"; @Produce(uri = "direct:start") private ProducerTemplate template; @@ -63,6 +61,12 @@ public List> generateModel() { order.setSide("1"); order.setText("this is a camel - bindy test"); + Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + // 4 hour shift + // 17-02-2011 23:29:59 by GMT-3 + calendar.set(2011, 1, 18, 2, 29, 59); + order.setCreated(calendar.getTime()); + modelObjects.put(order.getClass().getName(), order); models.add(modelObjects); diff --git a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/simple/Order.java b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/simple/Order.java index 7809e80238fd2..11ae5471c9cca 100644 --- a/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/simple/Order.java +++ b/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/simple/Order.java @@ -20,6 +20,8 @@ import org.apache.camel.dataformat.bindy.annotation.Link; import org.apache.camel.dataformat.bindy.annotation.Message; +import java.util.Date; + @Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1") public class Order { @@ -53,6 +55,10 @@ public class Order { // Free text private String text; + @KeyValuePairField(tag = 777, pattern = "dd-MM-yyyy HH:mm:ss", timezone = "GMT-3") + // created + private Date created; + public Header getHeader() { return header; } @@ -117,11 +123,19 @@ public void setText(String text) { this.text = text; } + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + @Override public String toString() { return Order.class.getName() + " --> 1: " + this.account + ", 11: " + this.clOrdId + ", 22: " + this.iDSource + ", 48: " + this.securityId + ", 54: " + this.side - + ", 58: " + this.text; + + ", 58: " + this.text + ", 777: " + this.created; } From 7ed30001f6adfd42473ebd68004b88f0cda7596d Mon Sep 17 00:00:00 2001 From: "Daneel S. Yaitskov" Date: Mon, 9 Dec 2013 23:32:10 +0400 Subject: [PATCH 12/12] disable timezone set if it is default --- .../camel/dataformat/bindy/format/DatePatternFormat.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java index f297a66218585..dbf1bb1a652da 100755 --- a/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java +++ b/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/format/DatePatternFormat.java @@ -42,9 +42,7 @@ public DatePatternFormat(String pattern, Locale locale) { public DatePatternFormat(String pattern, String timezone, Locale locale) { this.pattern = pattern; this.locale = locale; - if (timezone.isEmpty()) { - this.timezone = TimeZone.getDefault(); - } else { + if (!timezone.isEmpty()) { this.timezone = TimeZone.getTimeZone(timezone); } }