tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Massimo Lusetti <mluse...@gmail.com>
Subject Re: [1/3] git commit: TAP5-2065 Publish MongoClient and DB as tapestry services
Date Wed, 06 Feb 2013 14:49:06 GMT
Thanks, please check if now is correct.


On Wed, Feb 6, 2013 at 9:52 AM, Ulrich Stärk <uli@spielviel.de> wrote:

> The LICENSE file contains the licenses relevant to that module only. The
> LICENSE file you checked in
> contains references to javassist, tapestry-ioc, and the MPL, all of which
> are irrelevant for
> tapestry-mongodb. In fact, since you are not distributing any code or
> dependency that is not
> AL-licensed, the LICENSE file should only contain the AL. You are,
> however, depending on the mongodb
> java driver, which is licensed under the AL. An entry for that in NOTICE
> is not necessary but good
> practice IMO.
>
> See [1] for a good example of a LICENSE file, [2] for a sample NOTICE
> file, and [3] for more
> information about the ASF's licensing policies.
>
> Cheers,
>
> Uli
>
> [1] http://svn.apache.org/repos/asf/httpd/httpd/trunk/LICENSE
> [2] http://svn.apache.org/repos/asf/httpd/httpd/trunk/NOTICE
> [3] http://www.apache.org/legal/
>
> On 06.02.2013 09:26, Massimo Lusetti wrote:
> > Sorry but I don't know how I should update the license, would you mind to
> > explain a little more?
> >
> >
> > On Wed, Feb 6, 2013 at 12:30 AM, Ulrich Stärk <uli@spielviel.de> wrote:
> >
> >> Please update the LICENSE.txt file to match the actual requirements for
> >> this module. Simply copying
> >> it over from tapestry-ioc is NOT sufficient.
> >>
> >> Uli
> >>
> >> On 05.02.2013 19:21, mlusetti@apache.org wrote:
> >>> TAP5-2065 Publish MongoClient and DB as tapestry services
> >>>
> >>>
> >>> Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
> >>> Commit:
> >> http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/dd299fae
> >>> Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/dd299fae
> >>> Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/dd299fae
> >>>
> >>> Branch: refs/heads/master
> >>> Commit: dd299faef9d7e2021a0866bc473ca22f89a71a5e
> >>> Parents: 1e353b6
> >>> Author: Massimo Lusetti <mlusetti@apache.org>
> >>> Authored: Tue Feb 5 19:17:32 2013 +0100
> >>> Committer: Massimo Lusetti <mlusetti@apache.org>
> >>> Committed: Tue Feb 5 19:21:21 2013 +0100
> >>>
> >>> ----------------------------------------------------------------------
> >>>  tapestry-mongodb/LICENSE.txt                       |  380
> >> +++++++++++++++
> >>>  tapestry-mongodb/NOTICE.txt                        |    2 +
> >>>  tapestry-mongodb/build.gradle                      |   24 +
> >>>  .../tapestry5/internal/mongodb/MongoDBImpl.java    |   81 +++
> >>>  .../internal/mongodb/MongoDBSourceImpl.java        |   58 +++
> >>>  .../java/org/apache/tapestry5/mongodb/MongoDB.java |   27 +
> >>>  .../apache/tapestry5/mongodb/MongoDBSource.java    |   17 +
> >>>  .../apache/tapestry5/mongodb/MongoDBSymbols.java   |   61 +++
> >>>  .../apache/tapestry5/mongodb/MongodbModule.java    |  123 +++++
> >>>  tapestry-mongodb/src/test/conf/testng.xml          |   24 +
> >>>  .../src/test/groovy/MongoDBSpec.groovy             |   93 ++++
> >>>  .../internal/mongodb/MongoDBTestModule.java        |   33 ++
> >>>  .../apache/tapestry5/internal/mongodb/People.java  |   50 ++
> >>>  13 files changed, 973 insertions(+), 0 deletions(-)
> >>> ----------------------------------------------------------------------
> >>>
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/LICENSE.txt
> >>> ----------------------------------------------------------------------
> >>> diff --git a/tapestry-mongodb/LICENSE.txt
> b/tapestry-mongodb/LICENSE.txt
> >>> new file mode 100644
> >>> index 0000000..61b38cc
> >>> --- /dev/null
> >>> +++ b/tapestry-mongodb/LICENSE.txt
> >>> @@ -0,0 +1,380 @@
> >>> +
> >>> +                                 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.
> >>> +
> >>> +
> >>>
> >>
> +-------------------------------------------------------------------------------
> >>> +
> >>> +JAVASSIST
> >>> +
> >>> +Javassist is not bundled with tapestry-ioc, but tapestry-ioc is not
> >> functional without Javassist.
> >>> +Javassist is distributed under a dual license: Mozilla Public License
> >> or LGPL (Lesser Gnu Public License). Tapestry
> >>> +invokes the MPL for compatibility with the Apache Software License.
> >>> +
> >>> +MOZILLA PUBLIC LICENSE
> >>> +Version 1.1
> >>> +
> >>> +1. Definitions.
> >>> +
> >>> +      1.0.1. "Commercial Use" means distribution or otherwise making
> >> the Covered Code available to a third party.
> >>> +
> >>> +      1.1. ''Contributor'' means each entity that creates or
> >> contributes to the creation of Modifications.
> >>> +
> >>> +      1.2. ''Contributor Version'' means the combination of the
> >> Original Code, prior Modifications used by a Contributor, and the
> >> Modifications made by that particular Contributor.
> >>> +
> >>> +      1.3. ''Covered Code'' means the Original Code or Modifications
> or
> >> the combination of the Original Code and Modifications, in each case
> >> including portions thereof.
> >>> +
> >>> +      1.4. ''Electronic Distribution Mechanism'' means a mechanism
> >> generally accepted in the software development community for the
> electronic
> >> transfer of data.
> >>> +
> >>> +      1.5. ''Executable'' means Covered Code in any form other than
> >> Source Code.
> >>> +
> >>> +      1.6. ''Initial Developer'' means the individual or entity
> >> identified as the Initial Developer in the Source Code notice required
> by
> >> Exhibit A.
> >>> +
> >>> +      1.7. ''Larger Work'' means a work which combines Covered Code or
> >> portions thereof with code not governed by the terms of this License.
> >>> +
> >>> +      1.8. ''License'' means this document.
> >>> +
> >>> +      1.8.1. "Licensable" means having the right to grant, to the
> >> maximum extent possible, whether at the time of the initial grant or
> >> subsequently acquired, any and all of the rights conveyed herein.
> >>> +
> >>> +      1.9. ''Modifications'' means any addition to or deletion from
> the
> >> substance or structure of either the Original Code or any previous
> >> Modifications. When Covered Code is released as a series of files, a
> >> Modification is:
> >>> +            A. Any addition to or deletion from the contents of a file
> >> containing Original Code or previous Modifications.
> >>> +
> >>> +            B. Any new file that contains any part of the Original
> Code
> >> or previous Modifications.
> >>> +
> >>> +      1.10. ''Original Code'' means Source Code of computer software
> >> code which is described in the Source Code notice required by Exhibit A
> as
> >> Original Code, and which, at the time of its release under this License
> is
> >> not already Covered Code governed by this License.
> >>> +
> >>> +      1.10.1. "Patent Claims" means any patent claim(s), now owned or
> >> hereafter acquired, including without limitation,  method, process, and
> >> apparatus claims, in any patent Licensable by grantor.
> >>> +
> >>> +      1.11. ''Source Code'' means the preferred form of the Covered
> >> Code for making modifications to it, including all modules it contains,
> >> plus any associated interface definition files, scripts used to control
> >> compilation and installation of an Executable, or source code
> differential
> >> comparisons against either the Original Code or another well known,
> >> available Covered Code of the Contributor's choice. The Source Code can
> be
> >> in a compressed or archival form, provided the appropriate
> decompression or
> >> de-archiving software is widely available for no charge.
> >>> +
> >>> +      1.12. "You'' (or "Your")  means an individual or a legal entity
> >> exercising rights under, and complying with all of the terms of, this
> >> License or a future version of this License issued under Section 6.1.
> For
> >> legal entities, "You'' includes any entity which controls, is controlled
> >> by, or is under common control with You. For purposes of this
> definition,
> >> "control'' means (a) the power, direct or indirect, to cause the
> direction
> >> or management of such entity, whether by contract or otherwise, or (b)
> >> ownership of more than fifty percent (50%) of the outstanding shares or
> >> beneficial ownership of such entity.
> >>> +
> >>> +2. Source Code License.
> >>> +
> >>> +      2.1. The Initial Developer Grant.
> >>> +      The Initial Developer hereby grants You a world-wide,
> >> royalty-free, non-exclusive license, subject to third party intellectual
> >> property claims:
> >>> +            (a)  under intellectual property rights (other than patent
> >> or trademark) Licensable by Initial Developer to use, reproduce, modify,
> >> display, perform, sublicense and distribute the Original Code (or
> portions
> >> thereof) with or without Modifications, and/or as part of a Larger
> Work; and
> >>> +
> >>> +            (b) under Patents Claims infringed by the making, using or
> >> selling of Original Code, to make, have made, use, practice, sell, and
> >> offer for sale, and/or otherwise dispose of the Original Code (or
> portions
> >> thereof).
> >>> +            (c) the licenses granted in this Section 2.1(a) and (b)
> are
> >> effective on the date Initial Developer first distributes Original Code
> >> under the terms of this License.
> >>> +
> >>> +            (d) Notwithstanding Section 2.1(b) above, no patent
> license
> >> is granted: 1) for code that You delete from the Original Code; 2)
> separate
> >> from the Original Code;  or 3) for infringements caused by: i) the
> >> modification of the Original Code or ii) the combination of the Original
> >> Code with other software or devices.
> >>> +
> >>> +      2.2. Contributor Grant.
> >>> +      Subject to third party intellectual property claims, each
> >> Contributor hereby grants You a world-wide, royalty-free, non-exclusive
> >> license
> >>> +
> >>> +            (a)  under intellectual property rights (other than patent
> >> or trademark) Licensable by Contributor, to use, reproduce, modify,
> >> display, perform, sublicense and distribute the Modifications created by
> >> such Contributor (or portions thereof) either on an unmodified basis,
> with
> >> other Modifications, as Covered Code and/or as part of a Larger Work;
> and
> >>> +
> >>> +            (b) under Patent Claims infringed by the making, using, or
> >> selling of  Modifications made by that Contributor either alone and/or
> in
> >> combination with its Contributor Version (or portions of such
> combination),
> >> to make, use, sell, offer for sale, have made, and/or otherwise dispose
> of:
> >> 1) Modifications made by that Contributor (or portions thereof); and 2)
> the
> >> combination of  Modifications made by that Contributor with its
> Contributor
> >> Version (or portions of such combination).
> >>> +
> >>> +            (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
> >> effective on the date Contributor first makes Commercial Use of the
> Covered
> >> Code.
> >>> +
> >>> +            (d)    Notwithstanding Section 2.2(b) above, no patent
> >> license is granted: 1) for any code that Contributor has deleted from
> the
> >> Contributor Version; 2)  separate from the Contributor Version;  3)  for
> >> infringements caused by: i) third party modifications of Contributor
> >> Version or ii)  the combination of Modifications made by that
> Contributor
> >> with other software  (except as part of the Contributor Version) or
> other
> >> devices; or 4) under Patent Claims infringed by Covered Code in the
> absence
> >> of Modifications made by that Contributor.
> >>> +
> >>> +
> >>> +3. Distribution Obligations.
> >>> +
> >>> +      3.1. Application of License.
> >>> +      The Modifications which You create or to which You contribute
> are
> >> governed by the terms of this License, including without limitation
> Section
> >> 2.2. The Source Code version of Covered Code may be distributed only
> under
> >> the terms of this License or a future version of this License released
> >> under Section 6.1, and You must include a copy of this License with
> every
> >> copy of the Source Code You distribute. You may not offer or impose any
> >> terms on any Source Code version that alters or restricts the applicable
> >> version of this License or the recipients' rights hereunder. However,
> You
> >> may include an additional document offering the additional rights
> described
> >> in Section 3.5.
> >>> +
> >>> +      3.2. Availability of Source Code.
> >>> +      Any Modification which You create or to which You contribute
> must
> >> be made available in Source Code form under the terms of this License
> >> either on the same media as an Executable version or via an accepted
> >> Electronic Distribution Mechanism to anyone to whom you made an
> Executable
> >> version available; and if made available via Electronic Distribution
> >> Mechanism, must remain available for at least twelve (12) months after
> the
> >> date it initially became available, or at least six (6) months after a
> >> subsequent version of that particular Modification has been made
> available
> >> to such recipients. You are responsible for ensuring that the Source
> Code
> >> version remains available even if the Electronic Distribution Mechanism
> is
> >> maintained by a third party.
> >>> +
> >>> +      3.3. Description of Modifications.
> >>> +      You must cause all Covered Code to which You contribute to
> >> contain a file documenting the changes You made to create that Covered
> Code
> >> and the date of any change. You must include a prominent statement that
> the
> >> Modification is derived, directly or indirectly, from Original Code
> >> provided by the Initial Developer and including the name of the Initial
> >> Developer in (a) the Source Code, and (b) in any notice in an Executable
> >> version or related documentation in which You describe the origin or
> >> ownership of the Covered Code.
> >>> +
> >>> +      3.4. Intellectual Property Matters
> >>> +            (a) Third Party Claims.
> >>> +            If Contributor has knowledge that a license under a third
> >> party's intellectual property rights is required to exercise the rights
> >> granted by such Contributor under Sections 2.1 or 2.2, Contributor must
> >> include a text file with the Source Code distribution titled "LEGAL''
> which
> >> describes the claim and the party making the claim in sufficient detail
> >> that a recipient will know whom to contact. If Contributor obtains such
> >> knowledge after the Modification is made available as described in
> Section
> >> 3.2, Contributor shall promptly modify the LEGAL file in all copies
> >> Contributor makes available thereafter and shall take other steps (such
> as
> >> notifying appropriate mailing lists or newsgroups) reasonably
> calculated to
> >> inform those who received the Covered Code that new knowledge has been
> >> obtained.
> >>> +
> >>> +            (b) Contributor APIs.
> >>> +            If Contributor's Modifications include an application
> >> programming interface and Contributor has knowledge of patent licenses
> >> which are reasonably necessary to implement that API, Contributor must
> also
> >> include this information in the LEGAL file.
> >>> +
> >>> +                (c)    Representations.
> >>> +            Contributor represents that, except as disclosed pursuant
> >> to Section 3.4(a) above, Contributor believes that Contributor's
> >> Modifications are Contributor's original creation(s) and/or Contributor
> has
> >> sufficient rights to grant the rights conveyed by this License.
> >>> +
> >>> +
> >>> +      3.5. Required Notices.
> >>> +      You must duplicate the notice in Exhibit A in each file of the
> >> Source Code.  If it is not possible to put such notice in a particular
> >> Source Code file due to its structure, then You must include such
> notice in
> >> a location (such as a relevant directory) where a user would be likely
> to
> >> look for such a notice.  If You created one or more Modification(s) You
> may
> >> add your name as a Contributor to the notice described in Exhibit A.
>  You
> >> must also duplicate this License in any documentation for the Source
> Code
> >> where You describe recipients' rights or ownership rights relating to
> >> Covered Code.  You may choose to offer, and to charge a fee for,
> warranty,
> >> support, indemnity or liability obligations to one or more recipients of
> >> Covered Code. However, You may do so only on Your own behalf, and not on
> >> behalf of the Initial Developer or any Contributor. You must make it
> >> absolutely clear than any such warranty, support, indemnity or liability
> >> obligation is offered by You alone, and
> >>  Yo
> >>>  u hereby
> >>>   agree to indemnify the Initial Developer and every Contributor for
> any
> >> liability incurred by the Initial Developer or such Contributor as a
> result
> >> of warranty, support, indemnity or liability terms You offer.
> >>> +
> >>> +      3.6. Distribution of Executable Versions.
> >>> +      You may distribute Covered Code in Executable form only if the
> >> requirements of Section 3.1-3.5 have been met for that Covered Code,
> and if
> >> You include a notice stating that the Source Code version of the Covered
> >> Code is available under the terms of this License, including a
> description
> >> of how and where You have fulfilled the obligations of Section 3.2. The
> >> notice must be conspicuously included in any notice in an Executable
> >> version, related documentation or collateral in which You describe
> >> recipients' rights relating to the Covered Code. You may distribute the
> >> Executable version of Covered Code or ownership rights under a license
> of
> >> Your choice, which may contain terms different from this License,
> provided
> >> that You are in compliance with the terms of this License and that the
> >> license for the Executable version does not attempt to limit or alter
> the
> >> recipient's rights in the Source Code version from the rights set forth
> in
> >> this License. If You distribute the Executabl
> >>  e
> >>>  version
> >>>  under a different license You must make it absolutely clear that any
> >> terms which differ from this License are offered by You alone, not by
> the
> >> Initial Developer or any Contributor. You hereby agree to indemnify the
> >> Initial Developer and every Contributor for any liability incurred by
> the
> >> Initial Developer or such Contributor as a result of any such terms You
> >> offer.
> >>> +
> >>> +      3.7. Larger Works.
> >>> +      You may create a Larger Work by combining Covered Code with
> other
> >> code not governed by the terms of this License and distribute the Larger
> >> Work as a single product. In such a case, You must make sure the
> >> requirements of this License are fulfilled for the Covered Code.
> >>> +
> >>> +4. Inability to Comply Due to Statute or Regulation.
> >>> +
> >>> +      If it is impossible for You to comply with any of the terms of
> >> this License with respect to some or all of the Covered Code due to
> >> statute, judicial order, or regulation then You must: (a) comply with
> the
> >> terms of this License to the maximum extent possible; and (b) describe
> the
> >> limitations and the code they affect. Such description must be included
> in
> >> the LEGAL file described in Section 3.4 and must be included with all
> >> distributions of the Source Code. Except to the extent prohibited by
> >> statute or regulation, such description must be sufficiently detailed
> for a
> >> recipient of ordinary skill to be able to understand it.
> >>> +
> >>> +5. Application of this License.
> >>> +
> >>> +      This License applies to code to which the Initial Developer has
> >> attached the notice in Exhibit A and to related Covered Code.
> >>> +
> >>> +6. Versions of the License.
> >>> +
> >>> +      6.1. New Versions.
> >>> +      Netscape Communications Corporation (''Netscape'') may publish
> >> revised and/or new versions of the License from time to time. Each
> version
> >> will be given a distinguishing version number.
> >>> +
> >>> +      6.2. Effect of New Versions.
> >>> +      Once Covered Code has been published under a particular version
> >> of the License, You may always continue to use it under the terms of
> that
> >> version. You may also choose to use such Covered Code under the terms of
> >> any subsequent version of the License published by Netscape. No one
> other
> >> than Netscape has the right to modify the terms applicable to Covered
> Code
> >> created under this License.
> >>> +
> >>> +      6.3. Derivative Works.
> >>> +      If You create or use a modified version of this License (which
> >> you may only do in order to apply it to code which is not already
> Covered
> >> Code governed by this License), You must (a) rename Your license so that
> >> the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL",
> >> ''NPL'' or any confusingly similar phrase do not appear in your license
> >> (except to note that your license differs from this License) and (b)
> >> otherwise make it clear that Your version of the license contains terms
> >> which differ from the Mozilla Public License and Netscape Public
> License.
> >> (Filling in the name of the Initial Developer, Original Code or
> Contributor
> >> in the notice described in Exhibit A shall not of themselves be deemed
> to
> >> be modifications of this License.)
> >>> +
> >>> +7. DISCLAIMER OF WARRANTY.
> >>> +
> >>> +      COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS''
> BASIS,
> >> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
> >> WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS,
> >> MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
> >> RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU.
> >> SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
> >> INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
> >> NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
> >> CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED
> CODE
> >> IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
> >>> +
> >>> +8. TERMINATION.
> >>> +
> >>> +      8.1.  This License and the rights granted hereunder will
> >> terminate automatically if You fail to comply with terms herein and
> fail to
> >> cure such breach within 30 days of becoming aware of the breach. All
> >> sublicenses to the Covered Code which are properly granted shall survive
> >> any termination of this License. Provisions which, by their nature, must
> >> remain in effect beyond the termination of this License shall survive.
> >>> +
> >>> +      8.2.  If You initiate litigation by asserting a patent
> >> infringement claim (excluding declatory judgment actions) against
> Initial
> >> Developer or a Contributor (the Initial Developer or Contributor against
> >> whom You file such action is referred to as "Participant")  alleging
> that:
> >>> +
> >>> +      (a)  such Participant's Contributor Version directly or
> >> indirectly infringes any patent, then any and all rights granted by such
> >> Participant to You under Sections 2.1 and/or 2.2 of this License shall,
> >> upon 60 days notice from Participant terminate prospectively, unless if
> >> within 60 days after receipt of notice You either: (i)  agree in
> writing to
> >> pay Participant a mutually agreeable reasonable royalty for Your past
> and
> >> future use of Modifications made by such Participant, or (ii) withdraw
> Your
> >> litigation claim with respect to the Contributor Version against such
> >> Participant.  If within 60 days of notice, a reasonable royalty and
> payment
> >> arrangement are not mutually agreed upon in writing by the parties or
> the
> >> litigation claim is not withdrawn, the rights granted by Participant to
> You
> >> under Sections 2.1 and/or 2.2 automatically terminate at the expiration
> of
> >> the 60 day notice period specified above.
> >>> +
> >>> +      (b)  any software, hardware, or device, other than such
> >> Participant's Contributor Version, directly or indirectly infringes any
> >> patent, then any rights granted to You by such Participant under
> Sections
> >> 2.1(b) and 2.2(b) are revoked effective as of the date You first made,
> >> used, sold, distributed, or had made, Modifications made by that
> >> Participant.
> >>> +
> >>> +      8.3.  If You assert a patent infringement claim against
> >> Participant alleging that such Participant's Contributor Version
> directly
> >> or indirectly infringes any patent where such claim is resolved (such
> as by
> >> license or settlement) prior to the initiation of patent infringement
> >> litigation, then the reasonable value of the licenses granted by such
> >> Participant under Sections 2.1 or 2.2 shall be taken into account in
> >> determining the amount or value of any payment or license.
> >>> +
> >>> +      8.4.  In the event of termination under Sections 8.1 or 8.2
> >> above,  all end user license agreements (excluding distributors and
> >> resellers) which have been validly granted by You or any distributor
> >> hereunder prior to termination shall survive termination.
> >>> +
> >>> +9. LIMITATION OF LIABILITY.
> >>> +
> >>> +      UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
> >> (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
> >> DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR
> >> ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY
> >> INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER
> >> INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
> STOPPAGE,
> >> COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL
> DAMAGES OR
> >> LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY
> OF
> >> SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY
> FOR
> >> DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE
> >> EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
> NOT
> >> ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL
> DAMAGES,
> >> SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
> >>> +
> >>> +10. U.S. GOVERNMENT END USERS.
> >>> +
> >>> +      The Covered Code is a ''commercial item,'' as that term is
> >> defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial
> computer
> >> software'' and ''commercial computer software documentation,'' as such
> >> terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
> C.F.R.
> >> 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S.
> >> Government End Users acquire Covered Code with only those rights set
> forth
> >> herein.
> >>> +
> >>> +11. MISCELLANEOUS.
> >>> +
> >>> +      This License represents the complete agreement concerning
> subject
> >> matter hereof. If any provision of this License is held to be
> >> unenforceable, such provision shall be reformed only to the extent
> >> necessary to make it enforceable. This License shall be governed by
> >> California law provisions (except to the extent applicable law, if any,
> >> provides otherwise), excluding its conflict-of-law provisions. With
> respect
> >> to disputes in which at least one party is a citizen of, or an entity
> >> chartered or registered to do business in the United States of America,
> any
> >> litigation relating to this License shall be subject to the
> jurisdiction of
> >> the Federal Courts of the Northern District of California, with venue
> lying
> >> in Santa Clara County, California, with the losing party responsible for
> >> costs, including without limitation, court costs and reasonable
> attorneys'
> >> fees and expenses. The application of the United Nations Convention on
> >> Contracts for the International Sale of Goods is expr
> >>  es
> >>>  sly excl
> >>>  uded. Any law or regulation which provides that the language of a
> >> contract shall be construed against the drafter shall not apply to this
> >> License.
> >>> +
> >>> +12. RESPONSIBILITY FOR CLAIMS.
> >>> +
> >>> +      As between Initial Developer and the Contributors, each party is
> >> responsible for claims and damages arising, directly or indirectly, out
> of
> >> its utilization of rights under this License and You agree to work with
> >> Initial Developer and Contributors to distribute such responsibility on
> an
> >> equitable basis. Nothing herein is intended or shall be deemed to
> >> constitute any admission of liability.
> >>> +
> >>> +13. MULTIPLE-LICENSED CODE.
> >>> +
> >>> +      Initial Developer may designate portions of the Covered Code as
> >> �Multiple-Licensed?.  �Multiple-Licensed? means that the Initial
> Developer
> >> permits you to utilize portions of the Covered Code under Your choice of
> >> the MPL or the alternative licenses, if any, specified by the Initial
> >> Developer in the file described in Exhibit A.
> >>> +
> >>> +
> >>> +EXHIBIT A -Mozilla Public License.
> >>> +
> >>> +      The contents of this file are subject to the Mozilla Public
> >> License Version 1.1 (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.mozilla.org/MPL/
> >>> +
> >>> +      Software distributed under the License is distributed on an "AS
> >> IS" basis, WITHOUT WARRANTY OF
> >>> +      ANY KIND, either express or implied. See the License for the
> >> specific language governing rights and
> >>> +      limitations under the License.
> >>> +
> >>> +      The Original Code is Javassist.
> >>> +
> >>> +      The Initial Developer of the Original Code is Shigeru Chiba.
> >> Portions created by the Initial Developer are
> >>> +        Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
> >>> +
> >>> +      Contributor(s): ______________________________________.
> >>> +
> >>> +      Alternatively, the contents of this file may be used under the
> >> terms of the GNU Lesser General Public License Version 2.1 or later (the
> >> "LGPL"), in which case the provisions of the LGPL are applicable
> instead of
> >> those above. If you wish to allow use of your version of this file only
> >> under the terms of the LGPL, and not to allow others to use your
> version of
> >> this file under the terms of the MPL, indicate your decision by deleting
> >> the provisions above and replace them with the notice and other
> provisions
> >> required by the LGPL. If you do not delete the provisions above, a
> >> recipient may use your version of this file under the terms of either
> the
> >> MPL or the LGPL.
> >>> +
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/NOTICE.txt
> >>> ----------------------------------------------------------------------
> >>> diff --git a/tapestry-mongodb/NOTICE.txt b/tapestry-mongodb/NOTICE.txt
> >>> new file mode 100644
> >>> index 0000000..3f59805
> >>> --- /dev/null
> >>> +++ b/tapestry-mongodb/NOTICE.txt
> >>> @@ -0,0 +1,2 @@
> >>> +This product includes software developed by
> >>> +The Apache Software Foundation (http://www.apache.org/).
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/build.gradle
> >>> ----------------------------------------------------------------------
> >>> diff --git a/tapestry-mongodb/build.gradle
> >> b/tapestry-mongodb/build.gradle
> >>> new file mode 100644
> >>> index 0000000..3019266
> >>> --- /dev/null
> >>> +++ b/tapestry-mongodb/build.gradle
> >>> @@ -0,0 +1,24 @@
> >>> +description = "Basic MongoDB services for Tapestry, useable outside of
> >> a Tapestry web application"
> >>> +
> >>> +dependencies {
> >>> +    compile project(':tapestry-ioc')
> >>> +    compile project(':tapestry-test')
> >>> +
> >>> +    compile group: 'org.mongodb', name: 'mongo-java-driver', version:
> >> '2.10.1'
> >>> +
> >>> +    testCompile group: 'org.jongo', name: 'jongo', version: '0.3'
> >>> +
> >>> +    testCompile "org.spockframework:spock-core:${versions.spock}"
> >>> +
> >>> +    testCompile "de.flapdoodle.embed:de.flapdoodle.embed.mongo:1.28"
> >>> +}
> >>> +
> >>> +test {
> >>> +    useJUnit()
> >>> +}
> >>> +
> >>> +jar {
> >>> +    manifest {
> >>> +        attributes 'Tapestry-Module-Classes':
> >> 'org.apache.tapestry5.mongodb.MongodbModule'
> >>> +    }
> >>> +}
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/main/java/org/apache/tapestry5/internal/mongodb/MongoDBImpl.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> >>
> a/tapestry-mongodb/src/main/java/org/apache/tapestry5/internal/mongodb/MongoDBImpl.java
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/internal/mongodb/MongoDBImpl.java
> >>> new file mode 100644
> >>> index 0000000..f4e709a
> >>> --- /dev/null
> >>> +++
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/internal/mongodb/MongoDBImpl.java
> >>> @@ -0,0 +1,81 @@
> >>> +package org.apache.tapestry5.internal.mongodb;
> >>> +
> >>> +import com.mongodb.DB;
> >>> +import com.mongodb.Mongo;
> >>> +import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
> >>> +import org.apache.tapestry5.mongodb.MongoDB;
> >>> +import org.apache.tapestry5.mongodb.MongoDBSource;
> >>> +import org.slf4j.Logger;
> >>> +
> >>> +/**
> >>> + * Default implementation for {@link
> >> org.apache.tapestry5.mongodb.MongoDB}
> >>> + */
> >>> +public class MongoDBImpl implements MongoDB, ThreadCleanupListener
> >>> +{
> >>> +    private final Logger logger;
> >>> +
> >>> +     private final Mongo mongo;
> >>> +
> >>> +    private final String defaultDbName;
> >>> +    private final boolean consistentRequest;
> >>> +
> >>> +     private final boolean secureMode;
> >>> +     private final String dbUsername;
> >>> +     private final String dbPassword;
> >>> +
> >>> +    private DB db;
> >>> +
> >>> +    public MongoDBImpl(Logger logger,
> >>> +                MongoDBSource mongoDBSource,
> >>> +           String defaultDbName, boolean consistentRequest,
> >>> +                boolean secureMode, String dbUsername, String
> >> dbPassword)
> >>> +    {
> >>> +        this.logger = logger;
> >>> +
> >>> +        this.mongo = mongoDBSource.getMongo();
> >>> +
> >>> +        this.defaultDbName = defaultDbName;
> >>> +        this.consistentRequest = consistentRequest;
> >>> +
> >>> +             this.secureMode = secureMode;
> >>> +             this.dbUsername = dbUsername;
> >>> +             this.dbPassword = dbPassword;
> >>> +    }
> >>> +
> >>> +    @Override
> >>> +    public DB getDefaultMongoDb()
> >>> +    {
> >>> +        return buildDbSession(defaultDbName);
> >>> +    }
> >>> +
> >>> +    @Override
> >>> +    public DB getMongoDb(String dbname)
> >>> +    {
> >>> +             return buildDbSession(dbname);
> >>> +    }
> >>> +
> >>> +    public void threadDidCleanup()
> >>> +    {
> >>> +        if (consistentRequest)
> >>> +            db.requestDone();
> >>> +    }
> >>> +
> >>> +
> >>> +     private final DB buildDbSession(String dbname)
> >>> +     {
> >>> +             db = mongo.getDB(dbname);
> >>> +
> >>> +             if (consistentRequest)
> >>> +             {
> >>> +                     db.requestStart();
> >>> +                     db.requestEnsureConnection();
> >>> +             }
> >>> +
> >>> +             if (secureMode)
> >>> +             {
> >>> +                     db.authenticate(dbUsername,
> >> dbPassword.toCharArray());
> >>> +             }
> >>> +
> >>> +             return db;
> >>> +     }
> >>> +}
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/main/java/org/apache/tapestry5/internal/mongodb/MongoDBSourceImpl.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> >>
> a/tapestry-mongodb/src/main/java/org/apache/tapestry5/internal/mongodb/MongoDBSourceImpl.java
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/internal/mongodb/MongoDBSourceImpl.java
> >>> new file mode 100644
> >>> index 0000000..16f6c07
> >>> --- /dev/null
> >>> +++
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/internal/mongodb/MongoDBSourceImpl.java
> >>> @@ -0,0 +1,58 @@
> >>> +package org.apache.tapestry5.internal.mongodb;
> >>> +
> >>> +import com.mongodb.*;
> >>> +import org.apache.tapestry5.ioc.annotations.Symbol;
> >>> +import org.apache.tapestry5.mongodb.MongoDBSource;
> >>> +import org.apache.tapestry5.mongodb.MongoDBSymbols;
> >>> +import org.slf4j.Logger;
> >>> +
> >>> +import java.net.UnknownHostException;
> >>> +import java.util.List;
> >>> +
> >>> +/**
> >>> + * Default implementation for {@link
> >> org.apache.tapestry5.mongodb.MongoDBSource}
> >>> + */
> >>> +public class MongoDBSourceImpl implements MongoDBSource
> >>> +{
> >>> +    private final Logger logger;
> >>> +
> >>> +    private final MongoClient mongoClient;
> >>> +
> >>> +
> >>> +    public MongoDBSourceImpl(Logger logger,
> >>> +            @Symbol(MongoDBSymbols.CONNECTIONS_PER_HOSTS) int
> >> connectionPerHost,
> >>> +            @Symbol(MongoDBSymbols.READ_PREFERENCE) ReadPreference
> >> readPreference,
> >>> +            @Symbol(MongoDBSymbols.WRITE_CONCERN) WriteConcern
> >> writeConcern,
> >>> +            List<ServerAddress> serverAddresses)
> >>> +    {
> >>> +        this.logger = logger;
> >>> +
> >>> +             MongoClientOptions options = new
> >> MongoClientOptions.Builder()
> >>> +                             .connectionsPerHost(connectionPerHost)
> >>> +
> >> .writeConcern(writeConcern).readPreference(readPreference)
> >>> +                             .build();
> >>> +
> >>> +        if (serverAddresses.isEmpty())
> >>> +             {
> >>> +                     try
> >>> +                     {
> >>> +                             mongoClient = new MongoClient(new
> >> ServerAddress(), options);
> >>> +                     }
> >>> +                     catch (UnknownHostException uhe)
> >>> +                     {
> >>> +                             throw new RuntimeException(uhe);
> >>> +                     }
> >>> +             }
> >>> +        else
> >>> +             {
> >>> +            mongoClient = new MongoClient(serverAddresses, options);
> >>> +             }
> >>> +    }
> >>> +
> >>> +
> >>> +    @Override
> >>> +    public MongoClient getMongo()
> >>> +    {
> >>> +        return this.mongoClient;
> >>> +    }
> >>> +}
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDB.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> >>
> a/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDB.java
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDB.java
> >>> new file mode 100644
> >>> index 0000000..1cf9b4f
> >>> --- /dev/null
> >>> +++
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDB.java
> >>> @@ -0,0 +1,27 @@
> >>> +package org.apache.tapestry5.mongodb;
> >>> +
> >>> +import com.mongodb.DB;
> >>> +import org.slf4j.Logger;
> >>> +
> >>> +/**
> >>> + *
> >>> + */
> >>> +public interface MongoDB
> >>> +{
> >>> +    /**
> >>> +     * Obtain a shared instance of the MongoDB database connection
> >> object connected
> >>> +     * to the default database
> >>> +     *
> >>> +     * @return the {@link com.mongodb.DB} connection object
> >>> +     */
> >>> +    public DB getDefaultMongoDb();
> >>> +
> >>> +    /**
> >>> +     * Obtain a shared instance of the MongoDB database connection
> >> object for the
> >>> +     * specific database
> >>> +     *
> >>> +     * @param dbname the database name to connect to
> >>> +     * @return the {@link DB} connection object
> >>> +     */
> >>> +    public DB getMongoDb(String dbname);
> >>> +}
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDBSource.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> >>
> a/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDBSource.java
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDBSource.java
> >>> new file mode 100644
> >>> index 0000000..643774b
> >>> --- /dev/null
> >>> +++
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDBSource.java
> >>> @@ -0,0 +1,17 @@
> >>> +package org.apache.tapestry5.mongodb;
> >>> +
> >>> +import com.mongodb.MongoClient;
> >>> +import com.mongodb.ServerAddress;
> >>> +import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
> >>> +
> >>> +/**
> >>> + *
> >>> + */
> >>> +@UsesOrderedConfiguration(ServerAddress.class)
> >>> +public interface MongoDBSource
> >>> +{
> >>> +    /**
> >>> +     * @return the {@link MongoClient} database connection object.
> >>> +     */
> >>> +    public MongoClient getMongo();
> >>> +}
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDBSymbols.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> >>
> a/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDBSymbols.java
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDBSymbols.java
> >>> new file mode 100644
> >>> index 0000000..56f4ef5
> >>> --- /dev/null
> >>> +++
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongoDBSymbols.java
> >>> @@ -0,0 +1,61 @@
> >>> +package org.apache.tapestry5.mongodb;
> >>> +
> >>> +/**
> >>> + * Configuration symbols, for use with contributions to
> >>> + * {@link org.apache.tapestry5.ioc.services.ApplicationDefaults}.
> >>> + * All {@link org.apache.tapestry5.ioc.annotations.Symbol} are
> relative
> >> to the usage of
> >>> + * <a href="http://www.mongodb.org">MongoDB</a> support within Apache
> >> Tapestry.
> >>> + *
> >>> + * @since 5.4
> >>> + */
> >>> +public class MongoDBSymbols
> >>> +{
> >>> +    /**
> >>> +     * The {@link com.mongodb.WriteConcern} to use. Default to {@link
> >> com.mongodb.WriteConcern.ACKNOWLEDGED}.
> >>> +     */
> >>> +    public static final String WRITE_CONCERN =
> >> "tapestry.mongodb.write_concern";
> >>> +
> >>> +    /**
> >>> +     * The {@link com.mongodb.ReadPreference} to use. Default to
> {@link
> >> com.mongodb.ReadPreference.primary()}.
> >>> +     */
> >>> +    public static final String READ_PREFERENCE =
> >> "tapestry.mongodb.read_preference";
> >>> +
> >>> +    //
> >> ########################################################################
> >>> +
> >>> +    /**
> >>> +     * The maximum number of connections allowed per host for this
> >> Mongo instance. Defaults to 10.
> >>> +     */
> >>> +    public static final String CONNECTIONS_PER_HOSTS =
> >> "tapestry.mongodb.conns-per-host";
> >>> +
> >>> +    /**
> >>> +     * The MongoDB default database name to connect to. No default
> >> provided.
> >>> +     */
> >>> +    public static final String DEFAULT_DB_NAME =
> >> "tapestry.mongodb.default_db_name";
> >>> +
> >>> +    /**
> >>> +     * Where to use or not the <em>consisten request</em> paradigm.
> >> Default to false;
> >>> +     */
> >>> +    public static final String CONSISTENT_REQUEST =
> >> "tapestry.mongodb.consistent_request";
> >>> +
> >>> +     //
> >> ########################################################################
> >>> +
> >>> +     /**
> >>> +      * <code>true</code> if you need to connect to Mongo DB in
> >> <em>secure mode</em>,
> >>> +      * <code>false</code> otherwise.
> >>> +      * You need to set DB_USERNAME and DB_PASSWORD too if this is set
> >> to <code>true</code>.
> >>> +      * Defaults to <code>false</code>
> >>> +      */
> >>> +     public static final String SECURE_MODE =
> >> "tapestry.mongodb.secure_mode";
> >>> +
> >>> +     /**
> >>> +      * Username to use to connect Mongo DB.
> >>> +      * Defaults to empty string.
> >>> +      */
> >>> +     public static final String DB_USERNAME =
> >> "tapestry.mongodb.db_username";
> >>> +
> >>> +     /**
> >>> +      * Password to use to connect Mongo DB.
> >>> +      * Defaults to empty string.
> >>> +      */
> >>> +     public static final String DB_PASSWORD =
> >> "tapestry.mongodb.db_password";
> >>> +}
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongodbModule.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> >>
> a/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongodbModule.java
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongodbModule.java
> >>> new file mode 100644
> >>> index 0000000..a7d53bd
> >>> --- /dev/null
> >>> +++
> >>
> b/tapestry-mongodb/src/main/java/org/apache/tapestry5/mongodb/MongodbModule.java
> >>> @@ -0,0 +1,123 @@
> >>> +package org.apache.tapestry5.mongodb;
> >>> +
> >>> +import com.mongodb.ReadPreference;
> >>> +import com.mongodb.WriteConcern;
> >>> +import org.apache.tapestry5.internal.mongodb.MongoDBImpl;
> >>> +import org.apache.tapestry5.internal.mongodb.MongoDBSourceImpl;
> >>> +import org.apache.tapestry5.ioc.Configuration;
> >>> +import org.apache.tapestry5.ioc.MappedConfiguration;
> >>> +import org.apache.tapestry5.ioc.ScopeConstants;
> >>> +import org.apache.tapestry5.ioc.ServiceBinder;
> >>> +import org.apache.tapestry5.ioc.annotations.Scope;
> >>> +import org.apache.tapestry5.ioc.annotations.Symbol;
> >>> +import org.apache.tapestry5.ioc.services.Coercion;
> >>> +import org.apache.tapestry5.ioc.services.CoercionTuple;
> >>> +import org.apache.tapestry5.ioc.services.PerthreadManager;
> >>> +import org.slf4j.Logger;
> >>> +
> >>> +/**
> >>> + * Defines services which are responsible for MongoDB initializations
> >> and connections.
> >>> + */
> >>> +public class MongodbModule
> >>> +{
> >>> +    public static void bind(ServiceBinder binder)
> >>> +    {
> >>> +        binder.bind(MongoDBSource.class, MongoDBSourceImpl.class);
> >>> +    }
> >>> +
> >>> +    public static void
> >> contributeFactoryDefaults(MappedConfiguration<String, String>
> configuration)
> >>> +    {
> >>> +        configuration.add(MongoDBSymbols.CONNECTIONS_PER_HOSTS, "10");
> >>> +        configuration.add(MongoDBSymbols.WRITE_CONCERN,
> "ACKNOWLEDGED");
> >>> +        configuration.add(MongoDBSymbols.READ_PREFERENCE, "PRIMARY");
> >>> +        configuration.add(MongoDBSymbols.CONSISTENT_REQUEST, "false");
> >>> +
> >>> +             // Authentication (Mongo in secure mode)
> >>> +
> >>> +             configuration.add(MongoDBSymbols.SECURE_MODE, "false");
> >>> +             configuration.add(MongoDBSymbols.DB_USERNAME, "");
> >>> +             configuration.add(MongoDBSymbols.DB_PASSWORD, "");
> >>> +    }
> >>> +
> >>> +    @Scope(ScopeConstants.PERTHREAD)
> >>> +    public static MongoDB buildMongoDB(Logger logger, final
> >> MongoDBSource mongoDBSource,
> >>> +                     PerthreadManager perthreadManager,
> >>> +                     @Symbol(MongoDBSymbols.DEFAULT_DB_NAME) String
> >> defaultDbName,
> >>> +                     @Symbol(MongoDBSymbols.CONSISTENT_REQUEST)
> boolean
> >> consistentRequest,
> >>> +
> >>  @Symbol(MongoDBSymbols.SECURE_MODE) boolean secureMode,
> >>> +
> >>  @Symbol(MongoDBSymbols.DB_USERNAME) String dbUsername,
> >>> +
> >>  @Symbol(MongoDBSymbols.DB_PASSWORD) String dbPassword)
> >>> +    {
> >>> +        final MongoDBImpl mongoDB = new MongoDBImpl(logger,
> >> mongoDBSource,
> >>> +                defaultDbName, consistentRequest, secureMode,
> >> dbUsername, dbPassword);
> >>> +
> >>> +             perthreadManager.addThreadCleanupListener(mongoDB);
> >>> +
> >>> +        return mongoDB;
> >>> +    }
> >>> +
> >>> +    /**
> >>> +     * Contribute coercions for {@link WriteConcern} and {@link
> >> ReadPreference} to have them from
> >>> +     * {@link org.apache.tapestry5.ioc.annotations.Symbol}
> >>> +     *
> >>> +     * @param configuration lets help the {@link
> >> org.apache.tapestry5.ioc.services.TypeCoercer} service
> >>> +     */
> >>> +    public static void
> >> contributeTypeCoercer(Configuration<CoercionTuple> configuration)
> >>> +    {
> >>> +        configuration.add(new CoercionTuple(String.class,
> >> WriteConcern.class,
> >>> +                new Coercion<String, WriteConcern>() {
> >>> +                    @Override
> >>> +                    public WriteConcern coerce(String input)
> >>> +                    {
> >>> +                        if (input.equalsIgnoreCase("FSYNC_SAFE"))
> >>> +                        {
> >>> +                            return WriteConcern.FSYNC_SAFE;
> >>> +                        }
> >>> +                        else if
> (input.equalsIgnoreCase("JOURNAL_SAFE"))
> >>> +                        {
> >>> +                            return WriteConcern.JOURNAL_SAFE;
> >>> +                        }
> >>> +                        else if (input.equalsIgnoreCase("MAJORITY"))
> >>> +                        {
> >>> +                            return WriteConcern.MAJORITY;
> >>> +                        }
> >>> +                        else if (input.equalsIgnoreCase("NONE"))
> >>> +                        {
> >>> +                            return WriteConcern.NONE;
> >>> +                        }
> >>> +                        else if
> >> (input.equalsIgnoreCase("REPLICAS_SAFE"))
> >>> +                        {
> >>> +                            return WriteConcern.REPLICAS_SAFE;
> >>> +                        }
> >>> +                        else if (input.equalsIgnoreCase("SAFE"))
> >>> +                        {
> >>> +                            return WriteConcern.SAFE;
> >>> +                        }
> >>> +                                             else if
> >> (input.equalsIgnoreCase("NORMAL"))
> >>> +                                             {
> >>> +                                                     return
> >> WriteConcern.NORMAL;
> >>> +                                             }
> >>> +                        else // WriteConcern.ACKNOWLEDGED IS OUR
> DEFAULT
> >>> +                        {
> >>> +                            return WriteConcern.ACKNOWLEDGED;
> >>> +                        }
> >>> +                    }
> >>> +                }
> >>> +        ));
> >>> +
> >>> +        configuration.add(new CoercionTuple(String.class,
> >> ReadPreference.class, new Coercion<String, ReadPreference>() {
> >>> +            @Override
> >>> +            public ReadPreference coerce(String input)
> >>> +            {
> >>> +                if (input.equalsIgnoreCase("SECONDARY"))
> >>> +                {
> >>> +                    return ReadPreference.secondary();
> >>> +                }
> >>> +                else // PRIMARY IS OUR DEFAULT
> >>> +                {
> >>> +                    return ReadPreference.primary();
> >>> +                }
> >>> +            }
> >>> +        }));
> >>> +    }
> >>> +}
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/test/conf/testng.xml
> >>> ----------------------------------------------------------------------
> >>> diff --git a/tapestry-mongodb/src/test/conf/testng.xml
> >> b/tapestry-mongodb/src/test/conf/testng.xml
> >>> new file mode 100644
> >>> index 0000000..5c54c10
> >>> --- /dev/null
> >>> +++ b/tapestry-mongodb/src/test/conf/testng.xml
> >>> @@ -0,0 +1,24 @@
> >>> +<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
> >>> +<!--
> >>> +   Copyright 2012 The Apache Software Foundation
> >>> +
> >>> +   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.
> >>> +-->
> >>> +
> >>> +<suite name="Core MongoDB" parallel="false" thread-count="10"
> >> annotations="1.5" verbose="2">
> >>> +    <test name="Tapestry MongoDB Internal APIs">
> >>> +        <packages>
> >>> +            <package name="org.apache.tapestry5.internal.mongodb"/>
> >>> +        </packages>
> >>> +    </test>
> >>> +</suite>
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/test/groovy/MongoDBSpec.groovy
> >>> ----------------------------------------------------------------------
> >>> diff --git a/tapestry-mongodb/src/test/groovy/MongoDBSpec.groovy
> >> b/tapestry-mongodb/src/test/groovy/MongoDBSpec.groovy
> >>> new file mode 100644
> >>> index 0000000..c93a591
> >>> --- /dev/null
> >>> +++ b/tapestry-mongodb/src/test/groovy/MongoDBSpec.groovy
> >>> @@ -0,0 +1,93 @@
> >>> +import de.flapdoodle.embed.mongo.MongodExecutable
> >>> +import de.flapdoodle.embed.mongo.MongodProcess
> >>> +import de.flapdoodle.embed.mongo.MongodStarter
> >>> +import de.flapdoodle.embed.mongo.config.MongodConfig
> >>> +import de.flapdoodle.embed.mongo.distribution.Version
> >>> +import de.flapdoodle.embed.process.runtime.Network
> >>> +import org.apache.tapestry5.internal.mongodb.MongoDBTestModule
> >>> +import org.apache.tapestry5.internal.mongodb.People
> >>> +import org.apache.tapestry5.ioc.Registry
> >>> +import org.apache.tapestry5.ioc.RegistryBuilder
> >>> +import org.apache.tapestry5.ioc.services.TapestryIOCModule
> >>> +import org.apache.tapestry5.mongodb.MongoDB
> >>> +import org.apache.tapestry5.mongodb.MongoDBSource
> >>> +import org.apache.tapestry5.mongodb.MongodbModule
> >>> +import org.jongo.Jongo
> >>> +import org.jongo.MongoCollection
> >>> +import spock.lang.AutoCleanup
> >>> +import spock.lang.Shared
> >>> +import spock.lang.Specification
> >>> +
> >>> +class MongoDBSpec extends Specification
> >>> +{
> >>> +    final int total = 1000
> >>> +
> >>> +    @Shared @AutoCleanup("shutdown")
> >>> +    Registry registry;
> >>> +
> >>> +    @Shared
> >>> +    MongoDBSource mongoDBSource
> >>> +    @Shared
> >>> +    MongoDB mongoDB
> >>> +
> >>> +    static int PORT = 12345
> >>> +    static MongodExecutable mongodExe
> >>> +    static MongodProcess mongod
> >>> +
> >>> +    static MongoCollection peoples;
> >>> +    static Jongo jongo
> >>> +
> >>> +    def setupSpec()
> >>> +    {
> >>> +        // Start embedded MongoDB instance
> >>> +        MongodStarter runtime = MongodStarter.getDefaultInstance();
> >>> +        mongodExe = runtime.prepare(new
> MongodConfig(Version.Main.V2_2,
> >> 12345, Network.localhostIsIPv6()));
> >>> +        mongod = mongodExe.start();
> >>> +
> >>> +        // Populate and start the Registry
> >>> +        RegistryBuilder builder = new
> >> RegistryBuilder().add(MongoDBTestModule, MongodbModule,
> TapestryIOCModule)
> >>> +        registry = builder.build();
> >>> +        registry.performRegistryStartup();
> >>> +
> >>> +        // Get our service
> >>> +        mongoDBSource = registry.getService(MongoDBSource)
> >>> +        mongoDB = registry.getService(MongoDB)
> >>> +
> >>> +        jongo = new Jongo(mongoDB.getDefaultMongoDb())
> >>> +        peoples = jongo.getCollection("peoples")
> >>> +    }
> >>> +
> >>> +    def cleanupSpec()
> >>> +    {
> >>> +        peoples.drop()
> >>> +        if (mongod != null) mongod.stop()
> >>> +        if (mongodExe != null) mongodExe.stop();
> >>> +    }
> >>> +
> >>> +    def "Lets check mongodb source"()
> >>> +    {
> >>> +        expect:
> >>> +        mongoDBSource.getMongo() != null
> >>> +    }
> >>> +
> >>> +    def "Lets populate it"()
> >>> +    {
> >>> +        when:
> >>> +        for (int i = 0; i < total; i++)
> >>> +        {
> >>> +            People p = new People();
> >>> +            p.setBirthDate(new Date());
> >>> +            p.setName("Name-" + i);
> >>> +            p.setSurname("Surname-" + i);
> >>> +            peoples.save(p)
> >>> +        }
> >>> +
> >>> +        then:
> >>> +        peoples.count() == total
> >>> +        People p42 = peoples.findOne("{name:
> >> 'Name-42'}").as(People.class)
> >>> +        p42.getSurname().equals("Surname-42")
> >>> +
> >>> +        cleanup:
> >>> +        peoples.remove("{}")
> >>> +    }
> >>> +}
> >>> \ No newline at end of file
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/test/java/org/apache/tapestry5/internal/mongodb/MongoDBTestModule.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> >>
> a/tapestry-mongodb/src/test/java/org/apache/tapestry5/internal/mongodb/MongoDBTestModule.java
> >>
> b/tapestry-mongodb/src/test/java/org/apache/tapestry5/internal/mongodb/MongoDBTestModule.java
> >>> new file mode 100644
> >>> index 0000000..b60e573
> >>> --- /dev/null
> >>> +++
> >>
> b/tapestry-mongodb/src/test/java/org/apache/tapestry5/internal/mongodb/MongoDBTestModule.java
> >>> @@ -0,0 +1,33 @@
> >>> +package org.apache.tapestry5.internal.mongodb;
> >>> +
> >>> +import com.mongodb.ServerAddress;
> >>> +import org.apache.tapestry5.ioc.MappedConfiguration;
> >>> +import org.apache.tapestry5.ioc.OrderedConfiguration;
> >>> +import org.apache.tapestry5.mongodb.MongoDBSymbols;
> >>> +
> >>> +import java.net.UnknownHostException;
> >>> +
> >>> +/**
> >>> + *
> >>> + */
> >>> +public class MongoDBTestModule
> >>> +{
> >>> +
> >>> +    public static void
> >> contributeApplicationDefaults(MappedConfiguration<String, String>
> >> configuration)
> >>> +    {
> >>> +        configuration.add(MongoDBSymbols.DEFAULT_DB_NAME,
> >> "TapestryMongoTest");
> >>> +    }
> >>> +
> >>> +
> >>> +    public static void
> >> contributeMongoDBSource(OrderedConfiguration<ServerAddress>
> configuration)
> >>> +    {
> >>> +        try
> >>> +        {
> >>> +            configuration.add("test", new ServerAddress("localhost",
> >> 12345));
> >>> +        }
> >>> +        catch (UnknownHostException e)
> >>> +        {
> >>> +            throw new RuntimeException(e);
> >>> +        }
> >>> +    }
> >>> +}
> >>>
> >>>
> >>
> http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/dd299fae/tapestry-mongodb/src/test/java/org/apache/tapestry5/internal/mongodb/People.java
> >>> ----------------------------------------------------------------------
> >>> diff --git
> >>
> a/tapestry-mongodb/src/test/java/org/apache/tapestry5/internal/mongodb/People.java
> >>
> b/tapestry-mongodb/src/test/java/org/apache/tapestry5/internal/mongodb/People.java
> >>> new file mode 100644
> >>> index 0000000..e8acfa8
> >>> --- /dev/null
> >>> +++
> >>
> b/tapestry-mongodb/src/test/java/org/apache/tapestry5/internal/mongodb/People.java
> >>> @@ -0,0 +1,50 @@
> >>> +package org.apache.tapestry5.internal.mongodb;
> >>> +
> >>> +import org.bson.types.ObjectId;
> >>> +
> >>> +import java.util.Date;
> >>> +
> >>> +/**
> >>> + *
> >>> + */
> >>> +public class People
> >>> +{
> >>> +    private ObjectId _id;
> >>> +
> >>> +    private String name;
> >>> +    private String surname;
> >>> +    private Date birthDate;
> >>> +
> >>> +
> >>> +    public ObjectId get_id() {
> >>> +        return _id;
> >>> +    }
> >>> +
> >>> +    public void set_id(ObjectId _id) {
> >>> +        this._id = _id;
> >>> +    }
> >>> +
> >>> +    public String getName() {
> >>> +        return name;
> >>> +    }
> >>> +
> >>> +    public void setName(String name) {
> >>> +        this.name = name;
> >>> +    }
> >>> +
> >>> +    public String getSurname() {
> >>> +        return surname;
> >>> +    }
> >>> +
> >>> +    public void setSurname(String surname) {
> >>> +        this.surname = surname;
> >>> +    }
> >>> +
> >>> +    public Date getBirthDate() {
> >>> +        return birthDate;
> >>> +    }
> >>> +
> >>> +    public void setBirthDate(Date birthDate) {
> >>> +        this.birthDate = birthDate;
> >>> +    }
> >>> +}
> >>> \ No newline at end of file
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> >> For additional commands, e-mail: dev-help@tapestry.apache.org
> >>
> >>
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>


-- 
Massimo
http://meridio.blogspot.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message