diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index f7e85ce..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -JavaWeb \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 7ce8ec9..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index feed645..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml b/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml deleted file mode 100644 index 9def50b..0000000 --- a/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_2.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_2.xml deleted file mode 100644 index 3899b74..0000000 --- a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_2.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_2.xml deleted file mode 100644 index 1018526..0000000 --- a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__com_alibaba_fastjson_1_2_32.xml b/.idea/libraries/Maven__com_alibaba_fastjson_1_2_32.xml deleted file mode 100644 index 3113e5e..0000000 --- a/.idea/libraries/Maven__com_alibaba_fastjson_1_2_32.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_6.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_6.xml deleted file mode 100644 index d84875e..0000000 --- a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_6.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_6.xml deleted file mode 100644 index 222a3df..0000000 --- a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_6.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_6.xml deleted file mode 100644 index d205026..0000000 --- a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml b/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml deleted file mode 100644 index 7efb86c..0000000 --- a/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_logging_commons_logging_1_1_3.xml b/.idea/libraries/Maven__commons_logging_commons_logging_1_1_3.xml deleted file mode 100644 index a4f22cd..0000000 --- a/.idea/libraries/Maven__commons_logging_commons_logging_1_1_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml b/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml deleted file mode 100644 index f26ba09..0000000 --- a/.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml b/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml deleted file mode 100644 index 0f3d28b..0000000 --- a/.idea/libraries/Maven__dom4j_dom4j_1_6_1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_0_1.xml b/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_0_1.xml deleted file mode 100644 index d2242d4..0000000 --- a/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_0_1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml b/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml deleted file mode 100644 index e36e142..0000000 --- a/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml deleted file mode 100644 index 5da0b5f..0000000 --- a/.idea/libraries/Maven__junit_junit_4_12.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_4.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_4.xml deleted file mode 100644 index 5ac09f7..0000000 --- a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_4.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_3.xml b/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_3.xml deleted file mode 100644 index b0909b2..0000000 --- a/.idea/libraries/Maven__org_apache_commons_commons_pool2_2_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml deleted file mode 100644 index e0b422d..0000000 --- a/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml b/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml deleted file mode 100644 index 1e1523e..0000000 --- a/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_4.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_52.xml b/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_52.xml deleted file mode 100644 index a88c794..0000000 --- a/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_52.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml deleted file mode 100644 index e273375..0000000 --- a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_2.xml b/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_2.xml deleted file mode 100644 index 07a49c4..0000000 --- a/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml deleted file mode 100644 index 7e6d4b3..0000000 --- a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_aop_4_0_5_RELEASE.xml deleted file mode 100644 index 9917443..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_aop_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_beans_4_0_5_RELEASE.xml deleted file mode 100644 index 0c530d7..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_beans_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_4_0_5_RELEASE.xml deleted file mode 100644 index 5013b04..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_context_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_support_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_context_support_4_0_5_RELEASE.xml deleted file mode 100644 index 9d0391c..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_context_support_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_core_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_core_4_0_5_RELEASE.xml deleted file mode 100644 index 70364cf..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_core_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_expression_4_0_5_RELEASE.xml deleted file mode 100644 index 0361358..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_expression_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jdbc_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_jdbc_4_0_5_RELEASE.xml deleted file mode 100644 index 370221d..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_jdbc_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_orm_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_orm_4_0_5_RELEASE.xml deleted file mode 100644 index e6cebfd..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_orm_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_tx_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_tx_4_0_5_RELEASE.xml deleted file mode 100644 index c7120d2..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_tx_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_web_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_web_4_0_5_RELEASE.xml deleted file mode 100644 index a5bdc79..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_web_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_webmvc_4_0_5_RELEASE.xml b/.idea/libraries/Maven__org_springframework_spring_webmvc_4_0_5_RELEASE.xml deleted file mode 100644 index 41be078..0000000 --- a/.idea/libraries/Maven__org_springframework_spring_webmvc_4_0_5_RELEASE.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__redis_clients_jedis_2_8_0.xml b/.idea/libraries/Maven__redis_clients_jedis_2_8_0.xml deleted file mode 100644 index f79f654..0000000 --- a/.idea/libraries/Maven__redis_clients_jedis_2_8_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml b/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml deleted file mode 100644 index e440b03..0000000 --- a/.idea/libraries/Maven__xml_apis_xml_apis_1_0_b2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 1d270e6..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index d2e8925..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml deleted file mode 100644 index 922003b..0000000 --- a/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 3a68b5f..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,1043 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1496065130809 - - - 1496067921380 - - - 1500689340526 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - jackson-demo:war - - - - - - - - Web - - - - - - - - - - - - - - - 1.8 - - - - - - - - util_demo - - - - - - - - Maven: aopalliance:aopalliance:1.0 - - - - - - - - \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + 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 + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index a4c44d2..cf2c208 100644 --- a/README.md +++ b/README.md @@ -8,5 +8,9 @@ JavaWeb学习的相关Demo,有参考大牛的,有自己写的。 2017/07/22 添加了jackson的demo,自定义Spring MVC 的消息转换器 -2017/11/4 -添加了SSH框架的单元测试 \ No newline at end of file +对应博客:http://www.cnblogs.com/Fly-Bob/p/7218006.html + +spring-tx_demo 的博客地址:http://www.cnblogs.com/Fly-Bob/p/7347206.html + +springAOP-demo 的博客地址:http://www.cnblogs.com/Fly-Bob/p/7368129.html + diff --git a/Util-Demo/Util-Demo.iml b/Util-Demo/Util-Demo.iml deleted file mode 100644 index 0c2c3c3..0000000 --- a/Util-Demo/Util-Demo.iml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Util-Demo/pom.xml b/Util-Demo/pom.xml deleted file mode 100644 index f9f6606..0000000 --- a/Util-Demo/pom.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - 4.0.0 - - cn.mrdear.util - Util-Demo - 1.0-SNAPSHOT - - - - - org.apache.commons - commons-lang3 - 3.4 - - - - - org.bouncycastle - bcprov-jdk15on - 1.52 - - - - commons-codec - commons-codec - 1.10 - - - - dom4j - dom4j - 1.6.1 - - - - org.apache.httpcomponents - httpclient - 4.5.2 - - - javax.servlet - javax.servlet-api - 3.1.0 - - - - redis.clients - jedis - 2.8.0 - - - - - junit - junit - 4.12 - - - - - org.slf4j - slf4j-api - 1.7.2 - - - org.slf4j - jcl-over-slf4j - 1.7.2 - - - ch.qos.logback - logback-core - 1.1.2 - - - ch.qos.logback - logback-classic - 1.1.2 - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.7 - 1.7 - - - - - - - \ No newline at end of file diff --git a/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/AESUtil.java b/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/AESUtil.java deleted file mode 100644 index ce2ce7a..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/AESUtil.java +++ /dev/null @@ -1,134 +0,0 @@ -package cn.mrdear.util.SecurityUtil; - - -import org.apache.commons.codec.binary.Base64; - -import java.security.SecureRandom; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.spec.SecretKeySpec; - -/** - * AES工具类 - * 使用base64AndaesEncrypt加密 - * 使用base64AndaesDecrypt解密 - */ -public class AESUtil { - - /** - * 测试方法 - * @param args - * @throws Exception 抛出异常 - */ - public static void main(String[] args) throws Exception { - String str = "niuli111"; - String encry = base64AndEncrypt(str,"niuli"); - System.out.println(encry); - System.out.println(base64AndDecrypt(encry,"niuli")); - } - /** - * AES加密 - * - * @param content - * 待加密的内容 - * @param encryptKey - * 加密密钥 - * @return 加密后的byte[] - */ - public static byte[] EncryptToBytes(String content, String encryptKey) { - return EncryptToBytes(content.getBytes(),encryptKey); - } - - /** - * AES加密 - * - * @param encryptContent - * 待加密的内容 - * @param encryptKey - * 加密密钥 - * @return 加密后的byte[] - */ - public static byte[] EncryptToBytes(byte[] encryptContent, String encryptKey){ - try { - return aesByMode(encryptContent,encryptKey, Cipher.ENCRYPT_MODE); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - /** - * AES加密为base 64 code - * - * @param content - * 待加密的内容 - * @param encryptKey - * 加密密钥 - * @return 加密后的base 64 code - */ - public static String base64AndEncrypt(String content, String encryptKey){ - return Base64.encodeBase64URLSafeString(EncryptToBytes(content, encryptKey)); - } - /** - * AES解密 - * - * @param encryptBytes - * 待解密的byte[] - * @param decryptKey - * 解密密钥 - * @return 解密后的String - */ - public static String DecryptByBytes(byte[] encryptBytes, String decryptKey){ - try { - byte[] decryptBytes = aesByMode(encryptBytes,decryptKey,Cipher.DECRYPT_MODE); - return new String(decryptBytes, "UTF-8"); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - /** - * 根据mode选择解密或者加密 - * @param content 要操作的内容 - * @param key 密钥 - * @param MODE 选择模型 Cipher里面的常量 - * @return 操作后的串 - */ - private static byte[] aesByMode(byte[] content, String key,Integer MODE) throws Exception { - KeyGenerator kgen = KeyGenerator.getInstance("AES"); - SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); - secureRandom.setSeed(key.getBytes()); - //生成128位的key - kgen.init(128, secureRandom); - Cipher cipher = Cipher.getInstance("AES"); - cipher.init(MODE, new SecretKeySpec(kgen.generateKey().getEncoded(), "AES")); - return cipher.doFinal(content); - } - - /** - * AES解密 - * @param normalStr 带解密的串 - * @param decryptKey 密钥 - * @return 解密后的string - */ - public static String DecryptByStr(String normalStr, String decryptKey){ - return (normalStr==null || "".equals(normalStr)) ? null : DecryptByBytes(normalStr.getBytes(), decryptKey); - } - - /** - * 将base 64 code AES解密 - * - * @param encryptStr - * 待解密的base 64 code - * @param decryptKey - * 解密密钥 - * @return 解密后的string - */ - public static String base64AndDecrypt(String encryptStr, String decryptKey){ - return (encryptStr==null || "".equals(encryptStr)) ? null : DecryptByBytes(Base64.decodeBase64(encryptStr), decryptKey); - } - - -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/DigestUtil.java b/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/DigestUtil.java deleted file mode 100644 index 74fbf13..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/DigestUtil.java +++ /dev/null @@ -1,123 +0,0 @@ -package cn.mrdear.util.SecurityUtil; - -import org.apache.commons.codec.binary.Hex; -import org.apache.commons.codec.digest.DigestUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; - -/** - * 摘要签名工具类 - */ -public class DigestUtil { - - private static final Logger logger = LoggerFactory.getLogger(DigestUtil.class); - - private static final String SHA1_PRNG = "SHA1PRNG"; - - private static SecureRandom sRandom; - - public enum SecurityEnum { - MD5("MD5"), SHA256("SHA-256"), SHA512("SHA-512"), SHA384("SHA-384"), SHA1("SHA-1"), SHA("SHA"); - - SecurityEnum(String value) { - this.value = value; - } - private String value; - public String getValue() { - return value; - } - } - - - static { - try { - sRandom = SecureRandom.getInstance(SHA1_PRNG); - } catch (NoSuchAlgorithmException e) { - logger.error("生成安全随机数失败:", e); - } - } - - /** - * 生成指定bit的安全随机数 - * @param bits bit位 - * @return 生成结果 - */ - private static byte[] getNextSecureRandom(int bits) { - if ((bits % 8) != 0) { - throw new IllegalArgumentException("Size is not divisible by 8!"); - } - final byte[] bytes = new byte[bits / 8]; - sRandom.nextBytes(bytes); - return bytes; - } - - /** - * 随机生成指定位数字串 - * @return 生成字串 - */ - public static String getNextHexRandomNum(int bits) { - return Hex.encodeHexString(getNextSecureRandom(bits*8)); - } - - /** - * 根据算法得到相应摘要 - * @param instance 算法 - * @param bytes 需要摘要的内容 - * @return 摘要 - */ - public static String digest(SecurityEnum instance, byte[] bytes) { - MessageDigest digestUtils = getInstance(instance); - digestUtils.update(bytes); - return byte2String(digestUtils.digest()); - } - - /** - * 根据算法得到相应摘要 - * @param instance 算法 - * @param content 需要摘要的内容 - * @return 摘要 - */ - public static String digest(SecurityEnum instance, String content) { - if (content == null) return ""; - return digest(instance,content.getBytes()); - } - - /** - * 根据算法拿到一个实现者 - * @param securityEnum 算法 - * @return 实例 - */ - private static MessageDigest getInstance(SecurityEnum securityEnum){ - MessageDigest digestUtils = null; - try { - digestUtils = MessageDigest.getInstance(securityEnum.getValue()); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - logger.error("不存在的加密算法"); - digestUtils = DigestUtils.getDigest(securityEnum.getValue()); - } - return digestUtils; - } - - /** - * 加密后的内容转成String - * @param content 内容 - * @return 字符串 - */ - private static String byte2String(byte[] content){ - StringBuilder hexString = new StringBuilder(); - // 字节数组转换为 十六进制 数 - for (int i = 0; i < content.length; i++) { - String shaHex = Integer.toHexString(content[i] & 0xFF); - if (shaHex.length() < 2) { - hexString.append(0); - } - hexString.append(shaHex); - } - return hexString.toString(); - } -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/RSAUtils.java b/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/RSAUtils.java deleted file mode 100644 index 8e75f6e..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/SecurityUtil/RSAUtils.java +++ /dev/null @@ -1,303 +0,0 @@ -package cn.mrdear.util.SecurityUtil; - -import org.apache.commons.codec.binary.Base64; -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -import java.io.IOException; -import java.io.InputStream; -import java.security.InvalidKeyException; -import java.security.Key; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.Provider; -import java.security.PublicKey; -import java.security.Signature; -import java.security.SignatureException; -import java.security.UnrecoverableKeyException; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; - -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; - -/** - * Utils - RSA加密/解密 - */ -public final class RSAUtils { - - /** 密钥算法 */ - private static final String RSA = "RSA"; - - /** 加密/解密算法 */ - private static final String TRANSFORMATION = "RSA/ECB/PKCS1Padding"; - protected static final String TRANSFORMATION_NOPADDING = "RSA/ECB/NoPadding"; - public static final String SHA1_WITH_RSA = "sha1withrsa"; - - /** 安全服务提供者 */ - private static final Provider PROVIDER = new BouncyCastleProvider(); - - /** - * 不可实例化 - */ - private RSAUtils() { - } - - /** - * 生成密钥对 - * - * @param keySize - * 密钥大小 - * @return 密钥对 - */ - public static KeyPair generateKeyPair(int keySize) { - - try { - KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA, PROVIDER); - keyPairGenerator.initialize(keySize); - return keyPairGenerator.generateKeyPair(); - } catch (NoSuchAlgorithmException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 生成私钥 - * - * @param encodedKey - * 密钥编码(BASE64解码后的编码) - * @return 私钥 - */ - public static PrivateKey generatePrivateKey(byte[] encodedKey) { - - try { - KeyFactory keyFactory = KeyFactory.getInstance(RSA, PROVIDER); - return keyFactory.generatePrivate(new PKCS8EncodedKeySpec( - encodedKey)); - } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 生成私钥 - * - * @param keyString - * 密钥字符串(BASE64编码) - * @return 私钥 - */ - public static PrivateKey generatePrivateKey(String keyString) { - return generatePrivateKey(Base64.decodeBase64(keyString)); - } - - /** - * 生成公钥 - * - * @param encodedKey - * 密钥编码(BASE64解码后的编码) - * @return 公钥 - */ - public static PublicKey generatePublicKey(byte[] encodedKey) { - try { - KeyFactory keyFactory = KeyFactory.getInstance(RSA, PROVIDER); - return keyFactory - .generatePublic(new X509EncodedKeySpec(encodedKey)); - } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 生成公钥 - * - * @param keyString - * 密钥字符串(BASE64编码) - * @return 公钥 - */ - public static PublicKey generatePublicKey(String keyString) { - - return generatePublicKey(Base64.decodeBase64(keyString)); - } - - /** - * 获取密钥字符串 - * - * @param key - * 密钥 - * @return 密钥字符串(BASE64编码) - */ - public static String getKeyString(Key key) { - return Base64.encodeBase64String(key.getEncoded()); - } - - /** - * 获取密钥 - * - * @param type - * 类型 - * @param inputStream - * 输入流 - * @param password - * 密码 - * @return 密钥 - */ - public static Key getKey(String type, InputStream inputStream, String password) { - try { - KeyStore keyStore = KeyStore.getInstance(type, PROVIDER); - keyStore.load(inputStream, - password != null ? password.toCharArray() : null); - String alias = keyStore.aliases().hasMoreElements() ? keyStore - .aliases().nextElement() : null; - return keyStore.getKey(alias, - password != null ? password.toCharArray() : null); - } catch (KeyStoreException | NoSuchAlgorithmException - | CertificateException | IOException - | UnrecoverableKeyException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 获取证书 - * - * @param type - * 类型 - * @param inputStream - * 输入流 - * @return 证书 - */ - public static Certificate getCertificate(String type, InputStream inputStream) { - try { - CertificateFactory certificateFactory = CertificateFactory.getInstance(type, PROVIDER); - return certificateFactory.generateCertificate(inputStream); - } catch (CertificateException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 生成签名 - * - * @param algorithm - * 签名算法 - * @param privateKey - * 私钥 - * @param data - * 数据 - * @return 签名 - */ - public static byte[] sign(String algorithm, PrivateKey privateKey, byte[] data) { - try { - Signature signature = Signature.getInstance(algorithm, PROVIDER); - signature.initSign(privateKey); - signature.update(data); - return signature.sign(); - } catch (NoSuchAlgorithmException | InvalidKeyException - | SignatureException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 验证签名 - * - * @param algorithm - * 签名算法 - * @param publicKey - * 公钥 - * @param sign - * 签名 - * @param data - * 数据 - * @return 是否验证通过 - */ - public static boolean verify(String algorithm, PublicKey publicKey, byte[] sign, byte[] data) { - try { - Signature signature = Signature.getInstance(algorithm, PROVIDER); - signature.initVerify(publicKey); - signature.update(data); - return signature.verify(sign); - } catch (NoSuchAlgorithmException | InvalidKeyException - | SignatureException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 验证签名 - * - * @param algorithm - * 签名算法 - * @param certificate - * 证书 - * @param sign - * 签名 - * @param data - * 数据 - * @return 是否验证通过 - */ - public static boolean verify(String algorithm, Certificate certificate, byte[] sign, byte[] data) { - try { - Signature signature = Signature.getInstance(algorithm, PROVIDER); - signature.initVerify(certificate); - signature.update(data); - return signature.verify(sign); - } catch (NoSuchAlgorithmException | InvalidKeyException - | SignatureException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 加密 - * - * @param publicKey - * 公钥 - * @param data - * 数据 - * @return 密文 - */ - public static byte[] encrypt(PublicKey publicKey, byte[] data) { - try { - Cipher cipher = Cipher.getInstance(TRANSFORMATION, PROVIDER); - cipher.init(Cipher.ENCRYPT_MODE, publicKey); - return cipher.doFinal(data); - } catch (NoSuchAlgorithmException | NoSuchPaddingException - | InvalidKeyException | IllegalBlockSizeException - | BadPaddingException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 解密 - * - * @param privateKey - * 私钥 - * @param data - * 数据 - * @return 明文 - */ - public static byte[] decrypt(PrivateKey privateKey, byte[] data) { - try { - Cipher cipher = Cipher.getInstance(TRANSFORMATION, PROVIDER); - cipher.init(Cipher.DECRYPT_MODE, privateKey); - return cipher.doFinal(data); - } catch (NoSuchAlgorithmException | NoSuchPaddingException - | InvalidKeyException | IllegalBlockSizeException - | BadPaddingException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - -} \ No newline at end of file diff --git a/Util-Demo/src/main/java/cn/mrdear/util/dateutil/DateUtil.java b/Util-Demo/src/main/java/cn/mrdear/util/dateutil/DateUtil.java deleted file mode 100644 index c4c8b6c..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/dateutil/DateUtil.java +++ /dev/null @@ -1,113 +0,0 @@ -package cn.mrdear.util.dateutil; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -/** - * 日期工具类 - * 参考博文:http://www.jianshu.com/p/5675690b351e - * @author Niu Li - * @date 2016/12/11 - */ -public abstract class DateUtil { - - private static Logger logger = LoggerFactory.getLogger(DateUtil.class); - - private static Map> sdfMap = new HashMap<>(); - - public final static String MDHMSS = "MMddHHmmssSSS"; - public final static String YMD = "yyyyMMdd"; - public final static String YMD_ = "yyyy-MM-dd"; - public final static String HMS = "HHmmss"; - public final static String YMDHMS = "yyyyMMddHHmmss"; - public final static String YM = "yyMM"; - public final static String YMDHMS_ = "yyyy-MM-dd HH:mm:ss"; - - /** - * 返回一个ThreadLocal的sdf,每个线程只会new一次sdf - * - * @param pattern SimpleDateFormat规则 - * @return 该实例 - */ - private static SimpleDateFormat getSdf(final String pattern){ - ThreadLocal t = sdfMap.get(pattern); - // 此处的双重判断和同步是为了防止sdfMap这个单例被多次put重复的sdf - if (t == null){ - synchronized (DateUtil.class){ - // 只有Map中还没有这个pattern的sdf才会生成新的sdf并放入map - logger.debug("put new sdf of pattern " + pattern + " to map"); - // 这里是关键,使用ThreadLocal替代原来直接new SimpleDateFormat - t = sdfMap.get(pattern); - if (t == null){ - t = new ThreadLocal(){ - @Override - protected SimpleDateFormat initialValue() { - logger.debug("thread: " + Thread.currentThread() + " init pattern: " + pattern); - return new SimpleDateFormat(pattern); - } - }; - } - sdfMap.put(pattern,t); - } - } - return t.get(); - } - - /** - * 为指定时间按照相应日历字段增加时间 - * @param date 初始时间 - * @param time 要增加的时间 - * @param filed 日历字段 参考Calendar的静态字段 - * @return 修改后的时间 - */ - public static Date addDate(Date date, int time, int filed) { - Calendar calendar = Calendar.getInstance(Locale.CHINESE); - calendar.setTime(date); - calendar.add(filed, time); - return calendar.getTime(); - } - /** - * 格局给定的SDF格式化时间 - * @param date 时间 - * @param sdf 指定转换格式 - * @return 转换后的串 - */ - public static String format(Date date, String sdf) { - return getSdf(sdf).format(date); - } - - /** - * 把字符串按照指定格式转换 - * @param str 时间串 - * @param sdf 给定转换格式 - * @return 转换后的时间 - */ - public static Date parse(String str, String sdf) { - - Date date = null; - try { - date = parseCanThrow(str, sdf); - } catch (ParseException e) { - e.printStackTrace(); - } - return date; - } - /** - * 把字符串按照指定格式转换,需要主动抛异常情况下使用 - * @param str 时间串 - * @param sdf 给定转换格式 - * @return 转换后的时间 - */ - public static Date parseCanThrow(String str, String sdf) throws ParseException { - return getSdf(sdf).parse(str); - } - -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/httpUtil/WebUtils.java b/Util-Demo/src/main/java/cn/mrdear/util/httpUtil/WebUtils.java deleted file mode 100644 index c6a2bb2..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/httpUtil/WebUtils.java +++ /dev/null @@ -1,366 +0,0 @@ -package cn.mrdear.util.httpUtil; - -import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.http.HttpEntity; -import org.apache.http.NameValuePair; -import org.apache.http.ParseException; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.config.RegistryBuilder; -import org.apache.http.conn.socket.ConnectionSocketFactory; -import org.apache.http.conn.socket.PlainConnectionSocketFactory; -import org.apache.http.conn.ssl.SSLConnectionSocketFactory; -import org.apache.http.conn.ssl.SSLContexts; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.InputStreamEntity; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; -import org.apache.http.message.BasicNameValuePair; -import org.apache.http.util.EntityUtils; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.security.KeyStore; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.net.ssl.SSLContext; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * WEB连接中常用到的方法 - */ -public abstract class WebUtils { - - /** PoolingHttpClientConnectionManager */ - private static final PoolingHttpClientConnectionManager HTTP_CLIENT_CONNECTION_MANAGER; - - /** CloseableHttpClient */ - private static final CloseableHttpClient HTTP_CLIENT; - - static { - HTTP_CLIENT_CONNECTION_MANAGER = new PoolingHttpClientConnectionManager(RegistryBuilder. create().register("http", PlainConnectionSocketFactory.getSocketFactory()).register("https", SSLConnectionSocketFactory.getSocketFactory()).build()); - HTTP_CLIENT_CONNECTION_MANAGER.setDefaultMaxPerRoute(100); - HTTP_CLIENT_CONNECTION_MANAGER.setMaxTotal(200); - RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(60000).setConnectTimeout(60000).setSocketTimeout(60000).build(); - HTTP_CLIENT = HttpClientBuilder.create().setConnectionManager(HTTP_CLIENT_CONNECTION_MANAGER).setDefaultRequestConfig(requestConfig).build(); - } - - /** - * 添加cookie - * @param response HttpServletResponse - * @param name Cookie名称 - * @param value Cookie值 - * @param maxAge 有效期(单位: 秒) - * @param path 路径 - * @param domain 域 - * @param secure 是否启用加密 - */ - public static void addCookie(HttpServletResponse response, String name, String value, Integer maxAge, String path, String domain, Boolean secure) { - - try { - name = URLEncoder.encode(name, "UTF-8"); - value = URLEncoder.encode(value, "UTF-8"); - Cookie cookie = new Cookie(name, value); - if (maxAge != null) { - cookie.setMaxAge(maxAge); - } - if (StringUtils.isNotEmpty(path)) { - cookie.setPath(path); - } - if (StringUtils.isNotEmpty(domain)) { - cookie.setDomain(domain); - } - if (secure != null) { - cookie.setSecure(secure); - } - response.addCookie(cookie); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - /** - * 获取cookie - * @param request HttpServletRequest - * @param name Cookie名称 - * @return Cookie值,若不存在则返回null - */ - public static String getCookie(HttpServletRequest request, String name) { - - Cookie[] cookies = request.getCookies(); - if (cookies != null) { - try { - name = URLEncoder.encode(name, "UTF-8"); - for (Cookie cookie : cookies) { - if (name.equals(cookie.getName())) { - return URLDecoder.decode(cookie.getValue(), "UTF-8"); - } - } - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - return null; - } - /** - * 移除cookie - * @param response HttpServletResponse - * @param name Cookie名称 - * @param path 路径 - * @param domain 域 - */ - public static void removeCookie(HttpServletResponse response, String name, String path, String domain) { - try { - name = URLEncoder.encode(name, "UTF-8"); - Cookie cookie = new Cookie(name, null); - cookie.setMaxAge(0); - if (StringUtils.isNotEmpty(path)) { - cookie.setPath(path); - } - if (StringUtils.isNotEmpty(domain)) { - cookie.setDomain(domain); - } - response.addCookie(cookie); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e.getMessage(), e); - } - } - - /** - * 把request请求参数转换为Map - * @param request 该请求 - * @return Map格式的参数 - */ - @SuppressWarnings("unchecked") - public static Map request2Map(HttpServletRequest request){ - Enumeration names = request.getParameterNames(); - Map resData = new HashMap(); - while (names.hasMoreElements()) { - String name = names.nextElement(); - resData.put(name, request.getParameter(name)); - } - return resData; - } - - /** - * 连接Map键值对 - * @param map Map - * @param prefix 前缀 - * @param suffix 后缀 - * @param separator 连接符 - * @param ignoreEmptyValue 忽略空值 - * @param ignoreKeys 忽略Key - * @return 字符串 - */ - public static String joinKeyValue(Map map, String prefix, String suffix, String separator, - boolean ignoreEmptyValue, String... ignoreKeys) { - List list = new ArrayList(); - if (map != null) { - //使用Java8语法会更加简洁 - for (Map.Entry entry : map.entrySet()) { - String key = entry.getKey(); - String value = String.valueOf(entry.getValue()); - if (StringUtils.isNotEmpty(key) && !ArrayUtils.contains(ignoreKeys, key) - && (!ignoreEmptyValue || StringUtils.isNotEmpty(value))) { - list.add(key + "=" + (value != null ? value : "")); - } - } - } - return (prefix != null ? prefix : "") + StringUtils.join(list, separator) + (suffix != null ? suffix : ""); - } - - /** - * POST请求 - * - * @param url - * URL - * @param parameterMap - * 请求参数 - * @return 返回结果 - */ - public static String post(String url, Map parameterMap,String encoding) { - String result = null; - try { - List nameValuePairs = new ArrayList<>(); - //使用Java8的话这里可以进一步简化 - if (parameterMap != null) { - for (Map.Entry entry : parameterMap.entrySet()) { - String name = entry.getKey(); - String value = String.valueOf(entry.getValue()); - if (StringUtils.isNoneEmpty(value)) { - nameValuePairs.add(new BasicNameValuePair(name, value)); - } - } - } - HttpPost httpPost = new HttpPost(url); - httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, encoding)); - CloseableHttpResponse httpResponse = HTTP_CLIENT.execute(httpPost); - result = consumeResponse(httpResponse,encoding); - } catch ( ParseException | IOException e) { - throw new RuntimeException(e.getMessage(), e); - } - return result; - } - - /** - * post请求,请求体为json串 - * @param url 请求连接 - * @param json json串 - * @param encording 编码 - * @return 结果 - */ - public static String post(String url, String json,String encording){ - CloseableHttpResponse response = null; - String resultString = ""; - try { - // 创建Http Post请求 - HttpPost httpPost = new HttpPost(url); - // 创建请求内容 - StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); - entity.setContentEncoding(encording); - httpPost.setEntity(entity); - // 执行http请求 - response = HTTP_CLIENT.execute(httpPost); - resultString = consumeResponse(response,encording); - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - if(response != null) response.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return resultString; - } - /** - * POST请求 - * - * @param url - * URL - * @param inputStreamEntity - * 请求体 - * @return 返回结果 - */ - public static String post(String url, InputStreamEntity inputStreamEntity,String encording) { - - String result = null; - try { - HttpPost httpPost = new HttpPost(url); - inputStreamEntity.setContentEncoding(encording); - httpPost.setEntity(inputStreamEntity); - CloseableHttpResponse httpResponse = HTTP_CLIENT.execute(httpPost); - result = consumeResponse(httpResponse,encording); - } catch ( ParseException | IOException e) { - throw new RuntimeException(e.getMessage(), e); - } - return result; - } - - /** - * GET请求 - * - * @param url - * URL - * @param parameterMap - * 请求参数 - * @return 返回结果 - */ - public static String get(String url, Map parameterMap) { - - String result = null; - try { - List nameValuePairs = new ArrayList(); - if (parameterMap != null) { - for (Map.Entry entry : parameterMap.entrySet()) { - String name = entry.getKey(); - String value = String.valueOf(entry.getValue()); - if (StringUtils.isNoneEmpty(value)) { - nameValuePairs.add(new BasicNameValuePair(name, value)); - } - } - } - HttpGet httpGet = new HttpGet(url + (url.contains("?") ? "&" : "?") + EntityUtils.toString(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"))); - CloseableHttpResponse httpResponse = HTTP_CLIENT.execute(httpGet); - result = consumeResponse(httpResponse,"UTF-8"); - } catch (ParseException | IOException e) { - throw new RuntimeException(e.getMessage(), e); - } - return result; - } - - /** - * 利用证书请求微信 - * @param certPath 证书路径 - * @param passwd 证书密码 - * @param uri 请求地址 - * @param entity 请求体xml内容 - * @return 得到的结果 - */ - public static String post(String certPath,String passwd, String uri, InputStreamEntity entity,String encording) throws Exception{ - String result = null; - KeyStore keyStore = KeyStore.getInstance("PKCS12"); - FileInputStream instream = new FileInputStream(new File(certPath)); - try { - keyStore.load(instream, passwd.toCharArray()); - } finally { - instream.close(); - } - SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, passwd.toCharArray()).build(); - // Allow TLSv1 protocol only - SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" }, - null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); - - CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); - try { - HttpPost httpPost = new HttpPost(uri); - entity.setContentEncoding(encording); - httpPost.setEntity(entity); - CloseableHttpResponse httpResponse = httpclient.execute(httpPost); - result = consumeResponse(httpResponse,encording); - } finally { - httpclient.close(); - } - return result; - } - - /** - * 处理返回的请求,拿到返回内容 - * @param httpResponse 要处理的返回 - * @return 返回的内容 - */ - private static String consumeResponse(CloseableHttpResponse httpResponse,String encording){ - String result = null; - try { - HttpEntity httpEntity = httpResponse.getEntity(); - if (httpEntity != null) { - result = EntityUtils.toString(httpEntity,encording); - EntityUtils.consume(httpEntity); - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - httpResponse.close(); - } catch (IOException ignored) { - } - } - return result; - } -} \ No newline at end of file diff --git a/Util-Demo/src/main/java/cn/mrdear/util/jniUtil/NativeLibraryLoader.java b/Util-Demo/src/main/java/cn/mrdear/util/jniUtil/NativeLibraryLoader.java deleted file mode 100644 index 2482c0c..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/jniUtil/NativeLibraryLoader.java +++ /dev/null @@ -1,54 +0,0 @@ -package cn.mrdear.util.jniUtil; - -import java.io.*; - -/** - * Contains helper methods for loading native libraries, particularly JNI. - * - * @author gkubisa - */ -public class NativeLibraryLoader { - /** - * Utility classes should not have a public constructor. - */ - private NativeLibraryLoader() { } - - /** - * Loads a native shared library. It tries the standard System.loadLibrary - * method first and if it fails, it looks for the library in the current - * class path. It will handle libraries packed within jar files, too. - * - * @param libraryName - name of the library to load - * @throws IOException if the library cannot be extracted from a jar file - * into a temporary file - */ - public static void loadLibrary(String libraryName) throws IOException { - try { - System.loadLibrary(libraryName); - } catch (UnsatisfiedLinkError e) { - String fileName = System.mapLibraryName(libraryName); - - int dotPosition = fileName.lastIndexOf('.'); - File file = File.createTempFile(fileName.substring(0, dotPosition), fileName.substring(dotPosition)); - file.deleteOnExit(); - - byte[] buffer = new byte[4096]; - InputStream inputStream = NativeLibraryLoader.class.getClassLoader().getResourceAsStream(fileName); - OutputStream outputStream = new FileOutputStream(file); - - try { - while ( inputStream.available() > 0 ) { - int StreamLength = inputStream.read(buffer); - if ( StreamLength >= 0 ) { - outputStream.write(buffer, 0, StreamLength); - } - } - } finally { - outputStream.close(); - inputStream.close(); - } - - System.load(file.getAbsolutePath()); - } - } -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/moneyUtil/MoneyUtil.java b/Util-Demo/src/main/java/cn/mrdear/util/moneyUtil/MoneyUtil.java deleted file mode 100644 index 32dbb23..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/moneyUtil/MoneyUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -package cn.mrdear.util.moneyUtil; - -import org.apache.commons.lang3.math.NumberUtils; - -import java.math.BigDecimal; -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.text.ParseException; -import java.util.HashMap; -import java.util.Map; - -/** - * 关于金钱操作的工具类 - * @author Niu Li - * @since 2017/3/2 - */ -public class MoneyUtil { - - private static final Map> moneyMap = new HashMap<>(); - - private static final double CENT_RATE = 100.0; - - /** - * 获取当前线程的decimalFormat工具类,因为该类是非同步的 - * @param pattern 格式 - * @return 该实例 - */ - private static DecimalFormat getDecimal(final String pattern){ - ThreadLocal instance = moneyMap.get(pattern); - if (instance == null){ - synchronized (MoneyUtil.class){ - instance = moneyMap.get(pattern); - if (instance == null){ - instance = new ThreadLocal(){ - @Override - protected DecimalFormat initialValue() { - return new DecimalFormat(pattern); - } - }; - } - moneyMap.put(pattern,instance); - } - } - return instance.get(); - } - - /** - * 分转元 - * @param cent 分 - * @return 元 - */ - public static String cent2yuan(Long cent){ - return getDecimal("0.00").format(cent/CENT_RATE); - } - - /** - * 元转分 - * @param yuan 元金额 - * @return 分 - */ - public static Long yuan2cent(double yuan) { - return Math.round(yuan * CENT_RATE); - } -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/propsUtil/PropertiesUtils.java b/Util-Demo/src/main/java/cn/mrdear/util/propsUtil/PropertiesUtils.java deleted file mode 100644 index bc75790..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/propsUtil/PropertiesUtils.java +++ /dev/null @@ -1,89 +0,0 @@ -package cn.mrdear.util.propsUtil; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -/** - * 获取配置文件的类 - */ -public class PropertiesUtils { - - private static Logger logger = LoggerFactory.getLogger(PropertiesUtils.class); - - /** - * 得到用户根目录下user.home + props + filename路径的文件 - * @param key 键 - * @param filename 文件名 - * @return 值 - */ - public static String getUserDirProperty(String key, String filename) { - String absolutePath = System.getProperty("user.home") +File.separator+ filename; - logger.debug("配置文件绝对路径:"+absolutePath); - return getAbsoluteProperty(key,absolutePath); - } - - /** - * 从ClassPath获取配置文件 - * @param key 键 - * @param fileName 文件名 - * @return 值 - */ - public static String getClassPathProperty(String key, String fileName) { - InputStream input = PropertiesUtils.class.getClassLoader().getResourceAsStream(fileName); - return getPropertiesFromInput(input,key); - } - - /** - * 从绝对路径获取配置文件 - * @param key 键 - * @param path 路径 - * @return 值 - */ - public static String getAbsoluteProperty(String key, String path) { - try { - InputStream input = new FileInputStream(new File(path)); - return getPropertiesFromInput(input,key); - } catch (FileNotFoundException e) { - e.printStackTrace(); - logger.warn("文件不存在!!!"+path); - } - return null; - } - - /** - * 从输入流中获取指定键值 - * @param input 输入流 - * @param key 需要的key - * @return 值 - */ - private static String getPropertiesFromInput(InputStream input,String key){ - Properties pt = null; - try { - pt = new Properties(); - pt.load(input); - return pt.getProperty(key); - } catch (IOException e) { - e.printStackTrace(); - return null; - } finally { - if (input != null) { - try { - input.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - if (pt != null) { - pt.clear(); - } - } - } - -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/redis/calback/WorkCallback.java b/Util-Demo/src/main/java/cn/mrdear/util/redis/calback/WorkCallback.java deleted file mode 100644 index 8d1b23e..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/redis/calback/WorkCallback.java +++ /dev/null @@ -1,16 +0,0 @@ -package cn.mrdear.util.redis.calback; - -/** - * 模仿Spring ConnectionCallback写的模板接口 - * T为操作返回值 E为参数类型 - * @author Niu Li - * @date 2016/12/8 - */ -public interface WorkCallback { - /** - * 具体执行策略 - * @param e 传入参数 - * @return 结果 - */ - T doWorkCallback(E e); -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/redis/service/JedisClient.java b/Util-Demo/src/main/java/cn/mrdear/util/redis/service/JedisClient.java deleted file mode 100644 index aaf57d1..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/redis/service/JedisClient.java +++ /dev/null @@ -1,72 +0,0 @@ -package cn.mrdear.util.redis.service; - - -/** - * 定义redis需要的接口 - * @author Niu Li - * @date 2016/12/8 - */ -public interface JedisClient { - /** - * 根据key值获取 - * @param key 指定key - * @return 存在返回值,不存在返回null - */ - String get(String key); - - /** - * 设置值(String kei) - * @param key key值 - * @param value 内容 - * @return 成功则 ok - */ - String set(String key, String value); - - /** - * 得到key的剩余时间 - * @param key 指定key - * @return -2不存在 -1存在但无剩余时间 其他为剩余时间 - */ - Long ttl(String key); - - /** - * 等价于 set + expire - * @param key 设置的key - * @param seconds 存活时间,到期自动删除 - * @param value 对应值 - * @return 结果 - */ - String setex(final String key, final String value, final int seconds); - - /** - * 删除指定key - * @param key 指定key - * @return 不存在返回0 返回删除个数 - */ - Long del(String key); - - /** - *给指定key设置时间 - * @param key 指定key - * @param timeout 超时时间,单位秒 - * @return 1成功 0失败 - */ - Long expire(String key, int timeout); - - /** - * 检测key是否存在 - * @param key 指定key - * @return true存在 - */ - Boolean exists(String key); - - /** - * 不存在则设置,并延时,存在则什么都不做 - * @param key key值 - * @param value 值 - * @param seconds 超时时间 - * @return true成功 - */ - Boolean setNxAndExpire(final String key, final String value, final int seconds); - -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/redis/service/JedisClientSingle.java b/Util-Demo/src/main/java/cn/mrdear/util/redis/service/JedisClientSingle.java deleted file mode 100644 index 9437b08..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/redis/service/JedisClientSingle.java +++ /dev/null @@ -1,124 +0,0 @@ -package cn.mrdear.util.redis.service; - - -import cn.mrdear.util.redis.calback.WorkCallback; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; - -/** - * 单机版jedis - * 参考博文:http://www.jianshu.com/p/da69edda2a43 - * http://www.jianshu.com/p/c3b8180af944 - * @author Niu Li - * @date 2016/12/8 - */ -public class JedisClientSingle implements JedisClient{ - /** - * 连接池,建议使用其他工具注入进来 - * 如果不能注入的话,可以使用构造方法初始化 - */ - private final JedisPool jedisPool; - - public JedisClientSingle(JedisPool jedisPool) { - this.jedisPool = jedisPool; - } - - public String get(final String key) { - return excute(new WorkCallback() { - @Override - public String doWorkCallback(Jedis jedis) { - return jedis.get(key); - } - }); - } - - public String set(final String key, final String value) { - return excute(new WorkCallback() { - @Override - public String doWorkCallback(Jedis jedis) { - return jedis.set(key,value); - } - }); - } - - public Long ttl(final String key) { - return excute(new WorkCallback() { - @Override - public Long doWorkCallback(Jedis jedis) { - return jedis.ttl(key); - } - }); - } - - public String setex(final String key, final String value, final int seconds) { - return excute(new WorkCallback() { - @Override - public String doWorkCallback(Jedis jedis) { - return jedis.setex(key,seconds,value); - } - }); - } - public Long del(final String key) { - return excute(new WorkCallback() { - @Override - public Long doWorkCallback(Jedis jedis) { - return jedis.del(key); - } - }); - } - - public Long expire(final String key, final int timeout) { - return excute(new WorkCallback() { - @Override - public Long doWorkCallback(Jedis jedis) { - return jedis.expire(key,timeout); - } - }); - } - - public Boolean exists(final String key) { - return excute(new WorkCallback() { - @Override - public Boolean doWorkCallback(Jedis jedis) { - return excute(new WorkCallback() { - public Boolean doWorkCallback(Jedis jedis) { - return jedis.exists(key); - } - }); - } - }); - } - - public Boolean setNxAndExpire(final String key, final String value, final int seconds) { - return excute(new WorkCallback() { - @Override - public Boolean doWorkCallback(Jedis jedis) { - Long result = jedis.setnx(key,value); - return result == 1L && jedis.expire(key, seconds) > 0; - } - }); - } - - /** - * 通用模板方法,很适合提取公共操作 - * @param workCallback 处理函数 - * @param 返回类型 - * @return 结果 - */ - private T excute(WorkCallback workCallback) { - Jedis jedis=null; - try { - jedis = jedisPool.getResource(); - return workCallback.doWorkCallback(jedis); - } catch (Exception e) { - e.printStackTrace(); - }finally { - if (null !=jedis){ - jedis.close(); - } - } - return null; - } - - -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/vo/ResultWrapper.java b/Util-Demo/src/main/java/cn/mrdear/util/vo/ResultWrapper.java deleted file mode 100644 index e05e4c7..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/vo/ResultWrapper.java +++ /dev/null @@ -1,79 +0,0 @@ -package cn.mrdear.util.vo; - -import java.util.List; - -/** - * 用于包装接口返回 - * @author Niu Li - * @since 2017/4/19 - */ -public class ResultWrapper { - /** - * 状态码 - */ - private Integer status; - /** - * 状态信息 - */ - private String msg; - /** - * 数据data - */ - private T data; - - - public ResultWrapper OK(){ - //todo 自己根据错误码填充 - this.status = 1; - this.msg = "Success"; - return this; - } - - public ResultWrapper OKWithData(T data) { - this.OK(); - this.data = data; - return this; - } - - public ResultWrapper CustomStatus(Integer status, String msg) { - this.status = status; - this.msg = msg; - return this; - } - - - /** - * 用于滚动数据的返回,举例瀑布流 - * @param - */ - public static class ScrollData{ - private Integer hasMore; - - private Integer nextSatrt; - - private List objectList; - - public ScrollData(boolean hasMore, Integer nextSatrt, List objectList) { - this.hasMore = hasMore?1:0; - this.nextSatrt = nextSatrt; - this.objectList = objectList; - } - } - - /** - * 用于分页数据返回 - * @param - */ - private static class PaginationData{ - private Integer total; - private Integer limit; - private List objectList; - - public PaginationData(Integer limit, Integer total, List objectList) { - this.limit = limit; - this.total = total; - this.objectList = objectList; - } - } - -} diff --git a/Util-Demo/src/main/java/cn/mrdear/util/xml/XmlUtil.java b/Util-Demo/src/main/java/cn/mrdear/util/xml/XmlUtil.java deleted file mode 100644 index 66f4d9a..0000000 --- a/Util-Demo/src/main/java/cn/mrdear/util/xml/XmlUtil.java +++ /dev/null @@ -1,212 +0,0 @@ -package cn.mrdear.util.xml; - - -import org.dom4j.Attribute; -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.Element; -import org.dom4j.io.OutputFormat; -import org.dom4j.io.SAXReader; -import org.dom4j.io.XMLWriter; -import org.xml.sax.EntityResolver; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.Reader; -import java.io.StringReader; -import java.io.UnsupportedEncodingException; -import java.util.Iterator; -import java.util.List; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.bind.Unmarshaller; - -/** - * XML工具类 - * 在Reder里面配合缓存使用的话效果更佳 - * - * 对于Bean需要使用@XmlRootElement(name = "xml")注解 - */ -public abstract class XmlUtil { - - /** - * 读取指定属性下面的key - * @param inputStream xml输入流 - * @param key 指定读取的key - * @return 读取内容 - * @throws DocumentException 抛出异常 - */ - public static String reader(Reader inputStream, String key) throws DocumentException { - SAXReader reader = new SAXReader(); - //设置不检查DTD - reader.setEntityResolver(new EntityResolver() { - @Override - public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { - return new InputSource( - new ByteArrayInputStream( - "".getBytes() - )); - } - }); - Document document = reader.read(inputStream); - Element node = document.getRootElement(); - return listNodes(node, key); - } - - /** - * 读取指定属性下面的key - * @param inputStream xml输入流 - * @param key 指定读取的key - * @param attrKey key父节点的属性attrKey - * @return 读取内容 - * @throws DocumentException 抛出异常 - */ - public static String reader(Reader inputStream, String key,String attrKey) throws DocumentException { - SAXReader reader = new SAXReader(); - //设置不检查DTD - reader.setEntityResolver(new EntityResolver() { - @Override - public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { - return new InputSource( - new ByteArrayInputStream( - "".getBytes() - )); - } - }); - Document document = reader.read(inputStream); - Element node = document.getRootElement(); - return listNodes(node, key,attrKey); - } - - /** - * 遍历当前节点元素下面的所有(元素的)子节点 - * @param node 节点 - * @param key 寻找的key - * @return value - */ - @SuppressWarnings("unchecked") - private static String listNodes(Element node, String key) { - System.out.println("当前节点的名称::" + node.getName()); - if (key.equals(node.getName())) { - return node.getTextTrim(); - } - Iterator it = node.elementIterator(); - while (it.hasNext()) { - Element e = it.next(); - String result = listNodes(e, key); - if (result != null && !"".equals(result)){ - return result; - } - } - return ""; - } - - /** - * 遍历当前节点元素下面的所有(元素的)子节点 - * @param node 节点 - * @param key 寻找的key - * @param attributeKey 该key拥有的属性 - * @return value - */ - @SuppressWarnings("unchecked") - private static String listNodes(Element node, String key,String attributeKey) { - System.out.println("当前节点的名称::" + node.getName()); - //判断该节点的属性有没有这个值 - List attributes = node.attributes(); - for (Attribute tempAttr : attributes) { - System.out.println("当前节点的属性名称:" + tempAttr.getValue()); - if (tempAttr.getValue().equals(attributeKey)){ - String result = listNodes(node, key); - if (result != null && !"".equals(result)){ - return result; - } - } - } - Iterator it = node.elementIterator(); - while (it.hasNext()) { - Element e = it.next(); - String result = listNodes(e, key,attributeKey); - if (result !=null && !"".equals(result)){ - return result; - } - } - return ""; - } - - /** - * 把document对象写入新的文件 - * - * @param document - * @throws Exception - */ - public static void writer(Document document, OutputStreamWriter outputStream, String encoding) throws Exception { - OutputFormat format = OutputFormat.createPrettyPrint(); - format.setEncoding(encoding); - XMLWriter writer = new XMLWriter(outputStream, format); - writer.write(document); - writer.flush(); - writer.close(); - } - - /** - * XML转对象 - * @param xmlStr xml字串 - * @param t 对象类型 - * @return 对象 - */ - @SuppressWarnings("unchecked") - public static T xmlToBean(String xmlStr, Class t) { - try { - JAXBContext context = JAXBContext.newInstance(t); - Unmarshaller unmarshaller = context.createUnmarshaller(); - return (T) unmarshaller.unmarshal(new StringReader(xmlStr)); - } catch (JAXBException e) { - e.printStackTrace(); - return null; - } - } - - /** - * XML转对象 - * @param input xml输入流 - * @param t 该对象 - * @return 对象 - */ - @SuppressWarnings("unchecked") - public static T xmlToBean(InputStream input, Class t) { - try { - JAXBContext context = JAXBContext.newInstance(t); - Unmarshaller unmarshaller = context.createUnmarshaller(); - return (T) unmarshaller.unmarshal(new InputStreamReader(input, "UTF-8")); - } catch (JAXBException | UnsupportedEncodingException e) { - e.printStackTrace(); - } - return null; - } - - /** - * 对象转XML - * @param to 对象 - * @return 字符串 - */ - public static String beanToXml(Object to) { - try { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - JAXBContext context = JAXBContext.newInstance(to.getClass()); - Marshaller marshaller = context.createMarshaller(); - marshaller.marshal(to, out); - return new String(out.toByteArray(), "UTF-8"); - } catch (JAXBException | UnsupportedEncodingException e) { - e.printStackTrace(); - } - return null; - } -} diff --git a/Util-Demo/src/test/java/AESUtilTest.java b/Util-Demo/src/test/java/AESUtilTest.java deleted file mode 100644 index beff021..0000000 --- a/Util-Demo/src/test/java/AESUtilTest.java +++ /dev/null @@ -1,17 +0,0 @@ -import org.junit.Test; - -import cn.mrdear.util.SecurityUtil.AESUtil; - -/** - * @author Niu Li - * @date 2016/12/11 - */ -public class AESUtilTest { - @Test - public void testAES() { - String str = "hello world"; - String en = AESUtil.base64AndEncrypt(str, "123456"); - System.out.println(en); - System.out.println(AESUtil.base64AndDecrypt(en,"123456")); - } -} diff --git a/Util-Demo/src/test/java/DataUtilTest.java b/Util-Demo/src/test/java/DataUtilTest.java deleted file mode 100644 index 15590e0..0000000 --- a/Util-Demo/src/test/java/DataUtilTest.java +++ /dev/null @@ -1,24 +0,0 @@ -import org.junit.Test; - -import java.util.Date; - -import cn.mrdear.util.dateutil.DateUtil; - -/** - * @author Niu Li - * @date 2016/12/11 - */ -public class DataUtilTest { - @Test - public void testParse(){ - String str = "2016-12-11 09:38:19"; - System.out.println(DateUtil.parse(str,DateUtil.YMDHMS_)); - } - - @Test - public void testFormat(){ - String str = DateUtil.format(new Date(),DateUtil.YMDHMS_); - System.out.println(str); - } - -} diff --git a/Util-Demo/src/test/java/DigestUtilTest.java b/Util-Demo/src/test/java/DigestUtilTest.java deleted file mode 100644 index b0e0d6a..0000000 --- a/Util-Demo/src/test/java/DigestUtilTest.java +++ /dev/null @@ -1,16 +0,0 @@ -import org.junit.Test; - -import cn.mrdear.util.SecurityUtil.DigestUtil; - -/** - * @author Niu Li - * @date 2016/12/11 - */ -public class DigestUtilTest { - - @Test - public void testMD5() { - String str = "hello world"; - System.out.println(DigestUtil.digest(DigestUtil.SecurityEnum.MD5,str)); - } -} diff --git a/Util-Demo/src/test/java/RedisTest.java b/Util-Demo/src/test/java/RedisTest.java deleted file mode 100644 index 2699c2b..0000000 --- a/Util-Demo/src/test/java/RedisTest.java +++ /dev/null @@ -1,20 +0,0 @@ -import org.junit.Test; - -import cn.mrdear.util.redis.service.JedisClientSingle; -import redis.clients.jedis.JedisPool; - -/** - * @author Niu Li - * @date 2016/12/11 - */ -public class RedisTest { - - @Test - public void testGet() { - //比较推荐依赖注入 - JedisPool jedisPool = new JedisPool("172.18.1.1",6636); - JedisClientSingle clientSingle = new JedisClientSingle(jedisPool); - String result = clientSingle.get("foo"); - System.out.println(result); - } -} diff --git a/Util-Demo/src/test/java/XmlTest.java b/Util-Demo/src/test/java/XmlTest.java deleted file mode 100644 index 509f6a4..0000000 --- a/Util-Demo/src/test/java/XmlTest.java +++ /dev/null @@ -1,55 +0,0 @@ -import org.dom4j.DocumentException; -import org.junit.Test; - -import java.io.InputStream; -import java.io.InputStreamReader; - -import javax.xml.bind.annotation.XmlRootElement; - -import cn.mrdear.util.xml.XmlUtil; - -/** - * @author Niu Li - * @date 2016/12/11 - */ -public class XmlTest -{ - @Test - public void testXmlReder() throws DocumentException { - InputStream stream = XmlTest.class.getResourceAsStream("message.xml"); - String result = XmlUtil.reader(new InputStreamReader(stream),"content","gift"); - System.out.println(result); - } - - @Test - public void testBeanToXml() { - User user = new User(); - user.setUsername("zhangsan"); - user.setPassword("123456"); - System.out.println(XmlUtil.beanToXml(user)); -//123456zhangsan - //需要手动去除前面头部 - } - - @XmlRootElement(name = "xml") - static class User{ - private String username; - private String password; - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - } -} diff --git a/Util-Demo/src/test/java/httpUtilTest.java b/Util-Demo/src/test/java/httpUtilTest.java deleted file mode 100644 index b62a7a6..0000000 --- a/Util-Demo/src/test/java/httpUtilTest.java +++ /dev/null @@ -1,26 +0,0 @@ -import org.junit.Test; - -import java.util.HashMap; -import java.util.Map; - -import cn.mrdear.util.httpUtil.WebUtils; - -/** - * @author Niu Li - * @date 2016/12/11 - */ -public class httpUtilTest { - - @Test - public void testGet() { - String url = "http://php.weather.sina.com.cn/iframe/index/w_cl.php"; - Map params = new HashMap<>(); - params.put("code","js"); - params.put("day",0); - params.put("city","上海"); - params.put("dfc",1); - params.put("charset","utf-8"); - String result = WebUtils.get(url,params); - System.out.println(result); - } -} diff --git a/Util-Demo/src/test/resources/message.xml b/Util-Demo/src/test/resources/message.xml deleted file mode 100644 index 5c7f9cc..0000000 --- a/Util-Demo/src/test/resources/message.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - 尊敬的会员,这是您的验证码{code_set}(有效时间{minute_set}分钟),感谢您的关注! - - - 您的朋友{giver_mobile}赠送给您{card_num}张"{card_name}",请及时关注微信"融信科技"公众号,进行查收。 - - 尊敬的会员,这是您的支付密码已重置为{passwd_set},登录后请立即修改密码。 - - - 尊敬的会员,您当前账户余额{bal_amt},您尾号{end_code}的卡号消费了{amt_cuy}元,如果不是本人消费,请立即联系管理员处理。 - - diff --git a/hessian-client-demo/hessian-client-demo.iml b/hessian-client-demo/hessian-client-demo.iml new file mode 100644 index 0000000..d3c7795 --- /dev/null +++ b/hessian-client-demo/hessian-client-demo.iml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hessian-client-demo/pom.xml b/hessian-client-demo/pom.xml new file mode 100644 index 0000000..2d0d826 --- /dev/null +++ b/hessian-client-demo/pom.xml @@ -0,0 +1,38 @@ + + 4.0.0 + + com.jay + hessian-client-demo + 1.0-SNAPSHOT + jar + + hessian-client-demo + http://maven.apache.org + + + UTF-8 + + + + + com.caucho + hessian + 4.0.7 + + + com.jay + hessian-server-rpc + 1.0 + system + ${project.basedir}/src/main/java/lib/hessian-server-rpc.jar + + + + junit + junit + 3.8.1 + test + + + diff --git a/hessian-client-demo/src/main/java/com/jay/HessianClient.java b/hessian-client-demo/src/main/java/com/jay/HessianClient.java new file mode 100644 index 0000000..c523b0d --- /dev/null +++ b/hessian-client-demo/src/main/java/com/jay/HessianClient.java @@ -0,0 +1,30 @@ +package com.jay; + +import com.caucho.hessian.client.HessianProxyFactory; +import com.jay.hessian.User; +import com.jay.hessian.UserService; + +import java.net.MalformedURLException; + + +/** + * Created by xiang.wei on 2018/2/10 + * + * @author xiang.wei + */ +public class HessianClient { + public static void main(String[] args) { + String url = "http://localhost:8080/hessian-server-demo/userService.hs"; + HessianProxyFactory factory = new HessianProxyFactory(); + try { + UserService userService = (UserService) factory.create( + UserService.class, url); + User user = new User(); + user.setName("张三"); + user.setAge(11); + System.out.println(userService.sayMyName(user));; + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } +} diff --git a/hessian-client-demo/src/main/java/lib/hessian-server-rpc.jar b/hessian-client-demo/src/main/java/lib/hessian-server-rpc.jar new file mode 100644 index 0000000..5b715e3 Binary files /dev/null and b/hessian-client-demo/src/main/java/lib/hessian-server-rpc.jar differ diff --git a/hessian-client-demo/target/classes/com/jay/HessianClient.class b/hessian-client-demo/target/classes/com/jay/HessianClient.class new file mode 100644 index 0000000..7247043 Binary files /dev/null and b/hessian-client-demo/target/classes/com/jay/HessianClient.class differ diff --git a/hessian-server-demo/hessian-server-demo.iml b/hessian-server-demo/hessian-server-demo.iml new file mode 100644 index 0000000..e588ae9 --- /dev/null +++ b/hessian-server-demo/hessian-server-demo.iml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hessian-server-demo/pom.xml b/hessian-server-demo/pom.xml new file mode 100644 index 0000000..bfc3023 --- /dev/null +++ b/hessian-server-demo/pom.xml @@ -0,0 +1,115 @@ + + 4.0.0 + com.jay + hessian-server-demo + war + 1.0-SNAPSHOT + hessian-server-demo Maven Webapp + http://maven.apache.org + + + + org.springframework + spring-core + 4.3.6.RELEASE + + + org.springframework + spring-beans + 4.3.6.RELEASE + + + org.springframework + spring-context + 4.3.6.RELEASE + + + org.springframework + spring-web + 4.3.6.RELEASE + + + + org.springframework + spring-webmvc + 4.3.6.RELEASE + + + com.caucho + hessian + 4.0.7 + + + + + junit + junit + 4.12 + test + + + + hessian-server-demo + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-war-plugin + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + hessian-server-rpc + + src + + + src/main/resources/release.xml + + + false + + + + make-assembly + package + + single + + + + + + + diff --git a/hessian-server-demo/readme.md b/hessian-server-demo/readme.md new file mode 100644 index 0000000..d44e278 --- /dev/null +++ b/hessian-server-demo/readme.md @@ -0,0 +1,2 @@ +引用 +>https://www.cnblogs.com/f-zhao/p/6929814.html \ No newline at end of file diff --git a/hessian-server-demo/src/main/java/com/jay/HessianServer.java b/hessian-server-demo/src/main/java/com/jay/HessianServer.java new file mode 100644 index 0000000..7d8e939 --- /dev/null +++ b/hessian-server-demo/src/main/java/com/jay/HessianServer.java @@ -0,0 +1,32 @@ +package com.jay; + +import com.jay.hessian.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.remoting.caucho.HessianServiceExporter; +import org.springframework.stereotype.Controller; + +/** + * Created by xiang.wei on 2018/2/10 + * + * @author xiang.wei + */ +@Controller +public class HessianServer { + @Autowired + private UserService userService; + + /** + * + * @return + */ + @Bean(name = "/userService.hs") + public HessianServiceExporter getUserService() { + HessianServiceExporter exporter = new HessianServiceExporter(); + //Hessian服务的接口 + exporter.setServiceInterface(UserService.class); + //Hessian服务的接口Impl + exporter.setService(userService); + return exporter; + } +} diff --git a/hessian-server-demo/src/main/java/com/jay/UserServiceImpl.java b/hessian-server-demo/src/main/java/com/jay/UserServiceImpl.java new file mode 100644 index 0000000..b49b727 --- /dev/null +++ b/hessian-server-demo/src/main/java/com/jay/UserServiceImpl.java @@ -0,0 +1,19 @@ +package com.jay; + +import com.jay.hessian.User; +import com.jay.hessian.UserService; +import org.springframework.stereotype.Service; + +/** + * Created by xiang.wei on 2018/2/10 + * + * @author xiang.wei + */ +@Service("userService") +public class UserServiceImpl implements UserService { + + public String sayMyName(User user) { + System.out.println("接收到的参数是=" + user.toString()); + return user.getName(); + } +} diff --git a/hessian-server-demo/src/main/java/com/jay/hessian/User.java b/hessian-server-demo/src/main/java/com/jay/hessian/User.java new file mode 100644 index 0000000..bfbc94e --- /dev/null +++ b/hessian-server-demo/src/main/java/com/jay/hessian/User.java @@ -0,0 +1,37 @@ +package com.jay.hessian; + +import java.io.Serializable; + +/** + * Created by xiang.wei on 2018/2/10 + * + * @author xiang.wei + */ +public class User implements Serializable{ + private String name; + private int age; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + @Override + public String toString() { + return "User{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } +} diff --git a/hessian-server-demo/src/main/java/com/jay/hessian/UserService.java b/hessian-server-demo/src/main/java/com/jay/hessian/UserService.java new file mode 100644 index 0000000..8fd7553 --- /dev/null +++ b/hessian-server-demo/src/main/java/com/jay/hessian/UserService.java @@ -0,0 +1,16 @@ +package com.jay.hessian; + +/** + * Created by xiang.wei on 2018/2/10 + * + * @author xiang.wei + */ +public interface UserService { + + /** + * 返回用户传入的名称 + * @param user + * @return + */ + String sayMyName(User user); +} diff --git a/hessian-server-demo/src/main/resources/release.xml b/hessian-server-demo/src/main/resources/release.xml new file mode 100644 index 0000000..fc4f005 --- /dev/null +++ b/hessian-server-demo/src/main/resources/release.xml @@ -0,0 +1,35 @@ + + + jar + + + false + + + + + + + + + + + + + + + + + + ${project.build.directory}/classes + / + + com/jay/hessian/*.class + + + + + \ No newline at end of file diff --git a/hessian-server-demo/src/main/resources/spring.xml b/hessian-server-demo/src/main/resources/spring.xml new file mode 100644 index 0000000..77a488b --- /dev/null +++ b/hessian-server-demo/src/main/resources/spring.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/hessian-server-demo/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml b/hessian-server-demo/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml new file mode 100644 index 0000000..339c0ab --- /dev/null +++ b/hessian-server-demo/src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/hessian-server-demo/src/main/webapp/WEB-INF/web.xml b/hessian-server-demo/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..61ce425 --- /dev/null +++ b/hessian-server-demo/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,42 @@ + + Archetype Created Web Application + + + + org.springframework.web.context.ContextLoader + + + contextConfigLocation + classpath:spring.xml + + + + + + + + + + + + + + + + + + mvc-dispatcher + org.springframework.web.servlet.DispatcherServlet + 1 + + + mvc-dispatcher + / + + + + + diff --git a/spring-tx_demo/src/main/webapp/index.jsp b/hessian-server-demo/src/main/webapp/index.jsp similarity index 100% rename from spring-tx_demo/src/main/webapp/index.jsp rename to hessian-server-demo/src/main/webapp/index.jsp diff --git a/hessian-server-demo/target/classes/com/jay/HessianServer.class b/hessian-server-demo/target/classes/com/jay/HessianServer.class new file mode 100644 index 0000000..6cba6f5 Binary files /dev/null and b/hessian-server-demo/target/classes/com/jay/HessianServer.class differ diff --git a/hessian-server-demo/target/classes/com/jay/UserServiceImpl.class b/hessian-server-demo/target/classes/com/jay/UserServiceImpl.class new file mode 100644 index 0000000..c31f063 Binary files /dev/null and b/hessian-server-demo/target/classes/com/jay/UserServiceImpl.class differ diff --git a/hessian-server-demo/target/classes/com/jay/hessian/User.class b/hessian-server-demo/target/classes/com/jay/hessian/User.class new file mode 100644 index 0000000..3663273 Binary files /dev/null and b/hessian-server-demo/target/classes/com/jay/hessian/User.class differ diff --git a/hessian-server-demo/target/classes/com/jay/hessian/UserService.class b/hessian-server-demo/target/classes/com/jay/hessian/UserService.class new file mode 100644 index 0000000..6b656f2 Binary files /dev/null and b/hessian-server-demo/target/classes/com/jay/hessian/UserService.class differ diff --git a/hessian-server-demo/target/classes/release.xml b/hessian-server-demo/target/classes/release.xml new file mode 100644 index 0000000..fc4f005 --- /dev/null +++ b/hessian-server-demo/target/classes/release.xml @@ -0,0 +1,35 @@ + + + jar + + + false + + + + + + + + + + + + + + + + + + ${project.build.directory}/classes + / + + com/jay/hessian/*.class + + + + + \ No newline at end of file diff --git a/hessian-server-demo/target/classes/spring.xml b/hessian-server-demo/target/classes/spring.xml new file mode 100644 index 0000000..77a488b --- /dev/null +++ b/hessian-server-demo/target/classes/spring.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/hessian-server-demo/target/hessian-server-demo.war b/hessian-server-demo/target/hessian-server-demo.war new file mode 100644 index 0000000..b60cf2a Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo.war differ diff --git a/spring-tx_demo/target/spring_demo/META-INF/MANIFEST.MF b/hessian-server-demo/target/hessian-server-demo/META-INF/MANIFEST.MF similarity index 76% rename from spring-tx_demo/target/spring_demo/META-INF/MANIFEST.MF rename to hessian-server-demo/target/hessian-server-demo/META-INF/MANIFEST.MF index 3202ecc..ac525a3 100644 --- a/spring-tx_demo/target/spring_demo/META-INF/MANIFEST.MF +++ b/hessian-server-demo/target/hessian-server-demo/META-INF/MANIFEST.MF @@ -1,5 +1,5 @@ Manifest-Version: 1.0 Built-By: maerfeifei Created-By: IntelliJ IDEA -Build-Jdk: 1.8.0_131 +Build-Jdk: 1.7.0_79 diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/HessianServer.class b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/HessianServer.class new file mode 100644 index 0000000..6cba6f5 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/HessianServer.class differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/UserServiceImpl.class b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/UserServiceImpl.class new file mode 100644 index 0000000..c31f063 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/UserServiceImpl.class differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/hessian/User.class b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/hessian/User.class new file mode 100644 index 0000000..3663273 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/hessian/User.class differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/hessian/UserService.class b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/hessian/UserService.class new file mode 100644 index 0000000..6b656f2 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/com/jay/hessian/UserService.class differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/release.xml b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/release.xml new file mode 100644 index 0000000..fc4f005 --- /dev/null +++ b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/release.xml @@ -0,0 +1,35 @@ + + + jar + + + false + + + + + + + + + + + + + + + + + + ${project.build.directory}/classes + / + + com/jay/hessian/*.class + + + + + \ No newline at end of file diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/spring.xml b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/spring.xml new file mode 100644 index 0000000..77a488b --- /dev/null +++ b/hessian-server-demo/target/hessian-server-demo/WEB-INF/classes/spring.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/commons-logging-1.2.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/commons-logging-1.2.jar new file mode 100644 index 0000000..93a3b9f Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/commons-logging-1.2.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/hessian-4.0.7.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/hessian-4.0.7.jar new file mode 100644 index 0000000..78d149e Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/hessian-4.0.7.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-aop-4.3.6.RELEASE.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-aop-4.3.6.RELEASE.jar new file mode 100644 index 0000000..72348a1 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-aop-4.3.6.RELEASE.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-beans-4.3.6.RELEASE.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-beans-4.3.6.RELEASE.jar new file mode 100644 index 0000000..0a8fb05 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-beans-4.3.6.RELEASE.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-context-4.3.6.RELEASE.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-context-4.3.6.RELEASE.jar new file mode 100644 index 0000000..363d8e4 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-context-4.3.6.RELEASE.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-core-4.3.6.RELEASE.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-core-4.3.6.RELEASE.jar new file mode 100644 index 0000000..17d0eac Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-core-4.3.6.RELEASE.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-expression-4.3.6.RELEASE.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-expression-4.3.6.RELEASE.jar new file mode 100644 index 0000000..f3536fe Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-expression-4.3.6.RELEASE.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-web-4.3.6.RELEASE.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-web-4.3.6.RELEASE.jar new file mode 100644 index 0000000..dbf7585 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-web-4.3.6.RELEASE.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-webmvc-4.3.6.RELEASE.jar b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-webmvc-4.3.6.RELEASE.jar new file mode 100644 index 0000000..867b115 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-demo/WEB-INF/lib/spring-webmvc-4.3.6.RELEASE.jar differ diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/mvc-dispatcher-servlet.xml b/hessian-server-demo/target/hessian-server-demo/WEB-INF/mvc-dispatcher-servlet.xml new file mode 100644 index 0000000..339c0ab --- /dev/null +++ b/hessian-server-demo/target/hessian-server-demo/WEB-INF/mvc-dispatcher-servlet.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/hessian-server-demo/target/hessian-server-demo/WEB-INF/web.xml b/hessian-server-demo/target/hessian-server-demo/WEB-INF/web.xml new file mode 100644 index 0000000..61ce425 --- /dev/null +++ b/hessian-server-demo/target/hessian-server-demo/WEB-INF/web.xml @@ -0,0 +1,42 @@ + + Archetype Created Web Application + + + + org.springframework.web.context.ContextLoader + + + contextConfigLocation + classpath:spring.xml + + + + + + + + + + + + + + + + + + mvc-dispatcher + org.springframework.web.servlet.DispatcherServlet + 1 + + + mvc-dispatcher + / + + + + + diff --git a/spring-tx_demo/target/spring_demo/index.jsp b/hessian-server-demo/target/hessian-server-demo/index.jsp similarity index 100% rename from spring-tx_demo/target/spring_demo/index.jsp rename to hessian-server-demo/target/hessian-server-demo/index.jsp diff --git a/hessian-server-demo/target/hessian-server-rpc.jar b/hessian-server-demo/target/hessian-server-rpc.jar new file mode 100644 index 0000000..5b715e3 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-rpc.jar differ diff --git a/hessian-server-demo/target/hessian-server-rpc.tar.bz2 b/hessian-server-demo/target/hessian-server-rpc.tar.bz2 new file mode 100644 index 0000000..7d7a2ae Binary files /dev/null and b/hessian-server-demo/target/hessian-server-rpc.tar.bz2 differ diff --git a/hessian-server-demo/target/hessian-server-rpc.tar.gz b/hessian-server-demo/target/hessian-server-rpc.tar.gz new file mode 100644 index 0000000..2d6d2c3 Binary files /dev/null and b/hessian-server-demo/target/hessian-server-rpc.tar.gz differ diff --git a/hessian-server-demo/target/hessian-server-rpc.zip b/hessian-server-demo/target/hessian-server-rpc.zip new file mode 100644 index 0000000..28a691b Binary files /dev/null and b/hessian-server-demo/target/hessian-server-rpc.zip differ diff --git a/hessian-server-demo/target/maven-archiver/pom.properties b/hessian-server-demo/target/maven-archiver/pom.properties new file mode 100644 index 0000000..add711f --- /dev/null +++ b/hessian-server-demo/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Sat Feb 10 22:56:30 CST 2018 +version=1.0-SNAPSHOT +groupId=com.jay +artifactId=hessian-server-demo diff --git a/hessian-server-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/hessian-server-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..db815c7 --- /dev/null +++ b/hessian-server-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,4 @@ +com/jay/hessian/User.class +com/jay/UserServiceImpl.class +com/jay/HessianServer.class +com/jay/hessian/UserService.class diff --git a/hessian-server-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/hessian-server-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..83ffc23 --- /dev/null +++ b/hessian-server-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,4 @@ +/Volumes/Develop/WorkSpace/JavaWeb/hessian-server-demo/src/main/java/com/jay/hessian/User.java +/Volumes/Develop/WorkSpace/JavaWeb/hessian-server-demo/src/main/java/com/jay/HessianServer.java +/Volumes/Develop/WorkSpace/JavaWeb/hessian-server-demo/src/main/java/com/jay/hessian/UserService.java +/Volumes/Develop/WorkSpace/JavaWeb/hessian-server-demo/src/main/java/com/jay/UserServiceImpl.java diff --git a/.idea/artifacts/jackson_demo_war.xml b/jackson-demo/.idea/artifacts/jackson_demo_war.xml similarity index 78% rename from .idea/artifacts/jackson_demo_war.xml rename to jackson-demo/.idea/artifacts/jackson_demo_war.xml index 69d1848..e4bcf94 100644 --- a/.idea/artifacts/jackson_demo_war.xml +++ b/jackson-demo/.idea/artifacts/jackson_demo_war.xml @@ -1,6 +1,6 @@ - $PROJECT_DIR$/jackson-demo/target + $PROJECT_DIR$/target diff --git a/.idea/artifacts/jackson_demo_war_exploded.xml b/jackson-demo/.idea/artifacts/jackson_demo_war_exploded.xml similarity index 93% rename from .idea/artifacts/jackson_demo_war_exploded.xml rename to jackson-demo/.idea/artifacts/jackson_demo_war_exploded.xml index e7d4e86..7f7c53d 100644 --- a/.idea/artifacts/jackson_demo_war_exploded.xml +++ b/jackson-demo/.idea/artifacts/jackson_demo_war_exploded.xml @@ -1,6 +1,6 @@ - $PROJECT_DIR$/jackson-demo/target/jackson-demo + $PROJECT_DIR$/target/jackson-demo @@ -28,7 +28,7 @@ - + diff --git a/jackson-demo/.idea/compiler.xml b/jackson-demo/.idea/compiler.xml new file mode 100644 index 0000000..a5b359a --- /dev/null +++ b/jackson-demo/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml b/jackson-demo/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml new file mode 100644 index 0000000..30ff5cb --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__com_alibaba_fastjson_1_2_32.xml b/jackson-demo/.idea/libraries/Maven__com_alibaba_fastjson_1_2_32.xml new file mode 100644 index 0000000..0db5bd8 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__com_alibaba_fastjson_1_2_32.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_6.xml b/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_6.xml new file mode 100644 index 0000000..173fb7d --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_6.xml b/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_6.xml new file mode 100644 index 0000000..3e9dea6 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_6.xml b/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_6.xml new file mode 100644 index 0000000..f6b47a3 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__commons_logging_commons_logging_1_1_3.xml b/jackson-demo/.idea/libraries/Maven__commons_logging_commons_logging_1_1_3.xml new file mode 100644 index 0000000..01c7b8e --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__commons_logging_commons_logging_1_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_0_1.xml b/jackson-demo/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_0_1.xml new file mode 100644 index 0000000..63d10f6 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_0_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_aop_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_aop_4_0_5_RELEASE.xml new file mode 100644 index 0000000..83bc442 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_aop_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_beans_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_beans_4_0_5_RELEASE.xml new file mode 100644 index 0000000..731a416 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_beans_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_context_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_context_4_0_5_RELEASE.xml new file mode 100644 index 0000000..db977a1 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_context_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_context_support_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_context_support_4_0_5_RELEASE.xml new file mode 100644 index 0000000..056c334 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_context_support_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_core_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_core_4_0_5_RELEASE.xml new file mode 100644 index 0000000..4b80075 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_core_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_expression_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_expression_4_0_5_RELEASE.xml new file mode 100644 index 0000000..db88c9b --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_expression_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_jdbc_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_jdbc_4_0_5_RELEASE.xml new file mode 100644 index 0000000..4f4c5c7 --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_jdbc_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_orm_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_orm_4_0_5_RELEASE.xml new file mode 100644 index 0000000..3c56bbb --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_orm_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_tx_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_tx_4_0_5_RELEASE.xml new file mode 100644 index 0000000..158a20c --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_tx_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_web_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_web_4_0_5_RELEASE.xml new file mode 100644 index 0000000..9692dab --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_web_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/libraries/Maven__org_springframework_spring_webmvc_4_0_5_RELEASE.xml b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_webmvc_4_0_5_RELEASE.xml new file mode 100644 index 0000000..fe9ac2d --- /dev/null +++ b/jackson-demo/.idea/libraries/Maven__org_springframework_spring_webmvc_4_0_5_RELEASE.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/misc.xml b/jackson-demo/.idea/misc.xml new file mode 100644 index 0000000..1117d03 --- /dev/null +++ b/jackson-demo/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/modules.xml b/jackson-demo/.idea/modules.xml new file mode 100644 index 0000000..9bb89b3 --- /dev/null +++ b/jackson-demo/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/jackson-demo/.idea/workspace.xml b/jackson-demo/.idea/workspace.xml new file mode 100644 index 0000000..f5c4bba --- /dev/null +++ b/jackson-demo/.idea/workspace.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; + +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("