AOCode Public Changelog

aocode-public-1.9.1-validation-SNAPSHOT

aocode-public-1.9.0

Release Notes

  • Fixed bug in ByteCountInputStream that subtracted the -1 returned at end of stream.
  • Moved the following classes to the new AO Lang project:
    1. com.aoindustries.io.AoByteArrayInputStream
    2. com.aoindustries.io.AoByteArrayOutputStream
    3. com.aoindustries.io.AoCharArrayWriter
    4. com.aoindustries.io.Encoder
    5. com.aoindustries.io.EncoderWriter
    6. com.aoindustries.io.FastExternalizable
    7. com.aoindustries.io.FastObjectInput
    8. com.aoindustries.io.FastObjectOutput
    9. com.aoindustries.io.FileUtils
    10. com.aoindustries.io.IoUtils
    11. com.aoindustries.io.LocalizedIOException
    12. com.aoindustries.io.NullOutputStream
    13. com.aoindustries.io.NullPrintWriter
    14. com.aoindustries.io.NullWriter
    15. com.aoindustries.io.SniffInputStream
    16. com.aoindustries.io.Writable
    17. com.aoindustries.io.WriterFacade
    18. com.aoindustries.io.WriterOutputStream
    19. com.aoindustries.lang.Disposable
    20. com.aoindustries.lang.DisposedException
    21. com.aoindustries.lang.EnumUtils
    22. com.aoindustries.lang.LocalizedIllegalArgumentException
    23. com.aoindustries.lang.NotImplementedException
    24. com.aoindustries.lang.NullArgumentException
    25. com.aoindustries.lang.ObjectUtils
    26. com.aoindustries.lang.ProcessResult
    27. com.aoindustries.lang.RuntimeUtils
    28. com.aoindustries.lang.SysExits
    29. com.aoindustries.lang.reflect.Methods
    30. com.aoindustries.lang.reflect.ReflectionException
    31. com.aoindustries.math.BigFraction
    32. com.aoindustries.math.LongLong
    33. com.aoindustries.math.NullMath
    34. com.aoindustries.math.SafeMath
    35. com.aoindustries.math.Statistics
    36. com.aoindustries.math.UnsignedLong
    37. com.aoindustries.nio.charset.Charsets
    38. com.aoindustries.security.HashedKey
    39. com.aoindustries.security.HashedPassword
    40. com.aoindustries.security.Identifier
    41. com.aoindustries.security.SmallIdentifier
    42. com.aoindustries.sql.LocalizedSQLException
    43. com.aoindustries.sql.UnmodifiableTimestamp
    44. com.aoindustries.sql.WrappedSQLException
    45. com.aoindustries.text.MessageFormatFactory
    46. com.aoindustries.text.SmartComparator
    47. com.aoindustries.text.UnmodifiableMessageFormat
    48. com.aoindustries.time.Clock
    49. com.aoindustries.time.Duration
    50. com.aoindustries.time.Instant
    51. com.aoindustries.util.AoArrays
    52. com.aoindustries.util.AoCollections
    53. com.aoindustries.util.AtomicSequence
    54. com.aoindustries.util.BufferManager
    55. com.aoindustries.util.CalendarUtils
    56. com.aoindustries.util.ComparatorUtils
    57. com.aoindustries.util.EnumerationIterator
    58. com.aoindustries.util.ErrorPrinter
    59. com.aoindustries.util.GetOpt
    60. com.aoindustries.util.HashCodeComparator
    61. com.aoindustries.util.IdentityKey
    62. com.aoindustries.util.InternUtils
    63. com.aoindustries.util.Internable
    64. com.aoindustries.util.MinimalList
    65. com.aoindustries.util.MinimalMap
    66. com.aoindustries.util.PropertiesUtils
    67. com.aoindustries.util.Sequence
    68. com.aoindustries.util.SortedProperties
    69. com.aoindustries.util.UnmodifiableCalendar
    70. com.aoindustries.util.UnmodifiableDate
    71. com.aoindustries.util.UnsynchronizedSequence
    72. com.aoindustries.util.WrappedException
    73. com.aoindustries.util.WrappedExceptions
    74. com.aoindustries.util.concurrent.ThreadLocalCallable
    75. com.aoindustries.util.concurrent.ThreadLocalRunnable
    76. com.aoindustries.util.concurrent.ThreadLocalsCallable
    77. com.aoindustries.util.concurrent.ThreadLocalsRunnable
    78. com.aoindustries.util.i18n.ApplicationResourcesAccessor
    79. com.aoindustries.util.i18n.CurrencyComparator
    80. com.aoindustries.util.i18n.LocaleComparator
    81. com.aoindustries.util.i18n.LocaleString
    82. com.aoindustries.util.i18n.Locales
    83. com.aoindustries.util.i18n.Money
    84. com.aoindustries.util.i18n.ThreadLocale
    85. com.aoindustries.util.zip.CorrectedGZIPInputStream
    86. com.aoindustries.util.zip.ZipEntryFilter
    87. com.aoindustries.util.zip.ZipUtils
    88. com.aoindustries.xml.XmlUtils
  • New interfaces CompressedReadable and CompressedWritable for code that only needs to handle one direction of Streamable.
  • AOPool improvements:
    1. More fine-grained locking through atomics.
    2. No longer holding connection lock while connecting.
    3. Non-blocking statistics methods.
    4. Bug fix: Notifying other threads on connection allocation.
  • CompressedDataInputStream and CompressedDataInputStream now support streaming of Enums.
  • Updated dependencies.
  • WildcardPatternMatcher improvements:
    1. Coalesces adjacent '*' into a single '*' during parsing.
    2. Compiles patterns instead of interpreting them on the fly.
    3. Supports any arbitrary patterns containing '*'.
    4. Fast-path checks for none, all, prefix, suffix, and exact matches.
    5. Renamed methods to better represent the functionality. Left deprecated methods for compatibility.
    6. Added test suite to verify correctness and benchmark versus equivalent regular expressions.
      1. The typical performance is 8 to 10 times that of the regular expressions.
      2. Some operations, in particular suffix matching on long strings, can be as high as 2000 times the performance of regular expressions. This is not so uncommon, a typical use-case for wildcard patterns is "*.jpg".
    7. Like any typical "contains" or "indexOf" string operation, the infix matching can fall-flat when trying to find long strings of repeating patterns within an almost-as-long string of repeating patterns following by non-matching padding. When strictly using prefix or suffix matching this will never occur.

aocode-public-1.8.3

Release Notes

  • New AO OSS Parent POM to simplify pom.xml files.
  • Project documentation moved to per-project book in SemanticCMS format.
  • Added changelog as top-level project link.
  • Added utility to find the maximum non-null value.
  • Added support for XML DOM Node in toString type coercion.

aocode-public-1.8.2

Release Notes

aocode-public-1.8.1

Release Notes

  • Main method to generate a random Identifier.
  • Improved Javadoc formatting.
  • Improved README formatting.
  • Allowing varargs for locales.

aocode-public-1.8.0

Release Notes

  • Moved servlet-specific methods to a different class to avoid introducing compile-time dependencies on servlet api to non-servlet projects.

aocode-public-1.7.0

Release Notes

Added

  • Java 1.7 compatible long sorting for pre-Java 1.7 use.
  • Now automatically maintains some ThreadLocal values between caller and executor during concurrent processing, and provides wrapper hook for subclasses to extend.
  • Recurring now allows null during parsing and returns null.
  • Convenience method to make unmodifiable from MinimalList and MinimalMap.
  • Background-refreshed cache implementation.
  • Caching access to ServletContext to improve performance.

Changed

  • Improved Javadoc formatting.
  • Additional compiler flags in preparation to do away with our old Ant build system.
  • Using request object instead of ThreadLocals to support asynchronous and concurrent request processing.
  • Working on thread safety for concurrent sub requests.
  • Avoiding setting ThreadLocal when value has not changed.
  • nullIfEmpty moved to StringUtility.
  • Each lock object now a small empty class to help identify lock contention.

    The lock contention profiler in NetBeans is just showing "java.lang.Object" all over, and can't seem to get from the lock object id to the actual object in the heap dump using OQL (id not found).

  • Using minimal list to efficiently filter small numbers of matches.
  • Number of buffers is now unlimited.

aocode-public-1.6.1

Release Notes

  • Improved Maven configuration for Java EE 6 dependencies.

aocode-public-1.6

Release Notes

  • Efficient way to check if writables empty.

aocode-public-1.5

Release Notes

  • Wildcard to show immutability just cluttered the API, reverted.

aocode-public-1.4

Release Notes

  • Allowing ao-taglib style "arg" maps to be passed through Dispatcher for non-taglib use.
  • args passed unmodifiable.
  • Passing args as Map<String,?> instead of forcing Map<String,Object>
  • Returning wildcard bound list as it better captures the essence of the unmodifiable list returned.
  • Java 1.7 compatible boolean sorting for pre-Java 1.7 use.

aocode-public-1.3

Release Notes

  • Reverted to Java 1.6 for Android and Java EE 6 compatibility.

aocode-public-1.2

Release Notes

  • Testing if nexus-staging:release required when using autoReleaseAfterClose=true
  • Now deployed to The Central Repository.

aocode-public-1.1

Release Notes

  • Java EE 6 optional, since only used by a subset of the features.
  • Preparing to deploy to The Central Repository.

aocode-public-1.0

Release Notes

  • Project moved to GitHub and Maven.
  • Ignoring locales with scripts or extensions since this API predates them.