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

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

A release now includes two source bundles:
  - Edgent SDK bundle
  - Edgent Samples bundle

A release now publishes the Edgent SDK jars in Apache Nexus Release
repository and 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.

A user now builds the samples from the released Samples source bundle
much as a real application developer might.
Pre-built samples jars are no longer released.  
The Samples bundle includes 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-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

Miscellaneous changes
---------------------
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-418  LICENSE/NOTICE in .war are wrong
EDGENT-413  Simplify download experience
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
