diff options
Diffstat (limited to 'winery/org.eclipse.winery.model.csar.toscametafile')
13 files changed, 1363 insertions, 0 deletions
diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/.gitignore b/winery/org.eclipse.winery.model.csar.toscametafile/.gitignore new file mode 100644 index 0000000..bf3a77d --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/.gitignore @@ -0,0 +1,8 @@ +.classpath +.project +/.settings +build.properties +/bin +/build +/src/main/resources/rebel.xml +/target diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/LICENSE-ASL.txt b/winery/org.eclipse.winery.model.csar.toscametafile/LICENSE-ASL.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/LICENSE-ASL.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/LICENSE-EPL.txt b/winery/org.eclipse.winery.model.csar.toscametafile/LICENSE-EPL.txt new file mode 100644 index 0000000..5d80026 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/LICENSE-EPL.txt @@ -0,0 +1,227 @@ +Eclipse Public License - v 1.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 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 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. + + 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/winery/org.eclipse.winery.model.csar.toscametafile/about.html b/winery/org.eclipse.winery.model.csar.toscametafile/about.html new file mode 100644 index 0000000..ba38f45 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/about.html @@ -0,0 +1,92 @@ +<!DOCTYPE html> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>January 24, 2014</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in (“Content”). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +<a href="http://www.eclipse.org/legal/epl-v10.html">Eclipse Public License Version 1.0 (“EPL”)</a> +and <a href="http://www.opensource.org/licenses/apache2.0.php">Apache License Version 2.0</a>. +A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a> +and a copy of the Apache License Version 2.0 is available at <a href="http://www.opensource.org/licenses/apache2.0.php">http://www.opensource.org/licenses/apache2.0.php</a>. +You may elect to redistribute this code under either of these licenses. +For purposes of the EPL, “Program” will mean the Content. +</p> + +<p> +If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party (“Redistributor”) and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor’s license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL and Apache License 2.0 still apply to any source code +in the Content and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>. +</p> + +<h3>Third Party Content</h3> + +<p>The Content includes items that have been sourced from third parties as set out below. If you +did not receive this Content directly from the Eclipse Foundation, the following is provided +for informational purposes only, and you should look to the Redistributor's license for +terms and conditions of use.</p> + +<h4>Java Manifest Parser – Version 2.0.5</h4> +<table> + <tr> + <td>URL</td> + <td><a href="http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.util.parser.manifest&version=2.0.5.RELEASE">http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.util.parser.manifest&version=2.0.5.RELEASE</a></td> + </tr> + <tr> + <td>License</td> + <td>Apache 2.0. The sources do not contain a license file, but each .java file contains an Apache 2.0 license header. A copy of the license is contained in the file <a href="about_files/Apache-LICENSE-2.0.txt" target="_blank">Apache-LICENSE-2.0.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a></td> + </tr> +</table> + +<h4>Logback Classic – Version 1.1.1</h4> +<table> + <tr> + <td>URL</td> + <td><a href="http://logback.qos.ch/">http://logback.qos.ch/</a></td> + </tr> + <tr> + <td>License</td> + <td>EPL/LGPL dual-license. A copy of the license is contained in the file <a href="about_files/LICENSE-logback.txt" target="_blank">LICENSE-logback.txt</a> and is also available at <a href="http://logback.qos.ch/license.html" target="_blank">http://logback.qos.ch/license.html</a></td> + </tr> +</table> + +<h5>Logback Core – Version 1.1.1</h5> +<table> + <tr> + <td>URL</td> + <td><a href="http://logback.qos.ch/">http://logback.qos.ch/</a></td> + </tr> + <tr> + <td>License</td> + <td>EPL/LGPL dual license. + EPL: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. + LGPL v2.1: <a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1">http://www.gnu.org/licenses/old-licenses/lgpl-2.1</a>. + A copy of the license is contained in the file <a href="about_files/LICENSE-logback.txt" target="_blank">LICENSE-logback.txt</a> and is also available at <a href="http://logback.qos.ch/license.html" target="_blank">http://logback.qos.ch/license.html</a>. + The Eclipse Foundation elects to include this software in this distribution under the EPL license.</td> + </tr> +</table> + +<h5>SLF4J: slf4j-api – Version 1.7.6</h5> +<table> + <tr> + <td>URL</td> + <td><a href="http://www.slf4j.org/">http://www.slf4j.org/</a></td> + </tr> + <tr> + <td>License</td> + <td>MIT. A copy of the license is contained in the file <a href="about_files/LICENSE-slf4j-api.txt" target="_blank">LICENSE-slf4j-api.txt</a> and is also available at <a href="http://www.slf4j.org/license.html" target="_blank">http://www.slf4j.org/license.html</a></td> + </tr> +</table> + +</body> +</html>
\ No newline at end of file diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/about_files/Apache-LICENSE-2.0.txt b/winery/org.eclipse.winery.model.csar.toscametafile/about_files/Apache-LICENSE-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/about_files/Apache-LICENSE-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/about_files/LICENSE-logback.txt b/winery/org.eclipse.winery.model.csar.toscametafile/about_files/LICENSE-logback.txt new file mode 100644 index 0000000..b4fe24e --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/about_files/LICENSE-logback.txt @@ -0,0 +1,15 @@ +Logback LICENSE +--------------- + +Logback: the reliable, generic, fast and flexible logging framework. +Copyright (C) 1999-2012, QOS.ch. All rights reserved. + +This program and the accompanying materials are dual-licensed under +either the terms of the Eclipse Public License v1.0 as published by +the Eclipse Foundation + + or (per the licensee's choosing) + +under the terms of the GNU Lesser General Public License version 2.1 +as published by the Free Software Foundation. + diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/about_files/LICENSE-slf4j-api.txt b/winery/org.eclipse.winery.model.csar.toscametafile/about_files/LICENSE-slf4j-api.txt new file mode 100644 index 0000000..37050c9 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/about_files/LICENSE-slf4j-api.txt @@ -0,0 +1,21 @@ + Copyright (c) 2004-2013 QOS.ch + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/notice.html b/winery/org.eclipse.winery.model.csar.toscametafile/notice.html new file mode 100644 index 0000000..122ebbc --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/notice.html @@ -0,0 +1,7 @@ +<html> +<body> +<p>All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 and Apache License v2.0 which accompanies this distribution. +The Eclipse Public License is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a> and the Apache License v2.0 is available at <a href="http://www.opensource.org/licenses/apache2.0.php">http://www.opensource.org/licenses/apache2.0.php</a>. +You may elect to redistribute this code under either of these licenses.</p> +</body> +</html>
\ No newline at end of file diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/pom.xml b/winery/org.eclipse.winery.model.csar.toscametafile/pom.xml new file mode 100644 index 0000000..d3f4922 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/pom.xml @@ -0,0 +1,82 @@ +<!-- +/******************************************************************************* + * Copyright (c) 2013 University of Stuttgart. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Oliver Kopp - initial API and implementation and/or initial documentation + *******************************************************************************/ +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.eclipse.winery</groupId> + <artifactId>org.eclipse.winery.model.csar.toscametafile</artifactId> + <version>0.0.4-SNAPSHOT</version> + <packaging>jar</packaging> + <name>Model for TOSCA metafile</name> + <description>This project offers a data model and parsing facility for TOSCA meta files.</description> + <url>http://www.eclipse.org/winery</url> + <organization> + <name>Eclipse.org - Winery Project</name> + <url>http://www.eclipse.org/winery</url> + </organization> + <issueManagement> + <system>bugzilla</system> + <url>https://bugs.eclipse.org/bugs</url> + </issueManagement> + <inceptionYear>2012</inceptionYear> + <mailingLists> + <mailingList> + <name>Winery Developer List</name> + <post>winery-dev@eclipse.org</post> + <archive>http://dev.eclipse.org/mhonarc/lists/winery-dev</archive> + </mailingList> + </mailingLists> + <licenses> + <license> + <name>Eclipse Public License v1.0</name> + <url>http://www.eclipse.org/legal/epl-v10.html</url> + <distribution>repo</distribution> + <comments>Standard Eclipse Licence</comments> + </license> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0</url> + <distribution>repo</distribution> + </license> + </licenses> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>2.3.1</version> + </plugin> + </plugins> + </build> + <repositories> + <repository> + <id>springsource</id> + <url>http://repository.springsource.com/maven/bundles/release/</url> + </repository> + </repositories> + <dependencies> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>1.1.1</version> + </dependency> + <dependency> + <groupId>com.springsource.util</groupId> + <artifactId>com.springsource.util.parser.manifest</artifactId> + <version>2.0.5.RELEASE</version> + </dependency> + </dependencies> +</project> diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFile.java b/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFile.java new file mode 100644 index 0000000..e795631 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFile.java @@ -0,0 +1,154 @@ +/******************************************************************************* + * Copyright (c) 2013 Rene Trefft, Oliver Kopp. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Rene Trefft - initial API and implementation and/or initial documentation + * Oliver Kopp - support for getMimeType(name) + *******************************************************************************/ +package org.eclipse.winery.model.csar.toscametafile; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.springsource.util.parser.manifest.ManifestContents; + +/** + * Provides structured access to the content of a TOSCA meta file.<br /> + * <br /> + * Copyright 2013 IAAS University of Stuttgart <br /> + * <br /> + * + * @author Rene Trefft - rene.trefft@developers.opentosca.org + * + */ +public class TOSCAMetaFile implements Serializable { + + private static final long serialVersionUID = 5636441655503533546L; + + Map<String, String> block0 = new HashMap<String, String>(); + List<Map<String, String>> fileBlocks = new ArrayList<Map<String, String>>(); + + + /** + * Creates a new TOSCA meta file. + * + * @param manifestContent to create from + */ + public TOSCAMetaFile(ManifestContents manifestContent) { + this.block0 = manifestContent.getMainAttributes(); + for (String name : manifestContent.getSectionNames()) { + Map<String, String> fileBlock = new HashMap<String, String>(); + fileBlock.put(TOSCAMetaFileAttributes.NAME, name); + fileBlock.putAll(manifestContent.getAttributesForSection(name)); + this.fileBlocks.add(fileBlock); + } + } + + /** + * + * @return Value of attribute <code>CSAR-Version</code> in block 0. + */ + public String getCSARVersion() { + return this.block0.get(TOSCAMetaFileAttributes.CSAR_VERSION); + } + + /** + * + * @return Value of attribute <code>TOSCA-Meta-Version</code> in block 0. + */ + public String getTOSCAMetaVersion() { + return this.block0.get(TOSCAMetaFileAttributes.TOSCA_META_VERSION); + } + + /** + * + * @return Value of attribute <code>Created-By</code> in block 0. + */ + public String getCreatedBy() { + return this.block0.get(TOSCAMetaFileAttributes.CREATED_BY); + } + + /** + * + * @return Value of attribute <code>Entry-Definitions</code> in block 0 + * (contains relative path to the root TOSCA file in the CSAR). If + * attribute is not specified <code>null</code>. + */ + public String getEntryDefinitions() { + return this.block0.get(TOSCAMetaFileAttributes.ENTRY_DEFINITIONS); + } + + /** + * + * @return Value of attribute <code>Description</code> in block 0 (contains + * description of CSAR). If attribute is not specified + * <code>null</code>. + */ + public String getDescription() { + return this.block0.get(TOSCAMetaFileAttributes.DESCRIPTION); + } + + /** + * + * @return Value of attribute <code>Topology</code> in block 0 (contains + * relative path to topology picture in the CSAR). If attribute is + * not specified <code>null</code>. + */ + public String getTopology() { + return this.block0.get(TOSCAMetaFileAttributes.TOPOLOGY); + } + + /** + * + * @return Block 0 (contains meta data about the CSAR itself). + */ + public Map<String, String> getBlock0() { + return this.block0; + } + + /** + * + * @return File blocks (block 1 to last block; contains meta data of files + * in the CSAR). Every block is a element + * <code>Map<String, String></code> in the returned + * <code>List</code>. + */ + public List<Map<String, String>> getFileBlocks() { + return this.fileBlocks; + } + + /** + * Returns the mime type for the given name + * + * @param name a reference to a file + * @return the mime type associated with the given name, null if no mime + * type was found + */ + public String getMimeType(String name) { + if (name == null) { + throw new IllegalArgumentException("name must not be null"); + } + for (Map<String, String> map : this.getFileBlocks()) { + String storedName = map.get("Name"); + if (name.equals(storedName)) { + // first hit, check whether content-type is stored + String contentType = map.get("Content-Type"); + if (contentType != null) { + // hit - return the found content type + return contentType; + } + } + } + // nothing found + return null; + } + +} diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFileAttributes.java b/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFileAttributes.java new file mode 100644 index 0000000..e470416 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFileAttributes.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2013 Rene Trefft. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Rene Trefft - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.winery.model.csar.toscametafile; + +/** + * Predefined attribute names and values of a TOSCA meta file. <br /> + * <br /> + * Copyright 2013 IAAS University of Stuttgart <br /> + * <br /> + * + * @author Rene Trefft - rene.trefft@developers.opentosca.org + * + */ +public class TOSCAMetaFileAttributes { + + // of block 0 + final public static String TOSCA_META_VERSION = "TOSCA-Meta-Version"; + final public static String TOSCA_META_VERSION_VALUE = "1.0"; + final public static String CSAR_VERSION = "CSAR-Version"; + final public static String CSAR_VERSION_VALUE = "1.0"; + final public static String CREATED_BY = "Created-By"; + final public static String ENTRY_DEFINITIONS = "Entry-Definitions"; + final public static String TOPOLOGY = "Topology"; + final public static String DESCRIPTION = "Description"; + + // of blocks > 0 (file blocks) + final public static String NAME = "Name"; + final public static String CONTENT_TYPE = "Content-Type"; + +} diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFileParser.java b/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFileParser.java new file mode 100644 index 0000000..c5b7c9d --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/TOSCAMetaFileParser.java @@ -0,0 +1,298 @@ +/******************************************************************************* + * Copyright (c) 2013 Rene Trefft. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Rene Trefft - initial API and implementation and/or initial documentation + *******************************************************************************/ +package org.eclipse.winery.model.csar.toscametafile; + +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.springsource.util.parser.manifest.ManifestContents; +import com.springsource.util.parser.manifest.ManifestParser; +import com.springsource.util.parser.manifest.ManifestProblem; +import com.springsource.util.parser.manifest.RecoveringManifestParser; + +/** + * Parses and validates a TOSCA meta file.<br /> + * <br /> + * Copyright 2013 IAAS University of Stuttgart <br /> + * <br /> + * + * @author Rene Trefft - rene.trefft@developers.opentosca.org + * + */ +public class TOSCAMetaFileParser { + + final private static Logger LOG = LoggerFactory.getLogger(TOSCAMetaFileParser.class); + + + /** + * Parses and validates the <code>toscaMetaFile</code>.<br /> + * <br /> + * + * @param toscaMetaFile to process + * @return <code>TOSCAMetaFile</code> that gives access to the content of + * the TOSCA meta file. If the given file doesn't exist or is + * invalid <code>null</code>. + */ + public TOSCAMetaFile parse(Path toscaMetaFile) { + + // counts the errors during parsing + int numErrors = 0; + + FileReader reader = null; + ManifestParser parser = null; + ManifestContents manifestContent = null; + TOSCAMetaFile toscaMetaFileContent = null; + + try { + + parser = new RecoveringManifestParser(); + reader = new FileReader(toscaMetaFile.toFile()); + TOSCAMetaFileParser.LOG.debug("Parsing TOSCA meta file \"{}\"...", toscaMetaFile.getFileName().toString()); + manifestContent = parser.parse(reader); + reader.close(); + + for (ManifestProblem problem : parser.getProblems()) { + this.logManifestProblem(problem); + numErrors++; + } + + numErrors += this.validateBlock0(manifestContent); + numErrors += this.validateFileBlocks(manifestContent); + + if (numErrors == 0) { + TOSCAMetaFileParser.LOG.debug("Parsing TOSCA meta file \"{}\" completed without errors. TOSCA meta file is valid.", toscaMetaFile.getFileName().toString()); + toscaMetaFileContent = new TOSCAMetaFile(manifestContent); + } else { + TOSCAMetaFileParser.LOG.error("Parsing TOSCA meta file \"{}\" failed - {} error(s) occured. TOSCA meta file is invalid.", toscaMetaFile.getFileName().toString(), numErrors); + } + + } catch (FileNotFoundException exc) { + TOSCAMetaFileParser.LOG.error("\"{}\" doesn't exist or is not a file.", toscaMetaFile, exc); + } catch (IOException exc) { + TOSCAMetaFileParser.LOG.error("An IO Exception occured.", exc); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException exc) { + TOSCAMetaFileParser.LOG.warn("An IOException occured.", exc); + } + } + } + + return toscaMetaFileContent; + + } + + /** + * Validates block 0 of the TOSCA meta file.<br /> + * <br /> + * Required attributes in block 0: + * <ul> + * <li><code>TOSCA-Meta-Version</code> (value must be <code>1.0</code>)</li> + * <li><code>CSAR-Version</code> (value must be <code>1.0</code>)</li> + * <li><code>Created-By</code></li> + * </ul> + * Optional attributes in block 0: + * <ul> + * <li><code>Entry-Definitions</code></li> + * <li><code>Description</code></li> + * <li><code>Topology</code></li> + * </ul> + * + * Further, arbitrary attributes are also allowed.<br /> + * <br /> + * + * @param mf to validate + * @return Number of errors occurred during validation. + */ + private int validateBlock0(ManifestContents mf) { + + int numErrors = 0; + + String metaFileVersion = null; + String csarVersion = null; + String createdBy = null; + String entryDefinitions = null; + String description = null; + String topology = null; + + Map<String, String> mainAttr = mf.getMainAttributes(); + + metaFileVersion = mainAttr.get(TOSCAMetaFileAttributes.TOSCA_META_VERSION); + + if (metaFileVersion == null) { + this.logAttrMissing(TOSCAMetaFileAttributes.TOSCA_META_VERSION, 0); + numErrors++; + } else if (!(metaFileVersion = metaFileVersion.trim()).equals(TOSCAMetaFileAttributes.TOSCA_META_VERSION_VALUE)) { + this.logAttrWrongVal(TOSCAMetaFileAttributes.TOSCA_META_VERSION, 0, TOSCAMetaFileAttributes.TOSCA_META_VERSION_VALUE); + numErrors++; + } + + csarVersion = mainAttr.get(TOSCAMetaFileAttributes.CSAR_VERSION); + + if (csarVersion == null) { + this.logAttrMissing(TOSCAMetaFileAttributes.CSAR_VERSION, 0); + numErrors++; + } else if (!(csarVersion = csarVersion.trim()).equals(TOSCAMetaFileAttributes.TOSCA_META_VERSION_VALUE)) { + this.logAttrWrongVal(TOSCAMetaFileAttributes.CSAR_VERSION, 0, TOSCAMetaFileAttributes.CSAR_VERSION_VALUE); + numErrors++; + } + + createdBy = mainAttr.get(TOSCAMetaFileAttributes.CREATED_BY); + + if (createdBy == null) { + this.logAttrMissing(TOSCAMetaFileAttributes.CREATED_BY, 0); + numErrors++; + } else if ((createdBy = createdBy.trim()).isEmpty()) { + this.logAttrValEmpty(TOSCAMetaFileAttributes.CREATED_BY, 0); + numErrors++; + } + + entryDefinitions = mainAttr.get(TOSCAMetaFileAttributes.ENTRY_DEFINITIONS); + + if ((entryDefinitions != null) && entryDefinitions.trim().isEmpty()) { + this.logAttrValEmpty(TOSCAMetaFileAttributes.ENTRY_DEFINITIONS, 0); + numErrors++; + } + + description = mainAttr.get(TOSCAMetaFileAttributes.DESCRIPTION); + + if ((description != null) && description.trim().isEmpty()) { + this.logAttrValEmpty(TOSCAMetaFileAttributes.DESCRIPTION, 0); + numErrors++; + } + + topology = mainAttr.get(TOSCAMetaFileAttributes.TOPOLOGY); + + if ((topology != null) && topology.trim().isEmpty()) { + this.logAttrValEmpty(TOSCAMetaFileAttributes.TOPOLOGY, 0); + numErrors++; + } + + return numErrors; + + } + + /** + * Validates the file blocks (block 1 to last block) of the TOSCA meta file.<br /> + * <br /> + * Each file block has the following required attributes: + * <ul> + * <li><code>Name</code></li> + * <li><code>Content-Type</code> (will be checked for correct syntax)</li> + * </ul> + * + * Further, arbitrary attributes are also allowed in a file block.<br /> + * <br /> + * + * @param mf to validate. + * @return Number of errors occurred during validation. + */ + private int validateFileBlocks(ManifestContents mf) { + + int blockNr = 0; + int numErrors = 0; + + String contentType; + + List<String> names = mf.getSectionNames(); + + for (String name : names) { + + blockNr++; + + if ((name != null) && name.trim().isEmpty()) { + this.logAttrValEmpty(name, blockNr); + numErrors++; + } + + Map<String, String> attr = mf.getAttributesForSection(name); + contentType = attr.get(TOSCAMetaFileAttributes.CONTENT_TYPE); + + if (contentType == null) { + this.logAttrMissing(TOSCAMetaFileAttributes.CONTENT_TYPE, blockNr); + numErrors++; + } else if (!contentType.trim().matches("^[-\\w\\+\\.]+/[-\\w\\+\\.]+$")) { + this.logAttrWrongVal(TOSCAMetaFileAttributes.CONTENT_TYPE, blockNr); + numErrors++; + } + + } + + return numErrors; + + } + + /** + * Logs that attribute <code>attributeName</code> in block + * <code>blockNr</code> is missing. + * + * @param attributeName + * @param blockNr + */ + private void logAttrMissing(String attributeName, int blockNr) { + TOSCAMetaFileParser.LOG.warn("Required attribute {} in block {} is missing.", attributeName, blockNr); + } + + /** + * Logs that attribute <code>attributeName</code> in block + * <code>blockNr</code> has an invalid value. Correct is + * <code>correctValue</code>. + * + * @param attributeName + * @param blockNr + * @param correctValue + */ + private void logAttrWrongVal(String attributeName, int blockNr, String correctValue) { + TOSCAMetaFileParser.LOG.warn("Attribute {} in block {} has an invalid value. Must be {}.", attributeName, blockNr, correctValue); + } + + /** + * Logs that attribute <code>attributeName</code> in block + * <code>blockNr</code> has an invalid value. + * + * @param attributeName + * @param blockNr + */ + private void logAttrWrongVal(String attributeName, int blockNr) { + TOSCAMetaFileParser.LOG.warn("Attribute {} in block {} has an invalid value.", attributeName, blockNr); + } + + /** + * Logs that attribute <code>attributeName</code> in block + * <code>blockNr</code> has an empty value. + * + * @param attributeName + * @param blockNr + */ + private void logAttrValEmpty(String attributeName, int blockNr) { + TOSCAMetaFileParser.LOG.warn("Attribute {} in block {} has a empty value.", attributeName, blockNr); + } + + /** + * Logs the ManifestProblem <code>problem</code>. + * + * @param problem + */ + private void logManifestProblem(ManifestProblem problem) { + TOSCAMetaFileParser.LOG.warn(problem.toString()); + } + +} diff --git a/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/package-info.java b/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/package-info.java new file mode 100644 index 0000000..c932233 --- /dev/null +++ b/winery/org.eclipse.winery.model.csar.toscametafile/src/main/java/org/eclipse/winery/model/csar/toscametafile/package-info.java @@ -0,0 +1,16 @@ +/******************************************************************************* + * Copyright (c) 2013 Rene Trefft. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Rene Trefft - initial API and implementation and/or initial documentation + *******************************************************************************/ + +/** + * This package provides a data model and parsing facility for TOSCA meta files. + */ +package org.eclipse.winery.model.csar.toscametafile;
\ No newline at end of file |