diff --git a/LICENSE b/LICENSE index 261eeb9..e55f344 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,277 @@ - 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. +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + 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 content + 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 changes or additions to the Program that + are not Modified Works. + +"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 +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. + +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. + + 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 or other 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. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other 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 other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. + +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, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, 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, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, 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 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. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation 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. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. \ No newline at end of file diff --git a/build.gradle b/build.gradle index fefeffd..ac22fc0 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + plugins { id 'java' id 'org.jetbrains.kotlin.jvm' version '1.4.30' @@ -30,6 +40,11 @@ repositories { mavenCentral() } +task sourceJar(type: Jar) { + classifier "sources" + from sourceSets.main.allSource +} + dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib" implementation "org.jetbrains.kotlin:kotlin-reflect:1.4.21" @@ -47,12 +62,6 @@ test { useJUnitPlatform() } - -task sourceJar(type: Jar) { - classifier "sources" - from sourceSets.main.allJava -} - task javadocJar(type: Jar, dependsOn: javadoc) { classifier "javadoc" from javadoc.destinationDir diff --git a/gradle.properties b/gradle.properties index 82b8da3..838288c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,13 @@ +# +# This program and the accompanying materials are made available under the terms of the +# Eclipse Public License v2.0 which accompanies this distribution, and is available at +# https://www.eclipse.org/legal/epl-v20.html +# +# SPDX-License-Identifier: EPL-2.0 +# +# Copyright © 2021 IBA Group, a.s. +# + kotlin.code.style=official ossrhUsername=formainframe diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/settings.gradle b/settings.gradle index f9a010f..ed1d237 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,12 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + rootProject.name = 'zosmf-retrofit2' diff --git a/src/main/kotlin/eu/ibagroup/r2z/BytesConverterFactory.kt b/src/main/kotlin/eu/ibagroup/r2z/BytesConverterFactory.kt index 52e9f35..aeffe03 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/BytesConverterFactory.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/BytesConverterFactory.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import okhttp3.ResponseBody diff --git a/src/main/kotlin/eu/ibagroup/r2z/CancelJobPurgeOutRequest.kt b/src/main/kotlin/eu/ibagroup/r2z/CancelJobPurgeOutRequest.kt new file mode 100644 index 0000000..5cd5092 --- /dev/null +++ b/src/main/kotlin/eu/ibagroup/r2z/CancelJobPurgeOutRequest.kt @@ -0,0 +1,48 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import com.google.gson.annotations.Expose +import com.google.gson.annotations.SerializedName + +data class CancelJobPurgeOutRequest( + @SerializedName("jobid") + @Expose + var jobid: String? = null, + + @SerializedName("jobname") + @Expose + var jobname: String? = null, + + @SerializedName("original-jobid") + @Expose + var originalJobid: String? = null, + + @SerializedName("owner") + @Expose + var owner: String? = null, + + @SerializedName("member") + @Expose + var member: String? = null, + + @SerializedName("sysname") + @Expose + var sysname: String? = null, + + @SerializedName("job-correlator") + @Expose + var jobCorrelator: String? = null, + + @SerializedName("status") + @Expose + var status: String? = null +) \ No newline at end of file diff --git a/src/main/kotlin/eu/ibagroup/r2z/CancelJobRequest.kt b/src/main/kotlin/eu/ibagroup/r2z/CancelJobRequest.kt new file mode 100644 index 0000000..b9f9655 --- /dev/null +++ b/src/main/kotlin/eu/ibagroup/r2z/CancelJobRequest.kt @@ -0,0 +1,48 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import com.google.gson.annotations.Expose +import com.google.gson.annotations.SerializedName + +data class CancelJobRequest( + @SerializedName("jobid") + @Expose + var jobid: String? = null, + + @SerializedName("jobname") + @Expose + var jobname: String? = null, + + @SerializedName("original-jobid") + @Expose + var originalJobid: String? = null, + + @SerializedName("owner") + @Expose + var owner: String? = null, + + @SerializedName("member") + @Expose + var member: String? = null, + + @SerializedName("sysname") + @Expose + var sysname: String? = null, + + @SerializedName("job-correlator") + @Expose + var jobCorrelator: String? = null, + + @SerializedName("status") + @Expose + var status: String? = null +) \ No newline at end of file diff --git a/src/main/kotlin/eu/ibagroup/r2z/CopyData.kt b/src/main/kotlin/eu/ibagroup/r2z/CopyData.kt index 12b4a30..7defa1b 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/CopyData.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/CopyData.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/CreateDataset.kt b/src/main/kotlin/eu/ibagroup/r2z/CreateDataset.kt index cbce697..a62e72f 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/CreateDataset.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/CreateDataset.kt @@ -1,7 +1,19 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose import com.google.gson.annotations.SerializedName +import eu.ibagroup.r2z.annotations.AvailableSince +import eu.ibagroup.r2z.annotations.ZVersion data class CreateDataset( @SerializedName("volser") @@ -18,7 +30,7 @@ data class CreateDataset( @SerializedName("alcunit") @Expose - var allocationUnit : AllocationUnit, + var allocationUnit : AllocationUnit? = null, @SerializedName("primary") var primaryAllocation: Int, @@ -43,7 +55,7 @@ data class CreateDataset( @Expose var recordLength: Int? = null, - @SerializedName("storeclass") + @SerializedName("storclass") @Expose var storageClass: String? = null, @@ -53,8 +65,19 @@ data class CreateDataset( @SerializedName("dataclass") @Expose - var dataClass: String? = null + var dataClass: String? = null, + + @SerializedName("avgblk") + var averageBlockLength: Int? = null, + @SerializedName("dsntype") + @Expose + var dsnType: DsnameType? = null, + + @AvailableSince(ZVersion.ZOS_2_4) + @SerializedName("like") + @Expose + var datasetModel: String? = null ) enum class AllocationUnit(private val type : String) { @@ -62,6 +85,7 @@ enum class AllocationUnit(private val type : String) { TRK("TRK"), @SerializedName("CYL") CYL("CYL"), + @Deprecated("This one doesn't work in z/OSMF. Just to simplify For Mainframe plugin") @SerializedName("BLK") BLK("BLK"); diff --git a/src/main/kotlin/eu/ibagroup/r2z/CreateUssFile.kt b/src/main/kotlin/eu/ibagroup/r2z/CreateUssFile.kt index 514bba4..7718b4e 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/CreateUssFile.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/CreateUssFile.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/DataAPI.kt b/src/main/kotlin/eu/ibagroup/r2z/DataAPI.kt index 1982094..2e27970 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/DataAPI.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/DataAPI.kt @@ -1,5 +1,17 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z +import eu.ibagroup.r2z.annotations.AvailableSince +import eu.ibagroup.r2z.annotations.ZVersion import retrofit2.Call import retrofit2.http.* @@ -352,7 +364,6 @@ interface DataAPI { @Query("research") research: String? = null, @Query("insensitive") insensitive: Boolean? = null, @Query("maxreturnsize") maxReturnSize: Int? = null - ): Call @PUT("/zosmf/restfiles/fs/{filepath-name}") @@ -452,7 +463,6 @@ enum class XIBMOption(private val type: String = "recursive") { } - enum class XIBMObtainENQ(private val type: String) { EXCL("excl"), @@ -494,14 +504,27 @@ data class XIBMRecordRange(private val format: Format, private val sss: Int, pri } -enum class XIBMDataType(private val type: String) { +private const val codePagePrefix = "IBM-" + +enum class CodePage(val codePage: String) { + IBM_1025("${codePagePrefix}1025"), + IBM_1047("${codePagePrefix}1047") +} + +data class XIBMDataType( + val type: Type, + @AvailableSince(ZVersion.ZOS_2_4) val encoding: CodePage? = null +) { + + enum class Type(val value: String) { + TEXT("text"), + BINARY("binary"), + RECORD("record") + } - TEXT("text"), - BINARY("binary"), - RECORD("record"); override fun toString(): String { - return type + return if (encoding != null) "${type.value};fileEncoding=${encoding.codePage}" else type.value } diff --git a/src/main/kotlin/eu/ibagroup/r2z/DataSetsList.kt b/src/main/kotlin/eu/ibagroup/r2z/DataSetsList.kt index c9bc910..84f39ca 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/DataSetsList.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/DataSetsList.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/Dataset.kt b/src/main/kotlin/eu/ibagroup/r2z/Dataset.kt index 7118a6e..cd941db 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/Dataset.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/Dataset.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/HUtils.kt b/src/main/kotlin/eu/ibagroup/r2z/HUtils.kt index 41d684e..2a3e7ba 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/HUtils.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/HUtils.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/HoldJobRequest.kt b/src/main/kotlin/eu/ibagroup/r2z/HoldJobRequest.kt new file mode 100644 index 0000000..2dc38c5 --- /dev/null +++ b/src/main/kotlin/eu/ibagroup/r2z/HoldJobRequest.kt @@ -0,0 +1,48 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import com.google.gson.annotations.Expose +import com.google.gson.annotations.SerializedName + +data class HoldJobRequest( + @SerializedName("jobid") + @Expose + var jobid: String? = null, + + @SerializedName("jobname") + @Expose + var jobname: String? = null, + + @SerializedName("original-jobid") + @Expose + var originalJobid: String? = null, + + @SerializedName("owner") + @Expose + var owner: String? = null, + + @SerializedName("member") + @Expose + var member: String? = null, + + @SerializedName("sysname") + @Expose + var sysname: String? = null, + + @SerializedName("job-correlator") + @Expose + var jobCorrelator: String? = null, + + @SerializedName("status") + @Expose + var status: Int? = null +) \ No newline at end of file diff --git a/src/main/kotlin/eu/ibagroup/r2z/InfoAPI.kt b/src/main/kotlin/eu/ibagroup/r2z/InfoAPI.kt index 15744f6..56caddf 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/InfoAPI.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/InfoAPI.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import retrofit2.Call diff --git a/src/main/kotlin/eu/ibagroup/r2z/InfoResponse.kt b/src/main/kotlin/eu/ibagroup/r2z/InfoResponse.kt index 0beedd2..f3116bb 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/InfoResponse.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/InfoResponse.kt @@ -1,7 +1,18 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose import com.google.gson.annotations.SerializedName +import eu.ibagroup.r2z.annotations.ZVersion data class InfoResponse ( @SerializedName("zos_version") @@ -35,4 +46,11 @@ data class InfoResponse ( @SerializedName("api_version") @Expose val apiVersion: String = "null" -) \ No newline at end of file +) { + val zVersion: ZVersion = when(zosVersion) { + "04.25.00" -> ZVersion.ZOS_2_2 + "04.26.00" -> ZVersion.ZOS_2_3 + "04.27.00" -> ZVersion.ZOS_2_4 + else -> ZVersion.ZOS_2_1 + } +} \ No newline at end of file diff --git a/src/main/kotlin/eu/ibagroup/r2z/JESApi.kt b/src/main/kotlin/eu/ibagroup/r2z/JESApi.kt index 4f3b464..a887091 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/JESApi.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/JESApi.kt @@ -1,14 +1,19 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z -import com.google.gson.annotations.SerializedName -import okhttp3.ResponseBody -import okio.ByteString +import eu.ibagroup.r2z.annotations.AvailableSince +import eu.ibagroup.r2z.annotations.ZVersion import retrofit2.Call -import retrofit2.Response -import retrofit2.http.GET -import retrofit2.http.Header -import retrofit2.http.Path -import retrofit2.http.Query +import retrofit2.http.* import java.lang.IllegalArgumentException interface JESApi { @@ -18,14 +23,19 @@ interface JESApi { @Header("Authorization") basicCredentials: String, @Path("job-name") jobName: String, @Path("job-id") jobId: String, - @Query("step-data") useStepData: UseStepData = UseStepData.DISABLE + @AvailableSince(ZVersion.ZOS_2_2) + @Query("step-data") useStepData: UseStepData = UseStepData.DISABLE, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("exec-data") execData: ExecData? = null ): Call @GET("/zosmf/restjobs/jobs/{job-correlator}") fun getJobStatus( @Header("Authorization") basicCredentials: String, @Path("job-correlator") jobCorrelator: String, - @Query("step-data") useStepData: UseStepData = UseStepData.DISABLE + @Query("step-data") useStepData: UseStepData = UseStepData.DISABLE, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("exec-data") execData: ExecData? = null ): Call @GET("/zosmf/restjobs/jobs") @@ -35,7 +45,11 @@ interface JESApi { @Query("prefix") prefix: String? = null, @Query("jobid") jobId: String? = null, @Query("max-jobs") maxCount: Int? = null, - @Query("user-correlator") userCorrelator: String? = null + @Query("user-correlator") userCorrelator: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("exec-data") execData: ExecData? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("status") status: ActiveStatus? = null ): Call> @GET("/zosmf/restjobs/jobs/{job-name}/{job-id}/files") @@ -59,7 +73,17 @@ interface JESApi { @Path("job-id") jobId: String, @Path("file-id") fileId: Int, @Query("mode") mode: BinaryMode = BinaryMode.TEXT, - @Header("X-IBM-Record-Range") range: RecordRange? = null + @Header("X-IBM-Record-Range") range: RecordRange? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("fileEncoding") fileEncoding: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("search") searchFor: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("research") searchForRegular: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("insensitive") isSearchCaseSensitive: Boolean? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("maxreturnsize") maxreturnsize: Int? = null ): Call @GET("/zosmf/restjobs/jobs/{job-correlator}/files/{file-id}/records") @@ -68,7 +92,17 @@ interface JESApi { @Path("job-correlator") jobCorrelator: String, @Path("file-id") fileId: Int, @Query("mode") mode: BinaryMode = BinaryMode.TEXT, - @Header("X-IBM-Record-Range") range: RecordRange? = null + @Header("X-IBM-Record-Range") range: RecordRange? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("fileEncoding") fileEncoding: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("search") searchFor: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("research") searchForRegular: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("insensitive") isSearchCaseSensitive: Boolean? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("maxreturnsize") maxreturnsize: Int? = null ): Call @GET("/zosmf/restjobs/jobs/{job-name}/{job-id}/files/JCL/records") @@ -77,7 +111,17 @@ interface JESApi { @Path("job-name") jobName: String, @Path("job-id") jobId: String, @Query("mode") mode: BinaryMode = BinaryMode.TEXT, - @Header("X-IBM-Record-Range") range: RecordRange? = null + @Header("X-IBM-Record-Range") range: RecordRange? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("fileEncoding") fileEncoding: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("search") searchFor: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("research") searchForRegular: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("insensitive") isSearchCaseSensitive: Boolean? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("maxreturnsize") maxreturnsize: Int? = null ): Call @GET("/zosmf/restjobs/jobs/{job-correlator}/files/JCL/records") @@ -85,11 +129,115 @@ interface JESApi { @Header("Authorization") basicCredentials: String, @Path("job-correlator") jobCorrelator: String, @Query("mode") mode: BinaryMode = BinaryMode.TEXT, - @Header("X-IBM-Record-Range") range: RecordRange? = null + @Header("X-IBM-Record-Range") range: RecordRange? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("fileEncoding") fileEncoding: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("search") searchFor: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("research") searchForRegular: String? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("insensitive") isSearchCaseSensitive: Boolean? = null, + @AvailableSince(ZVersion.ZOS_2_4) + @Query("maxreturnsize") maxreturnsize: Int? = null ): Call + + @PUT("/zosmf/restjobs/jobs") + fun submitJobRequest( + @Header("Authorization") basicCredentials: String, + @Header("Content-type") contentType: ContentType = ContentType.TEXT_PLAIN, + @Header("X-IBM-Intrdr-Class") intrdrclass: String? = null, + @Header("X-IBM-Intrdr-Recfm") recfm: Intrdr_Recfm? = null, + @Header("X-IBM-Intrdr-Lrecl") lrecl: String? = null, + @Header("X-IBM-Intrdr-Mode") mode: Intrdr_Mode = Intrdr_Mode.TEXT, + @Header("X-IBM-User-Correlator") userCorrelator: String? = null, + @Header("X-IBM-JCL-Symbol-name") symbolName: String? = null, + @Header("X-IBM-Notification-URL") notificationURL: String? = null, + @Query("JESB") jesb: String? = null, + @Body body: String, + @AvailableSince(ZVersion.ZOS_2_4) + @Header("X-IBM-Intrdr-FileEncoding") fileEncoding: String? = null + ): Call + + @PUT("/zosmf/restjobs/jobs") + fun submitJobRequest( + @Header("Authorization") basicCredentials: String, + @Header("Content-type") contentType: ContentType = ContentType.APP_JSON, + @Header("X-IBM-Intrdr-Class") intrdrclass: String? = null, + @Header("X-IBM-Intrdr-Recfm") recfm: Intrdr_Recfm? = null, + @Header("X-IBM-Intrdr-Lrecl") lrecl: String? = null, + @Header("X-IBM-Intrdr-Mode") mode: Intrdr_Mode? = null, + @Header("X-IBM-User-Correlator") userCorrelator: String? = null, + @Header("X-IBM-JCL-Symbol-name") symbolName: String? = null, + @Header("X-IBM-Notification-URL") notificationURL: String? = null, + @Query("JESB") jesb: String? = null, + @Body body: SubmitFileNameBody, + @AvailableSince(ZVersion.ZOS_2_4) + @Header("X-IBM-Intrdr-FileEncoding") fileEncoding: String? = null + ): Call + + @PUT("/zosmf/restjobs/jobs/{jobname}/{jobid}") + fun holdJobRequest( + @Header("Authorization") basicCredentials: String, + @Path("jobname") jobName: String, + @Path("jobid") jobId: String, + @Body body: HoldJobRequestBody + ): Call + + @PUT("/zosmf/restjobs/jobs/{job-correlator}") + fun holdJobRequest( + @Header("Authorization") basicCredentials: String, + @Path("job-correlator") jobCorrelator: String, + @Body body: HoldJobRequestBody + ): Call + + @PUT("/zosmf/restjobs/jobs/{jobname}/{jobid}") + fun releaseJobRequest( + @Header("Authorization") basicCredentials: String, + @Path("jobname") jobName: String, + @Path("jobid") jobId: String, + @Body body: ReleaseJobRequestBody + ): Call + + @PUT("/zosmf/restjobs/jobs/{job-correlator}") + fun releaseJobRequest( + @Header("Authorization") basicCredentials: String, + @Path("job-correlator") jobCorrelator: String, + @Body body: ReleaseJobRequestBody + ): Call + + @PUT("/zosmf/restjobs/jobs/{jobname}/{jobid}") + fun cancelJobRequest( + @Header("Authorization") basicCredentials: String, + @Path("jobname") jobName: String, + @Path("jobid") jobId: String, + @Body body: CancelJobRequestBody + ): Call + + @PUT("/zosmf/restjobs/jobs/{job_correlator}") + fun cancelJobRequest( + @Header("Authorization") basicCredentials: String, + @Path("job-correlator") jobCorrelator: String, + @Body body: CancelJobRequestBody + ): Call + + @DELETE("/zosmf/restjobs/jobs/{jobname}/{jobid}") + fun cancelJobPurgeOutRequest( + @Header("Authorization") basicCredentials: String, + @Header("X-IBM-Job-Modify-Version") version : ProcessMethod = ProcessMethod.SYNCHRONOUS, + @Path("jobname") jobName: String, + @Path("jobid") jobId: String + ): Call + + @DELETE("/zosmf/restjobs/jobs/{job_correlator}") + fun cancelJobPurgeOutRequest( + @Header("Authorization") basicCredentials: String, + @Header("X-IBM-Job-Modify-Version") version : ProcessMethod? = null, + @Path("job-correlator") jobCorrelator: String + ): Call } -enum class UseStepData(val value:String) { +enum class UseStepData(val value: String) { ENABLE("Y"), DISABLE("N"); @@ -99,6 +247,55 @@ enum class UseStepData(val value:String) { } } +enum class ContentType(val value: String) { + TEXT_PLAIN("text/plain"), + APP_STREAM("application/octet_stream"), + APP_JSON("application/json"); + + override fun toString(): String { + return value + } +} + +enum class Intrdr_Recfm(val value: String) { + F("F"), + V("V"); + + override fun toString(): String { + return value + } +} + +enum class Intrdr_Mode(val value: String) { + TEXT("TEXT"), + RECORD("RECORD"), + BINARY("BINARY"); + + override fun toString(): String { + return value + } +} + +enum class ExecData(val value: String) { + YES("Y"), + NO("N"); + + + override fun toString(): String { + return value + } +} + +enum class ActiveStatus(val value:String) { + ACTIVE("active"), + DISABLE("disable"); + + + override fun toString(): String { + return value + } +} + enum class BinaryMode(val value: String) { BINARY("binary"), RECORD("record"), @@ -109,6 +306,15 @@ enum class BinaryMode(val value: String) { } } +enum class ProcessMethod(val value: String) { + ASYNCHRONOUS("1.0"), + SYNCHRONOUS("2.0"); + + override fun toString(): String { + return value + } +} + class RecordRange private constructor(var start: Int? = null, var end: Int? = null){ companion object Factory{ fun withBounds(start: Int, end: Int): RecordRange { diff --git a/src/main/kotlin/eu/ibagroup/r2z/JesRequestBodies.kt b/src/main/kotlin/eu/ibagroup/r2z/JesRequestBodies.kt new file mode 100644 index 0000000..ad4e183 --- /dev/null +++ b/src/main/kotlin/eu/ibagroup/r2z/JesRequestBodies.kt @@ -0,0 +1,69 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import com.google.gson.annotations.Expose +import com.google.gson.annotations.JsonAdapter +import com.google.gson.annotations.SerializedName + +data class HoldJobRequestBody ( + @SerializedName("request") + @Expose + var requestType: RequestTypes = RequestTypes.HOLD, + + @SerializedName("version") + @Expose + @JsonAdapter(ToStringAdapter::class) + var requestVersion: RequestVersion = RequestVersion.SYNCHRONOUS +) + +data class ReleaseJobRequestBody ( + @SerializedName("request") + @Expose + var requestType: RequestTypes = RequestTypes.RELEASE, + + @SerializedName("version") + @Expose + @JsonAdapter(ToStringAdapter::class) + var requestVersion: RequestVersion = RequestVersion.SYNCHRONOUS +) + +data class CancelJobRequestBody ( + @SerializedName("request") + @Expose + var requestType: RequestTypes = RequestTypes.CANCEL, + + @SerializedName("version") + @Expose + @JsonAdapter(ToStringAdapter::class) + var requestVersion: RequestVersion = RequestVersion.SYNCHRONOUS +) + +enum class RequestTypes(val value: String) { + HOLD("hold"), + RELEASE("release"), + CANCEL("cancel"); + + + override fun toString(): String { + return value + } +} + +enum class RequestVersion(val value: String) { + ASYNCHRONOUS("1.0"), + SYNCHRONOUS("2.0"); + + + override fun toString(): String { + return value + } +} diff --git a/src/main/kotlin/eu/ibagroup/r2z/JobStatus.kt b/src/main/kotlin/eu/ibagroup/r2z/JobStatus.kt index 71a0cda..5275be2 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/JobStatus.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/JobStatus.kt @@ -1,60 +1,73 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose import com.google.gson.annotations.SerializedName +import eu.ibagroup.r2z.annotations.AvailableSince +import eu.ibagroup.r2z.annotations.ZVersion data class JobStatus( - @SerializedName("owner") + + @SerializedName("jobid") @Expose - val owner: String, + val jobId: String, - @SerializedName("phase") + @SerializedName("jobname") @Expose - val phase: Int, + val jobName: String, @SerializedName("subsystem") @Expose val subSystem: String? = null, - @SerializedName("phase-name") + @SerializedName("owner") @Expose - val phaseName: String, + val owner: String, - @SerializedName("job-correlator") + @SerializedName("status") @Expose - val jobCorrelator: String? = null, + val status: Status? = null, @SerializedName("type") @Expose val type: JobType, - @SerializedName("url") + @SerializedName("class") @Expose - val url: String, + val jobClass: String? = null, - @SerializedName("jobid") + @SerializedName("retcode") @Expose - val jobId: String, + val returnedCode: String? = null, - @SerializedName("class") + @SerializedName("url") @Expose - val jobClass: String? = null, + val url: String, @SerializedName("files-url") @Expose val filesUrl: String, - @SerializedName("jobname") + @SerializedName("job-correlator") @Expose - val jobName: String, + val jobCorrelator: String? = null, - @SerializedName("status") + @SerializedName("phase") @Expose - val status: Status? = null, + val phase: Int, - @SerializedName("retcode") + @SerializedName("phase-name") @Expose - val returnedCode: String? = null, + val phaseName: String, @SerializedName("step-data") @Expose @@ -62,7 +75,32 @@ data class JobStatus( @SerializedName("reason-not-running") @Expose - val reasonNotRunning: String? = null + val reasonNotRunning: String? = null, + + @AvailableSince(ZVersion.ZOS_2_4) + @SerializedName("exec-system") + @Expose + val execSystem: String? = null, + + @AvailableSince(ZVersion.ZOS_2_4) + @SerializedName("exec-member") + @Expose + val execMember: String? = null, + + @AvailableSince(ZVersion.ZOS_2_4) + @SerializedName("exec-submitted") + @Expose + val execSubmitted: String? = null, + + @AvailableSince(ZVersion.ZOS_2_4) + @SerializedName("exec-started") + @Expose + val execStarted: String? = null, + + @AvailableSince(ZVersion.ZOS_2_4) + @SerializedName("exec-ended") + @Expose + val execEnded: String? = null ) { enum class Status(val value: String) { diff --git a/src/main/kotlin/eu/ibagroup/r2z/Member.kt b/src/main/kotlin/eu/ibagroup/r2z/Member.kt index b61a2f9..a5a6a13 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/Member.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/Member.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/MembersList.kt b/src/main/kotlin/eu/ibagroup/r2z/MembersList.kt index 5590ad3..00a31e8 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/MembersList.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/MembersList.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/MoveUssFile.kt b/src/main/kotlin/eu/ibagroup/r2z/MoveUssFile.kt index 91352a8..de50ebb 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/MoveUssFile.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/MoveUssFile.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.SerializedName diff --git a/src/main/kotlin/eu/ibagroup/r2z/Plugin.kt b/src/main/kotlin/eu/ibagroup/r2z/Plugin.kt index 0c8be5a..a46ac0c 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/Plugin.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/Plugin.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/ReleaseJobRequest.kt b/src/main/kotlin/eu/ibagroup/r2z/ReleaseJobRequest.kt new file mode 100644 index 0000000..25e903b --- /dev/null +++ b/src/main/kotlin/eu/ibagroup/r2z/ReleaseJobRequest.kt @@ -0,0 +1,48 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import com.google.gson.annotations.Expose +import com.google.gson.annotations.SerializedName + +data class ReleaseJobRequest( + @SerializedName("jobid") + @Expose + var jobid: String? = null, + + @SerializedName("jobname") + @Expose + var jobname: String? = null, + + @SerializedName("original-jobid") + @Expose + var originalJobid: String? = null, + + @SerializedName("owner") + @Expose + var owner: String? = null, + + @SerializedName("member") + @Expose + var member: String? = null, + + @SerializedName("sysname") + @Expose + var sysname: String? = null, + + @SerializedName("job-correlator") + @Expose + var jobCorrelator: String? = null, + + @SerializedName("status") + @Expose + var status: Int? = null +) \ No newline at end of file diff --git a/src/main/kotlin/eu/ibagroup/r2z/RenameData.kt b/src/main/kotlin/eu/ibagroup/r2z/RenameData.kt index 619ab53..f778869 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/RenameData.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/RenameData.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/SpoolFile.kt b/src/main/kotlin/eu/ibagroup/r2z/SpoolFile.kt index 175d963..ad3fadc 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/SpoolFile.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/SpoolFile.kt @@ -1,60 +1,71 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose import com.google.gson.annotations.SerializedName data class SpoolFile( - @SerializedName("recfm") + + @SerializedName("jobname") @Expose - val recfm: String, + val jobname: String, - @SerializedName("records-url") + @SerializedName("recfm") @Expose - val recordsUrl: String, + val recfm: String, - @SerializedName("stepname") + @SerializedName("byte-count") @Expose - val stepName: String? = null, + val byteCount: Int, - @SerializedName("subsystem") + @SerializedName("record-count") @Expose - val subsystem: String? = null, + val recordCount: Int, @SerializedName("job-correlator") @Expose val jobCorrelator: String? = null, - @SerializedName("byte-count") - @Expose - val byteCount: Int, - - @SerializedName("lrecl") + @SerializedName("class") @Expose - val recordLength: Int, + val fileClass: String, @SerializedName("jobid") @Expose val jobId: String, + @SerializedName("id") + @Expose + val id: Int, + @SerializedName("ddname") @Expose val ddName: String, - @SerializedName("id") + @SerializedName("records-url") @Expose - val id: Int, + val recordsUrl: String, - @SerializedName("record-count") + @SerializedName("lrecl") @Expose - val recordCount: Int, + val recordLength: Int, - @SerializedName("class") + @SerializedName("subsystem") @Expose - val fileClass: String, + val subsystem: String? = null, - @SerializedName("jobname") + @SerializedName("stepname") @Expose - val jobname: String, + val stepName: String? = null, @SerializedName("procstep") @Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/StepData.kt b/src/main/kotlin/eu/ibagroup/r2z/StepData.kt index 699f5b1..f55c42e 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/StepData.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/StepData.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/SubmitFileNameBody.kt b/src/main/kotlin/eu/ibagroup/r2z/SubmitFileNameBody.kt new file mode 100644 index 0000000..bf5369f --- /dev/null +++ b/src/main/kotlin/eu/ibagroup/r2z/SubmitFileNameBody.kt @@ -0,0 +1,20 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import com.google.gson.annotations.Expose +import com.google.gson.annotations.SerializedName + +data class SubmitFileNameBody ( + @SerializedName("file") + @Expose + var file: String +) \ No newline at end of file diff --git a/src/main/kotlin/eu/ibagroup/r2z/SubmitJobRequest.kt b/src/main/kotlin/eu/ibagroup/r2z/SubmitJobRequest.kt new file mode 100644 index 0000000..35de62b --- /dev/null +++ b/src/main/kotlin/eu/ibagroup/r2z/SubmitJobRequest.kt @@ -0,0 +1,88 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import com.google.gson.annotations.Expose +import com.google.gson.annotations.SerializedName + +data class SubmitJobRequest ( + @SerializedName("jobid") + @Expose + var jobid: String? = null, + + @SerializedName("jobname") + @Expose + var jobname: String? = null, + + @SerializedName("subsystem") + @Expose + var subsystem: String? = null, + + @SerializedName("owner") + @Expose + var owner: String? = null, + + @SerializedName("status") + @Expose + var status: Status? = null, + + @SerializedName("type") + @Expose + var type: String? = null, + + @SerializedName("class") + @Expose + var class_: String? = null, + + @SerializedName("retcode") + @Expose + var retcode: String? = null, + + @SerializedName("url") + @Expose + var url: String? = null, + + @SerializedName("files-url") + @Expose + var filesUrl: String? = null +) + +{ + enum class Status(val value: String) { + @SerializedName("INPUT") + INPUT("INPUT"), + + @SerializedName("ACTIVE") + ACTIVE("ACTIVE"), + + @SerializedName("OUTPUT") + OUTPUT("OUTPUT"); + + override fun toString(): String { + return value + } + } + + enum class JobType(val value: String) { + @SerializedName("JOB") + JOB("JOB"), + + @SerializedName("STC") + STC("STC"), + + @SerializedName("TSU") + TSU("TSU"); + + override fun toString(): String { + return value + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/eu/ibagroup/r2z/ToStringAdapter.kt b/src/main/kotlin/eu/ibagroup/r2z/ToStringAdapter.kt index ca63399..75c5a09 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/ToStringAdapter.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/ToStringAdapter.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.TypeAdapter @@ -5,7 +15,7 @@ import com.google.gson.stream.JsonReader import com.google.gson.stream.JsonWriter /** - * For shitty purposes only + * For this project only */ class ToStringAdapter: TypeAdapter() { diff --git a/src/main/kotlin/eu/ibagroup/r2z/UssFile.kt b/src/main/kotlin/eu/ibagroup/r2z/UssFile.kt index 8d65986..c28eb8f 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/UssFile.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/UssFile.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose @@ -15,11 +25,11 @@ data class UssFile( @SerializedName("size") @Expose - val size: Int? = null, + val size: Long? = null, @SerializedName("uid") @Expose - val uid: Int? = null, + val uid: Long? = null, @SerializedName("user") @Expose @@ -27,7 +37,7 @@ data class UssFile( @SerializedName("gid") @Expose - val gid: Int? = null, + val gid: Long? = null, @SerializedName("group") @Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/UssFileUtils.kt b/src/main/kotlin/eu/ibagroup/r2z/UssFileUtils.kt index 310a7ef..6c38732 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/UssFileUtils.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/UssFileUtils.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/UssFilesList.kt b/src/main/kotlin/eu/ibagroup/r2z/UssFilesList.kt index 4231862..0716274 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/UssFilesList.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/UssFilesList.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.annotations.Expose diff --git a/src/main/kotlin/eu/ibagroup/r2z/annotations/AvailableSince.kt b/src/main/kotlin/eu/ibagroup/r2z/annotations/AvailableSince.kt new file mode 100644 index 0000000..dc0a035 --- /dev/null +++ b/src/main/kotlin/eu/ibagroup/r2z/annotations/AvailableSince.kt @@ -0,0 +1,27 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z.annotations + +import java.lang.annotation.Inherited + +private const val osVersionPrefix = "z/OS" + +enum class ZVersion(val version: String) { + ZOS_2_1("$osVersionPrefix 2.1"), + ZOS_2_2("$osVersionPrefix 2.2"), + ZOS_2_3("$osVersionPrefix 2.3"), + ZOS_2_4("$osVersionPrefix 2.4") +} + +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.FIELD, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FUNCTION) +@Inherited +annotation class AvailableSince(val version: ZVersion) diff --git a/src/main/kotlin/eu/ibagroup/r2z/api.kt b/src/main/kotlin/eu/ibagroup/r2z/api.kt index 7042f10..ca889c2 100644 --- a/src/main/kotlin/eu/ibagroup/r2z/api.kt +++ b/src/main/kotlin/eu/ibagroup/r2z/api.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.Gson diff --git a/src/test/kotlin/eu/ibagroup/r2z/BaseTest.kt b/src/test/kotlin/eu/ibagroup/r2z/BaseTest.kt index b4a3d3c..4a27594 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/BaseTest.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/BaseTest.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import okhttp3.Credentials diff --git a/src/test/kotlin/eu/ibagroup/r2z/CancelJobAndPurgeOutputTest.kt b/src/test/kotlin/eu/ibagroup/r2z/CancelJobAndPurgeOutputTest.kt new file mode 100644 index 0000000..691689c --- /dev/null +++ b/src/test/kotlin/eu/ibagroup/r2z/CancelJobAndPurgeOutputTest.kt @@ -0,0 +1,61 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import retrofit2.Call +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +class CancelJobAndPurgeOutputTest : BaseTest() { + val JOB_ID = "JOB06199" + val JOB_NAME = "NOTHINGJ" + + val JOB_CORRELATOR = "J0001561S0W1....D940967F.......:" + + // 0 - request was successful + val SUCCESSFUL_REQUEST_RESULT = "0" + + @Test + fun cancelJobAndPurgeOutputTest() { + val retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .client(getUnsafeOkHttpClient()) + .build() + + val request = retrofit.create(JESApi::class.java) + val call: Call = request. + cancelJobPurgeOutRequest(BASIC_AUTH_TOKEN, + version = ProcessMethod.SYNCHRONOUS, + jobName = JOB_NAME, + jobId = JOB_ID) + enqueueCancelCallAndCheckResult(call) + } + + fun enqueueCancelCallAndCheckResult(call: Call) { + val response = call.execute() + + if (response.isSuccessful) + { + val jobStatus: CancelJobPurgeOutRequest = response.body() as CancelJobPurgeOutRequest + println(jobStatus!!.status) + Assertions.assertEquals(SUCCESSFUL_REQUEST_RESULT, jobStatus.status) + Assertions.assertNotNull(jobStatus!!.owner) + Assertions.assertEquals(jobStatus!!.owner?.toLowerCase(), "hlh") + } else + { + println(response.errorBody()) + Assertions.assertTrue(false) + } + } +} \ No newline at end of file diff --git a/src/test/kotlin/eu/ibagroup/r2z/CancelJobTest.kt b/src/test/kotlin/eu/ibagroup/r2z/CancelJobTest.kt new file mode 100644 index 0000000..94e8af8 --- /dev/null +++ b/src/test/kotlin/eu/ibagroup/r2z/CancelJobTest.kt @@ -0,0 +1,58 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import retrofit2.Call +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +class CancelJobTest : BaseTest() { + val JOB_ID = "JOB06200" + val JOB_NAME = "NOTHINGJ" + + val JOB_CORRELATOR = "J0001561S0W1....D940967F.......:" + + // 0 - request was successful + val SUCCESSFUL_REQUEST_RESULT = "0" + + @Test + fun cancelJobTest() { + val retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .client(getUnsafeOkHttpClient()) + .build() + + val request = retrofit.create(JESApi::class.java) + val call: Call = request.cancelJobRequest(BASIC_AUTH_TOKEN, JOB_NAME, + JOB_ID, CancelJobRequestBody()) + enqueueCancelJobCallAndCheckResult(call) + } + + fun enqueueCancelJobCallAndCheckResult(call: Call) { + val response = call.execute() + + if (response.isSuccessful) + { + val jobStatus: CancelJobRequest = response.body() as CancelJobRequest + println(jobStatus!!.status) + Assertions.assertEquals(SUCCESSFUL_REQUEST_RESULT, jobStatus.status) + Assertions.assertNotNull(jobStatus!!.owner) + Assertions.assertEquals(jobStatus!!.owner?.toLowerCase(), "hlh") + } else + { + println(response.errorBody()) + Assertions.assertTrue(false) + } + } +} \ No newline at end of file diff --git a/src/test/kotlin/eu/ibagroup/r2z/DataAPITest.kt b/src/test/kotlin/eu/ibagroup/r2z/DataAPITest.kt index a6df250..03a2123 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/DataAPITest.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/DataAPITest.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import okhttp3.OkHttpClient @@ -6,7 +16,7 @@ import org.junit.jupiter.api.Test class DataAPITest { - private val dataAPI = buildApi(zosmfUrl, UnsafeOkHttpClient.unsafeOkHttpClient) + private val dataAPI = buildGsonApi(zosmfUrl, UnsafeOkHttpClient.unsafeOkHttpClient) private val infoAPI = buildApi(zosmfUrl, UnsafeOkHttpClient.unsafeOkHttpClient) @Test @@ -44,8 +54,9 @@ class DataAPITest { fun testListUss() { val request = dataAPI.listUssPath( authorizationToken = basicCreds, - path = "/u/KIRYL", - depth = 3 + path = "/u/CHP/test-env/test-files/testprog-jcl", + depth = 1, + followSymlinks = SymlinkMode.REPORT ) val response = request.execute() response.body()?.items?.forEach { @@ -330,7 +341,7 @@ class DataAPITest { @Test fun testRetrieveUssFileContent() { val request = - dataAPI.retrieveUssFileContent(authorizationToken = basicCreds, filePath = "u/KIRYL/ijmp/niceCock.txt") + dataAPI.retrieveUssFileContent(authorizationToken = basicCreds, filePath = "u/KIRYL/ijmp/nice.txt") val response = request.execute() assert(response.isSuccessful) print(response.body()) @@ -341,7 +352,7 @@ class DataAPITest { val request = dataAPI.writeToUssFile( authorizationToken = basicCreds, filePath = "u/KIRYL/ijmp/readme2.md", - body = "Nice cock really!" + body = "Nice really!" ) val response = request.execute() assert(response.isSuccessful) @@ -365,7 +376,7 @@ class DataAPITest { fun testDeleteUssFile() { val request = dataAPI.deleteUssFile( authorizationToken = basicCreds, - filePath = "u/KIRYL/ijmp/niceCock.txt", + filePath = "u/KIRYL/ijmp/nice.txt", ) val response = request.execute() assert(response.isSuccessful) diff --git a/src/test/kotlin/eu/ibagroup/r2z/FileModeTest.kt b/src/test/kotlin/eu/ibagroup/r2z/FileModeTest.kt index aab4d45..1bb9110 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/FileModeTest.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/FileModeTest.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import org.junit.jupiter.api.Test diff --git a/src/test/kotlin/eu/ibagroup/r2z/HoldJobFor10sThenReleaseTest.kt b/src/test/kotlin/eu/ibagroup/r2z/HoldJobFor10sThenReleaseTest.kt new file mode 100644 index 0000000..fa0b406 --- /dev/null +++ b/src/test/kotlin/eu/ibagroup/r2z/HoldJobFor10sThenReleaseTest.kt @@ -0,0 +1,83 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +import eu.ibagroup.r2z.BaseTest +import eu.ibagroup.r2z.HoldJobRequestBody +import eu.ibagroup.r2z.JESApi +import eu.ibagroup.r2z.ReleaseJobRequestBody +import eu.ibagroup.r2z.HoldJobRequest +import eu.ibagroup.r2z.ReleaseJobRequest +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import retrofit2.Call +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +class HoldFor20sThenReleaseJobTest : BaseTest() { + val JOB_ID = "JOB06152" + val JOB_NAME = "NOTHINGJ" + + val JOB_CORRELATOR = "J0001561S0W1....D940967F.......:" + + // 0 - request was successful + val SUCCESSFUL_REQUEST_RESULT = 0 + + @Test + fun holdFor10sThenReleaseJobTest() { + val retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .client(getUnsafeOkHttpClient()) + .build() + + val request = retrofit.create(JESApi::class.java) + val firstCall: Call = request.holdJobRequest(BASIC_AUTH_TOKEN, + JOB_NAME, JOB_ID, HoldJobRequestBody() + ) + + enqueueHoldCallAndCheckResult(firstCall) + + Thread.sleep(10000) + + val secondCall: Call = request.releaseJobRequest(BASIC_AUTH_TOKEN, + JOB_NAME, JOB_ID, ReleaseJobRequestBody() + ) + + enqueueReleaseCallAndCheckResult(secondCall) + } + + fun enqueueHoldCallAndCheckResult(call: Call) { + val response = call.execute() + if (response.isSuccessful) { + val jobStatus: HoldJobRequest = response.body() as HoldJobRequest + println(jobStatus!!.status) + Assertions.assertEquals(SUCCESSFUL_REQUEST_RESULT, jobStatus.status) + Assertions.assertNotNull(jobStatus!!.owner) + Assertions.assertEquals(jobStatus!!.owner?.toLowerCase(), "hlh") + } else { + println(response.errorBody()) + Assertions.assertTrue(false) + } + } + + fun enqueueReleaseCallAndCheckResult(call: Call) { + val response = call.execute() + if (response.isSuccessful) { + val jobStatus: ReleaseJobRequest = response.body() as ReleaseJobRequest + println(jobStatus!!.status) + Assertions.assertEquals(SUCCESSFUL_REQUEST_RESULT, jobStatus.status) + Assertions.assertNotNull(jobStatus!!.owner) + Assertions.assertEquals(jobStatus!!.owner?.toLowerCase(), "hlh") + } else { + println(response.errorBody()) + Assertions.assertTrue(false) + } + } +} \ No newline at end of file diff --git a/src/test/kotlin/eu/ibagroup/r2z/ListFilteredJobsTest.kt b/src/test/kotlin/eu/ibagroup/r2z/ListFilteredJobsTest.kt index 514d499..49e7efb 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/ListFilteredJobsTest.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/ListFilteredJobsTest.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import org.junit.jupiter.api.* @@ -9,20 +19,20 @@ import java.util.regex.Pattern class ListFilteredJobsTest : BaseTest() { var jobs: List = emptyList() - var jesApi: JESApi = buildApi(BASE_URL, getUnsafeOkHttpClient()) + var jesApi: JESApi = buildGsonApi(BASE_URL, getUnsafeOkHttpClient()) - val JOB_ID = "JOB00440" - val USER_CORRELATOR = "MY_USER_CORRELATOR" + val JOB_ID = "JOB05569" + val USER_CORRELATOR = "J0006081S0W1....D9A8D97A.......:" @Test @Timeout(value = 3, unit = TimeUnit.SECONDS) fun getFilteredListByOwnerTest(){ - val call = jesApi.getFilteredJobs( BASIC_AUTH_TOKEN,"VKRUS") + val call = jesApi.getFilteredJobs( BASIC_AUTH_TOKEN,"HLH") executeCallAndCheckResult(call){ job -> - Assertions.assertEquals(job.owner, "VKRUS") + Assertions.assertEquals(job.owner, "HLH") } } diff --git a/src/test/kotlin/eu/ibagroup/r2z/ListSpoolFilesTest.kt b/src/test/kotlin/eu/ibagroup/r2z/ListSpoolFilesTest.kt index 1e93a3e..442af12 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/ListSpoolFilesTest.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/ListSpoolFilesTest.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import org.junit.jupiter.api.Assertions @@ -8,10 +18,10 @@ import retrofit2.Call @TestInstance(TestInstance.Lifecycle.PER_CLASS) class ListSpoolFilesTest : BaseTest(){ - var jesApi: JESApi = buildApi(BASE_URL, getUnsafeOkHttpClient()) + var jesApi: JESApi = buildGsonApi(BASE_URL, getUnsafeOkHttpClient()) - val JOB_CORRELATOR = "J0000440S0W1....D92237DC.......:" - val JOB_ID = "JOB00440" + val JOB_CORRELATOR = "J0005569S0W1....D9975741.......:" + val JOB_ID = "JOB05569" val JOB_NAME = "NOTHINGJ" diff --git a/src/test/kotlin/eu/ibagroup/r2z/ObtainJobStatusTest.kt b/src/test/kotlin/eu/ibagroup/r2z/ObtainJobStatusTest.kt index 6eff5ff..a384520 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/ObtainJobStatusTest.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/ObtainJobStatusTest.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import org.junit.jupiter.api.Assertions @@ -10,15 +20,15 @@ class ObtainJobStatusTest : BaseTest() { var jesApi: JESApi = buildGsonApi(BASE_URL, getUnsafeOkHttpClient()) - val JOB_CORRELATOR = "J0000440S0W1....D92237DC.......:" - val JOB_ID = "JOB00440" + val JOB_CORRELATOR = "J0006081S0W1....D9A8D97A.......:" + val JOB_ID = "JOB05569" val JOB_NAME = "NOTHINGJ" @Test fun obtainStatusByNameAndIdTest() { - val call = jesApi.getJobStatus(BASIC_AUTH_TOKEN, JOB_NAME, JOB_ID, UseStepData.ENABLE) + val call = jesApi.getJobStatus(BASIC_AUTH_TOKEN, JOB_NAME, JOB_ID, UseStepData.DISABLE) executeCallAndCheckResult(call) } @@ -39,7 +49,7 @@ class ObtainJobStatusTest : BaseTest() { } Assertions.assertNotNull(jobStatus.owner) - Assertions.assertEquals(jobStatus.owner.toLowerCase(), "vkrus") + Assertions.assertEquals(jobStatus.owner.toLowerCase(), "hlh") } else { println(response.errorBody()) diff --git a/src/test/kotlin/eu/ibagroup/r2z/SpoolFileRecordsTest.kt b/src/test/kotlin/eu/ibagroup/r2z/SpoolFileRecordsTest.kt index 2b23a7d..fcc81a9 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/SpoolFileRecordsTest.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/SpoolFileRecordsTest.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import org.junit.jupiter.api.Assertions @@ -10,11 +20,10 @@ import retrofit2.Call class SpoolFileRecordsTest : BaseTest() { val jesApi = buildApi(BASE_URL, getUnsafeOkHttpClient()) - val JOB_CORRELATOR = "J0000440S0W1....D92237DC.......:" - val JOB_ID = "JOB00440" + val JOB_CORRELATOR = "J0005569S0W1....D9975741.......:" + val JOB_ID = "JOB05569" val JOB_NAME = "NOTHINGJ" - @Test fun getRecordsInBinaryModeTest() { diff --git a/src/test/kotlin/eu/ibagroup/r2z/SubmitJobRequestTest.kt b/src/test/kotlin/eu/ibagroup/r2z/SubmitJobRequestTest.kt new file mode 100644 index 0000000..363e5e2 --- /dev/null +++ b/src/test/kotlin/eu/ibagroup/r2z/SubmitJobRequestTest.kt @@ -0,0 +1,76 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + +package eu.ibagroup.r2z + +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import retrofit2.Call +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import retrofit2.converter.scalars.ScalarsConverterFactory + +class SubmitJobRequestTest : BaseTest() { + val JOB_PATH = "//'HHAL.PLUGIN.TEST.JOBS(JOB1)'" + + @Test + fun submitJobOnZOS_System() { + val retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .client(getUnsafeOkHttpClient()) + .build() + + val request = retrofit.create(JESApi::class.java) + val call: Call = request.submitJobRequest(BASIC_AUTH_TOKEN, + body = SubmitFileNameBody(file = JOB_PATH)) + enqueueSubmitJob(call) + } + + @Test + fun submitJobFromInputText() { + val retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(ScalarsConverterFactory.create()) + .addConverterFactory(GsonConverterFactory.create()) + .client(getUnsafeOkHttpClient()) + .build() + + val request = retrofit.create(JESApi::class.java) + val body = "" + + "//NOTHINGJ JOB CLASS=B,MSGLEVEL=(1,1),MSGCLASS=X,\n" + + "// NOTIFY=HAL,REGION=6M\n" + + "//*********\n" + + "//STEP0 EXEC PGM=IEFBR14\n" + + "//SYSPRINT DD SYSOUT=*\n" + + "//SYSIN DD *\n" + + "//STEP1 EXEC PGM=IKJEFT01,PARM='JOB2'\n" + + "//SYSPROC DD DSN=HHAL.PLUGIN.TEST.JOBS,DISP=SHR\n" + + "//SYSTSPRT DD SYSOUT=*\n" + + "//SYSTSIN DD DUMMY,DCB=BLKSIZE=80" + val call: Call = request.submitJobRequest(BASIC_AUTH_TOKEN, body = body) + enqueueSubmitJob(call) + } + + fun enqueueSubmitJob(call: Call) { + val response = call.execute() + if (response.isSuccessful) { + val jobStatus: SubmitJobRequest = response.body() as SubmitJobRequest + println(jobStatus!!.jobid) + println(jobStatus!!.jobname) + println(jobStatus!!.status) + Assertions.assertNotNull(jobStatus!!.owner) + Assertions.assertEquals(jobStatus!!.owner?.toLowerCase(), "hlh") + } else { + println(response.errorBody()) + Assertions.assertTrue(false) + } + } +} \ No newline at end of file diff --git a/src/test/kotlin/eu/ibagroup/r2z/TestValues.kt b/src/test/kotlin/eu/ibagroup/r2z/TestValues.kt index 54e9362..ea92de9 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/TestValues.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/TestValues.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import com.google.gson.Gson @@ -10,7 +20,7 @@ import retrofit2.converter.gson.GsonConverterFactory import retrofit2.converter.scalars.ScalarsConverterFactory val zosmfUrl = System.getenv("ZOSMF_TEST_URL") ?: "" -val zosmfUser = System.getenv("ZOSMF_TEST_USER") ?: "" +val zosmfUser = System.getenv("ZOSMF_TEST_USERNAME") ?: "" val zosmfPassword = System.getenv("ZOSMF_TEST_PASSWORD") ?: "" val basicCreds = Credentials.basic(zosmfUser, zosmfPassword) ?: "" diff --git a/src/test/kotlin/eu/ibagroup/r2z/UnsafeOkHttpClient.kt b/src/test/kotlin/eu/ibagroup/r2z/UnsafeOkHttpClient.kt index a717267..585e985 100644 --- a/src/test/kotlin/eu/ibagroup/r2z/UnsafeOkHttpClient.kt +++ b/src/test/kotlin/eu/ibagroup/r2z/UnsafeOkHttpClient.kt @@ -1,3 +1,13 @@ +/* + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright © 2021 IBA Group, a.s. + */ + package eu.ibagroup.r2z import okhttp3.OkHttpClient