Эх сурвалжийг харах

1.添加腾讯云语音识别SDK;
2.添加用户实体类,设备实体类及设备数据实体类;
3.添加数据仓库及数据服务类。

Yumin 6 жил өмнө
parent
commit
831c2f199f
31 өөрчлөгдсөн 3803 нэмэгдсэн , 3 устгасан
  1. 558 0
      libs/httpcomponents-client-4.5.5/LICENSE.txt
  2. 6 0
      libs/httpcomponents-client-4.5.5/NOTICE.txt
  3. 77 0
      libs/httpcomponents-client-4.5.5/README.txt
  4. 2314 0
      libs/httpcomponents-client-4.5.5/RELEASE_NOTES.txt
  5. BIN
      libs/httpcomponents-client-4.5.5/lib/commons-codec-1.10.jar
  6. BIN
      libs/httpcomponents-client-4.5.5/lib/commons-logging-1.2.jar
  7. BIN
      libs/httpcomponents-client-4.5.5/lib/fluent-hc-4.5.5.jar
  8. BIN
      libs/httpcomponents-client-4.5.5/lib/httpclient-4.5.5.jar
  9. BIN
      libs/httpcomponents-client-4.5.5/lib/httpclient-cache-4.5.5.jar
  10. BIN
      libs/httpcomponents-client-4.5.5/lib/httpclient-win-4.5.5.jar
  11. BIN
      libs/httpcomponents-client-4.5.5/lib/httpcore-4.4.9.jar
  12. BIN
      libs/httpcomponents-client-4.5.5/lib/httpmime-4.5.5.jar
  13. BIN
      libs/httpcomponents-client-4.5.5/lib/jna-4.4.0.jar
  14. BIN
      libs/httpcomponents-client-4.5.5/lib/jna-platform-4.4.0.jar
  15. 3 2
      src/main/java/cn/minbb/iot/config/Const.java
  16. 13 0
      src/main/java/cn/minbb/iot/data/Response.java
  17. 55 0
      src/main/java/cn/minbb/iot/model/Device.java
  18. 85 0
      src/main/java/cn/minbb/iot/model/DeviceData.java
  19. 71 0
      src/main/java/cn/minbb/iot/model/User.java
  20. 7 0
      src/main/java/cn/minbb/iot/model/repository/DeviceDataRepository.java
  21. 7 0
      src/main/java/cn/minbb/iot/model/repository/DeviceRepository.java
  22. 8 0
      src/main/java/cn/minbb/iot/model/repository/UserRepository.java
  23. 271 0
      src/main/java/cn/minbb/iot/sdk/RASRsdk.java
  24. 269 0
      src/main/java/cn/minbb/iot/sdk/SASRsdk.java
  25. 4 0
      src/main/java/cn/minbb/iot/service/DeviceDataService.java
  26. 4 0
      src/main/java/cn/minbb/iot/service/DeviceService.java
  27. 9 0
      src/main/java/cn/minbb/iot/service/UserService.java
  28. 8 0
      src/main/java/cn/minbb/iot/service/impl/DeviceDataServiceImpl.java
  29. 8 0
      src/main/java/cn/minbb/iot/service/impl/DeviceServiceImpl.java
  30. 26 0
      src/main/java/cn/minbb/iot/service/impl/UserServiceImpl.java
  31. 0 1
      src/main/java/cn/minbb/iot/task/AutoConfig.java

+ 558 - 0
libs/httpcomponents-client-4.5.5/LICENSE.txt

@@ -0,0 +1,558 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+=========================================================================
+
+This project includes Public Suffix List copied from
+<https://publicsuffix.org/list/effective_tld_names.dat>
+licensed under the terms of the Mozilla Public License, v. 2.0
+
+Full license text: <http://mozilla.org/MPL/2.0/>
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+  This Source Code Form is "Incompatible With Secondary Licenses", as
+  defined by the Mozilla Public License, v. 2.0.

+ 6 - 0
libs/httpcomponents-client-4.5.5/NOTICE.txt

@@ -0,0 +1,6 @@
+Apache HttpComponents Client
+Copyright 1999-2018 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+

+ 77 - 0
libs/httpcomponents-client-4.5.5/README.txt

@@ -0,0 +1,77 @@
+Apache HttpComponents Client
+============================
+
+Welcome to the HttpClient component of the Apache HttpComponents project.
+
+Building Instructions
+---------------------
+
+For building from source instructions please refer to BUILDING.txt.
+
+Dependencies
+------------
+
+HttpClient main module requires Java 6 compatible runtime and
+depends on the following external libraries:
+
+* Apache HttpComponents HttpCore
+* Apache Commons Logging
+* Apache Commons Codec
+
+(for detailed information on external dependencies please see pom.xml)
+
+HttpMime module is optional and requires Java 6 compatible runtime
+and depends on the following external libraries:
+
+* Apache HttpComponents HttpCore
+* Apache Commons Logging
+
+(for detailed information on external dependencies please see pom.xml)
+
+Licensing
+---------
+
+Apache HttpComponents Client is licensed under the Apache License 2.0.
+See the files called LICENSE.txt and NOTICE.txt for more information.
+
+Cryptographic Software Notice
+-----------------------------
+
+This distribution may include software that has been designed for use
+with cryptographic software. The country in which you currently reside
+may have restrictions on the import, possession, use, and/or re-export
+to another country, of encryption software. BEFORE using any encryption
+software, please check your country's laws, regulations and policies
+concerning the import, possession, or use, and re-export of encryption
+software, to see if this is permitted. See <http://www.wassenaar.org/>
+for more information.
+
+The U.S. Government Department of Commerce, Bureau of Industry and
+Security (BIS), has classified this software as Export Commodity
+Control Number (ECCN) 5D002.C.1, which includes information security
+software using or performing cryptographic functions with asymmetric
+algorithms. The form and manner of this Apache Software Foundation
+distribution makes it eligible for export under the License Exception
+ENC Technology Software Unrestricted (TSU) exception (see the BIS
+Export Administration Regulations, Section 740.13) for both object
+code and source code.
+
+The following provides more details on the included software that
+may be subject to export controls on cryptographic software:
+
+  Apache HttpComponents Client interfaces with the
+  Java Secure Socket Extension (JSSE) API to provide
+
+    - HTTPS support
+
+  Apache HttpComponents Client does not include any
+  implementation of JSSE.
+
+Contact
+-------
+
+  o For general information visit the main project site at
+    http://hc.apache.org/
+
+  o For current status information visit the status page at
+    http://hc.apache.org/status.html

+ 2314 - 0
libs/httpcomponents-client-4.5.5/RELEASE_NOTES.txt

@@ -0,0 +1,2314 @@
+Release 4.5.5
+-------------------
+
+HttpClient 4.5.5 (GA) is a maintenance release that fixes a regression introduced
+by the previous release causing a NPE in SystemDefaultCredentialsProvider.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1690] Avoid merging Content-Encoding headers coming with 304 status to cache entry.
+  Contributed by Sudheera Palihakkara <catchsudheera at gmail.com>
+
+* [HTTPCLIENT-1888] Regression in SystemDefaultCredentialsProvider#getCredentials causing NPE.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1886] Update HttpClient 4.5.x from HttpCore 4.4.7 to 4.4.9
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1889] org.apache.http.client.utils.URLEncodedUtils.parse() 
+  should return a new ArrayList when there are no query parameters.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+
+Release 4.5.4
+-------------------
+
+HttpClient 4.5.4 (GA) is a maintenance release that fixes a number of defects found since 4.5.3.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1883] SystemDefaultCredentialsProvider to use https.proxy* system properties
+  for origins with port 443.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1881] Allow truncated NTLM packets to work with this client.
+  Contributed by Karl Wright <DaddyWri at gmail.com>
+
+* [HTTPCLIENT-1855] Disabled caching of DIGEST auth scheme instances due to unreliability of nonce counter
+  when the auth cache is shared by multiple sessions.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* BasicCookieStore uses a ReentrantReadWriteLock to avoid synchronization on #getCookies/#toString
+  while maintaining thread safety.
+  Contributed by Carter Kozak <c4kofony at gmail.com>
+
+* [HTTPCLIENT-1865] DefaultServiceUnavailableRetryStrategy does not respect HttpEntity#isRepeatable.
+  Contributed by Tomas Celaya <tjcelaya at joyent dot com>
+
+* [HTTPCLIENT-1859] Encode Content-Disposition name and filename elements appropriately.
+  Contributed by Karl Wright <DaddyWri at gmail.com>
+
+* Avoid fetching the cached entity twice on cache hit.
+  Contributed by Leandro Nunes <a-lnunes at hotels.com>
+
+* [HTTPCLIENT-1835] #evictExpiredConnections no longer causes the #evictIdleConnections behaviour
+  to be implicitly enabled.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1831= URIBuilder should not prepend a leading slash to relative URIs.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1833] Fix Windows Negotiate-NTLM handling of proxies.
+  Contributed by Roman Stoffel <roman.stoffel at gamler.info>
+
+* [HTTPCLIENT-1817] Add a "Trust All" TrustStrategy implementation.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1816] Update Apache Commons Codec 1.9 to 1.10.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1836] DefaultHostnameVerifier#getSubjectAltNames(X509Certificate) throws java.lang.ClassCastException.
+  Contributed by Gary Gregory <ggregory at apache.org>, Ilian Iliev <ilian_iliev at yahoo.com>
+  
+* [HTTPCLIENT-1845]: Extract InputStreamFactory classes out of GzipDecompressingEntity and 
+  DeflateDecompressingEntity for reuse and to create less garbage.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1847] Update Ehcache from 2.6.9 to 2.6.11.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1848] Update spymemcached from 2.11.4 to 2.12.3.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1849] Update JNA from 4.1.0 to 4.4.0.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1850] Update SLF4J from 1.7.6 to 1.7.25.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+
+Release 4.5.3
+-------------------
+
+HttpClient 4.5.3 (GA) is a maintenance release that fixes a number of defects found since 4.5.2.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1803] Improved handling of malformed paths by URIBuilder.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1802] Do not attempt to match SSL host to subject CN if subject alternative name of any type are given.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1788] RFC 6265 policy must not reject cookies with paths that are no prefix of the uri path.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1792] SSLConnectionSocketFactory to throw SSLPeerUnverifiedException with a better error message
+  when hostname verification fails.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1779] [OSGi] support NTLM proxy authentication.
+  Contributed by Julian Sedding <jsedding@apache.org>
+
+* [HTTPCLIENT-1773] [OSGi] HttpProxyConfigurationActivator does not unregister HttpClientBuilderFactory.
+  Contributed by Julian Sedding <jsedding@apache.org>
+
+* [HTTPCLIENT-1771] improve OSGi webconsole display for org.apache.http.proxyconfigurator.
+  Contributed by Julian Sedding <jsedding at apache.org>
+
+* [HTTPCLIENT-1770] OSGi metatype for org.apache.http.proxyconfigurator missing factoryPid.
+  Contributed by Julian Sedding <jsedding at apache.org>
+
+* [HTTPCLIENT-1767] Null pointer dereference in EofSensorInputStream and ResponseEntityProxy.
+  Contributed by Peter Ansell <p_ansell@yahoo.com>
+
+* Support changing system default ProxySelector.
+  Contributed by Robin Stevens <stevensro at gmail.com>
+
+* All services registered in the OSGi service registry provide the whole bundle header dictionary as vendor
+  property value.
+  Contributed by Christoph Fiehe <christoph.fiehe at materna.de>
+
+* [HTTPCLIENT-1750] OSGi support for CachingHttpClientBuilder.
+  Contributed by Justin Edelson <justin at justinedelson.com>
+
+* [HTTPCLIENT-1749] OSGi client builder to use weak references to track HttpClient instances.
+  Contributed by Justin Edelson <justin at justinedelson.com>
+
+* [HTTPCLIENT-1747] apply RequestConfig defaults when using HttpParams values in backward compatibility mode.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Override LaxRedirectStrategy's INSTANCE field.
+  Contributed by Eric Wu <ericwuyi at gmail.com>
+
+* [HTTPCLIENT-1736] do not request cred delegation by default when using Kerberos auth.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1744] normalize hostname and certificate CN when matching to CN.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1732] SystemDefaultCredentialsProvider to take http.proxyHost and http.proxyPort system
+  properties into account.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Revert "HTTPCLIENT-1712: SPNego schemes to take service scheme into account when generating auth token".
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1727] AbstractHttpClient#createClientConnectionManager does not account for context class loader.
+  Contributed by Charles Allen <charles.allen at metamarkets.com>
+
+* [HTTPCLIENT-1726:] Copy the SNI fix from SSLConnectionSocketFactory to the deprecated SSLSocketFactory class.
+  Contributed by David Black <dblack at atlassian.com>
+
+
+Release 4.5.2
+-------------------
+
+HttpClient 4.5.2 (GA) is a maintenance release that fixes a number of minor defects found since 4.5.1.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1710, HTTPCLIENT-1718, HTTPCLEINT-1719] OSGi container compatibility improvements.
+  Contributed by 212427891 <munene.kiruja at ge.com>
+
+* [HTTPCLIENT-1717] Make fluent API Content#Content(byte[], ContentType) public.
+  Contributed by Cash Costello <cash.costello at gmail.com>
+
+* [HTTPCLIENT-1715] NTLMEngineImpl#Type1Message not thread safe but declared as a constant.
+  Contributed by Olivier Lafontaine <olafontaine at gmail.com>, Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1714] Add HttpClientBuilder#setDnsResolver(DnsResolver).
+  Contributed by Alexis Thaveau <alexis.thaveau at gmail.com>
+
+* [HTTPCLIENT-1712] SPNego schemes to take service scheme into account when generating auth token. 
+   Contributed by Georg Romstorfer <georg.romstorfer at gmail.com>
+
+* [HTTPCLIENT-1700] Netscape draft, browser compatibility, RFC 2109, RFC 2965 and default cookie 
+  specs to ignore cookies with empty name for consistency with RFC 6265 specs.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1704] IgnoreSpec#match to always return false.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1550] Fixed 'deflate' zlib header check.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1698] Fixed matching of IPv6 addresses by DefaultHostnameVerifier
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1695] RFC 6265 compliant cookie spec to ignore cookies with empty name / missing 
+  value.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1216] Removed ThreadLocal subclass from DateUtils.
+  Contributed by Jochen Kemnade <jochen.kemnade at eddyson.de>
+
+* [HTTPCLIENT-1685] PublicSuffixDomainFilter to ignore local hosts and local domains.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+
+Release 4.5.1
+-------------------
+
+HttpClient 4.5.1 (GA) is a maintenance release that fixes a number of minor defects found since 4.5.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1680] redirect of a POST request causes ClientProtocolException.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1673] org.apache.http.entity.mime.content.* missing from OSGi exports.
+  Contributed by Benson Margulies <benson at basistech.com>
+
+* [HTTPCLIENT-1668] Fluent request incorrectly handles connect timeout setting.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1667] RequestBuilder does not take charset into account when creating 
+  UrlEncodedFormEntity. 
+  Contributed by Sergey Smith <smithsv at bk.ru>
+
+* [HTTPCLIENT-1655] HttpClient sends RST instead of FIN ACK sequence when using non-persistant 
+  connections.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+
+Release 4.5
+-------------------
+
+HttpClient 4.5 (GA) is a minor feature release that includes several incremental enhancements
+to the exisitng functionality such as support for private domains in the Mozilla Public Suffix List.
+
+Changelog:
+-------------------
+
+* Reduced default validate after inactivity setting from 5 sec to 2 sec
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1649] Fixed serialization of auth schemes
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1645]: Fluent requests to inherit config parameters of the executor.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1640]: RFC6265 lax cookie policy fails to parse 'max-age' attribute.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1633]: RFC6265CookieSpecProvider compatibility level setting has no effect.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1613]: Support for private domains in Mozilla Public Suffix List.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1651]: Add ability to disable content compression on a request basis
+  Contributed by Michael Osipov <michaelo at apache.org>
+
+* [HTTPCLIENT-1654]: Deprecate/remove RequestConfig#decompressionEnabled in favor of #contentCompressionEnabled
+  Contributed by Michael Osipov <michaelo at apache.org>
+
+
+
+Release 4.4.1
+-------------------
+
+HttpClient 4.4.1 (GA) is a maintenance release that fixes a number of defects in new functionality
+introduced in version 4.4.
+
+Users of HttpClient 4.4 are encouraged to upgrade.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* Marked RFC 2109, RFC 2965, Netscape draft cookie specs as obsolete
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1633] RFC6265CookieSpecProvider compatibility level setting has no effect.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1628]: Auth cache can fail when domain name contains uppercase characters.
+  Contributed by Dennis Ju <dejuknow at gmail.com>
+
+* [HTTPCLIENT-1609] Stale connection check in PoolingHttpClientConnectionManager has no effect.
+  Internal connection pool does not correctly implement connection validation.
+  Contributed by Charles Lip <rene1 at singnet.com.sg>
+
+
+
+Release 4.4 Final
+-------------------
+
+This is the first stable (GA) release of HttpClient 4.4. Notable features and enhancements included
+in 4.4 series are:
+
+* Support for the latest HTTP state management specification (RFC 6265). Please note that the old
+cookie policy is still used by default for compatibility reasons. RFC 6265 compliant cookie
+policies need to be explicitly configured by the user. Please also note that as of next feature
+release support for Netscape draft, RFC 2109 and RFC 2965 cookie policies will be deprecated
+and disabled by default. It is recommended to use RFC 6265 compliant policies for new applications
+unless compatibility with RFC 2109 and RFC 2965 is required and to migrate existing applications
+to the default cookie policy.
+
+* Enhanced, redesigned and rewritten default SSL hostname verifier with improved RFC 2818
+compliance
+
+* Default SSL hostname verifier and default cookie policy now validate certificate identity
+and cookie domain of origin against the public suffix list maintained by Mozilla.org
+<https://publicsuffix.org/list>
+
+* More efficient stale connection checking: indiscriminate connection checking which results
+in approximately 20 to 50 ms overhead per request has been deprecated in favor of conditional
+connection state validation (persistent connections are to be re-validated only if a specified
+period inactivity has elapsed)
+
+* Authentication cache thread-safety: authentication cache used by HttpClient is now thread-safe
+and can be shared by multiple threads in order to re-use authentication state for subsequent
+requests
+
+* Native Windows Negotiate and NTLM via SSPI through JNA: when running on Windows OS HttpClient
+configured to use native NTLM or SPNEGO authentication schemes can make use of platform specific
+functionality via JNA and current user credentials. This functionality is still considered
+experimental, known to have compatibility issues and subject to change without prior notice.
+Use at your discretion.
+
+This release also includes all fixes from the stable 4.3.x release branch.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+
+Changelog:
+-------------------
+
+* Support for the latest HTTP state management specification (RFC 6265).
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1515] Caching of responses to HEAD requests
+  Contributed by Tyrone Cutajar <tj.cutajar at gmail.com> and
+  Francois-Xavier Bonnet <fx at apache.org>
+
+* [HTTPCLIENT-1560] Native Windows auth improvements
+  Contributed by Michael Osipov <michaelo at apache.org>
+
+* Update Apache Commons Logging version from 1.1.3 to 1.2.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* Update Apache Commons Codec version from 1.6 to 1.9.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* Update Ehcache version from 2.2.0 to 2.6.9.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* Update Ehcache version from 2.2.0 to 2.6.9.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* Update Spymemcached version from 2.6 to 2.11.4.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* Update SLF4J version from 1.5.11 to 1.7.7.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+
+
+
+
+Release 4.4 BETA1
+-------------------
+
+This is the first BETA release of HttpClient 4.4. Notable features and enhancements included
+in 4.4 series are:
+
+* Enhanced redesigned and rewritten default SSL hostname verifier with improved RFC 2818
+compliance
+
+* Default SSL hostname verifier and default cookie policy now validate certificate identity
+and cookie domain of origin against the public suffix list maintained by Mozilla.org
+<https://publicsuffix.org/list>
+
+* Native windows Negotiate/NTLM via JNA: when running on Windows OS HttpClient configured to use
+native NTLM or SPNEGO authentication schemes can make use of platform specific functionality
+via JNA and current user system credentials
+
+* More efficient stale connection checking: indiscriminate connection checking which results
+in approximately 20 to 50 ms overhead per request has been deprecated in favor of conditional
+connection state validation (persistent connections are to be re-validated only if a specified
+period inactivity has elapsed)
+
+* Authentication cache thread-safety: authentication caches used by HttpClient is now thread-safe
+and can be shared by multiple threads in order to re-use authentication state for subsequent
+requests
+
+This release also includes all fixes from the stable 4.3.x release branch.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1547] HttpClient OSGi bundle doesn't import the package "javax.naming".
+  Contributed by Willem Jiang <ningjiang at apache.org>
+
+* [HTTPCLIENT-1541] Use correct (HTTP/hostname) service principal name for Windows native
+  Negotiate/NTLM auth schemes.
+  Contributed by Ka-Lok Fung <ka-lok.fung at sap.com>
+
+* Improved compliance with RFC 2818: default hostname verifier to ignore the common name of the
+  certificate subject if alternative subject names (dNSName or iPAddress) are present.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1540] Support delegated credentials (ISC_REQ_DELEGATE) by Native windows
+  native Negotiate/NTLM auth schemes.
+  Contributed by Ka-Lok Fung <ka-lok.fung at sap.com>
+
+
+
+Release 4.4 ALPHA1
+-------------------
+
+This is the first ALPHA release of HttpClient 4.4. Notable features and enhancements included
+in the 4.4 branch are:
+
+* More efficient stale connection checking: indiscriminate connection checking which results
+in approximately 20 to 50 ms overhead per request has been deprecated in favor of conditional
+connection state validation (persistent connections are to be re-validated only if a specified
+period inactivity has elapsed)
+
+* Native windows Negotiate/NTLM via JNA: when running on Windows OS HttpClient configured to use
+native NTLM or SPNEGO authentication schemes can make use of platform specific functionality
+via JNA and current user system credentials
+
+* Authentication cache thread-safety: authentication caches used by HttpClient is now thread-safe
+and can be shared by multiple threads in order to re-use authentication state for subsequent
+requests
+
+This release also includes all fixes from the stable 4.3.x release branch.
+
+Please note that as of 4.4 HttpClient requires Java 1.6 or newer.
+
+Please note that new features included in this release are still considered experimental and
+their API may change in the future 4.4 alpha and beta releases.
+
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1493] Indiscriminate connection checking has been deprecated in favor of conditional
+  connection state validation. Persistent connections are to be re-validated only after a defined
+  period inactivity prior to being leased to the consumer.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1519] Use the original HttpHost instance passed as a parameter to
+  HttpClient#execute when generating 'Host' request header.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1491] Enable provision of Service Principal Name in Windows native
+  auth scheme.
+  Contributed by Malcolm Smith <malcolmfsmith at gmail.com>
+
+* [HTTPCLIENT-1403] Pluggable content decoders.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1466] FileBodyPart#generateContentType() ignores custom ContentType values.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1461] fixed performance degradation in gzip encoded content processing
+  introduced by HTTPCLIENT-1432.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1457] Incorrect handling of Windows (NT) credentials by
+  SystemDefaultCredentialsProvider.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1456] Request retrial after status 503 causes ClientProtocolException.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1454] Make connection operator APIs public.
+  Contributed by Tamas Cservenak <tamas at cservenak.net>
+
+* Update JUnit to version 4.11 from 4.9
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+
+
+Release 4.3.4
+-------------------
+
+HttpClient 4.3.4 (GA) is a maintenance release that improves performance in high concurrency
+scenarios. This version replaces dynamic proxies with custom proxy classes and eliminates thread
+contention in java.reflect.Proxy.newInstance() when leasing connections from the connection pool
+and processing response messages.
+
+
+Changelog:
+-------------------
+
+* Replaced dynamic proxies with custom proxy classes to reduce thread contention.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1484] GzipCompressingEntity should not close the underlying output stream
+  if the entity has not been fully written out due to an exception.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1474] Fixed broken entity enclosing requests in HC Fluent.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1470] CachingExec(ClientExecChain, HttpCache, CacheConfig, AsynchronousValidator)
+  throws NPE if config is null
+
+
+
+
+Release 4.3.3
+-------------------
+
+HttpClient 4.3.3 (GA) is a bug fix release that fixes a regression introduced by the previous
+release causing a significant performance degradation in compressed content processing.
+
+Users of HttpClient 4.3 are encouraged to upgrade.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1466] FileBodyPart#generateContentType() ignores custom ContentType values.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1453] Thread safety regression in PoolingHttpClientConnectionManager
+  #closeExpiredConnections that can lead to ConcurrentModificationException.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1461] fixed performance degradation in compressed content processing
+  introduced by HTTPCLIENT-1432.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1457] Incorrect handling of Windows (NT) credentials by
+  SystemDefaultCredentialsProvider.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1456] Request retrial after status 503 causes ClientProtocolException.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+Release 4.3.2
+-------------------
+
+HttpClient 4.3.2 (GA) is a maintenance release that delivers a number of improvements
+as well as bug fixes for issues reported since 4.3.1 release. SNI support for
+Oracle JRE 1.7+ is being among the most notable improvements.
+
+Users of HttpClient 4.3 are encouraged to upgrade.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1447] Clients created with HttpClients.createMinimal do not work with absolute URIs
+  Contributed by Joseph Walton <joe at kafsemo dot org>
+
+* [HTTPCLIENT-1446] NTLM proxy + BASIC target auth fails with 'Unexpected state:
+  MSG_TYPE3_GENERATED'.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1443] HttpCache uses the physical host instead of the virtual host as a cache key.
+  Contributed by Francois-Xavier Bonnet <fx at apache.org>
+
+* [HTTPCLIENT-1442] Authentication header set by the user gets removed in case
+  of proxy authentication (affects plan HTTP requests only).
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1441] Caching AsynchronousValidationRequest leaks connections.
+  Contributed by Dominic Tootell <dominic.tootell at gmail.com>
+
+* [HTTPCLIENT-1440] 'file' scheme in redirect location URI causes NPE.
+  Contributed by James Leigh <james at 3roundstones dot com>
+
+* [HTTPCLIENT-1437] Made Executor#execute thread safe.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1119] SNI support (Oracle Java 1.7+ only).
+  Contributed by Bruno Harbulot <bruno at distributedmatter.net>
+
+* [HTTPCLIENT-1435] Fluent Executor ignores custom request properties.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1432] Lazy decompressing of HttpEntity#getContent() to avoid EOFException
+  in case of an empty response with 'Content-Encoding: gzip' header.
+  Contributed by Yihua Huang <code4crafter at gmail.com>
+
+* [HTTPCLIENT-1431] (Regression) deprecated connection manager cannot be used with
+  a custom LayeredSchemeSocketFactory.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1425] Fixed socket closed exception thrown by caching HttpClient when the origin
+  server sends a long chunked response.
+  Contributed by James Leigh <james at 3roundstones dot com>
+
+* [HTTPCLIENT-1417] Fixed NPE in BrowserCompatSpec#formatCookies caused by version 1
+  cookies with null cookie value.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1416] Fixed NPE in CachingHttpClientBuilder#build().
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+
+Release 4.3.1
+-------------------
+
+HttpClient 4.3.1 (GA) is a bug fix release that addresses a number of issues reported since
+release 4.3.
+
+Users of HttpClient 4.3 are strongly encouraged to upgrade.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1410] Browser compatible hostname verifier no longer rejects
+  *.co.<countrycode>, *.gov.<countrycode>, *.info.<countrycode>, etc as invalid.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Ensure X509HostnameVerifier is never null.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1405] CONNECT HTTP/1.1 requests lack mandatory 'Host' header.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1402] Cache default User-Agent value.
+  Contributed by yuexiaojun <junedo at qq.com>
+
+* [HTTPCLIENT-1398] Fixed invalid OSGi metadata caused by corrupted Maven bundle plugin metadata.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1399] Fixed NPE in RequestBuilder.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+
+
+Release 4.3 Final
+-------------------
+
+This is the first stable (GA) release of HttpClient 4.3. The most notable enhancements included
+in this release are:
+
+* Support for Java 7 try-with-resources for resource management (connection release.)
+
+* Added fluent Builder classes for HttpEntity, HttpRequest, HttpClient and SSLContext instances.
+
+* Deprecation of preference and configuration API based on HttpParams interface in favor of
+constructor injection and plain configuration objects.
+
+* Reliance on object immutability instead of access synchronization for thread safety.
+Several old classes whose instances can be shared by multiple request exchanges have
+been replaced by immutable equivalents.
+
+* DefaultHttpClient,  DecompressingHttpClient, CachingHttpClient and similar classes are
+deprecated in favor of builder classes that produce immutable HttpClient instances.
+
+* HttpClient builders now dynamically construct a request execution pipeline tailored
+specifically to the user configuration by physically excluding unnecessary protocol components.
+
+* There is now an option to construct a minimal HttpClient implementation that can only execute
+basic HTTP message exchanges without redirects, authentication, state management or proxy support.
+This feature might be of particular use in web crawler development.
+
+* There is now option to avoid strict URI syntax for request URIs by executing HTTP requests
+with an explicitly specified target host. HttpClient will no longer attempt to parse the request
+URI if it does not need to extract the target host from it.
+
+This release also includes all fixes from the stable 4.2.x release branch.
+
+
+Changelog
+-------------------
+* [HTTPCLIENT-1371] Weak ETag Validation is Useful On PUT With If-Match
+  Contributed by James Leigh <james at 3roundstones dot com>
+
+* [HTTPCLIENT-1394] Support for Native windows Negotiate/NTLM via JNA
+  Contributed by Ryan McKinley <ryan at apache.org>
+
+* [HTTPCLIENT-1384] Expose CacheInvalidator interface.
+  Contributed by Nicolas Richeton <nicolas.richeton at free.fr>
+
+* [HTTPCLIENT-1385] Fixed path normalization in CacheKeyGenerator
+  Contributed by James Leigh <james at 3roundstones dot com>
+
+* [HTTPCLIENT-1370] Response to non-GET requests should never be cached with the default
+  ResponseCachingPolicy
+  Contributed by James Leigh <james at 3roundstones dot com>
+
+* [HTTPCLIENT-1373] OPTIONS and TRACE should not invalidate cache
+  Contributed by James Leigh <james at 3roundstones dot com>
+
+* [HTTPCLIENT-1383] HttpClient enters an infinite loop during NTLM authentication if the opposite
+  endpoint keeps responding with a type 2 NTLM response after type 3 MTLM message has already been
+  sent by the client.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1372] Refactor HttpMultipart, and add RFC6532 mode, so that headers in post
+  are no longer constrained to ASCII values.
+  Contributed by Karl Wright <kwright at apache.org>
+
+* [HTTPCLIENT-1377] User principal for non-NTLM authentication is incorrectly generated when using
+  user credentials are specified as NTCredentials
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+
+
+Release 4.3 BETA2
+-------------------
+
+This is the second BETA release of HttpClient 4.3. The most notable features and improvements
+in the 4.3 branch are: Support for Java 7  try-with-resources for resource management (connection
+release); fluent Builder classes for HttpEntity, HttpRequest and HttpClient instances, deprecation
+of preference and configuration API based on HttpParams interface in favor of constructor injection
+and plain configuration objects, reliance on object immutability instead of access synchronization
+for thread safety.
+
+This release also includes all fixes from the stable 4.2.x release branch.
+
+Changelog
+-------------------
+
+
+* [HTTPCLIENT-1366] org.apache.http.client.utils.URLEncodedUtils should parse the semicolon as a query parameter separator.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1365] NPE when ManagedHttpClientConnectionFactory.create(ConnectionConfig) is called with null.
+  Contributed by Gary Gregory <ggregory at apache.org>
+
+* [HTTPCLIENT-1362] Better error messages for connect timed out and connection refused
+  exceptions.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1360] separate out DeflateInputStream as an independent class,
+  so it can be used by others.
+  Contributed by Karl Wright <kwright at apache.org>
+
+* [HTTPCLIENT-1359] repeated requests using the same context fail if they redirect.
+  Contributed by James Leigh <james at 3roundstones.com>
+
+* [HTTPCLIENT-1354] do not quote algorithm parameter in DIGEST auth response.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1351] Added utility method to resolve final location from original request,
+  target host and a list of redirects.
+  Contributed by James Leigh <james at 3roundstones.com>
+
+* [HTTPCLIENT-1344] Userinfo credentials in URI should not default to preemptive BASIC
+  authentication.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1345] Useinfo credentials ignored in redirect location header.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1294] HttpClient to rewrite host name of the redirect location URI in order
+  to avoid circular redirect exception due to host name case mismatch.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1264] Add support for multiple levels of browser compatibility
+  to BrowserCompatSpec and BrowserCompatSpecFactory.  Include constructor
+  argument for IE medium-security compatibility.
+  Contributed by Karl Wright (kwright at apache.org)
+
+* [HTTPCLIENT-1349] SSLSocketFactory incorrectly identifies key passed with keystore as
+  the keystore password.
+  Contributed by David Graff <djgraff209 at gmail.com>
+
+* [HTTPCLIENT-1346] Ensure propagation of SSL handshake exceptions.
+  Contributed by Pasi Eronen <pe at iki.fi>
+
+* [HTTPCLIENT-1343] SSLSocketFactory optional parameters for supported SSL protocols and cipher
+  suites.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1238] Contribute Bundle Activator And Central Proxy Configuration.
+  Contributed by Simone Tripodi <simonetripodi at apache.org>
+
+* [HTTPCLIENT-1299] (regression) cache incorrectly disposes of the underlying cache resource
+  when storing variant entry.
+  Contributed by James Leigh <james at 3roundstones.com>
+
+* [HTTPCLIENT-1342] Redirects with underscore character in the location hostname cause
+  "java.lang.IllegalArgumentException: Host name may not be null".
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+
+Release 4.3 BETA1
+-------------------
+
+This is the first BETA release of HttpClient 4.3. The 4.3 branch enhances HttpClient in several
+key areas and includes several notable features and improvements: Support for Java 7
+try-with-resources for resource management (connection release); fluent Builder classes for
+HttpEntity, HttpRequest and HttpClient instances, deprecation of preference and configuration API
+based on HttpParams interface in favor of constructor injection and plain configuration objects,
+reliance on object immutability instead of access synchronization for thread safety.
+
+This release also includes all fixes from the stable 4.2.x release branch.
+
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1317] InetAddressUtils should handle IPv6 Addresses with Embedded IPv4 Addresses
+  Contributed Sebastian Bazley <sebb at apache.org>.
+
+* [HTTPCLIENT-1320] Leverage javax.net.ssl.SSLSocketFactory#getDefault() to initialize SSL context
+  based on system defaults instead of using an internal custom routine.
+  Contributed by Abe Backus <abraham at backus.com> and Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1316] Certificate verification rejects IPv6 addresses which are not String-equal.
+  Contributed Sebastian Bazley <sebb at apache.org>.
+
+* [HTTPCLIENT-1307] Future based asynchronous request execution.
+  Contributed by Jilles van Gurp <jilles at jillesvangurp.com>
+
+* [HTTPCLIENT-1313] Fixed IllegalStateException in deprecated ThreadSafeClientConnManager.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1298] Add AsynchronousValidator in HttpClientBuilder's list of closeable objects.
+  Contributed by Martin Meinhold <mmeinhold at atlassian.com>
+
+
+
+Release 4.3 ALPHA1
+-------------------
+
+This is the first ALPHA release of HttpClient 4.3. The 4.3 branch enhances HttpClient in several
+key areas and includes several notable features and improvements: Support for Java 7
+try-with-resources for resource management (connection release); fluent Builder classes for
+HttpEntity, HttpRequest and HttpClient instances, deprecation of preference and configuration API
+based on HttpParams interface in favor of constructor injection and plain configuration objects,
+reliance on object immutability instead of access synchronization for thread safety.
+
+We are kindly asking all upstream projects to review API changes and help us improve
+the APIs by providing feedback and sharing ideas on dev@hc.apache.org.
+
+This release also includes all fixes from the stable 4.2.x release branch.
+
+Please note that new features included in this release are still considered experimental and
+their API may change in the future 4.3 alpha and beta releases.
+
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1250] Allow query string to be ignored when determining cacheability for
+  HTTP 1.0 responses.
+  Contributed by Don Brown <mrdon at twdata.org>
+
+* [HTTPCLIENT-1261] Make SystemDefaultHttpClient honor http.agent system property.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-900] Don't enforce URI syntax for messages with an explicit target host.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1190] HttpClient cache does not support "Vary: Cookie"
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1259] Calling #abort() on requests executed with DecompressingHttpClient has no
+  effect.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1253] URIBuilder setParameter() method could exceed the HTTP header size.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1216] Added method to force clean thread-local used by DateUtils.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+Release 4.2.3
+-------------------
+
+HttpClient 4.2.3 (GA) is a bug fix release that addresses a number of issues reported since
+release 4.2.2. This release also includes a thoroughly reworked NTLM authentication engine
+which should result in a better compatibility with the newest Microsoft products.
+
+Users of HttpClient 4.x are advised to upgrade.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1296] NPE gets thrown if you combine a default host with a virtual host
+  that has a -1 value for the port.
+  Contributed by Karl Wright <daddywri at gmail.com>
+
+* [HTTPCLIENT-1290] 304 cached response never reused with If-modified-since conditional
+  requests.
+  Contributed by Francois-Xavier Bonnet <francois-xavier.bonnet at centraliens.net>
+
+* [HTTPCLIENT-1291] Absolute request URIs without an explicitly specified path are rewritten
+  to have "/" path).
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1286] Request URI rewriting is inconsistent - URI fragments are not removed
+  from absolute request URIs.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1284] HttpClient incorrectly generates Host header when physical connection
+  route differs from the host name specified in the request URI.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1293] Kerberos and SPNego auth schemes use incorrect authorization header name
+  when authenticating with a proxy.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1283] NTLM needs to use Locale-independent form of
+  toUpperCase().
+  Contributed by Karl Wright <DaddyWri at gmail.com>
+
+* [HTTPCLIENT-1279] Target host responding with status 407 (proxy authentication required)
+  causes an NPE.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1281] GzipDecompressingEntity does not release InputStream when an IOException
+  occurs while reading the Gzip header
+  Contributed by Francois-Xavier Bonnet <francois-xavier.bonnet at centraliens.net>
+
+* [HTTPCLIENT-1277] Caching client sends a 304 to an unconditional request.
+  Contributed by Francois-Xavier Bonnet <francois-xavier.bonnet at centraliens.net>
+
+* [HTTPCLIENT-1278] Update NTLM documentation.
+  Contributed by Karl Wright <DaddyWri at gmail.com>
+
+* SystemDefaultHttpClient misinterprets 'http.keepAlive' default value and disables
+  connection persistence if the system property is not set. This causes connection
+  based authentication schemes such as NTLM to fail.
+
+* [HTTPCLIENT-1276] cache update on a 304 response causes NPE.
+  Contributed by Francois-Xavier Bonnet <francois-xavier.bonnet at centraliens.net>
+
+* [HTTPCLIENT-1273] DecompressingHttpClient does not automatically consume response
+  content in case of an i/o, HTTP or runtime exception thrown by the decompressing
+  protocol interceptor leading to a potential connection leak.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1268] NTLM engine refactor fix, to correct a buffer overrun, and get NTLMv2
+  flags right.
+  Contributed by Karl Wright <DaddyWri at gmail.com>
+
+* [HTTPCLIENT-1266] NTLM engine refactoring and compatibility improvements.
+  Contributed by Karl Wright <DaddyWri at gmail.com>
+
+* [HTTPCLIENT-1263] BrowserCompatSpec: attribute values containing spaces or special characters
+  should be enclosed with quotes marks for version 1 cookies.
+  Contributed by Francois-Xavier Bonnet <francois-xavier.bonnet at centraliens.net>
+
+* [HTTPCLIENT-1263] CachingHttpClient fails to release connections back to the connection
+  manager for some type of HTTP response messages when used together with DecompressingHttpClient.
+  Contributed by Francois-Xavier Bonnet <francois-xavier.bonnet at centraliens.net>
+
+* [HTTPCLIENT-1258] Fixed NullPointerException in NTLMEngineImpl caused by null NT domain
+  attribute.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1254] Redirect with underscore in hostname causes ProtocolException.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1255] AbstractVerifier incorrectly parses certificate CN containing wildcard.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+
+Release 4.2.2
+-------------------
+
+HttpClient 4.2.2 (GA) is a bug fix release that addresses a number of issues reported since
+release 4.2.1.
+
+Users of HttpClient 4.2 are advised to upgrade.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1248] Default and lax redirect strategies should not convert requests redirected
+  with 307 status to GET method.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1215] BasicAuthCache does not take default ports into consideration when
+  looking up cached authentication details by HttpHost key.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1241] (regression) Preemptive BASIC authentication failure should be considered
+  final and no further attempts to re-authenticate using the same credentials should be made.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1229] Fixed NPE in BasicClientConnectionManager that can be triggered by releasing
+  connection after the connection manager has already been shut down.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1227] Date parsing in DateUtils made more efficient.
+  Contributed by Patrick Linskey <pcl at apache.org>
+
+* [HTTPCLIENT-1224] (regression) NTLM auth not retried after a redirect over a non-persistent
+  connection.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1223] Cache could be more aggressive on cache invalidations
+  from Content-Location. Contributed by Jon Moore <jonm at apache.org>.
+  Contributed by Jon Moore <jonm at apache.org>
+
+* [HTTPCLIENT-1217] AutoRetryHttpClient does not release connection used by the previous response
+  when request is retried
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+
+Release 4.2.1
+-------------------
+
+HttpClient 4.2.1 (GA) is a bug fix release that addresses a number of issues reported since
+release 4.2.
+
+Users of HttpClient 4.2 are advised to upgrade.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1209] Redirect URIs are now normalized.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1202] ResponseCachingPolicy should honor explicit cache-control
+  directives for other status codes
+  Contributed by Jon Moore <jonm at apache.org>
+
+* [HTTPCLIENT-1199] DecompressingHttpClient strips content from entity enclosing requests
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1198] HttpHost is not set in HttpContext in CachingHttpClient.
+  Contributed by Jon Moore <jonm at apache.org>
+
+* [HTTPCLIENT-1200] DecompressingHttpClient fails to generate correct HttpHost context attribute.
+  Contributed by Guillaume Castagnino <casta+jira at xwing.info>
+
+* [HTTPCLIENT-1192] URIBuilder encodes query parameters twice.
+  Contributed by Oleg Kalnichevski <olegk at apache.org> and Sebastian Bazley <sebb at apache.org>.
+
+* [HTTPCLIENT-1196] Fixed NPE in UrlEncodedFormEntity constructor thrown if charset is null.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1193] Fixed regression in the route tracking logic of the default connection manager
+  causing cross-site redirect failures.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+Release 4.2
+-------------------
+
+This is the first stable (GA) release of HttpClient 4.2. The most notable enhancements included
+in this release are:
+
+* New facade API for HttpClient based on the concept of a fluent interface. The fluent API exposes
+  only the most fundamental functions of HttpClient and is intended for relatively simple use cases
+  that do not require the full flexibility of HttpClient. However, the fluent API almost fully
+  relieves the users from having to deal with connection management and resource deallocation.
+
+* Redesigned and rewritten connection management code.
+
+* Enhanced HTTP authentication API that enables HttpClient to handle more complex authentication
+  scenarios. HttpClient 4.2 is now capable of making use of multiple authentication challenges
+  and retry authentication with a fall-back scheme in case the primary one fails. This can be
+  important for compatibility with Microsoft products that are often configured to use
+  SPNEGO/Kerberos as the preferred authentication scheme.
+
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1187] If a revalidation response is deemed too old CachingHttpClient fails to
+  consume its content resulting in a connection leak.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1186] State of newly created connections in the connection pool is not always
+  correctly updated potentially allowing those connections to be leased to users with a different
+  security context.
+  Contributed by Ralf Poehlmann <rpn at methodpark.de>
+
+* [HTTPCLIENT-1179] Upgraded Commons Codec dependency to version 1.6
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1177] always remove fragments from request URIs
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+Incompatible changes
+--------------------
+[Compared to release version 4.1.3]
+
+The following fields have been deprecated for some time now and have been deleted:
+
+org.apache.http.client.params.ClientPNames#CONNECTION_MANAGER_FACTORY
+org.apache.http.impl.cookie.BrowserCompatSpec#DATE_PATTERNS
+
+The following methods have been deprecated for some time now and have been deleted:
+
+org.apache.http.client.params.ClientParamBean#setConnectionManagerFactory(org.apache.http.conn.ClientConnectionManagerFactory)
+org.apache.http.client.protocol.ClientContextConfigurer#setAuthSchemePref(java.util.List)
+org.apache.http.entity.mime.content.FileBody#writeTo(java.io.OutputStream, int)
+org.apache.http.entity.mime.content.InputStreamBody#writeTo(java.io.OutputStream, int)
+org.apache.http.entity.mime.content.StringBody#writeTo(java.io.OutputStream, int)
+
+The following classes have been deprecated for some while now and have been deleted:
+
+org.apache.http.impl.conn.tsccm.RefQueueHandler
+org.apache.http.impl.conn.tsccm.AbstractConnPool no longer implements interface org.apache.http.impl.conn.tsccm.RefQueueHandler
+org.apache.http.impl.conn.tsccm.ConnPoolByRoute no longer implements interface org.apache.http.impl.conn.tsccm.RefQueueHandler
+org.apache.http.impl.conn.tsccm.RefQueueWorker
+
+
+
+Release 4.2 BETA1
+-------------------
+
+This is the first BETA release of HttpClient 4.2. This release completes development of several
+notable enhancements in HttpClient:
+
+* New facade API for HttpClient based on the concept of a fluent interface. The fluent API exposes
+  only the most fundamental functions of HttpClient and is intended for relatively simple use cases
+  that do not require the full flexibility of HttpClient. However, the fluent API almost fully
+  relieves the users from having to deal with connection management and resource deallocation.
+
+* Redesigned and rewritten connection management code. As of release 4.2 HttpClient will be using
+  pooling connection manager per default.
+
+* Enhanced HTTP authentication API that enables HttpClient to handle more complex authentication
+  scenarios. HttpClient 4.2 is now capable of making use of multiple authentication challenges
+  and retry authentication with a fall-back scheme in case the primary one fails. This can be
+  important for compatibility with Microsoft products that are often configured to use
+  SPNEGO/Kerberos as the preferred authentication scheme.
+
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1164] Compressed entities are not being cached properly.
+  Contributed by Jon Moore <jonm at apache dot org>.
+
+* [HTTPCLIENT-1154] MemcachedHttpCacheStorage should allow client to
+  specify custom prefix string for keys.
+  Contributed by Jon Moore <jonm at apache dot org>.
+
+* [HTTPCLIENT-1153] MemcachedHttpCacheStorage uses URL as cache key;
+  shouldn't due to fixed maximum-length memcached keys.
+  Contributed by Jon Moore <jonm at apache dot org>.
+
+* [HTTPCLIENT-1157] MemcachedHttpCacheStroage should throw IOExceptions
+  instead of RuntimeExceptions.
+  Contributed by James Miller <jamesmiller01 at gmail dot com>.
+
+* [HTTPCLIENT-1152] MemcachedHttpCacheStorage should verify class of
+  returned object before casting.
+  Contributed by Rajika Kumarasiri <rajika at wso2 dot com>.
+
+* [HTTPCLIENT-1155] CachingHttpClient fails to ensure that the response content gets fully consumed
+  when using a ResponseHandler, which can potentially lead to connection leaks.
+  Contributed by James Miller <jamesmiller01 at gmail dot com>
+
+* [HTTPCLIENT-1147] When HttpClient-Cache cannot open cache file, should act like miss.
+  Contributed by Joe Campbell <joseph.r.campbell at gmail.com>
+
+* [HTTPCLIENT-1137] Values for the Via header are cached and reused by httpclient-cache.
+  Contributed by Alin Vasile <alinachegalati at yahoo dot com>
+
+* [HTTPCLIENT-1142] Infinite loop on NTLM authentication failure.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1143] CachingHttpClient leaks connections with stale-if-error.
+  Contributed by James Miller <jamesmiller01 at gmail dot com>
+
+Release 4.2 ALPHA1
+-------------------
+
+This is the first ALPHA release of HttpClient 4.2. The 4.2 branch enhances HttpClient in several
+key areas and includes several notable features and improvements:
+
+* New facade API for HttpClient based on the concept of a fluent interface. The fluent API exposes
+  only the most fundamental functions of HttpClient and is intended for relatively simple use cases
+  that do not require the full flexibility of HttpClient. However, the fluent API almost fully
+  relieves the users from having to deal with connection management and resource deallocation.
+
+* Redesigned and rewritten connection management code. As of release 4.2 HttpClient will be using
+  pooling connection manager per default.
+
+* Enhanced HTTP authentication API that enables HttpClient to handle more complex authentication
+  scenarios. HttpClient 4.2 is now capable of making use of multiple authentication challenges
+  and retry authentication with a fall-back scheme in case the primary one fails. This can be
+  important for compatibility with Microsoft products that are often configured to use
+  SPNEGO/Kerberos as the preferred authentication scheme.
+
+Please note that new features included in this release are still considered experimental and
+their API may change in the future ALPHA releases.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1128] SystemDefaultHttpClient (HttpClient implementation initialized using system
+  properties).
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1135] RandomAccessFile mode 'w' used by HttpClientCache is not valid.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1131] HttpClient to authenticate preemptively using BASIC scheme if a userinfo
+  attribute is specified in the request URI.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1134] make BasicResponseHandler consume response content in case of an unsuccessful
+  result (status code >= 300).
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1132] ProxyClient implementation.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1127] fixed dead-lock between SingleClientConnManager and AbstractPooledConnAdapter.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1107] Auth framework redesign.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1116] ResponseCachingPolicy uses integers for sizes
+  Contributed by Greg Bowyer <gbowyer at fastmail.co.uk >
+
+* [HTTPCLIENT-1123] Support for pluggable DNS resolvers.
+  Contributed by Alin Vasile <alinachegalati at yahoo dot com>
+
+* [HTTPCLIENT-1120] DefaultHttpRequestRetryHandler#retryRequest should not retry aborted requests.
+  Contributed by Alin Vasile <alinachegalati at yahoo dot com>
+
+* Support for auth-int qop (quality of protection) option in Digest auth scheme.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1076] Fluent facade API (Google summer of code 2011 project).
+  Contributed by Xu Lilu <cookieme at gmail.com>
+
+* UriBuilder implementation.
+  Contributed by Xu Lilu <cookieme at gmail.com>
+
+* Redesign of connection management classes based on new pooling components from HttpCore.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1111] Added #prepareSocket method to SSLSocketFactory.
+  Contributed by Pasi Eronen <pe at iki.fi>
+
+* Added #reset() and #releaseConnection() methods to HttpRequestBase.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1105] AutoRetryHttpClient: built-in way to do auto-retry for certain status codes.
+  Contributed by Dan Checkoway <dcheckoway at gmail.com>
+
+* [HTTPCLIENT-1094] Digest auth scheme refactoring.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Lax implementation of RedirectStrategy.
+  Contributed by Bartosz Firyn <songo.bercik at interia.pl>
+
+* [HTTPCLIENT-1044] HttpRequestRetryHandler implementation compliant with the definition of
+  idempotent methods given in the RFC 2616.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+Release 4.1.2
+-------------------
+
+The HttpClient 4.1.2 is a bug fix release that addresses a number of non-critical issues reported
+since release 4.1.1.
+
+* [HTTPCLIENT-1100] Missing Content-Length header makes cached entry invalid
+  Contributed by Bart Robeyns <bart dot robeyns at gmail dot com>
+
+* [HTTPCLIENT-1098] Avoid expensive reverse DNS lookup on connect timeout exception.
+  Contributed by Thomas Boettcher <tboett at gmail.com>
+
+* [HTTPCLIENT-1097] BrowserCompatHostnameVerifier and StrictHostnameVerifier should handle
+  wildcards in SSL certificates better.
+  Contributed by Sebastian Bazley <sebb at apache.org>
+
+* [HTTPCLIENT-1092] If ClientPNames.VIRTUAL_HOST does not provide the port, derive it from the
+  current request.
+  Contributed by Sebastian Bazley <sebb at apache.org>
+
+* [HTTPCLIENT-1087] NTLM proxy authentication fails on retry if the underlying connection is closed
+  as a result of a target authentication failure.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1079] Fixed Kerberos cross-realm support
+  Contributed by Michael Osipov <1983-01-06 at gmx.net>
+
+* [HTTPCLIENT-1078] Decompressing entities (DeflateDecompressingEntity, GzipDecompressingEntity)
+  do not close content stream in #writeTo() method.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1075] Decompressing entities (DeflateDecompressingEntity, GzipDecompressingEntity)
+  do not correctly handle content streaming.
+  Contributed by James Abley <james.abley at gmail.com>
+
+* [HTTPCLIENT-1051] Avoid reverse DNS lookups when opening SSL connections by IP address.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+Release 4.1.1
+-------------------
+
+HttpClient v4.1.1 is a bug fix release that addresses a number of issues reported since
+release 4.1, including one critical security issue (HTTPCLIENT-1061). All users of HttpClient 4.0.x
+and 4.1 are strongly encouraged to upgrade.
+
+* [HTTPCLIENT-1069] HttpHostConnectException not correctly retried for direct and non-tunnelled
+  proxy connections.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1066] Changed the way URIUtils#rewriteURI handles multiple consecutive slashes in the
+  URI path component: multiple leading slashes will be replaced by one slash in order to avoid
+  confusion with the authority component. The remaining content of the path will not be modified.
+  (also see HTTPCLIENT-929).
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1061] Fixed critical bug causing Proxy-Authorization header to be sent to the target
+  host when tunneling requests through a proxy server that requires authentication.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1056] Fixed bug causing the RequestAuthCache protocol interceptor to generate
+  an invalid AuthScope instance when looking up user credentials for preemptive authentication.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1053] Fixed the way DigestScheme generates nonce-count values.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+Release 4.1
+-------------------
+
+The HttpClient 4.1 release builds upon the stable foundation laid by HttpClient 4.0 and adds several
+functional improvements and popular features.
+
+* Response caching conditionally compliant with HTTP/1.1 specification (full compliance with
+  MUST requirements, partial compliance with SHOULD requirements)
+
+* Full support for NTLMv1, NTLMv2, and NTLM2 Session authentication. The NTLM protocol code
+  was kindly contributed by the Lucene Connector Framework project.
+
+* Support for SPNEGO/Kerberos authentication.
+
+* Persistence of authentication data between request executions within the same execution context.
+
+* Support for preemptive authentication for BASIC and DIGEST schemes.
+
+* Support for transparent content encoding. Please note transparent content encoding is not
+  enabled per default in order to avoid conflicts with already existing custom content encoding
+  solutions.
+
+* Mechanism to bypass the standard certificate trust verification (useful when dealing with
+  self-signed certificates).
+
+* Simplified configuration for connection managers.
+
+* Transparent support for host multihoming.
+
+IMPORTANT: please note that the HttpClient 3.x branch is now officially END OF LIFE and is no longer
+maintained and supported by the Apache HttpComponents project.
+
+Changelog
+-------------------
+* The public API for the caching module had a minor change between 4.1-beta and 4.1-GA to the
+  HttpCacheEntry class - the deprecated public Set<String> getVariantURIs() method and constructor
+  public HttpCacheEntry(Date requestDate, Date responseDate,
+            StatusLine statusLine, Header[] responseHeaders,
+            Resource resource, Set<String> variants)
+  were both removed.  This will not affect you unless you are implementing new storage backends
+  that use the deprecated code and/or are implementing custom serializers for cache entries.
+
+* Changed Browser-Compatibility and Best-Match cookie policies to emulate the behaviour of FireFox
+  more closely when parsing Netscape style cookies. Comma will no longer be treated as a header
+  element separator if Set-Cookie does not contain a Version attribute mandated by the
+  RFC2109 / RFC 2965 cookie specifications.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1036] StringBody has incorrect default for characterset. (Default changed
+  to US-ASCII)
+  Contributed by Sebastian Bazley <sebb at apache.org>
+
+* [HTTPCLIENT-975] Support stale-if-error and stale-while-revalidate extension directive (RFC5861).
+  Contributed by Mohammed Azeem Uddin <mohammedazeem_uddin at comcast.com>,
+  Michajlo Matijkiw <michajlo_matijkiw at comcast.com>, and
+  Matthew Hawthorne <matthew_hawthorne at comcast.com>.
+
+* [HTTPCLIENT-1033] HttpRoute.equals(Object o) is quite inefficient, as it does not take full
+  advantage of shortcut logic.
+  Contributed by Sebastian Bazley <sebb at apache.org>
+
+* [HTTPCLIENT-1030] Implement "ignoreCookies" CookieSpec
+  Contributed by Sebastian Bazley <sebb at apache.org>
+
+Release 4.1 BETA1
+-------------------
+
+HttpClient 4.1 BETA1 finalizes the 4.1 API and brings a number of major improvements to the HTTP
+caching module. This release also adds full support for NTLMv1, NTLMv2, and NTLM2 Session
+authentication. The NTLM protocol code was kindly contributed by the Lucene Connector Framework
+project.
+
+Changelog
+-------------------
+* [HTTPCLIENT-1015] Support only-if-cached directive.
+  Contributed by Michajlo Matijkiw <michajlo_matijkiw at comcast.com>
+
+* [HTTPCLIENT-990] Allow heuristic freshness caching.
+  Contributed by Michajlo Matijkiw <michajlo_matijkiw at comcast.com>
+
+* [HTTPCLIENT-919] Support for NTLMv1, NTLMv2, and NTLM2 Session authentication.
+  Contributed by Karl Wright <karl.wright at nokia.com>
+
+* [HTTPCLIENT-1008] Send all variants' ETags on "variant miss".
+  Contributed by Michajlo Matijkiw <michajlo_matijkiw at comcast.com> and
+  Mohammed Azeem Uddin <mohammedazeem_uddin at comcast.com>
+
+* [HTTPCLIENT-1011] Handling of IOExceptions thrown by cache components.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-1003] Handle conditional requests in cache.
+  Contributed by Michajlo Matijkiw <michajlo_matijkiw at comcast.com> and
+  Mohammed Azeem Uddin <mohammedazeem_uddin at comcast.com>
+
+* [HTTPCLIENT-1002] Stale connection check fails if wire logging is on.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-1000] Maximum connection lifetimes settings for ThreadSafeClientConnManager.
+  Contributed by Michajlo Matijkiw <michajlo_matijkiw at comcast.com>
+
+* [HTTPCLIENT-960] HttpMultipart doesn't generate Content-Type header for binary parts in
+  BROWSER_COMPATIBLE mode.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-998] Cache should use both Last-Modified and ETag for validations when available.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-997] Cache module should handle out-of-order validations properly and unconditionally
+  refresh.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-994] Cache does not allow client to override origin-specified freshness using
+  max-stale.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-995] Cache returns cached responses even if validators not consistent with all
+  conditional headers.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-977] Memcached implementation for HttpCache.
+  Contributed by Mohammed Azeem Uddin <mohammedazeem_uddin at comcast.com>
+
+* [HTTPCLIENT-992] cache should not generate stale responses to requests explicitly requesting
+  first-hand or fresh ones.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-991] cache module produces improperly formatted Warning header when revalidation
+  fails.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-989] DefaultHttpRequestRetryHandler no longer retries non-idempotent http methods
+  if NoHttpResponseException is thrown.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-988] Cache module should strip 'Content-Encoding: identity' from responses
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-987] cache module does not recognize equivalent URIs.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-986] cache module does not completely handle upstream Warning headers correctly
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-985] cache module should populate Via header to capture upstream and downstream protocols
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-984] Additional conditional compliance tests for the caching module for
+  Content-Encoding, Content-Location, Date, Expires, Server, Transfer-Encoding, and Vary headers.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-978] HTTP cache update exception handling
+  Contributed by Michajlo Matijkiw <michajlo_matijkiw at comcast.com>
+
+* [HTTPCLIENT-981] CachingHttpClient returns a 411 respones when executing a POST (HttpPost)
+  request.
+  Contributed by Joe Campbell <joseph.r.campbell at gmail.com>
+
+* [HTTPCLIENT-980] CachingHttpClient returns a 503 response when the backend HttpClient produces
+  an IOException.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-978] Ehcache based HTTP cache implementation
+  Contributed by Michajlo Matijkiw <michajlo_matijkiw at comcast.com>
+
+* [HTTPCLIENT-967] support for non-shared (private) caches
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-969] BasicCookieStore#getCookies() to return a copy of Cookie list
+  Contributed by David Smiley <dsmiley at mitre.org>
+
+* [HTTPCLIENT-965] Fixed problem with cache not honoring must-revalidate or
+  proxy-revalidate Cache-Control directives.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-964] 'no-cache' directives with field names are no longer transmitted
+  downstream.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-963] Fixed handling of 'Cache-Control: no-store' on requests.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-962] Fixed handling of Authorization headers in shared cache mode.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-961] Not all applicable URIs are invalidated on PUT/POST/DELETEs
+  that pass through client cache.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-958] Client cache no longer allows incomplete responses to be
+  passed on to the client.
+  Contributed by Jonathan Moore <jonathan_moore at comcast.com>
+
+* [HTTPCLIENT-951] Non-repeatable entity enclosing requests are not correctly
+  retried when 'expect-continue' handshake is active.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-948] In rare circumstances the idle connection handling code
+  can leave closed connections in a inconsistent state.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-953] IllegalStateException thrown by RouteSpecificPool.
+  Contributed by Guillaume <gueugaie at gmail.com>
+
+* [HTTPCLIENT-952] Trust store parameter is ignored by SSLSocketFactory
+  (affects version 4.1-alpha2 only)
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-937] CacheEntry made immutable; now uses immutable HttpEntity
+  to store cached content.
+  Contributed by David Mays <david_mays at comcast.com> and
+  Oleg Kalnichevski <olegk at apache.org>
+
+Release 4.1 ALPHA2
+-------------------
+
+HttpClient 4.1 ALPHA2 fixes a number of non-severe bugs discovered since
+the last release and introduces support for two frequently requested features:
+
+* HTTP/1.1 response caching
+
+* transparent support for host multihoming
+
+* a mechanism to bypass the standard certificate trust verification
+(useful when dealing with self-signed certificates)
+
+Compatibility notes
+-------------------
+(1) Please note the HTTP caching module is still considered experimental and
+its API may change significantly in the future releases.
+
+(2) This release eliminates Mime4J as a dependency for the HttpMime module.
+HttpMime is no longer binary compatible with the previous releases.
+Full API and binary compatibility between minor versions of HttpMime will be
+maintained as of 4.1 GA release.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-936] Fixed bug causing NPE or an infinite loop in
+  the authentication code in case of a SPNEGO authentication failure.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-427] HTTP caching support
+  Contributed by Joe Campbell, David Cleaver, David Mays, Jon Moore, Brad Spenla
+
+* Dropped dependency on Mime4j for HttpMime.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Extended SSLSocketFactory with a mechanism to bypass the standard certificate
+  trust verification (primarily to simplify dealing with self-signed
+  certificates)
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-898] Improved support for host multihoming
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-916] UsernamePasswordCredentials, NTUserPrincipal,
+  BasicClientCookie, BasicClientCookie2 and BasicCookieStore made Serializable.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-914] Upgraded Commons Codec dependency to version 1.4
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-903] Use ConcurrentHashMap instead of [Linked]HashMap for
+  thread-safety. Improve performance of AuthSchemeRegistry, CookieSpecRegistry
+  and SchemeRegistry classes.
+  Contributed by Sebastian Bazley <sebb at apache.org>
+
+* [HTTPCLIENT-902] HttpRequestRetryHandler not called on I/O exceptions
+  thrown when opening a new connection.
+  Contributed by Olivier Lamy <olamy at apache.org> and
+  Oleg Kalnichevski <olegk at apache.org>
+
+Release 4.1 ALPHA1
+-------------------
+
+HttpClient 4.1 ALPHA1 builds on the stable 4.0 release and adds several
+functionality improvements and new features.
+
+* Simplified configuration of connection managers.
+
+* Persistence of authentication data between request executions within
+  the same execution context.
+
+* Support for SPNEGO/Kerberos authentication scheme
+
+* Support for transparent content encoding. Please note transparent content
+  encoding is not enabled per default in order to avoid conflicts with
+  already existing custom content encoding solutions.
+
+* 5 to 10% performance increase due to elimination of unnecessary Log object
+  lookups by short-lived components.
+
+Please note all methods and classes added in this release and marked as
+4.1 are API unstable and can change in the future 4.1 ALPHA releases.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-889] 'expect: continue' handshake disabled per default.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-862] Extended client's redirect handling interface to allow
+  control of the content of the redirect.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-872] HttpClient can now persist authentication data between request
+  executions as long as they share the same execution context. It has also become
+  much easier to make HttpClient authenticate preemptively by pre-populating
+  authentication data cache.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-883] SO_TIMEOUT is not reset on persistent (re-used) connections.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-832] Distinguish cookie format errors from violations of
+  restrictions imposed by a cookie specification. In the latter case
+  CookieRestrictionViolationException will be thrown.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-523] Support for SPNEGO authentication scheme.
+  Contributed by Matthew Stevenson <mavricknzwork at yahoo.com>
+
+* Simplified configuration of connection managers. Total connection maximum
+  and maximum connection per route limits can be set using methods of
+  the class instead of HTTP parameters.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Added parameters to define the order of preference for supported auth
+  schemes for target host and proxy authentication.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-875] DefaultClientConnectionOperator#openConnection doesn't
+  update the connection state if the connection socket changed after
+  the call to SocketFactory#connectSocket().
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-834] Transparent content encoding support.
+  Contributed by James Abley <james.abley at gmail.com>
+
+Release 4.0.1
+-------------------
+
+This is a bug fix release that addresses a number of issues discovered since
+the previous stable release. None of the fixed bugs is considered critical.
+Most notably this release eliminates eliminates dependency on JCIP annotations.
+
+This release is also expected to improve performance by 5 to 10% due to
+elimination of unnecessary Log object lookups by short-lived components.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-895] Eliminated Log lookups in short lived objects impairing
+  performance.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-885] URLEncodedUtils now correctly parses form-url-encoded
+  entities that specify a charset.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-884] UrlEncodedFormEntity now sets charset on the Content-Type
+  header.
+  Contributed by Jared Jacobs <jmjacobs at cs.stanford.edu>
+
+* [HTTPCLIENT-883] SO_TIMEOUT is not reset on persistent (re-used) connections.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-882] Auth state is now correctly updated if a successful NTLM
+  authentication results in a redirect. This is a minor bug as HttpClient
+  manages to recover from the problem automatically.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-881] Fixed race condition in AbstractClientConnAdapter that makes
+  it possible for an aborted connection to be returned to the pool.
+  Contributed by Tim Boemker <tboemker at elynx.com> and
+  Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-866] Removed dependency on jcip-annotations.jar.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+  and Sebastian Bazley <sebb at apache.org>
+
+
+Release 4.0
+-------------------
+
+HttpClient 4.0 represents a complete, ground-up redesign and almost a complete
+rewrite of the HttpClient 3.x codeline. This release finally addresses several
+design flaws that existed since the 1.0 release and could not be fixed without
+a major code overhaul and breaking API compatibility.
+
+
+Architectural changes
+---------------------
+
+* Redesign of the HttpClient internals addressing all known major
+  architectural shortcomings of the 3.x codeline.
+
+* Cleaner, more flexible and expressive API.
+
+* More modular structure.
+
+* Better performance and smaller memory footprint due to a more efficient HTTP
+  transport based on HttpCore.
+
+* Implementation of cross-cutting HTTP protocol aspects through protocol
+  interceptors.
+
+* Improved connection management, better handling of persistent connections,
+  support for stateful connections
+
+* Pluggable redirect and authentication handlers.
+
+* Improved support for sending requests via a proxy or a chain of proxies
+
+* More flexible SSL context customization
+
+* Reduced intermediate garbage in the process of generating HTTP requests
+  and parsing HTTP responses
+
+
+Important notes
+-------------------
+
+* Future releases of HttpMime module may be binary incompatible with this
+  release due to possible API changes in Apache Mime4J. Apache Mime4J is
+  still being actively developed and its API is considered unstable.
+
+* HttpClient 4.0 is not fully binary compatible with 4.0 BETA1 release.
+  Some protected variables in connection management class have been
+  made final in order to help ensure their thread safety:
+
+    org.apache.http.conn.BasicEofSensorWatcher#attemptReuse
+    org.apache.http.conn.BasicEofSensorWatcher#managedConn
+    org.apache.http.impl.conn.DefaultClientConnectionOperator#schemeRegistry
+    org.apache.http.impl.conn.DefaultHttpRoutePlanner#schemeRegistry
+    org.apache.http.impl.conn.ProxySelectorRoutePlanner#schemeRegistry
+    org.apache.http.impl.conn.SingleClientConnManager#alwaysShutDown
+    org.apache.http.impl.conn.SingleClientConnManager#connOperator
+    org.apache.http.impl.conn.SingleClientConnManager#schemeRegistry
+    org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager#connOperator
+    org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager#schemeRegistry
+
+
+Bug fixes since 4.0 BETA2 release
+-------------------
+
+* [HTTPCLIENT-861] URIUtils#resolve is now compatible with all examples given
+  in RFC 3986.
+  Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de>
+
+* [HTTPCLIENT-860] HttpClient no longer converts redirects of PUT/POST to GET
+  for status codes 301, 302, 307, as required by the HTTP spec.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-859] CookieIdentityComparator now takes path attribute into
+  consideration when comparing cookies.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* HttpClient will no longer send expired cookies back to the origin server.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-856] Proxy NTLM authentication no longer fails on a redirect to
+  a different host.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-841] Removed automatic connection release using garbage collection
+  due to a memory leak.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-853] Fixed bug causing invalid cookie origin port to be selected
+  when the target is accessed on the default port and the connection is
+  established via a proxy.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-852] Fixed bug causing automatically retried redirects fail with
+  CircularRedirectException.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Fixed problem with the default HTTP response parser failing to handle garbage
+  preceding a valid HTTP response.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* NonRepeatableRequestExceptions now include the cause that the original
+  request failed.
+  Contributed by Sam Berlin <sberlin at apache.org>
+
+* [HTTPCLIENT-837] Fixed problem with the wire log skipping zero byte values
+  if read one byte at a time.
+  Contributed by Kirill Safonov <ksafonov at swiftteams.com>
+
+* [HTTPCLIENT-823] 'http.conn-manager.max-total' parameter can be adjusted
+  dynamically. However, the size of existing connection pools per route,
+  once allocated, will not be adjusted.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-822] Default socket factories to rethrow SocketTimeoutException
+  as ConnectTimeoutException in case of connect failure due to a time out.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-813] Fixed default port resolution. Invalid ports no longer
+  get replaced with the default port value.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+Release 4.0 beta 2
+-------------------
+
+BETA2 is a maintenance release, which addresses a number of issues
+discovered since the previous release.
+
+The only significant new feature is an addition of an OSGi compliant
+bundle combining HttpClient and HttpMime jars.
+
+All upstream projects are strongly encouraged to upgrade.
+
+* Fixed NPE in DefaultRequestDirector thrown when retrying a failed
+  request over a proxied connection.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-803] Fixed bug in SSL host verifier implementations
+  causing the SSL certificate to be rejected as invalid if the connection
+  is established using an IP address.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-806] DefaultHttpMethodRetryHandler will no longer retry
+  on ConnectExceptions.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* DigestScheme can use an arbitrary digest algorithm requested by the
+  target server (such as SHA) as long as this algorithm is supported by
+  the Java runtime.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Fixed parsing and validation of RFC2109 compliant Set-Cookie headers
+  by the Best-Match cookie spec.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Fixed bug that can cause a managed connection to be returned from the
+  pool in an inconsistent state.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+
+4.0 Beta 1
+-------------------
+
+BETA1 release brings yet another round of API enhancements and
+improvements in the area of connection management. Among the most notable
+ones is the capability to handle stateful connections such as persistent
+NTLM connections and private key authenticated SSL connections.
+
+This is the first API stable release of HttpClient 4.0. All further
+releases in the 4.0 code line will maintain API compatibility with this
+release.
+
+There has been a number of important bug fixes since ALPHA4. All upstream
+projects are encouraged to upgrade to the latest release.
+
+Please note HttpClient currently provides only limited support for NTLM
+authentication. For details please see NTLM_SUPPORT.txt.
+
+-------------------
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-790] Protocol interceptors are now correctly invoked when
+  executing CONNECT methods.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-668] Do not use static loggers.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-781] Respect Keep-Alive header's timeout value.
+  Contributed by Sam Berlin <sberlin at apache.org>
+
+* [HTTPCLIENT-779] Top-level classes (HttpClient, and HttpGet, HttpPut
+  and similar HttpMethods) throw fewer checked exceptions.
+  Contributed by Sam Berlin <sberlin at apache.org>
+
+* HttpClient will throw an exception if an attempt is made to retry
+  a request with a non-repeatable request entity.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Fixed request re-generation logic when retrying a failed request.
+  Auto-generated headers will no accumulate.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-424] Preemptive authentication no longer limited to BASIC
+  scheme only. HttpClient can be customized to authenticate preemptively
+  with DIGEST scheme.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-670] Pluggable hostname resolver.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-719] Clone support for HTTP request and cookie objects.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-776] Fixed concurrency issues with AbstractPoolEntry.
+  Contributed by Sam Berlin <sberlin at gmail.com>
+
+* Resolved a long standing problem with HttpClient not taking into account
+  the user context when pooling / re-using connections. HttpClient now
+  correctly handles stateful / user specific connections such as persistent
+  NTLM connections and SSL connections with client side authentication.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-773] Improved handling of the 'expires' attribute by the
+  'Best Match' cookie spec.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Partial NTLM support (requires an external NTLM engine). For details see
+  NTLM_SUPPORT.txt
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* Redesigned local execution context management.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+--------------------------------------
+
+Release 4.0 Alpha 4
+-------------------
+
+ALPHA4 marks the completion of the overhaul of the connection management
+code in HttpClient. All known shortcomings of the old HttpClient 3.x
+connection management API have been addressed.
+
+NTLM authentication remains the only missing major feature in the new
+codeline that prevents us from moving awards the API freeze.
+
+There has been a number of important bug fixes since ALPHA3. All upstream
+projects are encouraged to upgrade to the latest release.
+
+-------------------
+
+HttpClient 3.x features that have NOT yet been ported:
+-------------------
+
+* NTLM authentication scheme
+
+-------------------
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-765] String.toLowerCase() / toUpperCase() should specify
+  Locale.ENGLISH
+  Contributed by Sebastian Bazley <sebb at apache.org>
+
+* [HTTPCLIENT-769] Do not pool connection marked non-reusable.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-763] Fixed problem with AbstractClientConnAdapter#abortConnection()
+  not releasing the connection if called from the main execution thread while
+  there is no blocking I/O operation.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-652] Added optional state attribute to managed client connections.
+  This enables connection managers to correctly handle stateful connections.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-673] Revised max connections per route configuration
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-753] Class Scheme and related classes moved to a separate package
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-757] Improved request wrapping in the DefaultClientRequestDirector.
+  This also fixed the problem with the default proxy set at the client level
+  having no effect.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-734] Request abort will unblock the thread waiting for a connection
+  Contributed by Sam Berlin <sberlin at gmail.com>
+
+* [HTTPCLIENT-759] Ensure release of connections back to the connection manager
+  on exceptions.
+  Contributed by Sam Berlin <sberlin at gmail.com>
+
+* [HTTPCLIENT-758] Fixed the use of generics in AbstractHttpClient
+  #removeRequestInterceptorByClass and #removeResponseInterceptorByClass
+  Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de>
+
+* [HTTPCLIENT-749] HttpParams beans
+  Contributed by Stojce Dimski <sdmiski at yahoo.it>
+
+* [HTTPCLIENT-755] Workaround for known bugs in java.net.URI.resolve()
+  Bug ID: 4708535
+  Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de>
+
+--------------------------------------
+
+Release 4.0 Alpha 3
+-------------------
+
+ALPHA3 release brings another round of API refinements and improvements in
+functionality. As of this release HttpClient requires Java 5 compatible
+runtime environment and takes full advantage of generics and new concurrency
+primitives.
+
+This release also introduces new default cookie policy that selects a cookie
+specification depending on the format of cookies sent by the target host.
+It is no longer necessary to know beforehand what kind of HTTP cookie support
+the target host provides. HttpClient is now able to pick up either a lenient
+or a strict cookie policy depending on the compliance level of the target host.
+
+Another notable improvement is a completely reworked support for multipart
+entities based on Apache mime4j library.
+
+-------------------
+
+HttpClient 3.x features that have NOT yet been ported:
+-------------------
+
+* NTLM authentication scheme
+
+-------------------
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-742] common interface for HttpRoute and RouteTracker
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-741] Fixed concurrency issues in AbstractClientConnAdapter.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-726] testcase for spurious wakeups in ThreadSafeClientConnManager
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-643] Automatic connect fail-over for multi-home remote servers.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-735] unsetting of DEFAULT_PROXY and FORCED_ROUTE in hierarchies
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-723] route planner based on java.net.ProxySelector
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-740] don't start connection GC thread in pool constructor
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-736] route planners use SchemeRegistry instead of ConnManager
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-730] Fixed rewriting of URIs containing escaped characters
+  Contributed by Sam Berlin <sberlin at gmail.com> and
+  Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-667] Added 'Meta' cookie policy that selects a cookie
+  specification depending on the format of the cookie(s).
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-729] Move HttpRoute and related classes to routing package.
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-725] Use TimeUnit arguments for timeouts in connection manager.
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-677] Connection manager no longer uses Thread.interrupt().
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-716] Allow application-defined routes.
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-712] Improve HttpRoute API
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-711] Bad route computed for redirected requests
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-715] Remove RoutedRequest from API
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-705] Fixed incorrect handling of URIs with null path component.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-688] HttpOptions#getAllowedMethods can now handle multiple
+  Allow headers.
+  Contributed by Andrea Selva <selva.andre at gmail.com>
+
+--------------------------------------
+
+Release 4.0 Alpha 2
+-------------------
+
+ALPHA2 release is another milestone in the redesign of HttpClient. It includes
+a number of improvements since ALPHA1, among which are improved connection
+pooling, support for proxy chains, redesigned HTTP state and authentication
+credentials management API, improved RFC 2965 cookie specification.
+
+-------------------
+
+HttpClient 3.x features that have NOT yet been ported
+-------------------
+* NTLM authentication scheme
+
+* Support for multipart MIME coded entities
+
+-------------------
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-698] Resolve non-absolute redirect URIs relative to
+  the request URI
+  Contributed by Johannes Koch <johannes.koch at fit.fraunhofer.de>
+
+* [HTTPCLIENT-697] Throw a more intelligible exception when connection
+  to a remote host cannot be established.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-689] Caching of SimpleDateFormat in DateUtils
+  Contributed by Daniel Müller <strider at digitalstrider.com>
+
+* [HTTPCLIENT-689] stackable parameters in AbstractHttpClient
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-477] Use distinct instances of the authentication handler
+  interface for authentication with target and proxy hosts
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-690] ManagedClientConnection provides access to SSLSession
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-692] ClientConnectionManager throws InterruptedException
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCORE-116] moved parameter names to interfaces
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-649] support for proxy chains in HttpConn
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-636] refactor ThreadSafeClientConnManager in separate package
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-669] new HttpRoutePlanner interface and implementation
+  Contributed by Andrea Selva <selva.andre at gmail.com>
+
+* [HTTPCLIENT-653] detached connection wrapper no longer prevents
+  garbage collection of ThreadSafeClientConnManager
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-674] use org.apache.http.util.VersionInfo instead of a local one
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-666] Replaced HttpState with CredentialsProvier and CookieStore interfaces
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCORE-100] revised HttpContext hierarchy
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-618] eliminate class HostConfiguration
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-672] re-sync with API changes in core alpha6-SNAPSHOT
+  Contributed by Roland Weber <rolandw at apache.org>
+
+--------------------------------------
+
+Release 4.0 Alpha 1
+-------------------
+
+HttpClient 4.0 represents a complete, ground-up redesign and almost a complete
+rewrite of the HttpClient 3.x codeline. This release finally addresses several
+design flaws that existed since the 1.0 release and could not be fixed without
+a major code overhaul and breaking API compatibility.
+
+The HttpClient 4.0 API is still very experimental and is bound to change
+during the course of the ALPHA development phase. Several important features
+have not yet been ported to the new API.
+
+Architectural changes
+---------------------
+
+* Redesign of the HttpClient internals addressing all known
+  major architectural shortcomings of the 3.x codeline
+
+* Cleaner, more flexible and expressive API
+
+* Better performance and smaller memory footprint due to a more
+  efficient HTTP transport based on HttpCore. HttpClient 4.0 is
+  expected to be 10% to 25% faster than HttpClient 3.x codeline
+
+* More modular structure
+
+* Pluggable redirect and authentication handlers
+
+* Support for protocol incerceptors
+
+* Improved connection management
+
+* Improved support for sending requests via a proxy or a chain of
+  proxies
+
+* Improved handling redirects of entity enclosing requests
+
+* More flexible SSL context customization
+
+* Reduced intermediate garbage in the process of
+  generating HTTP requests and parsing HTTP responses
+
+-------------------
+
+HttpClient 3.x features that have NOT yet been ported
+-------------------
+* NTLM authentication scheme
+
+* RFC2965 cookie policy (Cookie2)
+
+* Support for multipart MIME coded entities
+
+-------------------
+
+Changelog
+-------------------
+
+The following is a list of contributions tracked in JIRA.
+Note that this is not a complete list of contributions or changes.
+Since the API was redesigned completely, tracking everything outside
+of the source code repository would have been too burdensome.
+
+* [HTTPCLIENT-655] User-Agent string no longer violates RFC
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-541] Virtual host API redesign
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-614] Allow for different strategies when checking
+  CN of x509 certificates
+  Contributed by Julius Davies <juliusdavies at gmail.com>
+
+* [HTTPCLIENT-136] Fixed inadequate proxy support
+  Long standing architectural problem. Issue opened on 19/Dec/2002.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-63] Support for pluggable redirect and authentication handlers
+  Long standing architectural problem. Issue opened on 15/Jul/2002.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-245] Fixed redirect handling. HttpClient can now automatically
+  handle redirects of entity enclosing requests.
+  Long standing architectural problem. Issue opened on 14/Jul/2003.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-613] HTTPS connections now verify CN of x509 certificates
+  Contributed by Julius Davies <juliusdavies at gmail.com>
+
+* [HTTPCLIENT-497] Wire/header logger names consistent with class loggers
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-484] AuthSSLProtocolSocketFactory in the main distribution
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
+* [HTTPCLIENT-589] Do not consume the remaining response content if
+  the connection is to be closed
+  Contributed by Roland Weber <rolandw at apache.org>
+
+* [HTTPCLIENT-475] Support for unconnected sockets. HTTP requests can now be
+  aborted while network socket is still being connected.
+  Contributed by Roland Weber <rolandw at apache.org>
+

BIN
libs/httpcomponents-client-4.5.5/lib/commons-codec-1.10.jar


BIN
libs/httpcomponents-client-4.5.5/lib/commons-logging-1.2.jar


BIN
libs/httpcomponents-client-4.5.5/lib/fluent-hc-4.5.5.jar


BIN
libs/httpcomponents-client-4.5.5/lib/httpclient-4.5.5.jar


BIN
libs/httpcomponents-client-4.5.5/lib/httpclient-cache-4.5.5.jar


BIN
libs/httpcomponents-client-4.5.5/lib/httpclient-win-4.5.5.jar


BIN
libs/httpcomponents-client-4.5.5/lib/httpcore-4.4.9.jar


BIN
libs/httpcomponents-client-4.5.5/lib/httpmime-4.5.5.jar


BIN
libs/httpcomponents-client-4.5.5/lib/jna-4.4.0.jar


BIN
libs/httpcomponents-client-4.5.5/lib/jna-platform-4.4.0.jar


+ 3 - 2
src/main/java/cn/minbb/iot/config/Const.java

@@ -1,6 +1,7 @@
 package cn.minbb.iot.config;
 
 public class Const {
-    public static final String MQTT_TOPIC_ALL = "/iot/all";
-    public static final String MQTT_TOPIC_CAR = "/iot/car";
+    public static final String MQTT_TOPIC_ALL = "iot.all";
+    public static final String MQTT_TOPIC_CAR = "iot.car";
+    public static final String MQTT_TOPIC_CAR_CTRL = "iot.car.ctrl";
 }

+ 13 - 0
src/main/java/cn/minbb/iot/data/Response.java

@@ -0,0 +1,13 @@
+package cn.minbb.iot.data;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class Response {
+
+    private String Result;
+
+    private String RequestId;
+}

+ 55 - 0
src/main/java/cn/minbb/iot/model/Device.java

@@ -0,0 +1,55 @@
+package cn.minbb.iot.model;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "device")
+@NoArgsConstructor
+public class Device implements Serializable {
+
+    @Getter
+    @Setter
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false, columnDefinition = "INT COMMENT '设备实体ID'")
+    private Long id;
+
+    @Getter
+    @Setter
+    @Column(name = "name", nullable = false, columnDefinition = "VARCHAR(64) COMMENT '名称'")
+    private String name;
+
+    @Getter
+    @Setter
+    @Column(name = "serial_number", nullable = false, columnDefinition = "VARCHAR(64) COMMENT '序列号'")
+    private String serialNumber;
+
+    @Getter
+    @Setter
+    @Column(name = "user_id", nullable = false, columnDefinition = "BIGINT COMMENT '关联用户'")
+    private Long userId;
+
+    @Getter
+    @Setter
+    @Column(name = "created_at", columnDefinition = "DATETIME COMMENT '创建时间'")
+    @CreationTimestamp
+    private Date createdAt;
+
+    @Getter
+    @Setter
+    @Column(name = "updated_at", columnDefinition = "DATETIME COMMENT '更新时间'")
+    @UpdateTimestamp
+    private Date updatedAt;
+
+    @Version
+    @Column(name = "version", columnDefinition = "BIGINT COMMENT '版本号'")
+    public Long version;
+}

+ 85 - 0
src/main/java/cn/minbb/iot/model/DeviceData.java

@@ -0,0 +1,85 @@
+package cn.minbb.iot.model;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "device_data")
+@NoArgsConstructor
+public class DeviceData implements Serializable {
+
+    @Getter
+    @Setter
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false, columnDefinition = "INT COMMENT '设备数据实体ID'")
+    private Long id;
+
+    @Getter
+    @Setter
+    @Column(name = "temperature", columnDefinition = "FLOAT COMMENT '温度'")
+    private Float temperature;
+
+    @Getter
+    @Setter
+    @Column(name = "pressure", columnDefinition = "FLOAT COMMENT '压强'")
+    private Float pressure;
+
+    @Getter
+    @Setter
+    @Column(name = "altitude", columnDefinition = "FLOAT COMMENT '海拔'")
+    private Float altitude;
+
+    @Getter
+    @Setter
+    @Column(name = "latitude", columnDefinition = "VARCHAR(16) COMMENT '纬度'")
+    private String latitude;
+
+    @Getter
+    @Setter
+    @Column(name = "longitude", columnDefinition = "VARCHAR(16) COMMENT '经度'")
+    private String longitude;
+
+    @Getter
+    @Setter
+    @Column(name = "speed", columnDefinition = "FLOAT COMMENT '速度'")
+    private Float speed;
+
+    @Getter
+    @Setter
+    @Column(name = "gps_time", columnDefinition = "FLOAT COMMENT 'GPS时间'")
+    private Float gpsTime;
+
+    @Getter
+    @Setter
+    @Column(name = "bei_jing_time", columnDefinition = "INTEGER COMMENT '北京时间'")
+    private Integer beiJingTime;
+
+    @Getter
+    @Setter
+    @Column(name = "device_id", nullable = false, columnDefinition = "BIGINT COMMENT '关联设备'")
+    private Long deviceId;
+
+    @Getter
+    @Setter
+    @Column(name = "created_at", columnDefinition = "DATETIME COMMENT '创建时间'")
+    @CreationTimestamp
+    private Date createdAt;
+
+    @Getter
+    @Setter
+    @Column(name = "updated_at", columnDefinition = "DATETIME COMMENT '更新时间'")
+    @UpdateTimestamp
+    private Date updatedAt;
+
+    @Version
+    @Column(name = "version", columnDefinition = "BIGINT COMMENT '版本号'")
+    public Long version;
+}

+ 71 - 0
src/main/java/cn/minbb/iot/model/User.java

@@ -0,0 +1,71 @@
+package cn.minbb.iot.model;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+@Entity
+@Table(name = "user")
+@NoArgsConstructor
+public class User implements Serializable {
+
+    @Getter
+    @Setter
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id", nullable = false, columnDefinition = "INT COMMENT '用户实体ID'")
+    private Long id;
+
+    @Getter
+    @Setter
+    @Column(name = "username", nullable = false, columnDefinition = "VARCHAR(64) COMMENT '用户名'")
+    private String username;
+
+    @Getter
+    @Setter
+    @Column(name = "password", nullable = false, columnDefinition = "VARCHAR(64) COMMENT '密码'")
+    private String password;
+
+    @Getter
+    @Setter
+    @Column(name = "name", columnDefinition = "VARCHAR(64) COMMENT '姓名'")
+    private String name;
+
+    @Getter
+    @Setter
+    @Column(name = "avatar", columnDefinition = "VARCHAR(255) COMMENT '头像'")
+    private String avatar;
+
+    @Getter
+    @Setter
+    @Column(name = "phone", columnDefinition = "VARCHAR(16) COMMENT '手机号'")
+    private String phone;
+
+    @Getter
+    @Setter
+    @Column(name = "created_at", columnDefinition = "DATETIME COMMENT '创建时间'")
+    @CreationTimestamp
+    private Date createdAt;
+
+    @Getter
+    @Setter
+    @Column(name = "updated_at", columnDefinition = "DATETIME COMMENT '更新时间'")
+    @UpdateTimestamp
+    private Date updatedAt;
+
+    @Version
+    @Column(name = "version", columnDefinition = "BIGINT COMMENT '版本号'")
+    public Long version;
+
+    public User(@NotNull String username, @NotNull String password) {
+        this.username = username;
+        this.password = password;
+    }
+}

+ 7 - 0
src/main/java/cn/minbb/iot/model/repository/DeviceDataRepository.java

@@ -0,0 +1,7 @@
+package cn.minbb.iot.model.repository;
+
+import cn.minbb.iot.model.DeviceData;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface DeviceDataRepository extends JpaRepository<DeviceData, Long> {
+}

+ 7 - 0
src/main/java/cn/minbb/iot/model/repository/DeviceRepository.java

@@ -0,0 +1,7 @@
+package cn.minbb.iot.model.repository;
+
+import cn.minbb.iot.model.Device;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface DeviceRepository extends JpaRepository<Device, Long> {
+}

+ 8 - 0
src/main/java/cn/minbb/iot/model/repository/UserRepository.java

@@ -0,0 +1,8 @@
+package cn.minbb.iot.model.repository;
+
+import cn.minbb.iot.model.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserRepository extends JpaRepository<User, Long> {
+    User findOneByUsername(String username);
+}

+ 271 - 0
src/main/java/cn/minbb/iot/sdk/RASRsdk.java

@@ -0,0 +1,271 @@
+package cn.minbb.iot.sdk;
+
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Base64;
+import java.util.Map;
+import java.util.Random;
+import java.util.TreeMap;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 实时语音识别 SDK
+ */
+public class RASRsdk {
+    private static String secret_key, secretid, appid, engine_model_type, res_type, result_text_format, voice_format, filepath, template_name;
+    private static int cutlength;
+
+    private static String generateUrl(String serverUrl, Map<String, String> mapReq) {
+        StringBuilder strBuilder = new StringBuilder(serverUrl);
+
+        if (mapReq.containsKey("appid")) {
+            strBuilder.append(mapReq.get("appid"));
+        }
+
+        strBuilder.append('?');
+
+        // to make that all the parameters are sorted by ASC order
+        TreeMap<String, String> sortedMap = new TreeMap(mapReq);
+
+        for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
+            if (entry.getKey().equals("appid")) {
+                continue;
+            }
+            strBuilder.append(entry.getKey());
+            strBuilder.append('=');
+            strBuilder.append(entry.getValue());
+            strBuilder.append('&');
+        }
+
+        if (mapReq.size() > 0) {
+            strBuilder.setLength(strBuilder.length() - 1);
+        }
+
+        return strBuilder.toString();
+    }
+
+    private static String base64_hmac_sha1(String value, String keyStr) {
+        String encoded = "";
+        String type = "HmacSHA1";
+        try {
+            byte[] key = (keyStr).getBytes("UTF-8");
+            byte[] Sequence = (value).getBytes("UTF-8");
+
+            Mac HMAC = Mac.getInstance(type);
+            SecretKeySpec secretKey = new SecretKeySpec(key, type);
+
+            HMAC.init(secretKey);
+            byte[] Hash = HMAC.doFinal(Sequence);
+
+            encoded = Base64.getEncoder().encodeToString(Hash);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return encoded;
+    }
+
+    /*
+     * UNIXEpoch 时间�?
+     */
+    private static String toUNIXEpoch() {
+        long unixTime = System.currentTimeMillis() / 1000L;
+        return unixTime + "";
+    }
+
+    /*
+     * ExpiredUNIXEpoch 时间�?
+     */
+    private static String toExpiredUNIXEpoch() {
+        long unixTime = System.currentTimeMillis() / 1000L + 24 * 60 * 60;
+        return unixTime + "";
+    }
+
+    private static String getNonce() {
+        Random random = new Random(System.currentTimeMillis());
+        return random.nextInt(10000) + "";
+    }
+
+    private static String createSign(String serverUrl, String secretKey) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
+        String strToBeEncoded = "POST" + serverUrl.substring(7);
+        //System.out.println("String to be encoded: " + strToBeEncoded);
+        return base64_hmac_sha1(strToBeEncoded, secretKey);
+    }
+
+    private static String getRandomString(int length) {
+        //定义一个字符串(A-Z,a-z,0-9)即62位;
+        String str = "zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
+        //由Random生成随机数
+        Random random = new Random();
+        StringBuffer sb = new StringBuffer();
+        //长度为几就循环几次
+        for (int i = 0; i < length; ++i) {
+            //产生0-61的数字
+            int number = random.nextInt(62);
+            //将产生的数字通过length次承载到sb中
+            sb.append(str.charAt(number));
+        }
+        //将承载的字符转换成字符串
+        return sb.toString();
+    }
+
+    public static int setConfig(
+            String secret_key,
+            String secretid,
+            String appid,
+            String engine_model_type,
+            String res_type,
+            String result_text_format,
+            String voice_format,
+            String filepath,
+            int cutlength
+    ) {
+        return RASRsdk.setConfig(secret_key, secretid, appid, engine_model_type, res_type, result_text_format, voice_format, filepath, cutlength, "");
+    }
+
+    public static int setConfig(
+            String secret_key,
+            String secretid,
+            String appid,
+            String engine_model_type,
+            String res_type,
+            String result_text_format,
+            String voice_format,
+            String filepath,
+            int cutlength,
+            String template_name
+
+    ) {
+
+        if (secret_key.length() <= 0) {
+            System.out.println("secret_key can not be empty!");
+            return -1;
+        }
+        if (secretid.length() <= 0) {
+            System.out.println("secretid can not be empty!");
+            return -1;
+        }
+        if (appid.length() <= 0) {
+            System.out.println("appid can not be empty!");
+            return -1;
+        }
+        if (engine_model_type.length() <= 0 || (engine_model_type.compareTo("8k_0") != 0 && engine_model_type.compareTo("16k_0") != 0)) {
+            System.out.println("engine_model_type is not vailed!");
+            return -1;
+        }
+        if (res_type.length() <= 0 || (res_type.compareTo("0") != 0 && res_type.compareTo("1") != 0)) {
+            System.out.println("res_type is not vailed!");
+            return -1;
+        }
+        if (result_text_format.length() <= 0 || (result_text_format.compareTo("0") != 0 && result_text_format.compareTo("1") != 0 &&
+                result_text_format.compareTo("2") != 0 && result_text_format.compareTo("3") != 0)) {
+            System.out.println("result_text_format is not vailed!");
+            return -1;
+        }
+        if (voice_format.length() <= 0 || (voice_format.compareTo("1") != 0 && voice_format.compareTo("4") != 0 && voice_format.compareTo("6") != 0)) {
+            System.out.println("voice_format is not vailed!");
+            return -1;
+        }
+        if (filepath.length() <= 0) {
+            System.out.println("filepath can not be empty!");
+            return -1;
+        }
+        if (cutlength < 0 || cutlength > 200000) {
+            System.out.println("cutlength is not vailed!");
+            return -1;
+        }
+        RASRsdk.secret_key = secret_key;
+        RASRsdk.secretid = secretid;
+        RASRsdk.appid = appid;
+        RASRsdk.engine_model_type = engine_model_type;
+        RASRsdk.res_type = res_type;
+        RASRsdk.result_text_format = result_text_format;
+        RASRsdk.voice_format = voice_format;
+        RASRsdk.filepath = filepath;
+        RASRsdk.cutlength = cutlength;
+        RASRsdk.template_name = template_name;
+
+        return 0;
+    }
+
+    public static int sendVoice() {
+        Map<String, String> reqMap = new TreeMap();
+        reqMap.put("appid", appid);
+        reqMap.put("secretid", secretid);
+        reqMap.put("projectid", "1013976");
+        if (template_name.compareTo("") != 0) {
+            reqMap.put("template_name", template_name);
+        }
+        reqMap.put("sub_service_type", "1");
+        reqMap.put("engine_model_type", engine_model_type);
+        reqMap.put("res_type", res_type);
+        reqMap.put("result_text_format", result_text_format);
+        reqMap.put("voice_id", getRandomString(16));
+        reqMap.put("timeout", "20000");
+        reqMap.put("source", "0");
+        reqMap.put("voice_format", voice_format);
+        reqMap.put("timestamp", toUNIXEpoch());
+        reqMap.put("expired", toExpiredUNIXEpoch());
+        reqMap.put("nonce", getNonce());
+        FileInputStream fileInputStream = null;
+        long starttime = System.currentTimeMillis();
+        try {
+            fileInputStream = new FileInputStream(new File(filepath));
+            byte[] dataPacket = new byte[cutlength];
+            CloseableHttpClient httpclient = HttpClients.createDefault();
+            int seq = 0, end = 0, n = 0;
+            while (true) {
+                n = fileInputStream.read(dataPacket);
+                if (n == cutlength || (n < cutlength && end == 0)) {
+                    if (n < cutlength) {
+                        n = (n >> 2) << 2;
+                        end = 1;
+                    }
+                    //System.out.println("n :" + n);
+                    reqMap.put("seq", seq + "");
+                    reqMap.put("end", end + "");
+                    //1、serverUrl
+                    String _url = "http://aai.qcloud.com/asr/v1/";
+                    String serverUrl = generateUrl(_url, reqMap);
+                   //System.out.println("Server URL: " + serverUrl);
+                    //2、设置header
+                    String authinfo = createSign(serverUrl, secret_key);
+                    //System.out.println("签名: " + authinfo);
+                    HttpPost hpost = new HttpPost(serverUrl);
+                    hpost.setHeader("Authorization", authinfo);
+                    hpost.setHeader("Content-Type", "application/octet-stream");
+                    hpost.setEntity(new ByteArrayEntity(dataPacket));
+                    CloseableHttpResponse response = httpclient.execute(hpost);
+                    try {
+                        //System.out.println("----------------------------------------");
+                        //System.out.println(response.getStatusLine());
+                        System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));
+                    } finally {
+                        response.close();
+                    }
+                    seq++;
+                } else {
+                    break;
+                }
+                TimeUnit.MILLISECONDS.sleep(10);
+            }
+            httpclient.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        long endtime = System.currentTimeMillis();
+        System.out.println("程序运行时间为:" + (endtime - starttime) / 1000 + "秒!");
+        return 0;
+    }
+}

+ 269 - 0
src/main/java/cn/minbb/iot/sdk/SASRsdk.java

@@ -0,0 +1,269 @@
+package cn.minbb.iot.sdk;
+
+import cn.minbb.iot.data.Response;
+import com.alibaba.fastjson.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.Base64;
+import java.util.Map;
+import java.util.Random;
+import java.util.TreeMap;
+
+/**
+ * 一句话语音识别 SDK
+ */
+public class SASRsdk {
+    private static Logger logger = LoggerFactory.getLogger(SASRsdk.class);
+
+    private static String SecretId, SecretKey, EngSerViceType, SourceType, VoiceFormat, fileURI;
+
+    public static String formSignstr(String serverUrl, Map<String, String> mapReq) {
+        StringBuilder strBuilder = new StringBuilder(serverUrl);
+
+        // to make that all the parameters are sorted by ASC order
+        TreeMap<String, String> sortedMap = new TreeMap(mapReq);
+
+        for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
+            strBuilder.append(entry.getKey());
+            strBuilder.append('=');
+            strBuilder.append(entry.getValue());
+            strBuilder.append('&');
+        }
+
+        if (mapReq.size() > 0) {
+            strBuilder.setLength(strBuilder.length() - 1);
+        }
+
+        //System.out.println("sign str: " + strBuilder);
+
+        return strBuilder.toString();
+    }
+
+    public static String formPostbody(Map<String, String> mapReq) {
+        StringBuilder stringBuilder = new StringBuilder();
+        // to make that all the parameters are sorted by ASC order
+        TreeMap<String, String> sortedMap = new TreeMap(mapReq);
+        for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
+            try {
+                stringBuilder.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
+                stringBuilder.append('=');
+                stringBuilder.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
+                stringBuilder.append('&');
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        }
+        return stringBuilder.toString();
+    }
+
+    public static String base64_hmac_sha1(String value, String keyStr) {
+        String encoded = "";
+        String type = "HmacSHA1";
+        try {
+            byte[] key = (keyStr).getBytes("UTF-8");
+            byte[] Sequence = (value).getBytes("UTF-8");
+
+            Mac HMAC = Mac.getInstance(type);
+            SecretKeySpec secretKey = new SecretKeySpec(key, type);
+
+            HMAC.init(secretKey);
+            byte[] Hash = HMAC.doFinal(Sequence);
+
+            encoded = Base64.getEncoder().encodeToString(Hash);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return encoded;
+    }
+
+    /*
+     * 获得unix时间戳
+     */
+    public static String toUNIXEpoch() {
+        long unixTime = System.currentTimeMillis() / 1000L;
+        return unixTime + "";
+    }
+
+    /*
+     * 生成随机nonce
+     */
+    public static String toUNIXNonce() {
+        long unixTime = System.currentTimeMillis() / 1000L;
+        String str = unixTime + "";
+        String nonce = str.substring(0, 4);
+        return nonce;
+    }
+
+    public static String createSign(String signStr, String secretKey) {
+        return base64_hmac_sha1(signStr, secretKey);
+    }
+
+    private static String getRandomString(int length) {
+        //定义一个字符串(A-Z,a-z,0-9)即62位;
+        String str = "zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
+        //由Random生成随机数
+        Random random = new Random();
+        StringBuffer sb = new StringBuffer();
+        //长度为几就循环几次
+        for (int i = 0; i < length; ++i) {
+            //产生0-61的数字
+            int number = random.nextInt(62);
+            //将产生的数字通过length次承载到sb中
+            sb.append(str.charAt(number));
+        }
+        //将承载的字符转换成字符串
+        return sb.toString();
+    }
+
+    public static int setConfig(
+            String SecretId,
+            String SecretKey,
+            String EngSerViceType,
+            String SourceType,
+            String VoiceFormat,
+            String fileURI
+    ) {
+        if (SecretId.length() <= 0) {
+            System.out.println("SecretId can not be empty!");
+            return -1;
+        }
+        if (SecretKey.length() <= 0) {
+            System.out.println("SecretKey can not be empty!");
+            return -1;
+        }
+        if (EngSerViceType.length() <= 0 || (EngSerViceType.compareTo("8k") != 0 && EngSerViceType.compareTo("16k") != 0)) {
+            System.out.println("EngSerViceTyp is not valied !");
+            return -1;
+        }
+        if (SourceType.length() <= 0 || (SourceType.compareTo("0") != 0 && SourceType.compareTo("1") != 0)) {
+            System.out.println("SourceType is not valied !");
+            return -1;
+        }
+        if (VoiceFormat.length() <= 0 || (VoiceFormat.compareTo("mp3") != 0 && VoiceFormat.compareTo("wav") != 0)) {
+            System.out.println("VoiceFormat is not valied !");
+            return -1;
+        }
+        if (fileURI.length() <= 0) {
+            System.out.println("fileURI can not be empty!");
+            return -1;
+        }
+        SASRsdk.SecretId = SecretId;
+        SASRsdk.SecretKey = SecretKey;
+        SASRsdk.EngSerViceType = EngSerViceType;
+        SASRsdk.SourceType = SourceType;
+        SASRsdk.VoiceFormat = VoiceFormat;
+        SASRsdk.fileURI = fileURI;
+        return 0;
+    }
+
+    public static int sendVoice() {
+        Map<String, String> reqMap = new TreeMap();
+        reqMap.put("Action", "SentenceRecognition");
+        reqMap.put("SecretId", SecretId);
+        reqMap.put("Timestamp", toUNIXEpoch());
+        reqMap.put("Nonce", toUNIXNonce());
+        reqMap.put("Version", "2018-05-22");
+        reqMap.put("ProjectId", "0");
+        reqMap.put("SubServiceType", "2");
+        reqMap.put("EngSerViceType", EngSerViceType);
+        reqMap.put("SourceType", SourceType);
+        if (SourceType.compareTo("0") == 0) {
+            try {
+                String Url = URLEncoder.encode(fileURI, "UTF-8");
+                reqMap.put("Url", Url);
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+        } else if (SourceType.compareTo("1") == 0) {
+            FileInputStream fileInputStream = null;
+            try {
+                fileInputStream = new FileInputStream(new File(fileURI));
+                int datalen = fileInputStream.available();
+                byte[] dataPacket = new byte[datalen];
+                int n = fileInputStream.read(dataPacket);
+                //System.out.println("n :"+n);
+                String Data = Base64.getEncoder().encodeToString(dataPacket);
+                String DataLen = datalen + "";
+                // System.out.println("data len: "+DataLen);
+                reqMap.put("Data", Data);
+                reqMap.put("DataLen", DataLen);
+
+
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else {
+            return -3;
+        }
+        reqMap.put("VoiceFormat", VoiceFormat);
+        String UsrAudioKey = getRandomString(16);
+        reqMap.put("UsrAudioKey", UsrAudioKey);
+        String _url = "POSTaai.tencentcloudapi.com/?";
+        String signstr = formSignstr(_url, reqMap);
+        // System.out.println("signstr: " + signstr);
+        String signing = createSign(signstr, SecretKey);
+        // System.out.println("签名: " + signing);
+        String tmppostdata = formPostbody(reqMap);
+        String sign = "";
+        try {
+            sign = URLEncoder.encode(signing, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        StringBuilder postdata = new StringBuilder(tmppostdata);
+        postdata.append("Signature=");
+        postdata.append(sign);
+        String post = postdata.toString();
+        //System.out.println("post : "+post);
+        String serverUrl = "https://aai.tencentcloudapi.com";
+
+        HttpURLConnection con = null;
+        StringBuilder sbResult = new StringBuilder();
+        try {
+            URL url = new URL(serverUrl);
+            con = (HttpURLConnection) url.openConnection();
+            con.setRequestMethod("POST");
+            con.setDoOutput(true);
+            con.setDoInput(true);
+            con.setUseCaches(false);
+            con.setRequestProperty("Host", "aai.tencentcloudapi.com");
+            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            con.setRequestProperty("Charset", "utf-8");
+
+            // 往服务器写入数据
+            OutputStream out = con.getOutputStream();
+            out.write(post.getBytes());
+            out.flush();
+
+            // 接收服务器返回的数据
+            InputStream in = con.getInputStream();
+            BufferedReader br = new BufferedReader(new InputStreamReader(in));
+            String line;// 每一行的数据
+            while ((line = br.readLine()) != null) {
+                sbResult.append(line);
+            }
+            // 数据解析
+            String data = sbResult.toString();
+            Response response = JSONObject.parseObject(JSONObject.parseObject(data).get("Response").toString(), Response.class);
+            // TODO: 2019.04.03
+            logger.info("SDK收到解析结果 = {}", data);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } finally {
+            if (con != null) {
+                con.disconnect();
+                con = null;
+            }
+        }
+
+        return 0;
+    }
+
+}

+ 4 - 0
src/main/java/cn/minbb/iot/service/DeviceDataService.java

@@ -0,0 +1,4 @@
+package cn.minbb.iot.service;
+
+public interface DeviceDataService {
+}

+ 4 - 0
src/main/java/cn/minbb/iot/service/DeviceService.java

@@ -0,0 +1,4 @@
+package cn.minbb.iot.service;
+
+public interface DeviceService {
+}

+ 9 - 0
src/main/java/cn/minbb/iot/service/UserService.java

@@ -0,0 +1,9 @@
+package cn.minbb.iot.service;
+
+import cn.minbb.iot.model.User;
+
+public interface UserService {
+    User saveOne(User user);
+
+    User findUserByUsername(String username);
+}

+ 8 - 0
src/main/java/cn/minbb/iot/service/impl/DeviceDataServiceImpl.java

@@ -0,0 +1,8 @@
+package cn.minbb.iot.service.impl;
+
+import cn.minbb.iot.service.DeviceDataService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DeviceDataServiceImpl implements DeviceDataService {
+}

+ 8 - 0
src/main/java/cn/minbb/iot/service/impl/DeviceServiceImpl.java

@@ -0,0 +1,8 @@
+package cn.minbb.iot.service.impl;
+
+import cn.minbb.iot.service.DeviceService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DeviceServiceImpl implements DeviceService {
+}

+ 26 - 0
src/main/java/cn/minbb/iot/service/impl/UserServiceImpl.java

@@ -0,0 +1,26 @@
+package cn.minbb.iot.service.impl;
+
+import cn.minbb.iot.model.User;
+import cn.minbb.iot.model.repository.UserRepository;
+import cn.minbb.iot.service.UserService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl implements UserService {
+
+    private UserRepository userRepository;
+
+    public UserServiceImpl(UserRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    @Override
+    public User saveOne(User user) {
+        return userRepository.save(user);
+    }
+
+    @Override
+    public User findUserByUsername(String username) {
+        return null == username ? null : userRepository.findOneByUsername(username);
+    }
+}

+ 0 - 1
src/main/java/cn/minbb/iot/task/AutoConfig.java

@@ -24,7 +24,6 @@ public class AutoConfig {
      */
     @Scheduled(fixedRate = 60000, initialDelay = 1000)
     public void scheduled() {
-        logger.info("Scheduled");
         mqttGateway.sendToMqtt("*", Const.MQTT_TOPIC_ALL, 2);
     }
 }