Apache Edgent (incubating) 1.3.0
==================
TODO - summary

New Features
--------------------
TODO
EDGENT-439  Optionally specify TCP port for Edgent console

Incompatible API changes
------------------------
NONE
    
Known Issues
--------
Open JIRAs may be found at https://issues.apache.org/jira/browse/EDGENT

Bug Fixes
---------
TODO

Miscellaneous changes
---------------------
TODO
EDGENT-440  Eliminate undesired artifacts in Nexus/MavenCentral


Apache Edgent (incubating) 1.2.0
==================

The release includes a number of minor SDK bugfixes and enhancements listed below.

A release now consists of a single bundle:
  - Edgent SDK bundle

A release now publishes the Edgent SDK jars in Apache Nexus Release
repository which are automatically mirrored to the Maven Central repository.

A binary bundle (tgz) is no longer released.  The new `get-edgent-jars.sh`
tool included in the Samples source bundle can be used to create such
a bundle.

Samples have been migrated to their own repository
https://github.com/apache/incubator-edgent-samples

A user now builds the samples from the Samples repository
much as a real application developer might.
Pre-built samples jars are no longer released.  
The Samples include an Edgent Application project template
and some tools.

There have been many updates to the Edgent website (https://edgent.apache.org/)
related to the above:
  - updated Getting Started Guide
  - updated Downloads page
  - a new The Power of Edgent page
  - updated FAQ page
  - a new Quickstart with Edgent Samples page
  - a new Edgent Application Development page

There are some additional changes affecting the
use of Edgent in developing Edgent applications:

The names of the Edgent jars now conform to standard
practices: "." has been replaced with "-" and the Edgent SDK
versionId is now included.  

Almost all of the Edgent SDK jars are now available for the Java7 and Android platforms.

The websocket connector jar names have been changed:
* `edgent-connectors-websocket-<ver>.jar` was `edgent.connectors.websocket.wsclient-javax.websocket.jar`
* `edgent-connectors-websocket-base-<ver>.jar` was  `edgent.connectors.wsclient.jar`
* `edgent-connectors-websocket-misc-<ver>.jar` was  `edgent.javax.websocket.jar`
* `edgent-connectors-websocket-jetty-<ver>.jar` was  `javax.websocket-client.jar`

See the `JAVA_SUPPORT` documentation on the Downloads page details.

From the perspective of building, development, and releasing
Edgent, Maven is now used for the build tooling.
The DEVELOPMENT.md file has been updated accordingly.


New Features
--------------------
EDGENT-428  Add suppoort for csv in MetricsSetup
EDGENT-409  Add analytics.math3.Aggregations
EDGENT-407  JsonFunctions: more convenience functions
EDGENT-393  Add Ranges.outsideOf()
EDGENT-273  Add scripts, etc to enable building samples

Incompatible API changes
------------------------
NONE
    
Known Issues
--------
Open JIRAs may be found at https://issues.apache.org/jira/browse/EDGENT

Bug Fixes
---------
EDGENT-429  JobMonitorApp.closeJob() doesn't wait for close
EDGENT-423  Range.toStringUnsigned() not supported on Java7/Android
EDGENT-396  JobMonitorApp restarts job 3 times more than it should

Miscellaneous changes
---------------------
EDGENT-441  Adjust Kafka tests for slow consumer startup
EDGENT-438  Improve WebSocketClientTest skip-if-cant-connect
EDGENT-436  Change tests that use complete() TMO for successful runs
EDGENT-435  CME in TrackingScheduledExecutor seen with testMultiTopologyPollWithError()
EDGENT-434  Desensitize PlumbingTest.testParallelBalanced
EDGENT-433  Automatically bump some TMO values when running CI test context
EDGENT-432  Reduce runtime of some WindowsTest tests
EDGENT-431  Cleanup some console code hygiene warnings
EDGENT-422  Desentize FileStreamsTextFileWriterTest
EDGENT-419  Remove use of java8 default interface methods by tests
EDGENT-418  LICENSE/NOTICE in .war are wrong
EDGENT-417  Remove old ant-build cruft
EDGENT-413  Simplify download experience
EDGENT-408  MqttOpenTest failing due to unhealthy test.mosquitto.org
EDGENT-406  Improve doc for APplicationServiceMXBean.registerJar()
EDGENT-405  Improve IotProvider doc wrt ApplicationService.registerJar
EDGENT-401  Clarify jsonConfig arg in ApplicationServiceMXBean
EDGENT-399  Fix publish_release.sh
EDGENT-219  WindowsTest.keyedTimeBatchWIndowTest isn't robust
EDGENT-31   FileStreamsTextFileWriterTest.testRetainAgeBased test fails


Apache Edgent (incubating) 1.1.0
==================

The release includes a number of minor bugfixes and enhancements listed below.

See EDGENT-379 below for important information related to the 
Edgent connector for the IBM Watson IoT Platform.
See EDGENT-380 below for information about the MQTT connector.

The release has new external jar dependencies for building Edgent. 
An Eclipse based Edgent runtime build environment will encounter failures
until you rerun "./gradlew setupExternalJars" and refresh and rebuild your
workspace. See DEVELOPMENT.md for information about building Edgent.

New Features
--------------------
EDGENT-377  Add IotGateway and IotpGateway
            This feature is incubating.  See the classes Javadoc.
EDGENT-376  Support an edge device using both the Edgent API and WIoTP "Managed Device" APIs
EDGENT-375  Support publishing WIoTP device events using HTTP
EDGENT-370  Add static IotProvider.getPreferences()
EDGENT-367  Add autoSubmit capability to IotProvider

Incompatible API changes
------------------------
None
    
Known Issues
--------
Open JIRAs may be found at https://issues.apache.org/jira/browse/EDGENT

Bug Fixes
---------
EDGENT-374  IotProvider edgentControl commands are silent no-ops under some failure conditions
EDGENT-373  IotProvider needs to log more info upon edgentControl command request failures
EDGENT-366  Tolerate trailing spaces in serverURLs in MqttConfig properties file
EDGENT-333  FileStreamsTextFileWriterTest mishandling string to byte
EDGENT-332  WebSocketTest test*Byte() mishandling string to byte
EDGENT-331  HttpConnector put/post mishandling string to byte
EDGENT-319  CommandStreamsTest* tests fail on MS Windows
EDGENT-318  Javadoc overview mentions wrong jar name for slf4j jdk impl
EDGENT-316  Fix warnings from aggregateJavadoc build task
EDGENT-310  KafkaStreamsTestManual.testSimple() fails with no local zk of kafka servers
EDGENT-234  Console: broken doc links
EDGENT-200  Console: stream hovers in oplet kind lack layout tuple counts

Miscellaneous changes
---------------------
EDGENT-383  Update RELEASE_NOTES and CONTRIBUTORS for 1.1.0
EDGENT-381  Update NOTICES for 2017
EDGENT-380  Upgrade the MQTT connector to use paho-mqtt 1.1.0
EDGENT-379  Upgrade to the WIoTP 0.2.2 Java client API
   Upgrade the Edgent connector for the IBM Watson IoT Platform to use
   the WIoTP 0.2.2 Java client API.
   Note: the WIoTP API changed the way it publishes device events.
   See the "Migration from release 0.1.5 to 0.2.1" information at
   https://github.com/ibm-watson-iot/iot-java/tree/master#migration-from-release-015-to-021
   for details including how to revert the behavior if needed.
   See https://github.com/ibm-watson-iot/iot-java/releases
   for general release information about the WIoTP Java client API.
EDGENT-365  IotProvider device commands table has bad information
EDGENT-363  Clarify / disallow null topology names
EDGENT-362  Fix javadoc for PlumbingStreams.gate
EDGENT-361  Add a periodic usage example for FileStreams.textFileReader
EDGENT-329  Add Apache rat task to builds
EDGENT-328  Make writing-a-connector info easier to locate
EDGENT-325  Improve doc for jdbc, kafka, and java7 tests
EDGENT-321  Add full collection of release management buildTools
EDGENT-308  Is it possible to use poll() with FileStreams together


Apache Edgent (incubating) 1.0.0
==================
The first official Apache Edgent release

New Features
____________
EDGENT-8    Restart topology on uncaught exception
EDGENT-21   Create test application using GPS/OBD sensors
EDGENT-22   Add functionality to sample the tuples in a stream
EDGENT-91   Support joining a stream against another stream/window
EDGENT-96   Add an HTTP POST utility method
EDGENT-114  Have IotProvider start applications using ApplicationService
EDGENT-117  Support IotProvider on Java 7 and Android
EDGENT-128  update to Watson IoT Platform release
EDGENT-166  Add Gate plumbing
EDGENT-173  Add load balanced parallel()
EDGENT-178  console: stream hover should report "alias" in addition to tags
EDGENT-198  Accessibility enhancements to Javadoc
EDGENT-200  Console: stream hovers in oplet kind layout lack tuple counts
EDGENT-214  testFileWriter needs to support compressed rolling log generation
EDGENT-215  Job control gets unregistered from ControlService after job gets closed (BUG)
EDGENT-217  promote IoT device heart beat to a connector utility
EDGENT-218  Add multivariable JsonAnalytics
EDGENT-220  add things to help with csv strings
EDGENT-226  Add connector for "command / OS process"
EDGENT-304  Always build edgent.android.{hardware,topology}.jar

Incompatible changes
--------------------
EDGENT-232  Rename Quarks to Edgent
    Rename packages from quarks.* to org.apache.edgent.*
    Rename jars from quarks.jar to edgent.*.jar
EDGENT-236  Rename Iotf connector to Iotp
    Rename package to org.apache.edgent.connectors.iotp
    Rename jar to edgent.connectors.iotp.jar
EDGENT-139  Rename ./ext/slf4j-1.7.12/slf4j-jdk14-1.7.12.jar
    This jar was available to Edgent applications to provide them and the
    Edgent runtime with an SLF4J logging implementation.
    The name is now ./ext/slf4j-jdk14-1.7.12.jar

Miscellaneous changes
---------------------    
EDGENT-139  Replace Ant build with Gradle tooling
EDGENT-261  Remove all third party jars from the Edgent repository
EDGENT-263  Add source tgz generation
EDGENT-271  Conform to license and notice standards for binary bundle
EDGENT-272  Conform to license and notice standards for source bundle
EDGENT-281  Change release bundle names
    the bundles are now org.apache.edgent-<version>-{src,bin}.tgz
EDGENT-281  Change the name of the directory that a binary release bundle extracts to
    An official release bundle extracts to "edgent-<version>"
    A snapshot release bundle extracts to "edgent-<version>-SNAPSHOT-<date>-<time>"
EDGENT-281  Change names and/or versions of some external dependency jars in the binary release bundle
    Mentioned for completeness but those jars are intended
    to be private the Edgent runtime components.
        
Known Issues
--------
None yet

Bug Fixes
---------
EDGENT-6    Change in JOB MXBean ObjectName causing console not to getch jobs
EDGENT-83   Getting Started documentation page should tell how to build Quarks or explain releases are not Apache
EDGENT-97   Document HTTPStreams.getJson
EDGENT-120  bad graph generation with certain API / oplet sequence
EDGENT-130  Application hands when trying to read commands from iotf
EDGENT-137  Tuple count: Source oplet flows into Peek.  Source tuple count is less than Peek's count.
EDGENT-152  "Quarks SPI" javadoc group declared but not generated
EDGENT-164  Navigation menu works the wrong way
EDGENT-167  width of FanOut output streams is wrong
EDGENT-168  Console Splitter properties hover output tags wrong
EDGENT-169  Console: hover on stream between Filter and Peek doesn't report tuple count
EDGENT-171  Remove JobMXBean,State or Job.State
EDGENT-172  Add stateChange() to JobMXBean
EDGENT-177  Job name not set correctly for control service
EDGENT-179  console: oplet coloring gradients "too close"
EDGENT-180  Calling stateChange(CLOSE) on JobMXBean does not change its state fully
EDGENT-187  Console: TopologyTesstBasic doesn't render after QUARKS-22 changes
EDGENT-188  Console metric propagation shouldn't traverse non-injected metric ops
EDGENT-189  Undesirable metric op injection
EDGENT-201  Make the quarks console keyboard navigible
EDGENT-207  Iotf connect does not receive commands when only subscribing to to commands
EDGENT-208  Improve TWindow aggregate() javadoc
EDGENT-209  No need to insert PlumbingStreams.isolate after JobEvents.source
EDGENT-210  Submit an app, closing an app and the attempting to resubmit an app "kills" the parent app
EDGENT-213  testFileWriter is naming rolling log files with day-in-year not day-in-month
EDGENT-247  "ant release" with ANDROID_SDK_PLATFORM set fails
EDGENT-255  StreamScope.setEnabled(true) resets buffer if already enabled
EDGENT-257  samples.scenarios.iotp no longer functional
EDGENT-307  Improve supported platform documentation
