Repository: incubator-atlas Updated Branches: refs/heads/master a4ceec90c -> 1c9b8b419
ATLAS-861 1 table out of 50,000 tables is left unimported throwing exception during deserialization (sumasai via shwethags) Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/1c9b8b41 Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/1c9b8b41 Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/1c9b8b41 Branch: refs/heads/master Commit: 1c9b8b4191390b5024596bbe15d657b3bf84eb78 Parents: a4ceec9 Author: Shwetha GS <[email protected]> Authored: Mon Aug 1 09:34:48 2016 +0530 Committer: Shwetha GS <[email protected]> Committed: Mon Aug 1 09:34:48 2016 +0530 ---------------------------------------------------------------------- release-log.txt | 1 + .../atlas/typesystem/types/DataTypes.java | 14 ++++++++----- .../atlas/typesystem/types/TypeSystemTest.java | 21 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/1c9b8b41/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 18c9173..c21b43a 100644 --- a/release-log.txt +++ b/release-log.txt @@ -6,6 +6,7 @@ INCOMPATIBLE CHANGES: ALL CHANGES: +ATLAS-861 1 table out of 50,000 tables is left unimported throwing exception during deserialization (sumasai via shwethags) ATLAS-1065 UI: Full text search view same as DSL's (kevalbhat18 via shwethags) ATLAS-1066 Falcon fails to post entity to Atlas due to kafka exception (mneethiraj via shwethags) ATLAS-1064 UI: Pagination for full text search results (Kalyanikashikar via shwethags) http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/1c9b8b41/typesystem/src/main/java/org/apache/atlas/typesystem/types/DataTypes.java ---------------------------------------------------------------------- diff --git a/typesystem/src/main/java/org/apache/atlas/typesystem/types/DataTypes.java b/typesystem/src/main/java/org/apache/atlas/typesystem/types/DataTypes.java index 3783c23..425e163 100755 --- a/typesystem/src/main/java/org/apache/atlas/typesystem/types/DataTypes.java +++ b/typesystem/src/main/java/org/apache/atlas/typesystem/types/DataTypes.java @@ -22,17 +22,19 @@ import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; - import org.apache.atlas.AtlasException; import org.apache.atlas.typesystem.IReferenceableInstance; import org.apache.atlas.typesystem.persistence.Id; import org.apache.commons.lang3.StringUtils; +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import org.joda.time.format.DateTimeFormatter; +import org.joda.time.format.ISODateTimeFormat; import java.math.BigDecimal; import java.math.BigInteger; import java.nio.charset.Charset; import java.security.MessageDigest; -import java.text.ParseException; import java.util.Collection; import java.util.Date; import java.util.Iterator; @@ -405,6 +407,8 @@ public class DataTypes { super(name, null); } + private static final DateTimeFormatter utcDateFormat = ISODateTimeFormat.dateTime(); + @Override public Date convert(Object val, Multiplicity m) throws AtlasException { if (val != null) { @@ -412,8 +416,8 @@ public class DataTypes { return (Date) val; } else if (val instanceof String) { try { - return TypeSystem.getInstance().getDateFormat().parse((String) val); - } catch (ParseException ne) { + return utcDateFormat.parseDateTime((String)val).toDate(); + } catch (Exception ne) { throw new ValueConversionException(this, val, ne); } } else if (val instanceof Number) { @@ -427,7 +431,7 @@ public class DataTypes { @Override public void output(Date val, Appendable buf, String prefix, Set<Date> inProcess) throws AtlasException { - TypeUtils.outputVal(val == null ? "<null>" : TypeSystem.getInstance().getDateFormat().format(val), buf, + TypeUtils.outputVal(val == null ? "<null>" : utcDateFormat.print(new DateTime(val).withZone(DateTimeZone.UTC)), buf, prefix); } http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/1c9b8b41/typesystem/src/test/java/org/apache/atlas/typesystem/types/TypeSystemTest.java ---------------------------------------------------------------------- diff --git a/typesystem/src/test/java/org/apache/atlas/typesystem/types/TypeSystemTest.java b/typesystem/src/test/java/org/apache/atlas/typesystem/types/TypeSystemTest.java index 4a285a6..96946ea 100755 --- a/typesystem/src/test/java/org/apache/atlas/typesystem/types/TypeSystemTest.java +++ b/typesystem/src/test/java/org/apache/atlas/typesystem/types/TypeSystemTest.java @@ -33,7 +33,9 @@ import org.testng.annotations.Test; import scala.actors.threadpool.Arrays; import java.util.Collections; +import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import static org.apache.atlas.typesystem.types.utils.TypesUtil.createClassTypeDef; @@ -46,6 +48,9 @@ import static org.testng.Assert.fail; public class TypeSystemTest extends BaseTest { + public static final long TEST_DATE_IN_LONG = 1418265358440L; + public static final String TEST_DATE_STRING = "2014-12-11T02:35:58.440Z"; + @BeforeClass public void setUp() throws Exception { super.setup(); @@ -284,4 +289,20 @@ public class TypeSystemTest extends BaseTest { //expected } } + + @Test(expectedExceptions = ValueConversionException.class) + public void testConvertInvalidDate() throws Exception { + DataTypes.DATE_TYPE.convert("", Multiplicity.OPTIONAL); + } + + @Test() + public void testConvertValidDate() throws Exception { + Date date = DataTypes.DATE_TYPE.convert(TEST_DATE_STRING, Multiplicity.OPTIONAL); + Assert.assertEquals(date, new Date(TEST_DATE_IN_LONG)); + + + StringBuilder buf = new StringBuilder(); + DataTypes.DATE_TYPE.output(new Date(TEST_DATE_IN_LONG), buf, "", new HashSet<Date>()); + Assert.assertEquals(buf.toString(), TEST_DATE_STRING); + } }
