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 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.

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-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-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
