#
# JsonReader.ClassFactory mappings
#

# Primitives
char = Convertable
boolean = Convertable
byte = Convertable
short = Convertable
int = Convertable
long = Convertable
float = Convertable
double = Convertable

# Primitive Wrappers
java.lang.Character = Convertable
java.lang.Boolean = Convertable
java.lang.Byte = Convertable
java.lang.Short = Convertable
java.lang.Integer = Convertable
java.lang.Long = Convertable
java.lang.Float = Convertable
java.lang.Double = Convertable

# java.math
java.math.BigDecimal = Convertable
java.math.BigInteger = Convertable

# java.util
java.util.concurrent.atomic.AtomicBoolean = Convertable
java.util.concurrent.atomic.AtomicInteger = Convertable
java.util.concurrent.atomic.AtomicLong = Convertable
java.util.Date = Convertable
java.util.Calendar = Convertable
java.util.GregorianCalendar = Convertable
java.util.Locale = Convertable
java.util.UUID = Convertable
java.util.TimeZone = Convertable

# java.lang
java.lang.Class = Convertable
java.lang.String = Convertable
java.lang.StackTraceElement = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.StackTraceElementFactory
java.lang.StringBuffer = Convertable
java.lang.StringBuilder = Convertable

# java.net
java.net.URL = Convertable
java.net.URI = Convertable

# java.sql
java.sql.Date = Convertable
java.sql.Timestamp = Convertable

# java.time
java.time.Duration = Convertable
java.time.Instant = Convertable
java.time.LocalDate = Convertable
java.time.LocalDateTime = Convertable
java.time.LocalTime = Convertable
java.time.MonthDay = Convertable
java.time.OffsetDateTime = Convertable
java.time.OffsetTime = Convertable
java.time.Period = Convertable
java.time.Year = Convertable
java.time.YearMonth = Convertable
java.time.ZonedDateTime = Convertable
java.time.ZoneId = Convertable
java.time.ZoneOffset = Convertable
java.time.ZoneRegion = Convertable

# interface instantiates to...
java.util.Collection = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.CollectionFactory
java.util.List = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.CollectionFactory
java.util.Set = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.CollectionFactory
java.util.SortedSet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.CollectionFactory
java.util.NavigableSet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.CollectionFactory
java.util.Deque = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.CollectionFactory
java.util.Queue = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.CollectionFactory
java.util.Map = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.MapFactory
java.util.SortedMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.MapFactory
java.util.NavigableMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.MapFactory
sun.util.calendar.ZoneInfo = Convertable

[C = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.CharacterPrimArrayFactory
[Z = ArrayFactory
[B = ArrayFactory
[S = ArrayFactory
[I = ArrayFactory
[J = ArrayFactory
[F = ArrayFactory
[D = ArrayFactory

[Ljava.lang.Character; = ArrayFactory
[Ljava.lang.Boolean; = ArrayFactory
[Ljava.lang.Byte; = ArrayFactory
[Ljava.lang.Short; = ArrayFactory
[Ljava.lang.Integer; = ArrayFactory
[Ljava.lang.Long; = ArrayFactory
[Ljava.lang.Float; = ArrayFactory
[Ljava.lang.Double; = ArrayFactory

[Ljava.util.concurrent.atomic.AtomicBoolean; = ArrayFactory
[Ljava.util.concurrent.atomic.AtomicInteger; = ArrayFactory
[Ljava.util.concurrent.atomic.AtomicLong; = ArrayFactory

[Ljava.lang.Class; = ArrayFactory
[Ljava.lang.String; = ArrayFactory
[Ljava.sql.Date; = ArrayFactory
[Ljava.sql.Timestamp; = ArrayFactory
[Ljava.time.LocalDate; = ArrayFactory
[Ljava.math.BigDecimal; = ArrayFactory
[Ljava.math.BigInteger; = ArrayFactory

[Ljava.util.Calendar; = ArrayFactory
[Ljava.util.Date; = ArrayFactory
[Ljava.util.concurrent.atomic.AtomicBoolean; = ArrayFactory
[Ljava.util.concurrent.atomic.AtomicInteger; = ArrayFactory
[Ljava.util.concurrent.atomic.AtomicLong; = ArrayFactory

[Ljava.time.Duration; = ArrayFactory
[Ljava.time.Instant; = ArrayFactory
[Ljava.time.Duration; = ArrayFactory
[Ljava.time.Instant; = ArrayFactory
[Ljava.time.LocalDate; = ArrayFactory
[Ljava.time.LocalDateTime; = ArrayFactory
[Ljava.time.LocalTime; = ArrayFactory
[Ljava.time.MonthDay; = ArrayFactory
[Ljava.time.OffsetDateTime; = ArrayFactory
[Ljava.time.OffsetTime; = ArrayFactory
[Ljava.time.Period; = ArrayFactory
[Ljava.time.Year; = ArrayFactory
[Ljava.time.YearMonth; = ArrayFactory
[Ljava.time.ZonedDateTime; = ArrayFactory
[Ljava.time.ZoneId; = ArrayFactory
[Ljava.time.ZoneOffset; = ArrayFactory
[Ljava.time.ZoneRegion; = ArrayFactory

# Use factory classes to re-create empty Collections classes as they are not easily instantiated
java.util.Collections$EmptyEnumeration = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.EmptyEnumerationFactory
java.util.Collections$EmptyIterator = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.EmptyIteratorFactory
java.util.Collections$EmptyListIterator = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.EmptyListIteratorFactory
java.util.Collections$EmptyList = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.EmptyListFactory
java.util.Collections$EmptySet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.EmptySetFactory
java.util.Collections$UnmodifiableNavigableSet$EmptyNavigableSet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.EmptyNavigableSetFactory
java.util.Collections$EmptyMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.EmptyMapFactory
java.util.Collections$UnmodifiableNavigableMap$EmptyNavigableMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.EmptyNavigableMapFactory

# Use factory classes to re-create unmodifiable Collections classes
java.util.Collections$UnmodifiableCollection = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableListFactory
java.util.Collections$UnmodifiableList = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableListFactory
java.util.Collections$UnmodifiableRandomAccessList = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableListFactory
java.util.Collections$UnmodifiableSet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableSetFactory
java.util.Collections$UnmodifiableSortedSet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableNavigableSetFactory
java.util.Collections$UnmodifiableNavigableSet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableNavigableSetFactory
java.util.Collections$UnmodifiableMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableMapFactory
java.util.Collections$UnmodifiableSortedMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableNavigableMapFactory
java.util.Collections$UnmodifiableNavigableMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableNavigableMapFactory

com.cedarsoftware.util.SealableList = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableListFactory
com.cedarsoftware.util.SealableSet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableSetFactory
com.cedarsoftware.util.SealableNavigableSet = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableNavigableSetFactory
com.cedarsoftware.util.SealableMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableMapFactory
com.cedarsoftware.util.SealableNavigableMap = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.SealableNavigableMapFactory

java.util.ImmutableCollections$ListN = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.ImmutableListFactory
java.util.ImmutableCollections$List12 = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.ImmutableListFactory
java.util.ImmutableCollections$SetN = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.ImmutableSetFactory
java.util.ImmutableCollections$Set12 = io.pivotal.cfenv.shaded.com.cedarsoftware.io.factory.ImmutableSetFactory