Merge "Implement buck driven build"
diff --git a/BUCK b/BUCK
new file mode 100644
index 0000000..1d62377
--- /dev/null
+++ b/BUCK
@@ -0,0 +1,56 @@
+def genwsdl2java(
+    name,
+    srcs,
+    out):
+  genrule(
+    name = name,
+    srcs = srcs,
+      cmd = '$(exe :wsdl2java) -o $TMP ' +
+      '-p com.atlassian.jira.rpc.soap.client $SRCS && ' +
+      'cd $TMP && ' +
+      'zip -qr $OUT .',
+    out = out,
+  )
+
+gerrit_plugin(
+  name = 'its-jira',
+  srcs = glob(['src/main/java/**/*.java']),
+  resources = glob(['src/main/resources/**/*']),
+  manifest_entries = [
+    'Gerrit-PluginName: its-jira',
+    'Gerrit-Module: com.googlesource.gerrit.plugins.hooks.jira.JiraModule',
+    'Gerrit-InitStep: com.googlesource.gerrit.plugins.hooks.jira.InitJira',
+    'Gerrit-ReloadMode: reload',
+    'Implementation-Title: Plugin its-jira',
+    'Implementation-URL: http://www.gerritforge.com',
+    'Implementation-Vendor: GerritForge LLP',
+  ],
+  deps = [
+    ':wsdl2java_lib',
+    '//plugins/its-base:its-base__plugin',
+    '//plugins/its-jira/lib/axis:axis',
+    '//plugins/its-jira/lib:xmlrpc-client',
+    '//plugins/its-jira/lib:wsdl4j',
+  ],
+)
+
+java_library(
+  name = 'wsdl2java_lib',
+  srcs = [':wsdl2java_src'],
+  deps = ['//plugins/its-jira/lib/axis:axis'],
+)
+
+genwsdl2java(
+  name = 'wsdl2java_src',
+  srcs = ['src/main/wsdl/jirasoapservice-v2.wsdl'],
+  out = 'wsdl2java.src.zip',
+)
+
+java_binary(
+  name = 'wsdl2java',
+  main_class = 'org.apache.axis.wsdl.WSDL2Java',
+  deps = [
+    '//plugins/its-jira/lib/axis:axis',
+    '//plugins/its-jira/lib/axis:wsdl4j',
+  ],
+)
diff --git a/lib/BUCK b/lib/BUCK
new file mode 100644
index 0000000..912b16e
--- /dev/null
+++ b/lib/BUCK
@@ -0,0 +1,44 @@
+include_defs('//lib/maven.defs')
+
+define_license('CPL1.0')
+
+maven_jar(
+  name = 'xmlrpc-client',
+  id = 'org.apache.xmlrpc:xmlrpc-client:3.1.3',
+  sha1 = 'e486ad917028b52265610206fb5a1e2b5914b94b',
+  license = 'Apache2.0',
+  deps = [':xmlrpc-common'],
+)
+
+maven_jar(
+  name = 'xmlrpc-common',
+  id = 'org.apache.xmlrpc:xmlrpc-common:3.1.3',
+  sha1 = '415daf1f1473a947452588906dc9f5b3575fb44d',
+  license = 'Apache2.0',
+  deps = [':ws-commons-util'],
+  visibility = [],
+)
+
+maven_jar(
+  name = 'ws-commons-util',
+  id = 'org.apache.ws.commons.util:ws-commons-util:1.0.2',
+  sha1 = '3f478e6def772c19d1053f61198fa1f6a6119238',
+  license = 'Apache2.0',
+  deps = [':xml-apis'],
+  visibility = [],
+)
+
+maven_jar(
+  name = 'xml-apis',
+  id = 'xml-apis:xml-apis:1.0.b2',
+  sha1 = '3136ca936f64c9d68529f048c2618bd356bf85c9',
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'wsdl4j',
+  id = 'wsdl4j:wsdl4j:1.5.1',
+  sha1 = 'bd804633b9c2cf06258641febc31a8ff3b0906bc',
+  license = 'CPL1.0',
+  local_license = True,
+)
diff --git a/lib/LICENSE-CPL1.0 b/lib/LICENSE-CPL1.0
new file mode 100644
index 0000000..365b949
--- /dev/null
+++ b/lib/LICENSE-CPL1.0
@@ -0,0 +1,211 @@
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such
+derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses
+to its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that license
+before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright license set
+forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered
+by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable manner on or
+through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED 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. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement, including but not limited to the risks and costs of
+program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to
+a patent applicable to software (including a cross-claim or counterclaim in a
+lawsuit), then any patent licenses granted by that Contributor to such Recipient
+under this Agreement shall terminate as of the date such litigation is filed. In
+addition, if Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in Sections
+2(a) and 2(b) above, Recipient receives no rights or licenses to the
+intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
diff --git a/lib/axis/BUCK b/lib/axis/BUCK
new file mode 100644
index 0000000..dd6989b
--- /dev/null
+++ b/lib/axis/BUCK
@@ -0,0 +1,71 @@
+include_defs('//lib/maven.defs')
+
+maven_jar(
+  name = 'axis',
+  id = 'axis:axis:1.3',
+  sha1 = '5292fcc2fd41fb22601db8fa92aed7a4223b4470',
+  license = 'Apache2.0',
+  exported_deps = [
+    ':activation',
+    ':discovery',
+    ':jaxrpc',
+    ':logging',
+    ':mail',
+    ':saaj',
+  ],
+)
+
+maven_jar(
+  name = 'discovery',
+  id = 'commons-discovery:commons-discovery:0.5',
+  sha1 = '3a8ac816bbe02d2f88523ef22cbf2c4abd71d6a8',
+  license = 'Apache2.0',
+  visibility = [],
+)
+
+maven_jar(
+  name = 'logging',
+  id = 'commons-logging:commons-logging:1.2',
+  sha1 = '4bfc12adfe4842bf07b657f0369c4cb522955686',
+  license = 'Apache2.0',
+  visibility = [],
+)
+
+maven_jar(
+  name = 'jaxrpc',
+  id = 'axis:axis-jaxrpc:1.3',
+  sha1 = 'a453e393f01b8fd19c13d30fab66a1f89916e1a8',
+  license = 'Apache2.0',
+  visibility = [],
+)
+
+maven_jar(
+  name = 'mail',
+  id = 'javax.mail:mail:1.4',
+  sha1 = '1aa1579ae5ecd41920c4f355b0a9ef40b68315dd',
+  license = 'Apache2.0',
+  visibility = [],
+)
+
+maven_jar(
+  name = 'activation',
+  id = 'javax.activation:activation:1.1',
+  sha1 = 'e6cb541461c2834bdea3eb920f1884d1eb508b50',
+  license = 'Apache2.0',
+  visibility = [],
+)
+
+maven_jar(
+  name = 'wsdl4j',
+  id = 'axis:axis-wsdl4j:1.3',
+  sha1 = 'bd804633b9c2cf06258641febc31a8ff3b0906bc',
+  attach_source = False,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'saaj',
+  id = 'axis:axis-saaj:1.3',
+  sha1 = '067785efd957974af624394e534d072a70670679',
+  license = 'Apache2.0',
+)
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
new file mode 100644
index 0000000..c537f5f
--- /dev/null
+++ b/src/main/resources/Documentation/build.md
@@ -0,0 +1,50 @@
+Build
+=====
+
+This @PLUGIN@ plugin is built with Buck.
+
+Clone (or link) both this plugin and also
+[plugins/its-base](https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-base)
+to the `plugins` directory of Gerrit's source tree.
+
+Then issue
+
+```
+  buck build plugins/@PLUGIN@
+```
+
+in the root of Gerrit's source tree to build
+
+The output is created in
+
+```
+  buck-out/gen/plugins/@PLUGIN@/@PLUGIN@.jar
+```
+
+This project can be imported into the Eclipse IDE:
+
+```
+  ./tools/eclipse/project.py
+```
+
+To execute the tests run:
+
+```
+  buck test --all --include @PLUGIN@
+```
+
+Note that for compatibility reasons a Maven build is provided, but is
+considered to be deprecated and will be removed in a future version of
+this plugin.
+
+To build with Maven, change directory to the plugin folder and issue the
+command:
+
+```
+  mvn clean package
+```
+
+When building with Maven, the Gerrit Plugin API must be available.
+
+How to build the Gerrit Plugin API is described in the [Gerrit
+documentation](../../../Documentation/dev-buck.html#_extension_and_plugin_api_jar_files).