--- /dev/null
+# Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+#
+# 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.
+
+FROM java:8
+COPY config .
+COPY camunda_workflow-*.jar .
+EXPOSE 8015
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar camunda_workflow-*.jar --server.port=8015" ]
--- /dev/null
+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.
\ No newline at end of file
--- /dev/null
+# camunda BPM - Getting Started with camunda BPM and Spring Boot
+
+This Repository contains the example Spring Boot application for the guide at [camunda.org](http://camunda.org/get-started/spring-boot.html).
+
+Every step of the tutorial was tagged in this repository. You can jump to the final state of each step
+by the following command:
+
+```
+git checkout -f Step-X
+```
+
+If you want to follow the tutorial along please clone this repository and checkout the `Start` tag.
+
+```
+git clone https://github.com/camunda/camunda-get-started-spring-boot.git
+git checkout -f Start
+```
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>RemoteSystemsTempFiles</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.rse.ui.remoteSystemsTempNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Servers</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
--- /dev/null
+#Thu May 31 21:08:33 EDT 2018
+org.eclipse.wst.server.core.isServerProject=true
+eclipse.preferences.version=1
--- /dev/null
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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.
+
+// ============================================================================
+// catalina.policy - Security Policy Permissions for tc Server Runtime 8.0
+//
+// This file contains a default set of security policies to be enforced (by the
+// JVM) when Catalina is executed with the "-security" option. In addition
+// to the permissions granted here, the following additional permissions are
+// granted to each web application:
+//
+// * Read access to its document root directory
+// * Read, write and delete access to its working directory
+// ============================================================================
+
+
+// ========== SYSTEM CODE PERMISSIONS =========================================
+
+
+// These permissions apply to javac
+grant codeBase "file:${java.home}/lib/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to all shared system extensions
+grant codeBase "file:${java.home}/jre/lib/ext/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre
+grant codeBase "file:${java.home}/../lib/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to all shared system extensions when
+// ${java.home} points at $JAVA_HOME/jre
+grant codeBase "file:${java.home}/lib/ext/-" {
+ permission java.security.AllPermission;
+};
+
+// ========== tc Server Service Wrapper Permissions ===========================
+
+grant codeBase "file:${catalina.base}/bin/winx86_64/-" {
+ permission java.security.AllPermission;
+};
+grant codeBase "file:${catalina.base}/bin/win32/-" {
+ permission java.security.AllPermission;
+};
+
+// ========== CATALINA CODE PERMISSIONS =======================================
+
+
+// These permissions apply to the daemon code
+grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to the logging API
+// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
+// update this section accordingly.
+// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
+grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
+ permission java.io.FilePermission
+ "${java.home}${file.separator}lib${file.separator}logging.properties", "read";
+
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}logs", "read, write";
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}logs${file.separator}*", "read, write";
+
+ permission java.lang.RuntimePermission "shutdownHooks";
+ permission java.lang.RuntimePermission "getClassLoader";
+ permission java.lang.RuntimePermission "setContextClassLoader";
+
+ permission java.lang.management.ManagementPermission "monitor";
+
+ permission java.util.logging.LoggingPermission "control";
+
+ permission java.util.PropertyPermission "java.util.logging.config.class", "read";
+ permission java.util.PropertyPermission "java.util.logging.config.file", "read";
+ permission java.util.PropertyPermission "org.apache.juli.AsyncLoggerPollInterval", "read";
+ permission java.util.PropertyPermission "org.apache.juli.AsyncMaxRecordCount", "read";
+ permission java.util.PropertyPermission "org.apache.juli.AsyncOverflowDropType", "read";
+ permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read";
+ permission java.util.PropertyPermission "catalina.base", "read";
+
+ // tc Server specific permissions
+ permission java.util.PropertyPermission "com.springsource.tcserver.serviceability.logging.jmxdelay", "read";
+ permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
+ permission javax.management.MBeanServerPermission "createMBeanServer";
+ permission javax.management.MBeanPermission "com.springsource.tcserver.serviceability.logging.TcServerLogManager#-[tcServer:name=LoggingManager,type=Serviceability]", "registerMBean";
+ permission javax.management.MBeanTrustPermission "register";
+
+ // Note: To enable per context logging configuration, permit read access to
+ // the appropriate file. Be sure that the logging configuration is
+ // secure before enabling such access.
+ // E.g. for the examples web application (uncomment and unwrap
+ // the following to be on a single line):
+ // permission java.io.FilePermission "${catalina.base}${file.separator}
+ // webapps${file.separator}examples${file.separator}WEB-INF
+ // ${file.separator}classes${file.separator}logging.properties", "read";
+};
+
+// These permissions apply to the server startup code
+grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to the servlet API classes
+// and those that are shared across all class loaders
+// located in the "lib" directory
+grant codeBase "file:${catalina.home}/lib/-" {
+ permission java.security.AllPermission;
+};
+
+
+// If using a per instance lib directory, i.e. ${catalina.base}/lib,
+// then the following permission will need to be uncommented
+// grant codeBase "file:${catalina.base}/lib/-" {
+// permission java.security.AllPermission;
+// };
+
+
+// ========== WEB APPLICATION PERMISSIONS =====================================
+
+
+// These permissions are granted by default to all web applications
+// In addition, a web application will be given a read FilePermission
+// for all files and directories in its document root.
+grant {
+ // Required for JNDI lookup of named JDBC DataSource's and
+ // javamail named MimePart DataSource used to send mail
+ permission java.util.PropertyPermission "java.home", "read";
+ permission java.util.PropertyPermission "java.naming.*", "read";
+ permission java.util.PropertyPermission "javax.sql.*", "read";
+
+ // OS Specific properties to allow read access
+ permission java.util.PropertyPermission "os.name", "read";
+ permission java.util.PropertyPermission "os.version", "read";
+ permission java.util.PropertyPermission "os.arch", "read";
+ permission java.util.PropertyPermission "file.separator", "read";
+ permission java.util.PropertyPermission "path.separator", "read";
+ permission java.util.PropertyPermission "line.separator", "read";
+
+ // JVM properties to allow read access
+ permission java.util.PropertyPermission "java.version", "read";
+ permission java.util.PropertyPermission "java.vendor", "read";
+ permission java.util.PropertyPermission "java.vendor.url", "read";
+ permission java.util.PropertyPermission "java.class.version", "read";
+ permission java.util.PropertyPermission "java.specification.version", "read";
+ permission java.util.PropertyPermission "java.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.specification.name", "read";
+
+ permission java.util.PropertyPermission "java.vm.specification.version", "read";
+ permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.specification.name", "read";
+ permission java.util.PropertyPermission "java.vm.version", "read";
+ permission java.util.PropertyPermission "java.vm.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.name", "read";
+
+ // Required for OpenJMX
+ permission java.lang.RuntimePermission "getAttribute";
+
+ // Allow read of JAXP compliant XML parser debug
+ permission java.util.PropertyPermission "jaxp.debug", "read";
+
+ // All JSPs need to be able to read this package
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat";
+
+ // Precompiled JSPs need access to these packages.
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";
+ permission java.lang.RuntimePermission
+ "accessClassInPackage.org.apache.jasper.runtime.*";
+
+ // Precompiled JSPs need access to these system properties.
+ permission java.util.PropertyPermission
+ "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
+ permission java.util.PropertyPermission
+ "org.apache.el.parser.COERCE_TO_ZERO", "read";
+
+ // The cookie code needs these.
+ permission java.util.PropertyPermission
+ "org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read";
+ permission java.util.PropertyPermission
+ "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read";
+ permission java.util.PropertyPermission
+ "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read";
+
+ // Applications using Comet need to be able to access this package
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.comet";
+
+ // Applications using WebSocket need to be able to access these packages
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";
+};
+
+
+// The Manager application needs access to the following packages to support the
+// session display functionality
+// Note: If the manager web application used by this instance is located outside
+// of the webapps directory then the codeBase in the grant below will need
+// to be updated accordingly
+grant codeBase "file:${catalina.base}/webapps/manager/-" {
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";
+};
+
+// You can assign additional permissions to particular web applications by
+// adding additional "grant" entries here, based on the code base for that
+// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.
+//
+// Different permissions can be granted to JSP pages, classes loaded from
+// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/
+// directory, or even to individual jar files in the /WEB-INF/lib/ directory.
+//
+// For instance, assume that the standard "examples" application
+// included a JDBC driver that needed to establish a network connection to the
+// corresponding database and used the scrape taglib to get the weather from
+// the NOAA web server. You might create a "grant" entries like this:
+//
+// The permissions granted to the context root directory apply to JSP pages.
+// grant codeBase "file:${catalina.base}/webapps/examples/-" {
+// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
+// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
+// };
+//
+// The permissions granted to the context WEB-INF/classes directory
+// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" {
+// };
+//
+// The permission granted to your JDBC driver
+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
+// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
+// };
+// The permission granted to the scrape taglib
+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
+// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
+// };
+
--- /dev/null
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageAccess unless the
+# corresponding RuntimePermission ("accessClassInPackage."+package) has
+# been granted.
+package.access = \
+sun.,\
+org.apache.catalina.,\
+org.apache.coyote.,\
+org.apache.jasper.,\
+org.apache.naming.resources.,\
+org.apache.tomcat.
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageDefinition unless the
+# corresponding RuntimePermission ("defineClassInPackage."+package) has
+# been granted.
+#
+# by default, no packages are restricted for definition, and none of
+# the class loaders supplied with the JDK call checkPackageDefinition.
+#
+package.definition = \
+sun.,\
+java.,\
+org.apache.catalina.,\
+org.apache.coyote.,\
+org.apache.jasper.,\
+org.apache.naming.,\
+org.apache.tomcat.
+#
+# List of comma-separated paths defining the contents of the "server"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
+# If left as blank, the "common" loader will be used as Catalina's "server"
+# loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+server.loader =
+#
+# List of comma-separated paths defining the contents of the "shared"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
+# the "common" loader will be used as Catalina's "shared" loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+# Please note that for single jars, e.g. bar.jar, you need the URL form
+# starting with file:.
+shared.loader =
+#
+# String cache configuration.
+tomcat.util.buf.StringCache.byte.enabled = true
+#tomcat.util.buf.StringCache.char.enabled=true
+#tomcat.util.buf.StringCache.trainThreshold=500000
+#tomcat.util.buf.StringCache.cacheSize=5000
+
+
+#If this property is set to true, the startup phase will
+#abort if there is an error during initialization
+org.apache.catalina.startup.EXIT_ON_INIT_FAILURE = true
+org.apache.tomcat.util.digester.PROPERTY_SOURCE = com.springsource.tcserver.security.PropertyDecoder
+com.springsource.tcserver.security.PropertyDecoder.passphrase = springsource
+#
+#
+# List of comma-separated paths defining the contents of the "common"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
+# If left as blank,the JVM system loader will be used as Catalina's "common"
+# loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+common.loader = \
+\"${catalina.base}/lib\",\
+\"${catalina.base}/lib/*.jar\",\
+\"${catalina.home}/lib\",\
+\"${catalina.home}/lib/*.jar\"
+# List of JAR files that should not be scanned using the JarScanner
+# functionality. This is typically used to scan JARs for configuration
+# information. JARs that do not contain such information may be excluded from
+# the scan to speed up the scanning process. This is the default list. JARs on
+# this list are excluded from all scans. Scan specific lists (to exclude JARs
+# from individual scans) follow this. The list must be a comma separated list of
+# JAR file names.
+# The JARs listed below include:
+# - Tomcat Bootstrap JARs
+# - Tomcat API JARs
+# - Catalina JARs
+# - Jasper JARs
+# - Tomcat JARs
+# - Common non-Tomcat JARs
+tomcat.util.scan.StandardJarScanFilter.jarsToSkip = \
+annotations-api.jar,\
+ant.jar,\
+ant-junit*.jar,\
+ant-launcher.jar,\
+antlr-*.jar,\
+aopalliance-*.jar,\
+asm-*.jar,\
+aspectj*.jar,\
+bootstrap.jar,\
+catalina.jar,\
+catalina-ant.jar,\
+catalina-jmx-remote.jar,\
+catalina-ha.jar,\
+catalina-storeconfig.jar,\
+catalina-tribes.jar,\
+catalina-ws.jar,\
+cglib-*.jar,\
+cobertura-*.jar,\
+com.springsource.org.apache.tomcat.jdbc.jar,\
+commons-beanutils*.jar,\
+commons-codec*.jar,\
+commons-collections*.jar,\
+commons-daemon.jar,\
+commons-dbcp*.jar,\
+commons-digester*.jar,\
+commons-fileupload*.jar,\
+commons-httpclient*.jar,\
+commons-io*.jar,\
+commons-lang*.jar,\
+commons-logging*.jar,\
+commons-math*.jar,\
+commons-pool*.jar,\
+dom4j-*.jar,\
+ecj-*.jar,\
+ehcache-core-*.jar,\
+el-api.jar,\
+freemarker-*.jar,\
+gemfire-*.jar,\
+geronimo-spec-jaxrpc*.jar,\
+groovy-all-*.jar,\
+h2*.jar,\
+hibernate*.jar,\
+httpclient*.jar,\
+icu4j-*.jar,\
+insight-*.jar,\
+jackson-*.jar,\
+jasper.jar,\
+jasper-el.jar,\
+javassist-*.jar,\
+jaxen-*.jar,\
+jcommon-*.jar,\
+jdom-*.jar,\
+jetty-*.jar,\
+jfreechart-*.jar,\
+jline-*.jar,\
+jmx.jar,\
+jmx-tools.jar,\
+jsp-api.jar,\
+jstl.jar,\
+jta*.jar,\
+junit.jar,\
+junit-*.jar,\
+liquibase-core-*.jar,\
+log4j*.jar,\
+mail*.jar,\
+oro-*.jar,\
+servlet-api.jar,\
+slf4j*.jar,\
+spring-aop-*.jar,\
+spring-asm-*.jar,\
+spring-aspects-*.jar,\
+spring-beans-*.jar,\
+spring-context-*.jar,\
+spring-context-support-*.jar,\
+spring-core-*.jar,\
+spring-expression-*.jar,\
+spring-gemfire-*.jar,\
+spring-instrument-tomcat-*.jar,\
+spring-jdbc-*.jar,\
+spring-js-*.jar,\
+spring-orm-*.jar,\
+spring-security-core-*.jar,\
+spring-security-web-*.jar,\
+spring-tx-*.jar,\
+stax-*.jar,\
+tagsoup-*.jar,\
+tcServer.jar,\
+threaddumpwrapper.jar,\
+tiles-api-*.jar,\
+tiles-core-*.jar,\
+tiles-servlet-*.jar,\
+tomcat-api.jar,\
+tomcat-coyote.jar,\
+tomcat-dbcp.jar,\
+tomcat-i18n-en.jar,\
+tomcat-i18n-es.jar,\
+tomcat-i18n-fr.jar,\
+tomcat-i18n-ja.jar,\
+tomcat-jdbc.jar,\
+tomcat-jni.jar,\
+tomcat-juli.jar,\
+tomcat-juli-adapters.jar,\
+tomcat-spdy.jar,\
+tomcat-util.jar,\
+tomcat-util-scan.jar,\
+tools.jar,\
+websocket-api.jar,\
+wrapper.jar,\
+wsdl4j*.jar,\
+xercesImpl.jar,\
+xml-apis.jar,\
+xmlParserAPIs.jar,\
+xom-*.jar,\
+xpp3_min-*.jar,\
+xstream-*.jar
+# Default list of JAR files that should be scanned that overrides the default
+# jarsToSkip list above. This is typically used to include a specific JAR that
+# has been excluded by a broad file name pattern in the jarsToSkip list.
+# The list of JARs to scan may be over-ridden at a Context level for individual
+# scan types by configuring a JarScanner with a nested JarScanFilter.
+tomcat.util.scan.StandardJarScanFilter.jarsToScan = \
+log4j-core*.jar,\
+log4j-taglib*.jar
+# Additional JARs (over and above the default JARs listed above) to skip when
+# scanning for Servlet 3.0 pluggability features. These features include web
+# fragments, annotations, SCIs and classes that match @HandlesTypes. The list
+# must be a comma separated list of JAR file names.
+org.apache.catalina.startup.ContextConfig.jarsToSkip =
+# Additional JARs (over and above the default JARs listed above) to skip when
+# scanning for TLDs. The list must be a comma separated list of JAR file names.
+org.apache.catalina.startup.TldConfig.jarsToSkip =
+base.shutdown.port=-1
+base.jmx.port=6969
+nio.http.port=8080
+nio.https.port=8443
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<Context>
+ <!-- Default set of monitored resources -->
+ <WatchedResource>WEB-INF/web.xml</WatchedResource>
+ <!-- Uncomment this to disable session persistence across Tomcat restarts -->
+ <!--
+ <Manager pathname="" />
+ -->
+ <!-- Uncomment this to enable Comet connection tacking (provides events
+ on session expiration as well as webapp lifecycle) -->
+ <!--
+ <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
+ -->
+ <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
+</Context>
\ No newline at end of file
--- /dev/null
+#admin readonly
+admin readwrite
--- /dev/null
+# For security reasons the "admin" role has a random password unless the property is overridden at instance creation time.
+admin esytfjtuhtvgnvfifgwakfldlqwgvobtgohmufe
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<Server port="${base.shutdown.port}" shutdown="SHUTDOWN">
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
+ <Listener className="com.springsource.tcserver.serviceability.deploy.TcContainerDeployer"/>
+ <Listener accessFile="${catalina.base}/conf/jmxremote.access" address="127.0.0.1" authenticate="true" className="com.springsource.tcserver.serviceability.rmi.JmxSocketListener" passwordFile="${catalina.base}/conf/jmxremote.password" port="${base.jmx.port}" useSSL="false"/>
+ <GlobalNamingResources>
+ <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
+ </GlobalNamingResources>
+ <Service name="Catalina">
+ <Executor maxThreads="300" minSpareThreads="50" name="tomcatThreadPool" namePrefix="tomcat-http--"/>
+ <Engine defaultHost="localhost" name="Catalina">
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
+ </Realm>
+ <Host appBase="webapps" autoDeploy="true" deployOnStartup="true" deployXML="true" name="localhost" unpackWARs="true">
+ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
+ </Host>
+ </Engine>
+ <Connector acceptCount="100" connectionTimeout="20000" executor="tomcatThreadPool" maxKeepAliveRequests="15" port="${nio.http.port}" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="${nio.https.port}"/>
+ </Service>
+</Server>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<tomcat-users/>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
+ <!-- ======================== Introduction ============================== -->
+ <!-- This document defines default values for *all* web applications -->
+ <!-- loaded into this instance of Tomcat. As each application is -->
+ <!-- deployed, this file is processed, followed by the -->
+ <!-- "/WEB-INF/web.xml" deployment descriptor from your own -->
+ <!-- applications. -->
+ <!-- -->
+ <!-- WARNING: Do not configure application-specific resources here! -->
+ <!-- They should go in the "/WEB-INF/web.xml" file in your application. -->
+ <!-- ================== Built In Servlet Definitions ==================== -->
+ <!-- The default servlet for all web applications, that serves static -->
+ <!-- resources. It processes all requests that are not mapped to other -->
+ <!-- servlets with servlet mappings (defined either here or in your own -->
+ <!-- web.xml file). This servlet supports the following initialization -->
+ <!-- parameters (default values are in square brackets): -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+ <!-- -->
+ <!-- fileEncoding Encoding to be used to read static resources -->
+ <!-- [platform default] -->
+ <!-- -->
+ <!-- input Input buffer size (in bytes) when reading -->
+ <!-- resources to be served. [2048] -->
+ <!-- -->
+ <!-- listings Should directory listings be produced if there -->
+ <!-- is no welcome file in this directory? [false] -->
+ <!-- WARNING: Listings for directories with many -->
+ <!-- entries can be slow and may consume -->
+ <!-- significant proportions of server resources. -->
+ <!-- -->
+ <!-- output Output buffer size (in bytes) when writing -->
+ <!-- resources to be served. [2048] -->
+ <!-- -->
+ <!-- readonly Is this context "read only", so HTTP -->
+ <!-- commands like PUT and DELETE are -->
+ <!-- rejected? [true] -->
+ <!-- -->
+ <!-- readmeFile File to display together with the directory -->
+ <!-- contents. [null] -->
+ <!-- -->
+ <!-- sendfileSize If the connector used supports sendfile, this -->
+ <!-- represents the minimal file size in KB for -->
+ <!-- which sendfile will be used. Use a negative -->
+ <!-- value to always disable sendfile. [48] -->
+ <!-- -->
+ <!-- useAcceptRanges Should the Accept-Ranges header be included -->
+ <!-- in responses where appropriate? [true] -->
+ <!-- -->
+ <!-- For directory listing customization. Checks localXsltFile, then -->
+ <!-- globalXsltFile, then defaults to original behavior. -->
+ <!-- -->
+ <!-- localXsltFile Make directory listings an XML doc and -->
+ <!-- pass the result to this style sheet residing -->
+ <!-- in that directory. This overrides -->
+ <!-- contextXsltFile and globalXsltFile[null] -->
+ <!-- -->
+ <!-- contextXsltFile Make directory listings an XML doc and -->
+ <!-- pass the result to this style sheet which is -->
+ <!-- relative to the context root. This overrides -->
+ <!-- globalXsltFile[null] -->
+ <!-- -->
+ <!-- globalXsltFile Site wide configuration version of -->
+ <!-- localXsltFile. This argument must either be an -->
+ <!-- absolute or relative (to either -->
+ <!-- $CATALINA_BASE/conf or $CATALINA_HOME/conf) -->
+ <!-- path that points to a location below either -->
+ <!-- $CATALINA_BASE/conf (checked first) or -->
+ <!-- $CATALINA_HOME/conf (checked second).[null] -->
+ <!-- -->
+ <servlet>
+ <servlet-name>default</servlet-name>
+ <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>listings</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <!-- The JSP page compiler and execution servlet, which is the mechanism -->
+ <!-- used by Tomcat to support JSP pages. Traditionally, this servlet -->
+ <!-- is mapped to the URL pattern "*.jsp". This servlet supports the -->
+ <!-- following initialization parameters (default values are in square -->
+ <!-- brackets): -->
+ <!-- -->
+ <!-- checkInterval If development is false and checkInterval is -->
+ <!-- greater than zero, background compilations are -->
+ <!-- enabled. checkInterval is the time in seconds -->
+ <!-- between checks to see if a JSP page (and its -->
+ <!-- dependent files) needs to be recompiled. [0] -->
+ <!-- -->
+ <!-- classdebuginfo Should the class file be compiled with -->
+ <!-- debugging information? [true] -->
+ <!-- -->
+ <!-- classpath What class path should I use while compiling -->
+ <!-- generated servlets? [Created dynamically -->
+ <!-- based on the current web application] -->
+ <!-- -->
+ <!-- compiler Which compiler Ant should use to compile JSP -->
+ <!-- pages. See the jasper documentation for more -->
+ <!-- information. -->
+ <!-- -->
+ <!-- compilerSourceVM Compiler source VM. -->
+ <!-- [1.6 for 7.x runtimes, 1.7 for 8.x runtimes] -->
+ <!-- -->
+ <!-- compilerTargetVM Compiler target VM. -->
+ <!-- [1.6 for 7.x runtimes, 1.7 for 8.x runtimes] -->
+ <!-- -->
+ <!-- development Is Jasper used in development mode? If true, -->
+ <!-- the frequency at which JSPs are checked for -->
+ <!-- modification may be specified via the -->
+ <!-- modificationTestInterval parameter. [true] -->
+ <!-- -->
+ <!-- displaySourceFragment -->
+ <!-- Should a source fragment be included in -->
+ <!-- exception messages? [true] -->
+ <!-- -->
+ <!-- dumpSmap Should the SMAP info for JSR45 debugging be -->
+ <!-- dumped to a file? [false] -->
+ <!-- False if suppressSmap is true -->
+ <!-- -->
+ <!-- enablePooling Determines whether tag handler pooling is -->
+ <!-- enabled. This is a compilation option. It will -->
+ <!-- not alter the behaviour of JSPs that have -->
+ <!-- already been compiled. [true] -->
+ <!-- -->
+ <!-- engineOptionsClass Allows specifying the Options class used to -->
+ <!-- configure Jasper. If not present, the default -->
+ <!-- EmbeddedServletOptions will be used. -->
+ <!-- -->
+ <!-- errorOnUseBeanInvalidClassAttribute -->
+ <!-- Should Jasper issue an error when the value of -->
+ <!-- the class attribute in an useBean action is -->
+ <!-- not a valid bean class? [true] -->
+ <!-- -->
+ <!-- fork Tell Ant to fork compiles of JSP pages so that -->
+ <!-- a separate JVM is used for JSP page compiles -->
+ <!-- from the one Tomcat is running in. [true] -->
+ <!-- -->
+ <!-- genStringAsCharArray -->
+ <!-- Should text strings be generated as char -->
+ <!-- arrays, to improve performance in some cases? -->
+ <!-- [false] -->
+ <!-- -->
+ <!-- ieClassId The class-id value to be sent to Internet -->
+ <!-- Explorer when using <jsp:plugin> tags. -->
+ <!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] -->
+ <!-- -->
+ <!-- javaEncoding Java file encoding to use for generating java -->
+ <!-- source files. [UTF8] -->
+ <!-- -->
+ <!-- keepgenerated Should we keep the generated Java source code -->
+ <!-- for each page instead of deleting it? [true] -->
+ <!-- -->
+ <!-- mappedfile Should we generate static content with one -->
+ <!-- print statement per input line, to ease -->
+ <!-- debugging? [true] -->
+ <!-- -->
+ <!-- maxLoadedJsps The maximum number of JSPs that will be loaded -->
+ <!-- for a web application. If more than this -->
+ <!-- number of JSPs are loaded, the least recently -->
+ <!-- used JSPs will be unloaded so that the number -->
+ <!-- of JSPs loaded at any one time does not exceed -->
+ <!-- this limit. A value of zero or less indicates -->
+ <!-- no limit. [-1] -->
+ <!-- -->
+ <!-- jspIdleTimeout The amount of time in seconds a JSP can be -->
+ <!-- idle before it is unloaded. A value of zero -->
+ <!-- or less indicates never unload. [-1] -->
+ <!-- -->
+ <!-- modificationTestInterval -->
+ <!-- Causes a JSP (and its dependent files) to not -->
+ <!-- be checked for modification during the -->
+ <!-- specified time interval (in seconds) from the -->
+ <!-- last time the JSP was checked for -->
+ <!-- modification. A value of 0 will cause the JSP -->
+ <!-- to be checked on every access. -->
+ <!-- Used in development mode only. [4] -->
+ <!-- -->
+ <!-- recompileOnFail If a JSP compilation fails should the -->
+ <!-- modificationTestInterval be ignored and the -->
+ <!-- next access trigger a re-compilation attempt? -->
+ <!-- Used in development mode only and is disabled -->
+ <!-- by default as compilation may be expensive and -->
+ <!-- could lead to excessive resource usage. -->
+ <!-- [false] -->
+ <!-- -->
+ <!-- scratchdir What scratch directory should we use when -->
+ <!-- compiling JSP pages? [default work directory -->
+ <!-- for the current web application] -->
+ <!-- -->
+ <!-- suppressSmap Should the generation of SMAP info for JSR45 -->
+ <!-- debugging be suppressed? [false] -->
+ <!-- -->
+ <!-- trimSpaces Should white spaces in template text between -->
+ <!-- actions or directives be trimmed? [false] -->
+ <!-- -->
+ <!-- xpoweredBy Determines whether X-Powered-By response -->
+ <!-- header is added by generated servlet. [false] -->
+ <servlet>
+ <servlet-name>jsp</servlet-name>
+ <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+ <init-param>
+ <param-name>fork</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <init-param>
+ <param-name>xpoweredBy</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <load-on-startup>3</load-on-startup>
+ </servlet>
+ <!-- NOTE: An SSI Filter is also available as an alternative SSI -->
+ <!-- implementation. Use either the Servlet or the Filter but NOT both. -->
+ <!-- -->
+ <!-- Server Side Includes processing servlet, which processes SSI -->
+ <!-- directives in HTML pages consistent with similar support in web -->
+ <!-- servers like Apache. Traditionally, this servlet is mapped to the -->
+ <!-- URL pattern "*.shtml". This servlet supports the following -->
+ <!-- initialization parameters (default values are in square brackets): -->
+ <!-- -->
+ <!-- buffered Should output from this servlet be buffered? -->
+ <!-- (0=false, 1=true) [0] -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+ <!-- -->
+ <!-- expires The number of seconds before a page with SSI -->
+ <!-- directives will expire. [No default] -->
+ <!-- -->
+ <!-- isVirtualWebappRelative -->
+ <!-- Should "virtual" paths be interpreted as -->
+ <!-- relative to the context root, instead of -->
+ <!-- the server root? [false] -->
+ <!-- -->
+ <!-- inputEncoding The encoding to assume for SSI resources if -->
+ <!-- one is not available from the resource. -->
+ <!-- [Platform default] -->
+ <!-- -->
+ <!-- outputEncoding The encoding to use for the page that results -->
+ <!-- from the SSI processing. [UTF-8] -->
+ <!-- -->
+ <!-- allowExec Is use of the exec command enabled? [false] -->
+ <!--
+ <servlet>
+ <servlet-name>ssi</servlet-name>
+ <servlet-class>
+ org.apache.catalina.ssi.SSIServlet
+ </servlet-class>
+ <init-param>
+ <param-name>buffered</param-name>
+ <param-value>1</param-value>
+ </init-param>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>expires</param-name>
+ <param-value>666</param-value>
+ </init-param>
+ <init-param>
+ <param-name>isVirtualWebappRelative</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+ -->
+ <!-- Common Gateway Includes (CGI) processing servlet, which supports -->
+ <!-- execution of external applications that conform to the CGI spec -->
+ <!-- requirements. Typically, this servlet is mapped to the URL pattern -->
+ <!-- "/cgi-bin/*", which means that any CGI applications that are -->
+ <!-- executed must be present within the web application. This servlet -->
+ <!-- supports the following initialization parameters (default values -->
+ <!-- are in square brackets): -->
+ <!-- -->
+ <!-- cgiPathPrefix The CGI search path will start at -->
+ <!-- webAppRootDir + File.separator + this prefix. -->
+ <!-- [WEB-INF/cgi] -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+ <!-- -->
+ <!-- executable Name of the executable used to run the -->
+ <!-- script. [perl] -->
+ <!-- -->
+ <!-- parameterEncoding Name of parameter encoding to be used with -->
+ <!-- CGI servlet. -->
+ <!-- [System.getProperty("file.encoding","UTF-8")] -->
+ <!-- -->
+ <!-- passShellEnvironment Should the shell environment variables (if -->
+ <!-- any) be passed to the CGI script? [false] -->
+ <!-- -->
+ <!-- stderrTimeout The time (in milliseconds) to wait for the -->
+ <!-- reading of stderr to complete before -->
+ <!-- terminating the CGI process. [2000] -->
+ <!--
+ <servlet>
+ <servlet-name>cgi</servlet-name>
+ <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>cgiPathPrefix</param-name>
+ <param-value>WEB-INF/cgi</param-value>
+ </init-param>
+ <load-on-startup>5</load-on-startup>
+ </servlet>
+ -->
+ <!-- ================ Built In Servlet Mappings ========================= -->
+ <!-- The servlet mappings for the built in servlets defined above. Note -->
+ <!-- that, by default, the CGI and SSI servlets are *not* mapped. You -->
+ <!-- must uncomment these mappings (or add them to your application's own -->
+ <!-- web.xml deployment descriptor) to enable these services -->
+ <!-- The mapping for the default servlet -->
+ <servlet-mapping>
+ <servlet-name>default</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+ <!-- The mappings for the JSP servlet -->
+ <servlet-mapping>
+ <servlet-name>jsp</servlet-name>
+ <url-pattern>*.jsp</url-pattern>
+ <url-pattern>*.jspx</url-pattern>
+ </servlet-mapping>
+ <!-- The mapping for the SSI servlet -->
+ <!--
+ <servlet-mapping>
+ <servlet-name>ssi</servlet-name>
+ <url-pattern>*.shtml</url-pattern>
+ </servlet-mapping>
+ -->
+ <!-- The mapping for the CGI Gateway servlet -->
+ <!--
+ <servlet-mapping>
+ <servlet-name>cgi</servlet-name>
+ <url-pattern>/cgi-bin/*</url-pattern>
+ </servlet-mapping>
+ -->
+ <!-- ================== Built In Filter Definitions ===================== -->
+ <!-- A filter that sets character encoding that is used to decode -->
+ <!-- parameters in a POST request -->
+ <!--
+ <filter>
+ <filter-name>setCharacterEncodingFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
+ <init-param>
+ <param-name>encoding</param-name>
+ <param-value>UTF-8</param-value>
+ </init-param>
+ <async-supported>true</async-supported>
+ </filter>
+ -->
+ <!-- A filter that triggers request parameters parsing and rejects the -->
+ <!-- request if some parameters were skipped because of parsing errors or -->
+ <!-- request size limitations. -->
+ <!--
+ <filter>
+ <filter-name>failedRequestFilter</filter-name>
+ <filter-class>
+ org.apache.catalina.filters.FailedRequestFilter
+ </filter-class>
+ <async-supported>true</async-supported>
+ </filter>
+ -->
+ <!-- NOTE: An SSI Servlet is also available as an alternative SSI -->
+ <!-- implementation. Use either the Servlet or the Filter but NOT both. -->
+ <!-- -->
+ <!-- Server Side Includes processing filter, which processes SSI -->
+ <!-- directives in HTML pages consistent with similar support in web -->
+ <!-- servers like Apache. Traditionally, this filter is mapped to the -->
+ <!-- URL pattern "*.shtml", though it can be mapped to "*" as it will -->
+ <!-- selectively enable/disable SSI processing based on mime types. For -->
+ <!-- this to work you will need to uncomment the .shtml mime type -->
+ <!-- definition towards the bottom of this file. -->
+ <!-- The contentType init param allows you to apply SSI processing to JSP -->
+ <!-- pages, javascript, or any other content you wish. This filter -->
+ <!-- supports the following initialization parameters (default values are -->
+ <!-- in square brackets): -->
+ <!-- -->
+ <!-- contentType A regex pattern that must be matched before -->
+ <!-- SSI processing is applied. -->
+ <!-- [text/x-server-parsed-html(;.*)?] -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+ <!-- -->
+ <!-- expires The number of seconds before a page with SSI -->
+ <!-- directives will expire. [No default] -->
+ <!-- -->
+ <!-- isVirtualWebappRelative -->
+ <!-- Should "virtual" paths be interpreted as -->
+ <!-- relative to the context root, instead of -->
+ <!-- the server root? [false] -->
+ <!-- -->
+ <!-- allowExec Is use of the exec command enabled? [false] -->
+ <!--
+ <filter>
+ <filter-name>ssi</filter-name>
+ <filter-class>
+ org.apache.catalina.ssi.SSIFilter
+ </filter-class>
+ <init-param>
+ <param-name>contentType</param-name>
+ <param-value>text/x-server-parsed-html(;.*)?</param-value>
+ </init-param>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>expires</param-name>
+ <param-value>666</param-value>
+ </init-param>
+ <init-param>
+ <param-name>isVirtualWebappRelative</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ </filter>
+ -->
+ <!-- ==================== Built In Filter Mappings ====================== -->
+ <!-- The mapping for the Set Character Encoding Filter -->
+ <!--
+ <filter-mapping>
+ <filter-name>setCharacterEncodingFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+ -->
+ <!-- The mapping for the Failed Request Filter -->
+ <!--
+ <filter-mapping>
+ <filter-name>failedRequestFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+ -->
+ <!-- The mapping for the SSI Filter -->
+ <!--
+ <filter-mapping>
+ <filter-name>ssi</filter-name>
+ <url-pattern>*.shtml</url-pattern>
+ </filter-mapping>
+ -->
+ <!-- ==================== Default Session Configuration ================= -->
+ <!-- You can set the default session timeout (in minutes) for all newly -->
+ <!-- created sessions by modifying the value below. -->
+ <session-config>
+ <session-timeout>30</session-timeout>
+ </session-config>
+ <!-- ===================== Default MIME Type Mappings =================== -->
+ <!-- When serving static resources, Tomcat will automatically generate -->
+ <!-- a "Content-Type" header based on the resource's filename extension, -->
+ <!-- based on these mappings. Additional mappings can be added here (to -->
+ <!-- apply to all web applications), or in your own application's web.xml -->
+ <!-- deployment descriptor. -->
+ <!-- Note: Extensions are always matched in a case-insensitive manner. -->
+ <mime-mapping>
+ <extension>123</extension>
+ <mime-type>application/vnd.lotus-1-2-3</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>3dml</extension>
+ <mime-type>text/vnd.in3d.3dml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>3ds</extension>
+ <mime-type>image/x-3ds</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>3g2</extension>
+ <mime-type>video/3gpp2</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>3gp</extension>
+ <mime-type>video/3gpp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>7z</extension>
+ <mime-type>application/x-7z-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aab</extension>
+ <mime-type>application/x-authorware-bin</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aac</extension>
+ <mime-type>audio/x-aac</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aam</extension>
+ <mime-type>application/x-authorware-map</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aas</extension>
+ <mime-type>application/x-authorware-seg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>abs</extension>
+ <mime-type>audio/x-mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>abw</extension>
+ <mime-type>application/x-abiword</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ac</extension>
+ <mime-type>application/pkix-attr-cert</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>acc</extension>
+ <mime-type>application/vnd.americandynamics.acc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ace</extension>
+ <mime-type>application/x-ace-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>acu</extension>
+ <mime-type>application/vnd.acucobol</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>acutc</extension>
+ <mime-type>application/vnd.acucorp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>adp</extension>
+ <mime-type>audio/adpcm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aep</extension>
+ <mime-type>application/vnd.audiograph</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>afm</extension>
+ <mime-type>application/x-font-type1</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>afp</extension>
+ <mime-type>application/vnd.ibm.modcap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ahead</extension>
+ <mime-type>application/vnd.ahead.space</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ai</extension>
+ <mime-type>application/postscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aif</extension>
+ <mime-type>audio/x-aiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aifc</extension>
+ <mime-type>audio/x-aiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aiff</extension>
+ <mime-type>audio/x-aiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aim</extension>
+ <mime-type>application/x-aim</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>air</extension>
+ <mime-type>application/vnd.adobe.air-application-installer-package+zip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ait</extension>
+ <mime-type>application/vnd.dvb.ait</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ami</extension>
+ <mime-type>application/vnd.amiga.ami</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>anx</extension>
+ <mime-type>application/annodex</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>apk</extension>
+ <mime-type>application/vnd.android.package-archive</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>appcache</extension>
+ <mime-type>text/cache-manifest</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>application</extension>
+ <mime-type>application/x-ms-application</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>apr</extension>
+ <mime-type>application/vnd.lotus-approach</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>arc</extension>
+ <mime-type>application/x-freearc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>art</extension>
+ <mime-type>image/x-jg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>asc</extension>
+ <mime-type>application/pgp-signature</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>asf</extension>
+ <mime-type>video/x-ms-asf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>asm</extension>
+ <mime-type>text/x-asm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aso</extension>
+ <mime-type>application/vnd.accpac.simply.aso</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>asx</extension>
+ <mime-type>video/x-ms-asf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>atc</extension>
+ <mime-type>application/vnd.acucorp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>atom</extension>
+ <mime-type>application/atom+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>atomcat</extension>
+ <mime-type>application/atomcat+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>atomsvc</extension>
+ <mime-type>application/atomsvc+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>atx</extension>
+ <mime-type>application/vnd.antix.game-component</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>au</extension>
+ <mime-type>audio/basic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>avi</extension>
+ <mime-type>video/x-msvideo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>avx</extension>
+ <mime-type>video/x-rad-screenplay</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aw</extension>
+ <mime-type>application/applixware</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>axa</extension>
+ <mime-type>audio/annodex</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>axv</extension>
+ <mime-type>video/annodex</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>azf</extension>
+ <mime-type>application/vnd.airzip.filesecure.azf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>azs</extension>
+ <mime-type>application/vnd.airzip.filesecure.azs</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>azw</extension>
+ <mime-type>application/vnd.amazon.ebook</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bat</extension>
+ <mime-type>application/x-msdownload</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bcpio</extension>
+ <mime-type>application/x-bcpio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bdf</extension>
+ <mime-type>application/x-font-bdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bdm</extension>
+ <mime-type>application/vnd.syncml.dm+wbxml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bed</extension>
+ <mime-type>application/vnd.realvnc.bed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bh2</extension>
+ <mime-type>application/vnd.fujitsu.oasysprs</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bin</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>blb</extension>
+ <mime-type>application/x-blorb</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>blorb</extension>
+ <mime-type>application/x-blorb</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bmi</extension>
+ <mime-type>application/vnd.bmi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bmp</extension>
+ <mime-type>image/bmp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>body</extension>
+ <mime-type>text/html</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>book</extension>
+ <mime-type>application/vnd.framemaker</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>box</extension>
+ <mime-type>application/vnd.previewsystems.box</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>boz</extension>
+ <mime-type>application/x-bzip2</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bpk</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>btif</extension>
+ <mime-type>image/prs.btif</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bz</extension>
+ <mime-type>application/x-bzip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bz2</extension>
+ <mime-type>application/x-bzip2</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>c</extension>
+ <mime-type>text/x-c</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>c11amc</extension>
+ <mime-type>application/vnd.cluetrust.cartomobile-config</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>c11amz</extension>
+ <mime-type>application/vnd.cluetrust.cartomobile-config-pkg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>c4d</extension>
+ <mime-type>application/vnd.clonk.c4group</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>c4f</extension>
+ <mime-type>application/vnd.clonk.c4group</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>c4g</extension>
+ <mime-type>application/vnd.clonk.c4group</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>c4p</extension>
+ <mime-type>application/vnd.clonk.c4group</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>c4u</extension>
+ <mime-type>application/vnd.clonk.c4group</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cab</extension>
+ <mime-type>application/vnd.ms-cab-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>caf</extension>
+ <mime-type>audio/x-caf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cap</extension>
+ <mime-type>application/vnd.tcpdump.pcap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>car</extension>
+ <mime-type>application/vnd.curl.car</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cat</extension>
+ <mime-type>application/vnd.ms-pki.seccat</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cb7</extension>
+ <mime-type>application/x-cbr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cba</extension>
+ <mime-type>application/x-cbr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cbr</extension>
+ <mime-type>application/x-cbr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cbt</extension>
+ <mime-type>application/x-cbr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cbz</extension>
+ <mime-type>application/x-cbr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cc</extension>
+ <mime-type>text/x-c</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cct</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ccxml</extension>
+ <mime-type>application/ccxml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdbcmsg</extension>
+ <mime-type>application/vnd.contact.cmsg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdf</extension>
+ <mime-type>application/x-cdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdkey</extension>
+ <mime-type>application/vnd.mediastation.cdkey</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdmia</extension>
+ <mime-type>application/cdmi-capability</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdmic</extension>
+ <mime-type>application/cdmi-container</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdmid</extension>
+ <mime-type>application/cdmi-domain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdmio</extension>
+ <mime-type>application/cdmi-object</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdmiq</extension>
+ <mime-type>application/cdmi-queue</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdx</extension>
+ <mime-type>chemical/x-cdx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdxml</extension>
+ <mime-type>application/vnd.chemdraw+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdy</extension>
+ <mime-type>application/vnd.cinderella</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cer</extension>
+ <mime-type>application/pkix-cert</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cfs</extension>
+ <mime-type>application/x-cfs-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cgm</extension>
+ <mime-type>image/cgm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>chat</extension>
+ <mime-type>application/x-chat</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>chm</extension>
+ <mime-type>application/vnd.ms-htmlhelp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>chrt</extension>
+ <mime-type>application/vnd.kde.kchart</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cif</extension>
+ <mime-type>chemical/x-cif</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cii</extension>
+ <mime-type>application/vnd.anser-web-certificate-issue-initiation</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cil</extension>
+ <mime-type>application/vnd.ms-artgalry</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cla</extension>
+ <mime-type>application/vnd.claymore</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>class</extension>
+ <mime-type>application/java</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>clkk</extension>
+ <mime-type>application/vnd.crick.clicker.keyboard</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>clkp</extension>
+ <mime-type>application/vnd.crick.clicker.palette</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>clkt</extension>
+ <mime-type>application/vnd.crick.clicker.template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>clkw</extension>
+ <mime-type>application/vnd.crick.clicker.wordbank</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>clkx</extension>
+ <mime-type>application/vnd.crick.clicker</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>clp</extension>
+ <mime-type>application/x-msclip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cmc</extension>
+ <mime-type>application/vnd.cosmocaller</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cmdf</extension>
+ <mime-type>chemical/x-cmdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cml</extension>
+ <mime-type>chemical/x-cml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cmp</extension>
+ <mime-type>application/vnd.yellowriver-custom-menu</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cmx</extension>
+ <mime-type>image/x-cmx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cod</extension>
+ <mime-type>application/vnd.rim.cod</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>com</extension>
+ <mime-type>application/x-msdownload</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>conf</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cpio</extension>
+ <mime-type>application/x-cpio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cpp</extension>
+ <mime-type>text/x-c</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cpt</extension>
+ <mime-type>application/mac-compactpro</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>crd</extension>
+ <mime-type>application/x-mscardfile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>crl</extension>
+ <mime-type>application/pkix-crl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>crt</extension>
+ <mime-type>application/x-x509-ca-cert</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cryptonote</extension>
+ <mime-type>application/vnd.rig.cryptonote</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>csh</extension>
+ <mime-type>application/x-csh</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>csml</extension>
+ <mime-type>chemical/x-csml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>csp</extension>
+ <mime-type>application/vnd.commonspace</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>css</extension>
+ <mime-type>text/css</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cst</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>csv</extension>
+ <mime-type>text/csv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cu</extension>
+ <mime-type>application/cu-seeme</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>curl</extension>
+ <mime-type>text/vnd.curl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cww</extension>
+ <mime-type>application/prs.cww</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cxt</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cxx</extension>
+ <mime-type>text/x-c</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dae</extension>
+ <mime-type>model/vnd.collada+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>daf</extension>
+ <mime-type>application/vnd.mobius.daf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dart</extension>
+ <mime-type>application/vnd.dart</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dataless</extension>
+ <mime-type>application/vnd.fdsn.seed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>davmount</extension>
+ <mime-type>application/davmount+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dbk</extension>
+ <mime-type>application/docbook+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dcr</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dcurl</extension>
+ <mime-type>text/vnd.curl.dcurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dd2</extension>
+ <mime-type>application/vnd.oma.dd2+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ddd</extension>
+ <mime-type>application/vnd.fujixerox.ddd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>deb</extension>
+ <mime-type>application/x-debian-package</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>def</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>deploy</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>der</extension>
+ <mime-type>application/x-x509-ca-cert</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dfac</extension>
+ <mime-type>application/vnd.dreamfactory</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dgc</extension>
+ <mime-type>application/x-dgc-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dib</extension>
+ <mime-type>image/bmp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dic</extension>
+ <mime-type>text/x-c</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dir</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dis</extension>
+ <mime-type>application/vnd.mobius.dis</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dist</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>distz</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>djv</extension>
+ <mime-type>image/vnd.djvu</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>djvu</extension>
+ <mime-type>image/vnd.djvu</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dll</extension>
+ <mime-type>application/x-msdownload</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dmg</extension>
+ <mime-type>application/x-apple-diskimage</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dmp</extension>
+ <mime-type>application/vnd.tcpdump.pcap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dms</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dna</extension>
+ <mime-type>application/vnd.dna</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>doc</extension>
+ <mime-type>application/msword</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>docm</extension>
+ <mime-type>application/vnd.ms-word.document.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>docx</extension>
+ <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dot</extension>
+ <mime-type>application/msword</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dotm</extension>
+ <mime-type>application/vnd.ms-word.template.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dotx</extension>
+ <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dp</extension>
+ <mime-type>application/vnd.osgi.dp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dpg</extension>
+ <mime-type>application/vnd.dpgraph</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dra</extension>
+ <mime-type>audio/vnd.dra</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dsc</extension>
+ <mime-type>text/prs.lines.tag</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dssc</extension>
+ <mime-type>application/dssc+der</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dtb</extension>
+ <mime-type>application/x-dtbook+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dtd</extension>
+ <mime-type>application/xml-dtd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dts</extension>
+ <mime-type>audio/vnd.dts</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dtshd</extension>
+ <mime-type>audio/vnd.dts.hd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dump</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dv</extension>
+ <mime-type>video/x-dv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dvb</extension>
+ <mime-type>video/vnd.dvb.file</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dvi</extension>
+ <mime-type>application/x-dvi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dwf</extension>
+ <mime-type>model/vnd.dwf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dwg</extension>
+ <mime-type>image/vnd.dwg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dxf</extension>
+ <mime-type>image/vnd.dxf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dxp</extension>
+ <mime-type>application/vnd.spotfire.dxp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dxr</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ecelp4800</extension>
+ <mime-type>audio/vnd.nuera.ecelp4800</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ecelp7470</extension>
+ <mime-type>audio/vnd.nuera.ecelp7470</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ecelp9600</extension>
+ <mime-type>audio/vnd.nuera.ecelp9600</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ecma</extension>
+ <mime-type>application/ecmascript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>edm</extension>
+ <mime-type>application/vnd.novadigm.edm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>edx</extension>
+ <mime-type>application/vnd.novadigm.edx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>efif</extension>
+ <mime-type>application/vnd.picsel</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ei6</extension>
+ <mime-type>application/vnd.pg.osasli</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>elc</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>emf</extension>
+ <mime-type>application/x-msmetafile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>eml</extension>
+ <mime-type>message/rfc822</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>emma</extension>
+ <mime-type>application/emma+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>emz</extension>
+ <mime-type>application/x-msmetafile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>eol</extension>
+ <mime-type>audio/vnd.digital-winds</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>eot</extension>
+ <mime-type>application/vnd.ms-fontobject</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>eps</extension>
+ <mime-type>application/postscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>epub</extension>
+ <mime-type>application/epub+zip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>es3</extension>
+ <mime-type>application/vnd.eszigno3+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>esa</extension>
+ <mime-type>application/vnd.osgi.subsystem</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>esf</extension>
+ <mime-type>application/vnd.epson.esf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>et3</extension>
+ <mime-type>application/vnd.eszigno3+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>etx</extension>
+ <mime-type>text/x-setext</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>eva</extension>
+ <mime-type>application/x-eva</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>evy</extension>
+ <mime-type>application/x-envoy</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>exe</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>exi</extension>
+ <mime-type>application/exi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ext</extension>
+ <mime-type>application/vnd.novadigm.ext</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ez</extension>
+ <mime-type>application/andrew-inset</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ez2</extension>
+ <mime-type>application/vnd.ezpix-album</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ez3</extension>
+ <mime-type>application/vnd.ezpix-package</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>f</extension>
+ <mime-type>text/x-fortran</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>f4v</extension>
+ <mime-type>video/x-f4v</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>f77</extension>
+ <mime-type>text/x-fortran</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>f90</extension>
+ <mime-type>text/x-fortran</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fbs</extension>
+ <mime-type>image/vnd.fastbidsheet</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fcdt</extension>
+ <mime-type>application/vnd.adobe.formscentral.fcdt</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fcs</extension>
+ <mime-type>application/vnd.isac.fcs</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fdf</extension>
+ <mime-type>application/vnd.fdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fe_launch</extension>
+ <mime-type>application/vnd.denovo.fcselayout-link</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fg5</extension>
+ <mime-type>application/vnd.fujitsu.oasysgp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fgd</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fh</extension>
+ <mime-type>image/x-freehand</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fh4</extension>
+ <mime-type>image/x-freehand</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fh5</extension>
+ <mime-type>image/x-freehand</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fh7</extension>
+ <mime-type>image/x-freehand</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fhc</extension>
+ <mime-type>image/x-freehand</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fig</extension>
+ <mime-type>application/x-xfig</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>flac</extension>
+ <mime-type>audio/flac</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fli</extension>
+ <mime-type>video/x-fli</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>flo</extension>
+ <mime-type>application/vnd.micrografx.flo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>flv</extension>
+ <mime-type>video/x-flv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>flw</extension>
+ <mime-type>application/vnd.kde.kivio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>flx</extension>
+ <mime-type>text/vnd.fmi.flexstor</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fly</extension>
+ <mime-type>text/vnd.fly</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fm</extension>
+ <mime-type>application/vnd.framemaker</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fnc</extension>
+ <mime-type>application/vnd.frogans.fnc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>for</extension>
+ <mime-type>text/x-fortran</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fpx</extension>
+ <mime-type>image/vnd.fpx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>frame</extension>
+ <mime-type>application/vnd.framemaker</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fsc</extension>
+ <mime-type>application/vnd.fsc.weblaunch</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fst</extension>
+ <mime-type>image/vnd.fst</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ftc</extension>
+ <mime-type>application/vnd.fluxtime.clip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fti</extension>
+ <mime-type>application/vnd.anser-web-funds-transfer-initiation</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fvt</extension>
+ <mime-type>video/vnd.fvt</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fxp</extension>
+ <mime-type>application/vnd.adobe.fxp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fxpl</extension>
+ <mime-type>application/vnd.adobe.fxp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>fzs</extension>
+ <mime-type>application/vnd.fuzzysheet</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>g2w</extension>
+ <mime-type>application/vnd.geoplan</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>g3</extension>
+ <mime-type>image/g3fax</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>g3w</extension>
+ <mime-type>application/vnd.geospace</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gac</extension>
+ <mime-type>application/vnd.groove-account</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gam</extension>
+ <mime-type>application/x-tads</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gbr</extension>
+ <mime-type>application/rpki-ghostbusters</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gca</extension>
+ <mime-type>application/x-gca-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gdl</extension>
+ <mime-type>model/vnd.gdl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>geo</extension>
+ <mime-type>application/vnd.dynageo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gex</extension>
+ <mime-type>application/vnd.geometry-explorer</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ggb</extension>
+ <mime-type>application/vnd.geogebra.file</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ggt</extension>
+ <mime-type>application/vnd.geogebra.tool</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ghf</extension>
+ <mime-type>application/vnd.groove-help</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gif</extension>
+ <mime-type>image/gif</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gim</extension>
+ <mime-type>application/vnd.groove-identity-message</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gml</extension>
+ <mime-type>application/gml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gmx</extension>
+ <mime-type>application/vnd.gmx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gnumeric</extension>
+ <mime-type>application/x-gnumeric</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gph</extension>
+ <mime-type>application/vnd.flographit</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gpx</extension>
+ <mime-type>application/gpx+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gqf</extension>
+ <mime-type>application/vnd.grafeq</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gqs</extension>
+ <mime-type>application/vnd.grafeq</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gram</extension>
+ <mime-type>application/srgs</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gramps</extension>
+ <mime-type>application/x-gramps-xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gre</extension>
+ <mime-type>application/vnd.geometry-explorer</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>grv</extension>
+ <mime-type>application/vnd.groove-injector</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>grxml</extension>
+ <mime-type>application/srgs+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gsf</extension>
+ <mime-type>application/x-font-ghostscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gtar</extension>
+ <mime-type>application/x-gtar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gtm</extension>
+ <mime-type>application/vnd.groove-tool-message</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gtw</extension>
+ <mime-type>model/vnd.gtw</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gv</extension>
+ <mime-type>text/vnd.graphviz</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gxf</extension>
+ <mime-type>application/gxf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gxt</extension>
+ <mime-type>application/vnd.geonext</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gz</extension>
+ <mime-type>application/x-gzip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>h</extension>
+ <mime-type>text/x-c</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>h261</extension>
+ <mime-type>video/h261</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>h263</extension>
+ <mime-type>video/h263</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>h264</extension>
+ <mime-type>video/h264</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hal</extension>
+ <mime-type>application/vnd.hal+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hbci</extension>
+ <mime-type>application/vnd.hbci</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hdf</extension>
+ <mime-type>application/x-hdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hh</extension>
+ <mime-type>text/x-c</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hlp</extension>
+ <mime-type>application/winhlp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hpgl</extension>
+ <mime-type>application/vnd.hp-hpgl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hpid</extension>
+ <mime-type>application/vnd.hp-hpid</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hps</extension>
+ <mime-type>application/vnd.hp-hps</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hqx</extension>
+ <mime-type>application/mac-binhex40</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>htc</extension>
+ <mime-type>text/x-component</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>htke</extension>
+ <mime-type>application/vnd.kenameaapp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>htm</extension>
+ <mime-type>text/html</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>html</extension>
+ <mime-type>text/html</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hvd</extension>
+ <mime-type>application/vnd.yamaha.hv-dic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hvp</extension>
+ <mime-type>application/vnd.yamaha.hv-voice</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hvs</extension>
+ <mime-type>application/vnd.yamaha.hv-script</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>i2g</extension>
+ <mime-type>application/vnd.intergeo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>icc</extension>
+ <mime-type>application/vnd.iccprofile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ice</extension>
+ <mime-type>x-conference/x-cooltalk</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>icm</extension>
+ <mime-type>application/vnd.iccprofile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ico</extension>
+ <mime-type>image/x-icon</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ics</extension>
+ <mime-type>text/calendar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ief</extension>
+ <mime-type>image/ief</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ifb</extension>
+ <mime-type>text/calendar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ifm</extension>
+ <mime-type>application/vnd.shana.informed.formdata</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>iges</extension>
+ <mime-type>model/iges</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>igl</extension>
+ <mime-type>application/vnd.igloader</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>igm</extension>
+ <mime-type>application/vnd.insors.igm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>igs</extension>
+ <mime-type>model/iges</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>igx</extension>
+ <mime-type>application/vnd.micrografx.igx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>iif</extension>
+ <mime-type>application/vnd.shana.informed.interchange</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>imp</extension>
+ <mime-type>application/vnd.accpac.simply.imp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ims</extension>
+ <mime-type>application/vnd.ms-ims</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>in</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ink</extension>
+ <mime-type>application/inkml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>inkml</extension>
+ <mime-type>application/inkml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>install</extension>
+ <mime-type>application/x-install-instructions</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>iota</extension>
+ <mime-type>application/vnd.astraea-software.iota</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ipfix</extension>
+ <mime-type>application/ipfix</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ipk</extension>
+ <mime-type>application/vnd.shana.informed.package</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>irm</extension>
+ <mime-type>application/vnd.ibm.rights-management</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>irp</extension>
+ <mime-type>application/vnd.irepository.package+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>iso</extension>
+ <mime-type>application/x-iso9660-image</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>itp</extension>
+ <mime-type>application/vnd.shana.informed.formtemplate</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ivp</extension>
+ <mime-type>application/vnd.immervision-ivp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ivu</extension>
+ <mime-type>application/vnd.immervision-ivu</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jad</extension>
+ <mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jam</extension>
+ <mime-type>application/vnd.jam</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jar</extension>
+ <mime-type>application/java-archive</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>java</extension>
+ <mime-type>text/x-java-source</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jisp</extension>
+ <mime-type>application/vnd.jisp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jlt</extension>
+ <mime-type>application/vnd.hp-jlyt</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jnlp</extension>
+ <mime-type>application/x-java-jnlp-file</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>joda</extension>
+ <mime-type>application/vnd.joost.joda-archive</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpe</extension>
+ <mime-type>image/jpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpeg</extension>
+ <mime-type>image/jpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpg</extension>
+ <mime-type>image/jpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpgm</extension>
+ <mime-type>video/jpm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpgv</extension>
+ <mime-type>video/jpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpm</extension>
+ <mime-type>video/jpm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>js</extension>
+ <mime-type>application/javascript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jsf</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>json</extension>
+ <mime-type>application/json</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jsonml</extension>
+ <mime-type>application/jsonml+json</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jspf</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kar</extension>
+ <mime-type>audio/midi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>karbon</extension>
+ <mime-type>application/vnd.kde.karbon</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kfo</extension>
+ <mime-type>application/vnd.kde.kformula</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kia</extension>
+ <mime-type>application/vnd.kidspiration</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kml</extension>
+ <mime-type>application/vnd.google-earth.kml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kmz</extension>
+ <mime-type>application/vnd.google-earth.kmz</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kne</extension>
+ <mime-type>application/vnd.kinar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>knp</extension>
+ <mime-type>application/vnd.kinar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kon</extension>
+ <mime-type>application/vnd.kde.kontour</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kpr</extension>
+ <mime-type>application/vnd.kde.kpresenter</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kpt</extension>
+ <mime-type>application/vnd.kde.kpresenter</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kpxx</extension>
+ <mime-type>application/vnd.ds-keypoint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ksp</extension>
+ <mime-type>application/vnd.kde.kspread</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ktr</extension>
+ <mime-type>application/vnd.kahootz</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ktx</extension>
+ <mime-type>image/ktx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ktz</extension>
+ <mime-type>application/vnd.kahootz</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kwd</extension>
+ <mime-type>application/vnd.kde.kword</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kwt</extension>
+ <mime-type>application/vnd.kde.kword</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lasxml</extension>
+ <mime-type>application/vnd.las.las+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>latex</extension>
+ <mime-type>application/x-latex</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lbd</extension>
+ <mime-type>application/vnd.llamagraphics.life-balance.desktop</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lbe</extension>
+ <mime-type>application/vnd.llamagraphics.life-balance.exchange+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>les</extension>
+ <mime-type>application/vnd.hhe.lesson-player</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lha</extension>
+ <mime-type>application/x-lzh-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>link66</extension>
+ <mime-type>application/vnd.route66.link66+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>list</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>list3820</extension>
+ <mime-type>application/vnd.ibm.modcap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>listafp</extension>
+ <mime-type>application/vnd.ibm.modcap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lnk</extension>
+ <mime-type>application/x-ms-shortcut</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>log</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lostxml</extension>
+ <mime-type>application/lost+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lrf</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lrm</extension>
+ <mime-type>application/vnd.ms-lrm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ltf</extension>
+ <mime-type>application/vnd.frogans.ltf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lvp</extension>
+ <mime-type>audio/vnd.lucent.voice</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lwp</extension>
+ <mime-type>application/vnd.lotus-wordpro</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>lzh</extension>
+ <mime-type>application/x-lzh-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m13</extension>
+ <mime-type>application/x-msmediaview</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m14</extension>
+ <mime-type>application/x-msmediaview</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m1v</extension>
+ <mime-type>video/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m21</extension>
+ <mime-type>application/mp21</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m2a</extension>
+ <mime-type>audio/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m2v</extension>
+ <mime-type>video/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m3a</extension>
+ <mime-type>audio/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m3u</extension>
+ <mime-type>audio/x-mpegurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m3u8</extension>
+ <mime-type>application/vnd.apple.mpegurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m4a</extension>
+ <mime-type>audio/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m4b</extension>
+ <mime-type>audio/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m4r</extension>
+ <mime-type>audio/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m4u</extension>
+ <mime-type>video/vnd.mpegurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m4v</extension>
+ <mime-type>video/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ma</extension>
+ <mime-type>application/mathematica</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mac</extension>
+ <mime-type>image/x-macpaint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mads</extension>
+ <mime-type>application/mads+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mag</extension>
+ <mime-type>application/vnd.ecowin.chart</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>maker</extension>
+ <mime-type>application/vnd.framemaker</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>man</extension>
+ <mime-type>text/troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mar</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mathml</extension>
+ <mime-type>application/mathml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mb</extension>
+ <mime-type>application/mathematica</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mbk</extension>
+ <mime-type>application/vnd.mobius.mbk</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mbox</extension>
+ <mime-type>application/mbox</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mc1</extension>
+ <mime-type>application/vnd.medcalcdata</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mcd</extension>
+ <mime-type>application/vnd.mcd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mcurl</extension>
+ <mime-type>text/vnd.curl.mcurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mdb</extension>
+ <mime-type>application/x-msaccess</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mdi</extension>
+ <mime-type>image/vnd.ms-modi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>me</extension>
+ <mime-type>text/troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mesh</extension>
+ <mime-type>model/mesh</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>meta4</extension>
+ <mime-type>application/metalink4+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>metalink</extension>
+ <mime-type>application/metalink+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mets</extension>
+ <mime-type>application/mets+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mfm</extension>
+ <mime-type>application/vnd.mfmp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mft</extension>
+ <mime-type>application/rpki-manifest</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mgp</extension>
+ <mime-type>application/vnd.osgeo.mapguide.package</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mgz</extension>
+ <mime-type>application/vnd.proteus.magazine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mid</extension>
+ <mime-type>audio/midi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>midi</extension>
+ <mime-type>audio/midi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mie</extension>
+ <mime-type>application/x-mie</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mif</extension>
+ <mime-type>application/x-mif</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mime</extension>
+ <mime-type>message/rfc822</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mj2</extension>
+ <mime-type>video/mj2</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mjp2</extension>
+ <mime-type>video/mj2</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mk3d</extension>
+ <mime-type>video/x-matroska</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mka</extension>
+ <mime-type>audio/x-matroska</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mks</extension>
+ <mime-type>video/x-matroska</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mkv</extension>
+ <mime-type>video/x-matroska</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mlp</extension>
+ <mime-type>application/vnd.dolby.mlp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mmd</extension>
+ <mime-type>application/vnd.chipnuts.karaoke-mmd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mmf</extension>
+ <mime-type>application/vnd.smaf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mmr</extension>
+ <mime-type>image/vnd.fujixerox.edmics-mmr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mng</extension>
+ <mime-type>video/x-mng</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mny</extension>
+ <mime-type>application/x-msmoney</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mobi</extension>
+ <mime-type>application/x-mobipocket-ebook</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mods</extension>
+ <mime-type>application/mods+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mov</extension>
+ <mime-type>video/quicktime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>movie</extension>
+ <mime-type>video/x-sgi-movie</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp1</extension>
+ <mime-type>audio/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp2</extension>
+ <mime-type>audio/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp21</extension>
+ <mime-type>application/mp21</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp2a</extension>
+ <mime-type>audio/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp3</extension>
+ <mime-type>audio/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp4</extension>
+ <mime-type>video/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp4a</extension>
+ <mime-type>audio/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp4s</extension>
+ <mime-type>application/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp4v</extension>
+ <mime-type>video/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpa</extension>
+ <mime-type>audio/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpc</extension>
+ <mime-type>application/vnd.mophun.certificate</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpe</extension>
+ <mime-type>video/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpeg</extension>
+ <mime-type>video/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpega</extension>
+ <mime-type>audio/x-mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpg</extension>
+ <mime-type>video/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpg4</extension>
+ <mime-type>video/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpga</extension>
+ <mime-type>audio/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpkg</extension>
+ <mime-type>application/vnd.apple.installer+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpm</extension>
+ <mime-type>application/vnd.blueice.multipass</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpn</extension>
+ <mime-type>application/vnd.mophun.application</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpp</extension>
+ <mime-type>application/vnd.ms-project</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpt</extension>
+ <mime-type>application/vnd.ms-project</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpv2</extension>
+ <mime-type>video/mpeg2</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpy</extension>
+ <mime-type>application/vnd.ibm.minipay</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mqy</extension>
+ <mime-type>application/vnd.mobius.mqy</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mrc</extension>
+ <mime-type>application/marc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mrcx</extension>
+ <mime-type>application/marcxml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ms</extension>
+ <mime-type>text/troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mscml</extension>
+ <mime-type>application/mediaservercontrol+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mseed</extension>
+ <mime-type>application/vnd.fdsn.mseed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mseq</extension>
+ <mime-type>application/vnd.mseq</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>msf</extension>
+ <mime-type>application/vnd.epson.msf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>msh</extension>
+ <mime-type>model/mesh</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>msi</extension>
+ <mime-type>application/x-msdownload</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>msl</extension>
+ <mime-type>application/vnd.mobius.msl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>msty</extension>
+ <mime-type>application/vnd.muvee.style</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mts</extension>
+ <mime-type>model/vnd.mts</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mus</extension>
+ <mime-type>application/vnd.musician</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>musicxml</extension>
+ <mime-type>application/vnd.recordare.musicxml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mvb</extension>
+ <mime-type>application/x-msmediaview</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mwf</extension>
+ <mime-type>application/vnd.mfer</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mxf</extension>
+ <mime-type>application/mxf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mxl</extension>
+ <mime-type>application/vnd.recordare.musicxml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mxml</extension>
+ <mime-type>application/xv+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mxs</extension>
+ <mime-type>application/vnd.triscape.mxs</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mxu</extension>
+ <mime-type>video/vnd.mpegurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>n-gage</extension>
+ <mime-type>application/vnd.nokia.n-gage.symbian.install</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>n3</extension>
+ <mime-type>text/n3</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nb</extension>
+ <mime-type>application/mathematica</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nbp</extension>
+ <mime-type>application/vnd.wolfram.player</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nc</extension>
+ <mime-type>application/x-netcdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ncx</extension>
+ <mime-type>application/x-dtbncx+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nfo</extension>
+ <mime-type>text/x-nfo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ngdat</extension>
+ <mime-type>application/vnd.nokia.n-gage.data</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nitf</extension>
+ <mime-type>application/vnd.nitf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nlu</extension>
+ <mime-type>application/vnd.neurolanguage.nlu</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nml</extension>
+ <mime-type>application/vnd.enliven</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nnd</extension>
+ <mime-type>application/vnd.noblenet-directory</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nns</extension>
+ <mime-type>application/vnd.noblenet-sealer</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nnw</extension>
+ <mime-type>application/vnd.noblenet-web</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>npx</extension>
+ <mime-type>image/vnd.net-fpx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nsc</extension>
+ <mime-type>application/x-conference</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nsf</extension>
+ <mime-type>application/vnd.lotus-notes</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ntf</extension>
+ <mime-type>application/vnd.nitf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nzb</extension>
+ <mime-type>application/x-nzb</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oa2</extension>
+ <mime-type>application/vnd.fujitsu.oasys2</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oa3</extension>
+ <mime-type>application/vnd.fujitsu.oasys3</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oas</extension>
+ <mime-type>application/vnd.fujitsu.oasys</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>obd</extension>
+ <mime-type>application/x-msbinder</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>obj</extension>
+ <mime-type>application/x-tgif</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oda</extension>
+ <mime-type>application/oda</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Database -->
+ <extension>odb</extension>
+ <mime-type>application/vnd.oasis.opendocument.database</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Chart -->
+ <extension>odc</extension>
+ <mime-type>application/vnd.oasis.opendocument.chart</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Formula -->
+ <extension>odf</extension>
+ <mime-type>application/vnd.oasis.opendocument.formula</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>odft</extension>
+ <mime-type>application/vnd.oasis.opendocument.formula-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Drawing -->
+ <extension>odg</extension>
+ <mime-type>application/vnd.oasis.opendocument.graphics</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Image -->
+ <extension>odi</extension>
+ <mime-type>application/vnd.oasis.opendocument.image</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Master Document -->
+ <extension>odm</extension>
+ <mime-type>application/vnd.oasis.opendocument.text-master</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Presentation -->
+ <extension>odp</extension>
+ <mime-type>application/vnd.oasis.opendocument.presentation</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Spreadsheet -->
+ <extension>ods</extension>
+ <mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Text -->
+ <extension>odt</extension>
+ <mime-type>application/vnd.oasis.opendocument.text</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oga</extension>
+ <mime-type>audio/ogg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ogg</extension>
+ <mime-type>audio/ogg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ogv</extension>
+ <mime-type>video/ogg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- xiph mime types -->
+ <extension>ogx</extension>
+ <mime-type>application/ogg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>omdoc</extension>
+ <mime-type>application/omdoc+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>onepkg</extension>
+ <mime-type>application/onenote</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>onetmp</extension>
+ <mime-type>application/onenote</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>onetoc</extension>
+ <mime-type>application/onenote</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>onetoc2</extension>
+ <mime-type>application/onenote</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>opf</extension>
+ <mime-type>application/oebps-package+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>opml</extension>
+ <mime-type>text/x-opml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oprc</extension>
+ <mime-type>application/vnd.palm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>org</extension>
+ <mime-type>application/vnd.lotus-organizer</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>osf</extension>
+ <mime-type>application/vnd.yamaha.openscoreformat</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>osfpvg</extension>
+ <mime-type>application/vnd.yamaha.openscoreformat.osfpvg+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>otc</extension>
+ <mime-type>application/vnd.oasis.opendocument.chart-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>otf</extension>
+ <mime-type>application/x-font-otf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Drawing Template -->
+ <extension>otg</extension>
+ <mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- HTML Document Template -->
+ <extension>oth</extension>
+ <mime-type>application/vnd.oasis.opendocument.text-web</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oti</extension>
+ <mime-type>application/vnd.oasis.opendocument.image-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Presentation Template -->
+ <extension>otp</extension>
+ <mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Spreadsheet Template -->
+ <extension>ots</extension>
+ <mime-type>application/vnd.oasis.opendocument.spreadsheet-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Text Template -->
+ <extension>ott</extension>
+ <mime-type>application/vnd.oasis.opendocument.text-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oxps</extension>
+ <mime-type>application/oxps</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oxt</extension>
+ <mime-type>application/vnd.openofficeorg.extension</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p</extension>
+ <mime-type>text/x-pascal</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p10</extension>
+ <mime-type>application/pkcs10</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p12</extension>
+ <mime-type>application/x-pkcs12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p7b</extension>
+ <mime-type>application/x-pkcs7-certificates</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p7c</extension>
+ <mime-type>application/pkcs7-mime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p7m</extension>
+ <mime-type>application/pkcs7-mime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p7r</extension>
+ <mime-type>application/x-pkcs7-certreqresp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p7s</extension>
+ <mime-type>application/pkcs7-signature</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>p8</extension>
+ <mime-type>application/pkcs8</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pas</extension>
+ <mime-type>text/x-pascal</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>paw</extension>
+ <mime-type>application/vnd.pawaafile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pbd</extension>
+ <mime-type>application/vnd.powerbuilder6</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pbm</extension>
+ <mime-type>image/x-portable-bitmap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pcap</extension>
+ <mime-type>application/vnd.tcpdump.pcap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pcf</extension>
+ <mime-type>application/x-font-pcf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pcl</extension>
+ <mime-type>application/vnd.hp-pcl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pclxl</extension>
+ <mime-type>application/vnd.hp-pclxl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pct</extension>
+ <mime-type>image/pict</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pcurl</extension>
+ <mime-type>application/vnd.curl.pcurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pcx</extension>
+ <mime-type>image/x-pcx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pdb</extension>
+ <mime-type>application/vnd.palm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pdf</extension>
+ <mime-type>application/pdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pfa</extension>
+ <mime-type>application/x-font-type1</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pfb</extension>
+ <mime-type>application/x-font-type1</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pfm</extension>
+ <mime-type>application/x-font-type1</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pfr</extension>
+ <mime-type>application/font-tdpfr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pfx</extension>
+ <mime-type>application/x-pkcs12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pgm</extension>
+ <mime-type>image/x-portable-graymap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pgn</extension>
+ <mime-type>application/x-chess-pgn</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pgp</extension>
+ <mime-type>application/pgp-encrypted</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pic</extension>
+ <mime-type>image/pict</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pict</extension>
+ <mime-type>image/pict</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pkg</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pki</extension>
+ <mime-type>application/pkixcmp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pkipath</extension>
+ <mime-type>application/pkix-pkipath</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>plb</extension>
+ <mime-type>application/vnd.3gpp.pic-bw-large</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>plc</extension>
+ <mime-type>application/vnd.mobius.plc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>plf</extension>
+ <mime-type>application/vnd.pocketlearn</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pls</extension>
+ <mime-type>audio/x-scpls</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pml</extension>
+ <mime-type>application/vnd.ctc-posml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>png</extension>
+ <mime-type>image/png</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pnm</extension>
+ <mime-type>image/x-portable-anymap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pnt</extension>
+ <mime-type>image/x-macpaint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>portpkg</extension>
+ <mime-type>application/vnd.macports.portpkg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pot</extension>
+ <mime-type>application/vnd.ms-powerpoint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>potm</extension>
+ <mime-type>application/vnd.ms-powerpoint.template.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>potx</extension>
+ <mime-type>application/vnd.openxmlformats-officedocument.presentationml.template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ppam</extension>
+ <mime-type>application/vnd.ms-powerpoint.addin.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ppd</extension>
+ <mime-type>application/vnd.cups-ppd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ppm</extension>
+ <mime-type>image/x-portable-pixmap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pps</extension>
+ <mime-type>application/vnd.ms-powerpoint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ppsm</extension>
+ <mime-type>application/vnd.ms-powerpoint.slideshow.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ppsx</extension>
+ <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slideshow</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ppt</extension>
+ <mime-type>application/vnd.ms-powerpoint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pptm</extension>
+ <mime-type>application/vnd.ms-powerpoint.presentation.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pptx</extension>
+ <mime-type>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pqa</extension>
+ <mime-type>application/vnd.palm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>prc</extension>
+ <mime-type>application/x-mobipocket-ebook</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pre</extension>
+ <mime-type>application/vnd.lotus-freelance</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>prf</extension>
+ <mime-type>application/pics-rules</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ps</extension>
+ <mime-type>application/postscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>psb</extension>
+ <mime-type>application/vnd.3gpp.pic-bw-small</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>psd</extension>
+ <mime-type>image/vnd.adobe.photoshop</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>psf</extension>
+ <mime-type>application/x-font-linux-psf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pskcxml</extension>
+ <mime-type>application/pskc+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ptid</extension>
+ <mime-type>application/vnd.pvi.ptid1</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pub</extension>
+ <mime-type>application/x-mspublisher</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pvb</extension>
+ <mime-type>application/vnd.3gpp.pic-bw-var</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pwn</extension>
+ <mime-type>application/vnd.3m.post-it-notes</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pya</extension>
+ <mime-type>audio/vnd.ms-playready.media.pya</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pyv</extension>
+ <mime-type>video/vnd.ms-playready.media.pyv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qam</extension>
+ <mime-type>application/vnd.epson.quickanime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qbo</extension>
+ <mime-type>application/vnd.intu.qbo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qfx</extension>
+ <mime-type>application/vnd.intu.qfx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qps</extension>
+ <mime-type>application/vnd.publishare-delta-tree</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qt</extension>
+ <mime-type>video/quicktime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qti</extension>
+ <mime-type>image/x-quicktime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qtif</extension>
+ <mime-type>image/x-quicktime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qwd</extension>
+ <mime-type>application/vnd.quark.quarkxpress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qwt</extension>
+ <mime-type>application/vnd.quark.quarkxpress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qxb</extension>
+ <mime-type>application/vnd.quark.quarkxpress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qxd</extension>
+ <mime-type>application/vnd.quark.quarkxpress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qxl</extension>
+ <mime-type>application/vnd.quark.quarkxpress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qxt</extension>
+ <mime-type>application/vnd.quark.quarkxpress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ra</extension>
+ <mime-type>audio/x-pn-realaudio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ram</extension>
+ <mime-type>audio/x-pn-realaudio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rar</extension>
+ <mime-type>application/x-rar-compressed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ras</extension>
+ <mime-type>image/x-cmu-raster</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rcprofile</extension>
+ <mime-type>application/vnd.ipunplugged.rcprofile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rdf</extension>
+ <mime-type>application/rdf+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rdz</extension>
+ <mime-type>application/vnd.data-vision.rdz</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rep</extension>
+ <mime-type>application/vnd.businessobjects</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>res</extension>
+ <mime-type>application/x-dtbresource+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rgb</extension>
+ <mime-type>image/x-rgb</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rif</extension>
+ <mime-type>application/reginfo+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rip</extension>
+ <mime-type>audio/vnd.rip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ris</extension>
+ <mime-type>application/x-research-info-systems</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rl</extension>
+ <mime-type>application/resource-lists+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rlc</extension>
+ <mime-type>image/vnd.fujixerox.edmics-rlc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rld</extension>
+ <mime-type>application/resource-lists-diff+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rm</extension>
+ <mime-type>application/vnd.rn-realmedia</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rmi</extension>
+ <mime-type>audio/midi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rmp</extension>
+ <mime-type>audio/x-pn-realaudio-plugin</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rms</extension>
+ <mime-type>application/vnd.jcp.javame.midlet-rms</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rmvb</extension>
+ <mime-type>application/vnd.rn-realmedia-vbr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rnc</extension>
+ <mime-type>application/relax-ng-compact-syntax</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>roa</extension>
+ <mime-type>application/rpki-roa</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>roff</extension>
+ <mime-type>text/troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rp9</extension>
+ <mime-type>application/vnd.cloanto.rp9</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rpss</extension>
+ <mime-type>application/vnd.nokia.radio-presets</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rpst</extension>
+ <mime-type>application/vnd.nokia.radio-preset</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rq</extension>
+ <mime-type>application/sparql-query</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rs</extension>
+ <mime-type>application/rls-services+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rsd</extension>
+ <mime-type>application/rsd+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rss</extension>
+ <mime-type>application/rss+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rtf</extension>
+ <mime-type>application/rtf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rtx</extension>
+ <mime-type>text/richtext</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>s</extension>
+ <mime-type>text/x-asm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>s3m</extension>
+ <mime-type>audio/s3m</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>saf</extension>
+ <mime-type>application/vnd.yamaha.smaf-audio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sbml</extension>
+ <mime-type>application/sbml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sc</extension>
+ <mime-type>application/vnd.ibm.secure-container</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>scd</extension>
+ <mime-type>application/x-msschedule</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>scm</extension>
+ <mime-type>application/vnd.lotus-screencam</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>scq</extension>
+ <mime-type>application/scvp-cv-request</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>scs</extension>
+ <mime-type>application/scvp-cv-response</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>scurl</extension>
+ <mime-type>text/vnd.curl.scurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sda</extension>
+ <mime-type>application/vnd.stardivision.draw</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sdc</extension>
+ <mime-type>application/vnd.stardivision.calc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sdd</extension>
+ <mime-type>application/vnd.stardivision.impress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sdkd</extension>
+ <mime-type>application/vnd.solent.sdkm+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sdkm</extension>
+ <mime-type>application/vnd.solent.sdkm+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sdp</extension>
+ <mime-type>application/sdp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sdw</extension>
+ <mime-type>application/vnd.stardivision.writer</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>see</extension>
+ <mime-type>application/vnd.seemail</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>seed</extension>
+ <mime-type>application/vnd.fdsn.seed</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sema</extension>
+ <mime-type>application/vnd.sema</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>semd</extension>
+ <mime-type>application/vnd.semd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>semf</extension>
+ <mime-type>application/vnd.semf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ser</extension>
+ <mime-type>application/java-serialized-object</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>setpay</extension>
+ <mime-type>application/set-payment-initiation</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>setreg</extension>
+ <mime-type>application/set-registration-initiation</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sfd-hdstx</extension>
+ <mime-type>application/vnd.hydrostatix.sof-data</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sfs</extension>
+ <mime-type>application/vnd.spotfire.sfs</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sfv</extension>
+ <mime-type>text/x-sfv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sgi</extension>
+ <mime-type>image/sgi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sgl</extension>
+ <mime-type>application/vnd.stardivision.writer-global</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sgm</extension>
+ <mime-type>text/sgml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sgml</extension>
+ <mime-type>text/sgml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sh</extension>
+ <mime-type>application/x-sh</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>shar</extension>
+ <mime-type>application/x-shar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>shf</extension>
+ <mime-type>application/shf+xml</mime-type>
+ </mime-mapping>
+ <!--
+ <mime-mapping>
+ <extension>shtml</extension>
+ <mime-type>text/x-server-parsed-html</mime-type>
+ </mime-mapping>
+ -->
+ <mime-mapping>
+ <extension>sid</extension>
+ <mime-type>image/x-mrsid-image</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sig</extension>
+ <mime-type>application/pgp-signature</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sil</extension>
+ <mime-type>audio/silk</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>silo</extension>
+ <mime-type>model/mesh</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sis</extension>
+ <mime-type>application/vnd.symbian.install</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sisx</extension>
+ <mime-type>application/vnd.symbian.install</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sit</extension>
+ <mime-type>application/x-stuffit</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sitx</extension>
+ <mime-type>application/x-stuffitx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>skd</extension>
+ <mime-type>application/vnd.koan</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>skm</extension>
+ <mime-type>application/vnd.koan</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>skp</extension>
+ <mime-type>application/vnd.koan</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>skt</extension>
+ <mime-type>application/vnd.koan</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sldm</extension>
+ <mime-type>application/vnd.ms-powerpoint.slide.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sldx</extension>
+ <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slide</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>slt</extension>
+ <mime-type>application/vnd.epson.salt</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sm</extension>
+ <mime-type>application/vnd.stepmania.stepchart</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>smf</extension>
+ <mime-type>application/vnd.stardivision.math</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>smi</extension>
+ <mime-type>application/smil+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>smil</extension>
+ <mime-type>application/smil+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>smv</extension>
+ <mime-type>video/x-smv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>smzip</extension>
+ <mime-type>application/vnd.stepmania.package</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>snd</extension>
+ <mime-type>audio/basic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>snf</extension>
+ <mime-type>application/x-font-snf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>so</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>spc</extension>
+ <mime-type>application/x-pkcs7-certificates</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>spf</extension>
+ <mime-type>application/vnd.yamaha.smaf-phrase</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>spl</extension>
+ <mime-type>application/x-futuresplash</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>spot</extension>
+ <mime-type>text/vnd.in3d.spot</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>spp</extension>
+ <mime-type>application/scvp-vp-response</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>spq</extension>
+ <mime-type>application/scvp-vp-request</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>spx</extension>
+ <mime-type>audio/ogg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sql</extension>
+ <mime-type>application/x-sql</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>src</extension>
+ <mime-type>application/x-wais-source</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>srt</extension>
+ <mime-type>application/x-subrip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sru</extension>
+ <mime-type>application/sru+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>srx</extension>
+ <mime-type>application/sparql-results+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ssdl</extension>
+ <mime-type>application/ssdl+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sse</extension>
+ <mime-type>application/vnd.kodak-descriptor</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ssf</extension>
+ <mime-type>application/vnd.epson.ssf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ssml</extension>
+ <mime-type>application/ssml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>st</extension>
+ <mime-type>application/vnd.sailingtracker.track</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>stc</extension>
+ <mime-type>application/vnd.sun.xml.calc.template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>std</extension>
+ <mime-type>application/vnd.sun.xml.draw.template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>stf</extension>
+ <mime-type>application/vnd.wt.stf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sti</extension>
+ <mime-type>application/vnd.sun.xml.impress.template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>stk</extension>
+ <mime-type>application/hyperstudio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>stl</extension>
+ <mime-type>application/vnd.ms-pki.stl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>str</extension>
+ <mime-type>application/vnd.pg.format</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>stw</extension>
+ <mime-type>application/vnd.sun.xml.writer.template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sub</extension>
+ <mime-type>text/vnd.dvb.subtitle</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sus</extension>
+ <mime-type>application/vnd.sus-calendar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>susp</extension>
+ <mime-type>application/vnd.sus-calendar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sv4cpio</extension>
+ <mime-type>application/x-sv4cpio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sv4crc</extension>
+ <mime-type>application/x-sv4crc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>svc</extension>
+ <mime-type>application/vnd.dvb.service</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>svd</extension>
+ <mime-type>application/vnd.svd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>svg</extension>
+ <mime-type>image/svg+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>svgz</extension>
+ <mime-type>image/svg+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>swa</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>swf</extension>
+ <mime-type>application/x-shockwave-flash</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>swi</extension>
+ <mime-type>application/vnd.aristanetworks.swi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sxc</extension>
+ <mime-type>application/vnd.sun.xml.calc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sxd</extension>
+ <mime-type>application/vnd.sun.xml.draw</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sxg</extension>
+ <mime-type>application/vnd.sun.xml.writer.global</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sxi</extension>
+ <mime-type>application/vnd.sun.xml.impress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sxm</extension>
+ <mime-type>application/vnd.sun.xml.math</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sxw</extension>
+ <mime-type>application/vnd.sun.xml.writer</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>t</extension>
+ <mime-type>text/troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>t3</extension>
+ <mime-type>application/x-t3vm-image</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>taglet</extension>
+ <mime-type>application/vnd.mynfc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tao</extension>
+ <mime-type>application/vnd.tao.intent-module-archive</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tar</extension>
+ <mime-type>application/x-tar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tcap</extension>
+ <mime-type>application/vnd.3gpp2.tcap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tcl</extension>
+ <mime-type>application/x-tcl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>teacher</extension>
+ <mime-type>application/vnd.smart.teacher</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tei</extension>
+ <mime-type>application/tei+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>teicorpus</extension>
+ <mime-type>application/tei+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tex</extension>
+ <mime-type>application/x-tex</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>texi</extension>
+ <mime-type>application/x-texinfo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>texinfo</extension>
+ <mime-type>application/x-texinfo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>text</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tfi</extension>
+ <mime-type>application/thraud+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tfm</extension>
+ <mime-type>application/x-tex-tfm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tga</extension>
+ <mime-type>image/x-tga</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>thmx</extension>
+ <mime-type>application/vnd.ms-officetheme</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tif</extension>
+ <mime-type>image/tiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tiff</extension>
+ <mime-type>image/tiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tmo</extension>
+ <mime-type>application/vnd.tmobile-livetv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>torrent</extension>
+ <mime-type>application/x-bittorrent</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tpl</extension>
+ <mime-type>application/vnd.groove-tool-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tpt</extension>
+ <mime-type>application/vnd.trid.tpt</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tr</extension>
+ <mime-type>text/troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tra</extension>
+ <mime-type>application/vnd.trueapp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>trm</extension>
+ <mime-type>application/x-msterminal</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tsd</extension>
+ <mime-type>application/timestamped-data</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tsv</extension>
+ <mime-type>text/tab-separated-values</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ttc</extension>
+ <mime-type>application/x-font-ttf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ttf</extension>
+ <mime-type>application/x-font-ttf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ttl</extension>
+ <mime-type>text/turtle</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>twd</extension>
+ <mime-type>application/vnd.simtech-mindmapper</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>twds</extension>
+ <mime-type>application/vnd.simtech-mindmapper</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>txd</extension>
+ <mime-type>application/vnd.genomatix.tuxedo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>txf</extension>
+ <mime-type>application/vnd.mobius.txf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>txt</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>u32</extension>
+ <mime-type>application/x-authorware-bin</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>udeb</extension>
+ <mime-type>application/x-debian-package</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ufd</extension>
+ <mime-type>application/vnd.ufdl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ufdl</extension>
+ <mime-type>application/vnd.ufdl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ulw</extension>
+ <mime-type>audio/basic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ulx</extension>
+ <mime-type>application/x-glulx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>umj</extension>
+ <mime-type>application/vnd.umajin</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>unityweb</extension>
+ <mime-type>application/vnd.unity</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uoml</extension>
+ <mime-type>application/vnd.uoml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uri</extension>
+ <mime-type>text/uri-list</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uris</extension>
+ <mime-type>text/uri-list</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>urls</extension>
+ <mime-type>text/uri-list</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ustar</extension>
+ <mime-type>application/x-ustar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>utz</extension>
+ <mime-type>application/vnd.uiq.theme</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uu</extension>
+ <mime-type>text/x-uuencode</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uva</extension>
+ <mime-type>audio/vnd.dece.audio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvd</extension>
+ <mime-type>application/vnd.dece.data</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvf</extension>
+ <mime-type>application/vnd.dece.data</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvg</extension>
+ <mime-type>image/vnd.dece.graphic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvh</extension>
+ <mime-type>video/vnd.dece.hd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvi</extension>
+ <mime-type>image/vnd.dece.graphic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvm</extension>
+ <mime-type>video/vnd.dece.mobile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvp</extension>
+ <mime-type>video/vnd.dece.pd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvs</extension>
+ <mime-type>video/vnd.dece.sd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvt</extension>
+ <mime-type>application/vnd.dece.ttml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvu</extension>
+ <mime-type>video/vnd.uvvu.mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvv</extension>
+ <mime-type>video/vnd.dece.video</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvva</extension>
+ <mime-type>audio/vnd.dece.audio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvd</extension>
+ <mime-type>application/vnd.dece.data</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvf</extension>
+ <mime-type>application/vnd.dece.data</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvg</extension>
+ <mime-type>image/vnd.dece.graphic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvh</extension>
+ <mime-type>video/vnd.dece.hd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvi</extension>
+ <mime-type>image/vnd.dece.graphic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvm</extension>
+ <mime-type>video/vnd.dece.mobile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvp</extension>
+ <mime-type>video/vnd.dece.pd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvs</extension>
+ <mime-type>video/vnd.dece.sd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvt</extension>
+ <mime-type>application/vnd.dece.ttml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvu</extension>
+ <mime-type>video/vnd.uvvu.mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvv</extension>
+ <mime-type>video/vnd.dece.video</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvx</extension>
+ <mime-type>application/vnd.dece.unspecified</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvvz</extension>
+ <mime-type>application/vnd.dece.zip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvx</extension>
+ <mime-type>application/vnd.dece.unspecified</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>uvz</extension>
+ <mime-type>application/vnd.dece.zip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vcard</extension>
+ <mime-type>text/vcard</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vcd</extension>
+ <mime-type>application/x-cdlink</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vcf</extension>
+ <mime-type>text/x-vcard</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vcg</extension>
+ <mime-type>application/vnd.groove-vcard</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vcs</extension>
+ <mime-type>text/x-vcalendar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vcx</extension>
+ <mime-type>application/vnd.vcx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vis</extension>
+ <mime-type>application/vnd.visionary</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>viv</extension>
+ <mime-type>video/vnd.vivo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vob</extension>
+ <mime-type>video/x-ms-vob</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vor</extension>
+ <mime-type>application/vnd.stardivision.writer</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vox</extension>
+ <mime-type>application/x-authorware-bin</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vrml</extension>
+ <mime-type>model/vrml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vsd</extension>
+ <mime-type>application/vnd.visio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vsf</extension>
+ <mime-type>application/vnd.vsf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vss</extension>
+ <mime-type>application/vnd.visio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vst</extension>
+ <mime-type>application/vnd.visio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vsw</extension>
+ <mime-type>application/vnd.visio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vtu</extension>
+ <mime-type>model/vnd.vtu</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vxml</extension>
+ <mime-type>application/voicexml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>w3d</extension>
+ <mime-type>application/x-director</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wad</extension>
+ <mime-type>application/x-doom</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wav</extension>
+ <mime-type>audio/x-wav</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wax</extension>
+ <mime-type>audio/x-ms-wax</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- Wireless Bitmap -->
+ <extension>wbmp</extension>
+ <mime-type>image/vnd.wap.wbmp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wbs</extension>
+ <mime-type>application/vnd.criticaltools.wbs+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wbxml</extension>
+ <mime-type>application/vnd.wap.wbxml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wcm</extension>
+ <mime-type>application/vnd.ms-works</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wdb</extension>
+ <mime-type>application/vnd.ms-works</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wdp</extension>
+ <mime-type>image/vnd.ms-photo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>weba</extension>
+ <mime-type>audio/webm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>webm</extension>
+ <mime-type>video/webm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>webp</extension>
+ <mime-type>image/webp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wg</extension>
+ <mime-type>application/vnd.pmi.widget</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wgt</extension>
+ <mime-type>application/widget</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wks</extension>
+ <mime-type>application/vnd.ms-works</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wm</extension>
+ <mime-type>video/x-ms-wm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wma</extension>
+ <mime-type>audio/x-ms-wma</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wmd</extension>
+ <mime-type>application/x-ms-wmd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wmf</extension>
+ <mime-type>application/x-msmetafile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- WML Source -->
+ <extension>wml</extension>
+ <mime-type>text/vnd.wap.wml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- Compiled WML -->
+ <extension>wmlc</extension>
+ <mime-type>application/vnd.wap.wmlc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- WML Script Source -->
+ <extension>wmls</extension>
+ <mime-type>text/vnd.wap.wmlscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- Compiled WML Script -->
+ <extension>wmlsc</extension>
+ <mime-type>application/vnd.wap.wmlscriptc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wmv</extension>
+ <mime-type>video/x-ms-wmv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wmx</extension>
+ <mime-type>video/x-ms-wmx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wmz</extension>
+ <mime-type>application/x-msmetafile</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>woff</extension>
+ <mime-type>application/x-font-woff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wpd</extension>
+ <mime-type>application/vnd.wordperfect</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wpl</extension>
+ <mime-type>application/vnd.ms-wpl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wps</extension>
+ <mime-type>application/vnd.ms-works</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wqd</extension>
+ <mime-type>application/vnd.wqd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wri</extension>
+ <mime-type>application/x-mswrite</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wrl</extension>
+ <mime-type>model/vrml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wsdl</extension>
+ <mime-type>application/wsdl+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wspolicy</extension>
+ <mime-type>application/wspolicy+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wtb</extension>
+ <mime-type>application/vnd.webturbo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wvx</extension>
+ <mime-type>video/x-ms-wvx</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>x32</extension>
+ <mime-type>application/x-authorware-bin</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>x3d</extension>
+ <mime-type>model/x3d+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>x3db</extension>
+ <mime-type>model/x3d+binary</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>x3dbz</extension>
+ <mime-type>model/x3d+binary</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>x3dv</extension>
+ <mime-type>model/x3d+vrml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>x3dvz</extension>
+ <mime-type>model/x3d+vrml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>x3dz</extension>
+ <mime-type>model/x3d+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xaml</extension>
+ <mime-type>application/xaml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xap</extension>
+ <mime-type>application/x-silverlight-app</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xar</extension>
+ <mime-type>application/vnd.xara</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xbap</extension>
+ <mime-type>application/x-ms-xbap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xbd</extension>
+ <mime-type>application/vnd.fujixerox.docuworks.binder</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xbm</extension>
+ <mime-type>image/x-xbitmap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xdf</extension>
+ <mime-type>application/xcap-diff+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xdm</extension>
+ <mime-type>application/vnd.syncml.dm+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xdp</extension>
+ <mime-type>application/vnd.adobe.xdp+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xdssc</extension>
+ <mime-type>application/dssc+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xdw</extension>
+ <mime-type>application/vnd.fujixerox.docuworks</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xenc</extension>
+ <mime-type>application/xenc+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xer</extension>
+ <mime-type>application/patch-ops-error+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xfdf</extension>
+ <mime-type>application/vnd.adobe.xfdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xfdl</extension>
+ <mime-type>application/vnd.xfdl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xht</extension>
+ <mime-type>application/xhtml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xhtml</extension>
+ <mime-type>application/xhtml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xhvml</extension>
+ <mime-type>application/xv+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xif</extension>
+ <mime-type>image/vnd.xiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xla</extension>
+ <mime-type>application/vnd.ms-excel</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlam</extension>
+ <mime-type>application/vnd.ms-excel.addin.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlc</extension>
+ <mime-type>application/vnd.ms-excel</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlf</extension>
+ <mime-type>application/x-xliff+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlm</extension>
+ <mime-type>application/vnd.ms-excel</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xls</extension>
+ <mime-type>application/vnd.ms-excel</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlsb</extension>
+ <mime-type>application/vnd.ms-excel.sheet.binary.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlsm</extension>
+ <mime-type>application/vnd.ms-excel.sheet.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlsx</extension>
+ <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlt</extension>
+ <mime-type>application/vnd.ms-excel</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xltm</extension>
+ <mime-type>application/vnd.ms-excel.template.macroenabled.12</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xltx</extension>
+ <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xlw</extension>
+ <mime-type>application/vnd.ms-excel</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xm</extension>
+ <mime-type>audio/xm</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xml</extension>
+ <mime-type>application/xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xo</extension>
+ <mime-type>application/vnd.olpc-sugar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xop</extension>
+ <mime-type>application/xop+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xpi</extension>
+ <mime-type>application/x-xpinstall</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xpl</extension>
+ <mime-type>application/xproc+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xpm</extension>
+ <mime-type>image/x-xpixmap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xpr</extension>
+ <mime-type>application/vnd.is-xpr</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xps</extension>
+ <mime-type>application/vnd.ms-xpsdocument</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xpw</extension>
+ <mime-type>application/vnd.intercon.formnet</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xpx</extension>
+ <mime-type>application/vnd.intercon.formnet</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xsl</extension>
+ <mime-type>application/xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xslt</extension>
+ <mime-type>application/xslt+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xsm</extension>
+ <mime-type>application/vnd.syncml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xspf</extension>
+ <mime-type>application/xspf+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xul</extension>
+ <mime-type>application/vnd.mozilla.xul+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xvm</extension>
+ <mime-type>application/xv+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xvml</extension>
+ <mime-type>application/xv+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xwd</extension>
+ <mime-type>image/x-xwindowdump</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xyz</extension>
+ <mime-type>chemical/x-xyz</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xz</extension>
+ <mime-type>application/x-xz</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>yang</extension>
+ <mime-type>application/yang</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>yin</extension>
+ <mime-type>application/yin+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z</extension>
+ <mime-type>application/x-compress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>Z</extension>
+ <mime-type>application/x-compress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z1</extension>
+ <mime-type>application/x-zmachine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z2</extension>
+ <mime-type>application/x-zmachine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z3</extension>
+ <mime-type>application/x-zmachine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z4</extension>
+ <mime-type>application/x-zmachine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z5</extension>
+ <mime-type>application/x-zmachine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z6</extension>
+ <mime-type>application/x-zmachine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z7</extension>
+ <mime-type>application/x-zmachine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z8</extension>
+ <mime-type>application/x-zmachine</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>zaz</extension>
+ <mime-type>application/vnd.zzazz.deck+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>zip</extension>
+ <mime-type>application/zip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>zir</extension>
+ <mime-type>application/vnd.zul</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>zirz</extension>
+ <mime-type>application/vnd.zul</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>zmm</extension>
+ <mime-type>application/vnd.handheld-entertainment+xml</mime-type>
+ </mime-mapping>
+ <!-- ==================== Default Welcome File List ==================== -->
+ <!-- When a request URI refers to a directory, the default servlet looks -->
+ <!-- for a "welcome file" within that directory and, if present, to the -->
+ <!-- corresponding resource URI for display. -->
+ <!-- If no welcome files are present, the default servlet either serves -->
+ <!-- a directory listing (see default servlet configuration on how to -->
+ <!-- customize) or returns a 404 status, depending on the value of the -->
+ <!-- listings setting. -->
+ <!-- -->
+ <!-- If you define welcome files in your own application's web.xml -->
+ <!-- deployment descriptor, that list *replaces* the list configured -->
+ <!-- here, so be sure to include any of the default values that you wish -->
+ <!-- to use within your application. -->
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.htm</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
\ No newline at end of file
--- /dev/null
+<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/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.camunda.bpm.getstarted</groupId>
+ <artifactId>akraino</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>1.5.8.RELEASE</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.camunda.bpm.springboot</groupId>
+ <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
+ <version>2.3.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.yaml</groupId>
+ <artifactId>snakeyaml</artifactId>
+ <version>1.21</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-net</groupId>
+ <artifactId>commons-net</artifactId>
+ <version>3.3</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.jcraft</groupId>
+ <artifactId>jsch</artifactId>
+ <version>0.1.54</version>
+</dependency>
+
+ </dependencies>
+
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+</build>
+
+
+</project>
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class AkrainoSpringBootApplication {
+ public static void main(String... args) {
+ System.setProperty("server.connection-timeout","36000000");
+ SpringApplication.run(AkrainoSpringBootApplication.class, args);
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.Exception;
+
+public class TaskExecutorException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public TaskExecutorException(String message) {
+ super(message);
+ }
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.config;
+
+
+import java.io.IOException;
+
+
+import javax.sql.DataSource;
+
+import org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl;
+import org.camunda.bpm.engine.impl.jobexecutor.CallerRunsRejectedJobsHandler;
+import org.camunda.bpm.engine.impl.jobexecutor.JobExecutor;
+import org.camunda.bpm.engine.spring.SpringProcessEngineConfiguration;
+import org.camunda.bpm.engine.spring.components.jobexecutor.SpringJobExecutor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.client.RestTemplateBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+
+
+@Configuration
+
+ public class CamundaCorsFilter {
+
+
+ @Value("${camunda.bpm.buildresponseurl}")
+ private String buildresponseurl;
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Autowired
+ private PlatformTransactionManager transactionManager;
+
+ @Autowired
+ private JobExecutor jobExecutor;
+
+ public String getBuildresponseurl() {
+ return buildresponseurl;
+ }
+
+ public void setBuildresponseurl(String buildresponseurl) {
+ this.buildresponseurl = buildresponseurl;
+ }
+
+ @Bean
+ public RestTemplate restTemplate(RestTemplateBuilder builder) {
+ // Do any additional configuration here
+ return builder.build();
+ }
+
+ /*@Bean
+ public JobExecutor jobExecutor() {
+ final JobExecutor jobExecutor = new RuntimeContainerJobExecutor();
+ jobExecutor.setWaitTimeInMillis(5000);
+ jobExecutor.setLockTimeInMillis(18000000);
+ return jobExecutor;
+ }
+ @Bean
+
+ public ProcessEngineConfiguration SpringProcessEngineConfiguration () {
+
+ ProcessEngineConfiguration ProcessEngineConfiguration=new SpringProcessEngineConfiguration().setJobExecutor(jobexecutor).setProcessEngineName("default");
+ return ProcessEngineConfiguration;
+ }*/
+
+ @Bean
+ @Primary
+ public static JobExecutor jobExecutor(@Qualifier("camundaTaskExecutor") final TaskExecutor taskExecutor) {
+ final SpringJobExecutor springJobExecutor = new SpringJobExecutor();
+ springJobExecutor.setTaskExecutor(taskExecutor);
+ springJobExecutor.setRejectedJobsHandler(new CallerRunsRejectedJobsHandler());
+ springJobExecutor.setWaitTimeInMillis(5000);
+ springJobExecutor.setLockTimeInMillis(36000000);
+ return springJobExecutor;
+ }
+
+ @Bean
+ @Primary
+ public ProcessEngineConfigurationImpl processEngineConfiguration() throws IOException {
+ SpringProcessEngineConfiguration config = (SpringProcessEngineConfiguration) new SpringProcessEngineConfiguration().setJobExecutor(jobExecutor);
+ config.setDataSource(dataSource);
+ config.setTransactionManager(transactionManager);
+ config.setDatabaseSchemaUpdate("true");
+ config.setJobExecutorActivate(true);
+ config.setAuthorizationEnabled(true);
+ config.setDefaultSerializationFormat("application/json");
+ PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
+ config.setDeploymentResources(resolver.getResources("classpath:*.bpmn"));
+ return config;
+ }
+
+ @Bean
+ public PlatformTransactionManager getTransactionManager() {
+ PlatformTransactionManager ptm=new DataSourceTransactionManager(dataSource);
+ return ptm;
+ }
+
+
+ @Bean
+ public CorsFilter corsFilter() {
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ CorsConfiguration config = new CorsConfiguration();
+ config.setAllowCredentials(true);
+ config.addAllowedOrigin("*");
+ config.addAllowedHeader("*");
+ config.addAllowedMethod("OPTIONS");
+ config.addAllowedMethod("GET");
+ config.addAllowedMethod("POST");
+ config.addAllowedMethod("PATCH");
+ config.addAllowedMethod("PUT");
+ config.addAllowedMethod("DELETE");
+ source.registerCorsConfiguration("/**", config);
+ return new CorsFilter(source);
+ }
+
+
+ }
+
+
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.controller;
+
+import org.camunda.bpm.engine.ProcessEngine;
+import org.camunda.bpm.engine.runtime.ProcessInstance;
+import org.camunda.bpm.engine.variable.Variables;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.model.Airship;
+import com.akraino.bpm.model.Apache;
+import com.akraino.bpm.model.Build;
+import com.akraino.bpm.model.Deploy;
+import com.akraino.bpm.model.Onap;
+import com.akraino.bpm.model.Tempest;
+import com.akraino.bpm.model.WorkflowResponse;
+
+@RestController
+public class CamundaRestController {
+
+ @Autowired
+ private ProcessEngine camunda;
+
+ private static Logger logger = LoggerFactory.getLogger(CamundaRestController.class);
+
+ @PostMapping("/build/")
+ public ResponseEntity<WorkflowResponse> build(@RequestBody Build build) {
+ logger.debug("Request received for Build ",build.toString());
+
+ try {
+ executeBuildProcess(build);
+ }catch(TaskExecutorException ex) {
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(500,"Problem while executing Build . exception : "+ex.getMessage()),HttpStatus.OK);
+ }
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(200,"Build successfully completed."),HttpStatus.OK);
+ }
+
+ private ProcessInstance executeBuildProcess(Build build) {
+
+ String filepath=build.getFilepath()+" "+(build.getFileparams()!=null?build.getFileparams().replaceAll(",", " "):" ");
+ return camunda.getRuntimeService().startProcessInstanceByKey("build",
+ Variables.putValue("filepath", filepath).putValue("targetfolder", build.getTargetfolder()));
+ }
+
+
+ @PostMapping("/deploy/")
+ public ResponseEntity<WorkflowResponse> deploy(@RequestBody Deploy deploy) {
+ logger.debug("Request received for executing {} and targetDirectory {} ",deploy.toString());
+ try {
+ executeDeployProcess(deploy);
+ }catch(TaskExecutorException ex) {
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(500,"Problem while executing genesis build. exception : "+ex.getMessage()),HttpStatus.OK);
+ }
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(200,"Genesis build completed ."),HttpStatus.OK);
+ }
+
+ private ProcessInstance executeDeployProcess(Deploy deploy) {
+
+ String filepath1=deploy.getFilepath()+" "+(deploy.getFileparams()!=null?deploy.getFileparams().replaceAll(",", " "):" ");
+ String filepath2=deploy.getWinscpfilepath()+" "+(deploy.getWinscpfileparams()!=null?deploy.getWinscpfileparams().replaceAll(",", " "):" ");
+ return camunda.getRuntimeService().startProcessInstanceByKey("deploy",
+ Variables.putValue("filepath", filepath1).putValue("ScpScriptFilepath", filepath2).putValue("remotserver", deploy.getRemotserver())
+ .putValue("username", deploy.getUsername())
+ .putValue("password", deploy.getPassword())
+ .putValue("port", deploy.getPort()).putValue("destdir",deploy.getDestdir()).putValue("remotefilename", deploy.getRemotefilename())
+ .putValue("fileparams", deploy.getFileparams()).
+ putValue("verifier", deploy.getDeploymentverifier()).putValue("verifierfileparams",
+ deploy.getDeploymentverifierfileparams()).putValue("waittime", deploy.getWaittime()).
+ putValue("iterations", deploy.getNoofiterations()).putValue("postverificationscript", deploy.getPostverificationscript()).putValue("postverificationScriptparams", deploy.getDeploymentverifierfileparams()));
+
+ }
+
+
+ @PostMapping("/airship/")
+ public ResponseEntity<WorkflowResponse> deploy(@RequestBody Airship airship) {
+ logger.debug("Request received for airship {} and targetDirectory {} ",airship.toString());
+ try {
+ executeAirshipProcess(airship);
+ }catch(TaskExecutorException ex) {
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(500,"Problem while executing genesis airship. exception : "+ex.getMessage()),HttpStatus.OK);
+ }
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(200,"Airship is completed ."),HttpStatus.OK);
+ }
+
+ private ProcessInstance executeAirshipProcess(Airship airship) {
+
+ String filepath1=airship.getFilepath()+" "+(airship.getFileparams()!=null?airship.getFileparams().replaceAll(",", " "):" ");
+ String filepath2=airship.getWinscpfilepath()+" "+(airship.getWinscpfileparams()!=null?airship.getWinscpfileparams().replaceAll(",", " "):" ");
+ return camunda.getRuntimeService().startProcessInstanceByKey("airship",
+ Variables.putValue("filepath", filepath1).putValue("scpdir", airship.getWinscpdir()).putValue("ScpScriptFilepath", filepath2).putValue("remotserver", airship.getRemotserver())
+ .putValue("username", airship.getUsername())
+ .putValue("password", airship.getPassword())
+ .putValue("port", airship.getPort()).putValue("destdir",airship.getDestdir()).putValue("remotefilename", airship.getRemotefilename())
+ .putValue("remotefileparams", airship.getRemotefileparams()));
+
+ }
+
+
+ @PostMapping("/tempest/")
+ public ResponseEntity<WorkflowResponse> tempest(@RequestBody Tempest tempest) {
+ logger.debug("Request received for onap ",tempest.toString());
+ try {
+ executeTempestProcess(tempest);
+ }catch(TaskExecutorException ex) {
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(500,"Problem while executing Tempset API. exception : "+ex.getMessage()),HttpStatus.OK);
+ }
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(200,"tempeset is completed successfully."),HttpStatus.OK);
+ }
+
+ private ProcessInstance executeTempestProcess(Tempest tempest) {
+
+ String transferfile= tempest.getFiletrasferscript()+" "+(tempest.getFiletransferparams()!=null?tempest.getFiletransferparams().replaceAll(",", " "):" ");
+
+ return camunda.getRuntimeService().startProcessInstanceByKey("tempest",
+ Variables.putValue("filename", tempest.getFilename()).putValue("fileparams", tempest.getFileparams()).
+ putValue("verifier", tempest.getDeploymentverifier()).putValue("verifierfileparams", tempest.getVerifierparams()).putValue("waittime", tempest.getWaittime()).
+ putValue("iterations", tempest.getNoofiterations()).putValue("remotserver", tempest.getRemoteserver())
+ .putValue("username", tempest.getUsername())
+ .putValue("password", tempest.getPassword())
+ .putValue("port", tempest.getPortnumber()).putValue("srcdir", tempest.getSrcdir()).putValue("destdir",tempest.getDestdir()).putValue("filepath", transferfile)
+ );
+
+ }
+
+
+ @PostMapping("/apache/")
+ public ResponseEntity<WorkflowResponse> apache(@RequestBody Apache apache) {
+ logger.debug("Request received for onap ",apache.toString());
+ try {
+ executeapacheProcess(apache);
+ }catch(TaskExecutorException ex) {
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(500,"Problem while executing Apache API. exception : "+ex.getMessage()),HttpStatus.OK);
+ }
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(200,"apache is completed successfully."),HttpStatus.OK);
+ }
+
+ private ProcessInstance executeapacheProcess(Apache apache) {
+
+ String transferfile= apache.getFiletrasferscript()+" "+(apache.getFiletransferparams()!=null?apache.getFiletransferparams().replaceAll(",", " "):" ");
+
+ return camunda.getRuntimeService().startProcessInstanceByKey("apache",
+ Variables.putValue("filename", apache.getFilename()).putValue("fileparams", apache.getFileparams()).
+ putValue("verifier", apache.getDeploymentverifier()).putValue("verifierfileparams", apache.getVerifierparams()).putValue("waittime", apache.getWaittime()).
+ putValue("iterations", apache.getNoofiterations()).putValue("remotserver", apache.getRemoteserver())
+ .putValue("username", apache.getUsername())
+ .putValue("password", apache.getPassword())
+ .putValue("port", apache.getPortnumber()).putValue("srcdir", apache.getSrcdir()).putValue("destdir",apache.getDestdir()).putValue("filepath", transferfile)
+ );
+
+ }
+
+
+ @PostMapping("/onap/")
+ public ResponseEntity<WorkflowResponse> onap(@RequestBody Onap onap) {
+ logger.debug("Request received for onap ",onap.toString());
+ try {
+ executeOnapProcess(onap);
+ }catch(TaskExecutorException ex) {
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(500,"Problem while executing onap build. exception : "+ex.getMessage()),HttpStatus.OK);
+ }
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(200,"Onap build completed ."),HttpStatus.OK);
+ }
+
+ private ProcessInstance executeOnapProcess(Onap onap) {
+
+ String transferfile= onap.getFiletrasferscript()+" "+(onap.getFiletransferparams()!=null?onap.getFiletransferparams().replaceAll(",", " "):" ");
+ return camunda.getRuntimeService().startProcessInstanceByKey("onap",
+ Variables.putValue("filename", onap.getFilename()).putValue("fileparams", onap.getFileparams()).
+ putValue("verifier", onap.getDeploymentverifier()).putValue("verifierfileparams", onap.getVerifierparams()).putValue("waittime", onap.getWaittime()).
+ putValue("iterations", onap.getNoofiterations()).putValue("remotserver", onap.getRemoteserver())
+ .putValue("username", onap.getUsername())
+ .putValue("password", onap.getPassword())
+ .putValue("port", onap.getPortnumber()).putValue("srcdir", onap.getSrcdir()).putValue("destdir",onap.getDestdir()).putValue("filepath", transferfile)
+ );
+
+ }
+
+
+
+
+ /*@PostMapping("/singlestepdeploy/")
+ public ResponseEntity<WorkflowResponse> singelStepDeploy(@RequestBody Deploy deploy) {
+ logger.debug("Request received for onap ",deploy.toString());
+ try {
+ executeOnapProcess(deploy);
+ }catch(TaskExecutorException ex) {
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(500,"Problem while executing single step deploymewnt. exception : "+ex.getMessage()),HttpStatus.OK);
+ }
+ return new ResponseEntity<WorkflowResponse>(new WorkflowResponse(200," single step deployment completed ."),HttpStatus.OK);
+ }
+
+ private ProcessInstance executeOnapProcess(Deploy deploy) {
+
+ String filepath1="bash " + deploy.getFilepath1()+" "+(deploy.getFile1params()!=null?deploy.getFile1params().replaceAll(",", " "):" ");
+ return camunda.getRuntimeService().startProcessInstanceByKey("singlestepdeploy",Variables.putValue("filepath", filepath1));
+
+ }*/
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+
+import com.akraino.bpm.service.RemoteScriptExecutionService;
+
+
+
+@Component
+public class AirshipRemoteScriptExecutorTaskDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(AirshipRemoteScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ RemoteScriptExecutionService remoteScriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String filename=(String)ctx.getVariable("remotefilename");
+ String fileparams=(String)ctx.getVariable("remotefileparams");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} ,fileparams={},src dir={},dest dir={}",
+ remotserver,portnumner,username,password,filename,fileparams,srcdir,destdir);
+ String command="cd "+destdir+ ";" +" ./"+filename+" "+ (fileparams!=null?fileparams:" ") ;
+ logger.debug("Execution command {}",command);
+ remoteScriptExecutionService.executeRemoteScript(remotserver,username,password,portnumner,filename,fileparams,srcdir,destdir,command);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.service.ScriptExecutionService;
+
+@Component
+public class AirshipScriptExecutorTaskDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(AirshipScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ ScriptExecutionService scriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ String filepath=(String)ctx.getVariable("filepath");
+ logger.debug("task execution started :"+filepath);
+ scriptExecutionService.executeScript(filepath);
+
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+
+import com.akraino.bpm.service.ScriptExecutionService;
+
+
+@Component
+public class AirshipWinScpScriptDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(AirshipWinScpScriptDelegate.class);
+
+
+ @Autowired
+ ScriptExecutionService scriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ String filepath=(String)ctx.getVariable("ScpScriptFilepath");
+ String dir=(String)ctx.getVariable("scpdir");
+ logger.debug("Win SCP task execution started :{} , Directory :{} ",filepath,dir);
+ scriptExecutionService.executeCDScript(dir, filepath);
+
+ //scriptExecutionService.executeScript(filepath);
+
+
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.RemoteDeploymentVerificationService;
+
+
+
+@Component
+public class ApacheRemoteDeploymentVerificationDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(ApacheRemoteDeploymentVerificationDelegate.class);
+
+ @Autowired
+ RemoteDeploymentVerificationService remotedeploymentVerificationService;
+
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ try {
+ String verifierFilename=(String)ctx.getVariable("verifier");
+ int waittime=(Integer)ctx.getVariable("waittime");
+ int iterations=(Integer)ctx.getVariable("iterations");
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+ String filepparams=(String)ctx.getVariable("verifierfileparams");
+
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} , waittime : {},No of iterations :{}",
+ remotserver,portnumner,username,password,verifierFilename,srcdir,destdir,waittime,iterations);
+
+ String command= "cd "+destdir+ ";" + (filepparams!=null?filepparams:" ") + " ./"+verifierFilename;
+ logger.debug("Execution command {}",command);
+ remotedeploymentVerificationService.executeScript(remotserver,username,password,portnumner,verifierFilename,filepparams,srcdir,destdir,waittime,iterations,command);
+ }catch(TaskExecutorException ex) {
+ throw ex;
+ }
+
+
+ }
+
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.service.RemoteScriptExecutionService;
+
+
+
+@Component
+public class ApacheRemoteScriptExecutorTaskDelegate implements JavaDelegate {
+
+
+
+ private static Logger logger = LoggerFactory.getLogger(ApacheRemoteScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ RemoteScriptExecutionService remoteScriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String filename=(String)ctx.getVariable("filename");
+ String fileparams=(String)ctx.getVariable("fileparams");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+
+
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} ,fileparams={},src dir={},dest dir={}",
+ remotserver,portnumner,username,password,filename,fileparams,srcdir,destdir);
+ String command= "cd "+destdir+ ";" + (fileparams!=null?fileparams:" ") + " ./"+filename;
+ logger.debug("Execution command {}",command);
+ remoteScriptExecutionService.executeRemoteScript(remotserver,username,password,portnumner,filename,fileparams,srcdir,destdir,command);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.RuntimeService;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+
+import com.akraino.bpm.service.ScriptExecutionService;
+
+
+@Component
+public class ApacheScriptExecutorTaskDelegate implements JavaDelegate {
+
+ @Autowired
+ RuntimeService runtimeService;
+
+ private static Logger logger = LoggerFactory.getLogger(ApacheScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ ScriptExecutionService scriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String filepath=(String)ctx.getVariable("filepath");
+ logger.debug("task execution started :"+filepath);
+ scriptExecutionService.executeScript(filepath);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.RuntimeService;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.service.BashScriptExecutionService;
+
+
+
+@Component
+public class BashScriptExecutorTaskDelegate implements JavaDelegate {
+
+ @Autowired
+ RuntimeService runtimeService;
+
+ private static Logger logger = LoggerFactory.getLogger(BashScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ BashScriptExecutionService bashscriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String filepath=(String)ctx.getVariable("filepath");
+ logger.debug("task execution started :"+filepath);
+ bashscriptExecutionService.executeScript(filepath);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.model.BuildResponse;
+import com.akraino.bpm.service.DeployResponseSenderService;
+import com.akraino.bpm.service.RemoteScriptExecutionService;
+
+
+
+@Component
+public class DeployPostVerficationRemoteScriptExecutor implements JavaDelegate {
+
+
+
+ private static Logger logger = LoggerFactory.getLogger(DeployPostVerficationRemoteScriptExecutor.class);
+
+ @Autowired
+ RemoteScriptExecutionService remoteScriptExecutionService;
+
+ @Autowired
+ DeployResponseSenderService deployResponseSenderService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String filename=(String)ctx.getVariable("postverificationscript");
+ String fileparams=(String)ctx.getVariable("postverificationScriptparams");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+
+ deployResponseSenderService.sendResponse(new BuildResponse("completed", "completed", "completed", "completed","inprogress","Boston"));
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} ,fileparams={},src dir={},dest dir={}",
+ remotserver,portnumner,username,password,filename,fileparams,srcdir,destdir);
+
+ String command="sh " +destdir+"/"+filename+" "+(fileparams!=null?fileparams.replaceAll(",", " "):" ");
+ logger.debug("Execution command {}",command);
+ remoteScriptExecutionService.executeRemoteScript(remotserver,username,password,portnumner,filename,fileparams,srcdir,destdir,command);
+
+ deployResponseSenderService.sendResponse(new BuildResponse("completed", "completed", "completed", "completed","completed","Boston"));
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.model.BuildResponse;
+import com.akraino.bpm.service.DeployResponseSenderService;
+import com.akraino.bpm.service.RemoteDeploymentVerificationService;
+
+
+
+@Component
+public class DeployRemoteDeploymentVerificationDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(DeployRemoteDeploymentVerificationDelegate.class);
+
+ @Autowired
+ RemoteDeploymentVerificationService remotedeploymentVerificationService;
+
+ @Autowired
+ DeployResponseSenderService deployResponseSenderService;
+
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ try {
+ String verifierFilename=(String)ctx.getVariable("verifier");
+ int waittime=(Integer)ctx.getVariable("waittime");
+ int iterations=(Integer)ctx.getVariable("iterations");
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+ String filepparams=(String)ctx.getVariable("verifierfileparams");
+
+ deployResponseSenderService.sendResponse(new BuildResponse("completed", "completed", "completed", "inprogress","not started", "Boston"));
+
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} , waittime : {},No of iterations :{}",
+ remotserver,portnumner,username,password,verifierFilename,srcdir,destdir,waittime,iterations);
+
+ String command="sh " +destdir+"/"+verifierFilename+" "+(filepparams!=null?filepparams.replaceAll(",", " "):" ");
+ logger.debug("Execution command {}",command);
+ remotedeploymentVerificationService.executeScript(remotserver,username,password,portnumner,verifierFilename,filepparams,srcdir,destdir,waittime,iterations,command);
+ }catch(TaskExecutorException ex) {
+ throw ex;
+ }
+
+
+ }
+
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.model.BuildResponse;
+import com.akraino.bpm.service.DeployResponseSenderService;
+import com.akraino.bpm.service.RemoteScriptExecutionService;
+
+
+
+@Component
+public class DeployRemoteScriptExecutorTaskDelegate implements JavaDelegate {
+
+
+
+ private static Logger logger = LoggerFactory.getLogger(DeployRemoteScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ RemoteScriptExecutionService remoteScriptExecutionService;
+
+ @Autowired
+ DeployResponseSenderService deployResponseSenderService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String filename=(String)ctx.getVariable("filename");
+ String fileparams=(String)ctx.getVariable("fileparams");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+
+ deployResponseSenderService.sendResponse(new BuildResponse("completed", "completed", "inprogress", "not started","not started", "Boston"));
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} ,fileparams={},src dir={},dest dir={}",
+ remotserver,portnumner,username,password,filename,fileparams,srcdir,destdir);
+
+ String command="sh " +destdir+"/"+filename+" "+(fileparams!=null?fileparams.replaceAll(",", " "):" ");
+ logger.debug("Execution command {}",command);
+ remoteScriptExecutionService.executeRemoteScript(remotserver,username,password,portnumner,filename,fileparams,srcdir,destdir,command);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.model.BuildResponse;
+import com.akraino.bpm.service.DeployResponseSenderService;
+import com.akraino.bpm.service.ScriptExecutionService;
+
+
+@Component
+public class DeployScriptExecutorTaskDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(DeployScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ ScriptExecutionService scriptExecutionService;
+
+ @Autowired
+ DeployResponseSenderService deployResponseSenderService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ deployResponseSenderService.sendResponse(new BuildResponse("completed", "inprogress", "not started", "not started","not started","Boston"));
+ String filepath=(String)ctx.getVariable("filepath");
+ logger.debug("task execution started :"+filepath);
+ scriptExecutionService.executeScript(filepath);
+
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.model.BuildResponse;
+import com.akraino.bpm.service.DeployResponseSenderService;
+import com.akraino.bpm.service.DeploymentVerificationService;
+
+
+
+@Component
+public class DeploymentVerificationDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(DeploymentVerificationDelegate.class);
+
+ @Autowired
+ DeploymentVerificationService deploymentVerificationService;
+
+ @Autowired
+ DeployResponseSenderService deployResponseSenderService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ deployResponseSenderService.sendResponse(new BuildResponse("completed", "completed", "completed", "inprogress","not started", "Boston"));
+ try {
+ String verifierFilepath=(String)ctx.getVariable("verifier");
+ int waittime=(Integer)ctx.getVariable("waittime");
+ int iterations=(Integer)ctx.getVariable("iterations");
+ logger.debug("task execution started filename : {} , waittime : {},No of iterations :{}",verifierFilepath,waittime,iterations);
+ deploymentVerificationService.executeScript(verifierFilepath,waittime,iterations);
+ }catch(TaskExecutorException ex) {
+ throw ex;
+ }
+
+ deployResponseSenderService.sendResponse(new BuildResponse("completed", "completed", "completed", "completed","not started","Boston"));
+ }
+
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.RuntimeService;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+
+import com.akraino.bpm.service.ScriptExecutionService;
+
+
+@Component
+public class File3ScriptExecutor implements JavaDelegate {
+
+ @Autowired
+ RuntimeService runtimeService;
+
+ private static Logger logger = LoggerFactory.getLogger(File3ScriptExecutor.class);
+
+ @Autowired
+ ScriptExecutionService scriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String filepath=(String)ctx.getVariable("filepath3");
+ logger.debug("task execution started :"+filepath);
+ scriptExecutionService.executeScript(filepath);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.FileTransferService;
+
+
+
+
+@Component
+public class FileTransferDelegator implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(FileTransferDelegator.class);
+
+ @Autowired
+ FileTransferService fileTransferService;
+
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ try {
+
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int port=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+
+ logger.debug("File transfer started remotserver {} , portnumner {},username {}, password {},src ={}, dest={}",
+ remotserver,port,username,password,srcdir,destdir);
+ fileTransferService.transferFile(srcdir, destdir,remotserver, username, password, port);
+ }catch(TaskExecutorException ex) {
+ throw ex;
+ }
+
+
+ }
+
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.RemoteDeploymentVerificationService;
+
+
+
+@Component
+public class RemoteDeploymentVerificationDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(RemoteDeploymentVerificationDelegate.class);
+
+ @Autowired
+ RemoteDeploymentVerificationService remotedeploymentVerificationService;
+
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ try {
+ String verifierFilename=(String)ctx.getVariable("verifier");
+ int waittime=(Integer)ctx.getVariable("waittime");
+ int iterations=(Integer)ctx.getVariable("iterations");
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+ String filepparams=(String)ctx.getVariable("verifierfileparams");
+
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} , waittime : {},No of iterations :{}",
+ remotserver,portnumner,username,password,verifierFilename,srcdir,destdir,waittime,iterations);
+
+ String command="sh " +destdir+"/"+(verifierFilename!=null?verifierFilename:" ")+" "+(filepparams!=null?filepparams.replaceAll(",", " "):" ");
+ logger.debug("Execution command {}",command);
+ remotedeploymentVerificationService.executeScript(remotserver,username,password,portnumner,verifierFilename,filepparams,srcdir,destdir,waittime,iterations,command);
+ }catch(TaskExecutorException ex) {
+ throw ex;
+ }
+
+
+ }
+
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.service.RemoteScriptExecutionService;
+
+
+
+@Component
+public class RemoteScriptExecutorTaskDelegate implements JavaDelegate {
+
+
+
+ private static Logger logger = LoggerFactory.getLogger(RemoteScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ RemoteScriptExecutionService remoteScriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String filename=(String)ctx.getVariable("filename");
+ String fileparams=(String)ctx.getVariable("fileparams");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+
+
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} ,fileparams={},src dir={},dest dir={}",
+ remotserver,portnumner,username,password,filename,fileparams,srcdir,destdir);
+ String command="cd "+destdir+ ";"+"sh "+filename+" "+(fileparams!=null?fileparams.replaceAll(",", " "):" ");
+ logger.debug("Execution command {}",command);
+ remoteScriptExecutionService.executeRemoteScript(remotserver,username,password,portnumner,filename,fileparams,srcdir,destdir,command);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.RuntimeService;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.service.ScriptExecutionService;
+
+
+@Component
+public class ScriptExecutorTaskDelegate implements JavaDelegate {
+
+ @Autowired
+ RuntimeService runtimeService;
+
+ private static Logger logger = LoggerFactory.getLogger(ScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ ScriptExecutionService scriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String filepath=(String)ctx.getVariable("filepath");
+ logger.debug("task execution started :"+filepath);
+ scriptExecutionService.executeScript(filepath);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.RemoteDeploymentVerificationService;
+
+
+
+@Component
+public class TempestRemoteDeploymentVerificationDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(TempestRemoteDeploymentVerificationDelegate.class);
+
+ @Autowired
+ RemoteDeploymentVerificationService remotedeploymentVerificationService;
+
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ try {
+ String verifierFilename=(String)ctx.getVariable("verifier");
+ int waittime=(Integer)ctx.getVariable("waittime");
+ int iterations=(Integer)ctx.getVariable("iterations");
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+ String filepparams=(String)ctx.getVariable("verifierfileparams");
+
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} , waittime : {},No of iterations :{}",
+ remotserver,portnumner,username,password,verifierFilename,srcdir,destdir,waittime,iterations);
+
+ String command= "cd "+destdir+ ";" + (filepparams!=null?filepparams:" ")+ " ./"+verifierFilename;
+ logger.debug("Execution command {}",command);
+ remotedeploymentVerificationService.executeScript(remotserver,username,password,portnumner,verifierFilename,filepparams,srcdir,destdir,waittime,iterations,command);
+ }catch(TaskExecutorException ex) {
+ throw ex;
+ }
+
+
+ }
+
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.service.RemoteScriptExecutionService;
+
+
+
+@Component
+public class TempestRemoteScriptExecutorTaskDelegate implements JavaDelegate {
+
+
+
+ private static Logger logger = LoggerFactory.getLogger(TempestRemoteScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ RemoteScriptExecutionService remoteScriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String remotserver=(String)ctx.getVariable("remotserver");
+ int portnumner=(Integer)ctx.getVariable("port");
+ String username=(String)ctx.getVariable("username");
+ String password=(String)ctx.getVariable("password");
+ String filename=(String)ctx.getVariable("filename");
+ String fileparams=(String)ctx.getVariable("fileparams");
+ String srcdir=(String)ctx.getVariable("srcdir");
+ String destdir=(String)ctx.getVariable("destdir");
+
+
+ logger.debug("task execution started remotserver {} , portnumner {},username {}, password {},filename : {} ,fileparams={},src dir={},dest dir={}",
+ remotserver,portnumner,username,password,filename,fileparams,srcdir,destdir);
+
+ String command= "cd "+destdir+ ";" + (fileparams!=null?fileparams:" ") + " ./"+filename;
+ logger.debug("Execution command {}",command);
+ remoteScriptExecutionService.executeRemoteScript(remotserver,username,password,portnumner,filename,fileparams,srcdir,destdir,command);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+import org.camunda.bpm.engine.RuntimeService;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.service.ScriptExecutionService;
+
+
+@Component
+public class TempestScriptExecutorTaskDelegate implements JavaDelegate {
+
+ @Autowired
+ RuntimeService runtimeService;
+
+ private static Logger logger = LoggerFactory.getLogger(TempestScriptExecutorTaskDelegate.class);
+
+ @Autowired
+ ScriptExecutionService scriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String filepath=(String)ctx.getVariable("filepath");
+ logger.debug("task execution started :"+filepath);
+ scriptExecutionService.executeScript(filepath);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.model.BuildResponse;
+import com.akraino.bpm.service.DeployResponseSenderService;
+import com.akraino.bpm.service.ScriptExecutionService;
+
+
+@Component
+public class WinScpScriptDelegate implements JavaDelegate {
+
+ private static Logger logger = LoggerFactory.getLogger(WinScpScriptDelegate.class);
+
+ @Autowired
+ DeployResponseSenderService deployResponseSenderService;
+
+ @Autowired
+ ScriptExecutionService scriptExecutionService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+
+ deployResponseSenderService.sendResponse(new BuildResponse("completed", "completed", "inprogress", "not started","not started","Boston"));
+ String filepath=(String)ctx.getVariable("ScpScriptFilepath");
+ logger.debug("Win SCP task execution started :"+filepath);
+ scriptExecutionService.executeScript(filepath);
+
+
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.delegate;
+
+
+import org.camunda.bpm.engine.RuntimeService;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.akraino.bpm.service.YamlVerificationService;
+
+
+@Component
+public class YamlVerificationDelegate implements JavaDelegate {
+
+ @Autowired
+ RuntimeService runtimeService;
+
+ private static Logger logger = LoggerFactory.getLogger(YamlVerificationDelegate.class);
+
+ @Autowired
+ YamlVerificationService yamlVerificationService;
+
+ public void execute(DelegateExecution ctx) throws Exception {
+ String targetFolder=(String)ctx.getVariable("targetfolder");
+ logger.debug("task execution started :"+targetFolder);
+ yamlVerificationService.verify(targetFolder);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.model;
+
+public class Airship {
+
+ private String filepath;
+ private String fileparams;
+ private String winscpdir;
+ private String winscpfilepath;
+ private String winscpfileparams;
+ private String remotserver;
+ private int port;
+ private String username;
+ private String password;
+ private String destdir;
+ private String remotefilename;
+ private String remotefileparams;
+
+
+ public String getFilepath() {
+ return filepath;
+ }
+ public void setFilepath(String filepath) {
+ this.filepath = filepath;
+ }
+ public String getFileparams() {
+ return fileparams;
+ }
+ public void setFileparams(String fileparams) {
+ this.fileparams = fileparams;
+ }
+ public String getWinscpfilepath() {
+ return winscpfilepath;
+ }
+ public void setWinscpfilepath(String winscpfilepath) {
+ this.winscpfilepath = winscpfilepath;
+ }
+ public String getWinscpfileparams() {
+ return winscpfileparams;
+ }
+ public void setWinscpfileparams(String winscpfileparams) {
+ this.winscpfileparams = winscpfileparams;
+ }
+ public String getDestdir() {
+ return destdir;
+ }
+ public void setDestdir(String destdir) {
+ this.destdir = destdir;
+ }
+
+ public String getRemotserver() {
+ return remotserver;
+ }
+ public void setRemotserver(String remotserver) {
+ this.remotserver = remotserver;
+ }
+ public int getPort() {
+ return port;
+ }
+ public void setPort(int port) {
+ this.port = port;
+ }
+ public String getUsername() {
+ return username;
+ }
+ public void setUsername(String username) {
+ this.username = username;
+ }
+ public String getPassword() {
+ return password;
+ }
+ public void setPassword(String password) {
+ this.password = password;
+ }
+ public String getRemotefilename() {
+ return remotefilename;
+ }
+ public void setRemotefilename(String remotefilename) {
+ this.remotefilename = remotefilename;
+ }
+ public String getRemotefileparams() {
+ return remotefileparams;
+ }
+ public void setRemotefileparams(String remotefileparams) {
+ this.remotefileparams = remotefileparams;
+ }
+ public String getWinscpdir() {
+ return winscpdir;
+ }
+ public void setWinscpdir(String winscpdir) {
+ this.winscpdir = winscpdir;
+ }
+ @Override
+ public String toString() {
+ return "Airship [filepath=" + filepath + ", fileparams=" + fileparams + ", winscpdir=" + winscpdir
+ + ", winscpfilepath=" + winscpfilepath + ", winscpfileparams=" + winscpfileparams + ", remotserver="
+ + remotserver + ", port=" + port + ", username=" + username + ", password=" + password + ", destdir="
+ + destdir + ", remotefilename=" + remotefilename + ", remotefileparams=" + remotefileparams + "]";
+ }
+
+
+
+
+
+ }
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.model;
+
+public class Apache {
+
+ private String remoteserver;
+ private String username;
+ private String password;
+ private int portnumber;
+ private String srcdir;
+ private String destdir;
+ private String filename;
+ private String fileparams;
+ private String deploymentverifier;
+ private String verifierparams;
+ int noofiterations;
+ int waittime;
+ String filetrasferscript;
+ String filetransferparams;
+
+
+ public String getSrcdir() {
+ return srcdir;
+ }
+
+
+ public void setSrcdir(String srcdir) {
+ this.srcdir = srcdir;
+ }
+
+
+ public String getDestdir() {
+ return destdir;
+ }
+
+
+ public void setDestdir(String destdir) {
+ this.destdir = destdir;
+ }
+
+
+ public String getRemoteserver() {
+ return remoteserver;
+ }
+
+
+ public void setRemoteserver(String remoteserver) {
+ this.remoteserver = remoteserver;
+ }
+
+
+ public String getUsername() {
+ return username;
+ }
+
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+
+ public String getPassword() {
+ return password;
+ }
+
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+
+ public int getPortnumber() {
+ return portnumber;
+ }
+
+
+ public void setPortnumber(int portnumber) {
+ this.portnumber = portnumber;
+ }
+
+
+
+
+
+ public String getFilename() {
+ return filename;
+ }
+
+
+ public void setFilename(String filename) {
+ this.filename = filename;
+ }
+
+
+ public String getFileparams() {
+ return fileparams;
+ }
+
+
+ public void setFileparams(String fileparams) {
+ this.fileparams = fileparams;
+ }
+
+
+ public String getDeploymentverifier() {
+ return deploymentverifier;
+ }
+
+
+ public void setDeploymentverifier(String deploymentverifier) {
+ this.deploymentverifier = deploymentverifier;
+ }
+
+
+ public int getNoofiterations() {
+ return noofiterations;
+ }
+
+
+ public void setNoofiterations(int noofiterations) {
+ this.noofiterations = noofiterations;
+ }
+
+
+ public int getWaittime() {
+ return waittime;
+ }
+
+
+ public void setWaittime(int waittime) {
+ this.waittime = waittime;
+ }
+
+
+
+
+ public String getVerifierparams() {
+ return verifierparams;
+ }
+
+
+ public void setVerifierparams(String verifierparams) {
+ this.verifierparams = verifierparams;
+ }
+
+
+ public String getFiletrasferscript() {
+ return filetrasferscript;
+ }
+
+
+ public void setFiletrasferscript(String filetrasferscript) {
+ this.filetrasferscript = filetrasferscript;
+ }
+
+
+ public String getFiletransferparams() {
+ return filetransferparams;
+ }
+
+
+ public void setFiletransferparams(String filetransferparams) {
+ this.filetransferparams = filetransferparams;
+ }
+
+
+ @Override
+ public String toString() {
+ return "Apache [remoteserver=" + remoteserver + ", username=" + username + ", password=" + password
+ + ", portnumber=" + portnumber + ", srcdir=" + srcdir + ", destdir=" + destdir + ", filename="
+ + filename + ", fileparams=" + fileparams + ", deploymentverifier=" + deploymentverifier
+ + ", verifierparams=" + verifierparams + ", noofiterations=" + noofiterations + ", waittime=" + waittime
+ + ", filetrasferscript=" + filetrasferscript + ", filetransferparams=" + filetransferparams + "]";
+ }
+
+
+
+
+ }
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.model;
+
+public class Build {
+
+ private String filepath;
+ private String fileparams;
+ private String targetfolder;
+
+
+ public String getFilepath() {
+ return filepath;
+ }
+ public void setFilepath(String filepath) {
+ this.filepath = filepath;
+ }
+ public String getFileparams() {
+ return fileparams;
+ }
+ public void setFileparams(String fileparams) {
+ this.fileparams = fileparams;
+ }
+ public String getTargetfolder() {
+ return targetfolder;
+ }
+ public void setTargetfolder(String targetfolder) {
+ this.targetfolder = targetfolder;
+ }
+ @Override
+ public String toString() {
+ return "Build [filepath=" + filepath + ", fileparams=" + fileparams + ", targetfolder=" + targetfolder + "]";
+ }
+
+
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.model;
+
+public class BuildResponse {
+
+ private String buildStatus;
+ private String createTarStatus;
+ private String genesisNodeStatus;
+ private String deployToolsStatus;
+ private String deployStatus;
+ private String siteName;
+
+
+ public BuildResponse(String buildStatus, String createTarStatus, String genesisNodeStatus, String deployToolsStatus,String deployStatus,
+ String siteName) {
+ super();
+ this.buildStatus = buildStatus;
+ this.createTarStatus = createTarStatus;
+ this.genesisNodeStatus = genesisNodeStatus;
+ this.deployToolsStatus = deployToolsStatus;
+ this.deployStatus=deployStatus;
+ this.siteName = "siteName";
+ }
+
+
+ public String getBuildStatus() {
+ return buildStatus;
+ }
+
+
+ public void setBuildStatus(String buildStatus) {
+ this.buildStatus = buildStatus;
+ }
+
+ public String getCreateTarStatus() {
+ return createTarStatus;
+ }
+
+ public void setCreateTarStatus(String createTarStatus) {
+ this.createTarStatus = createTarStatus;
+ }
+
+
+ public String getGenesisNodeStatus() {
+ return genesisNodeStatus;
+ }
+
+
+ public void setGenesisNodeStatus(String genesisNodeStatus) {
+ this.genesisNodeStatus = genesisNodeStatus;
+ }
+
+
+ public String getDeployToolsStatus() {
+ return deployToolsStatus;
+ }
+
+
+ public void setDeployToolsStatus(String deployToolsStatus) {
+ this.deployToolsStatus = deployToolsStatus;
+ }
+
+
+ public String getSiteName() {
+ return siteName;
+ }
+
+ public void setSiteName(String siteName) {
+ this.siteName = siteName;
+ }
+
+
+
+
+ public String getDeployStatus() {
+ return deployStatus;
+ }
+
+
+ public void setDeployStatus(String deployStatus) {
+ this.deployStatus = deployStatus;
+ }
+
+
+ @Override
+ public String toString() {
+ return "BuildResponse [buildStatus=" + buildStatus + ", createTarStatus=" + createTarStatus
+ + ", genesisNodeStatus=" + genesisNodeStatus + ", deployToolsStatus=" + deployToolsStatus
+ + ", deployStatus=" + deployStatus + ", siteName=" + siteName + "]";
+ }
+
+
+
+
+
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.model;
+
+public class Deploy {
+
+ private String filepath;
+ private String fileparams;
+ private String winscpfilepath;
+ private String winscpfileparams;
+ private String remotserver;
+ private int port;
+ private String username;
+ private String password;
+ private String destdir;
+ private String remotefilename;
+ private String remotefileparams;
+ private String deploymentverifier;
+ private String deploymentverifierfileparams;
+ int noofiterations;
+ int waittime;
+ String postverificationscript;
+ String postverificationScriptparams;
+
+ public String getFilepath() {
+ return filepath;
+ }
+ public void setFilepath(String filepath) {
+ this.filepath = filepath;
+ }
+ public String getFileparams() {
+ return fileparams;
+ }
+ public void setFileparams(String fileparams) {
+ this.fileparams = fileparams;
+ }
+ public String getWinscpfilepath() {
+ return winscpfilepath;
+ }
+ public void setWinscpfilepath(String winscpfilepath) {
+ this.winscpfilepath = winscpfilepath;
+ }
+ public String getWinscpfileparams() {
+ return winscpfileparams;
+ }
+ public void setWinscpfileparams(String winscpfileparams) {
+ this.winscpfileparams = winscpfileparams;
+ }
+ public String getDestdir() {
+ return destdir;
+ }
+ public void setDestdir(String destdir) {
+ this.destdir = destdir;
+ }
+
+
+
+ public String getRemotserver() {
+ return remotserver;
+ }
+ public void setRemotserver(String remotserver) {
+ this.remotserver = remotserver;
+ }
+ public int getPort() {
+ return port;
+ }
+ public void setPort(int port) {
+ this.port = port;
+ }
+ public String getUsername() {
+ return username;
+ }
+ public void setUsername(String username) {
+ this.username = username;
+ }
+ public String getPassword() {
+ return password;
+ }
+ public void setPassword(String password) {
+ this.password = password;
+ }
+ public String getRemotefilename() {
+ return remotefilename;
+ }
+ public void setRemotefilename(String remotefilename) {
+ this.remotefilename = remotefilename;
+ }
+ public String getRemotefileparams() {
+ return remotefileparams;
+ }
+ public void setRemotefileparams(String remotefileparams) {
+ this.remotefileparams = remotefileparams;
+ }
+ public String getDeploymentverifier() {
+ return deploymentverifier;
+ }
+ public void setDeploymentverifier(String deploymentverifier) {
+ this.deploymentverifier = deploymentverifier;
+ }
+ public int getNoofiterations() {
+ return noofiterations;
+ }
+ public void setNoofiterations(int noofiterations) {
+ this.noofiterations = noofiterations;
+ }
+ public int getWaittime() {
+ return waittime;
+ }
+ public void setWaittime(int waittime) {
+ this.waittime = waittime;
+ }
+
+ public String getDeploymentverifierfileparams() {
+ return deploymentverifierfileparams;
+ }
+
+ public void setDeploymentverifierfileparams(String deploymentverifierfileparams) {
+ this.deploymentverifierfileparams = deploymentverifierfileparams;
+ }
+
+ public String getPostverificationscript() {
+ return postverificationscript;
+ }
+
+ public void setPostverificationscript(String postverificationscript) {
+ this.postverificationscript = postverificationscript;
+ }
+
+ public String getPostverificationScriptparams() {
+ return postverificationScriptparams;
+ }
+
+
+ public void setPostverificationScriptparams(String postverificationScriptparams) {
+ this.postverificationScriptparams = postverificationScriptparams;
+ }
+ @Override
+ public String toString() {
+ return "Deploy [filepath=" + filepath + ", fileparams=" + fileparams + ", winscpfilepath=" + winscpfilepath
+ + ", winscpfileparams=" + winscpfileparams + ", remotserver=" + remotserver + ", port=" + port
+ + ", username=" + username + ", password=" + password + ", destdir=" + destdir + ", remotefilename="
+ + remotefilename + ", remotefileparams=" + remotefileparams + ", deploymentverifier="
+ + deploymentverifier + ", deploymentverifierfileparams=" + deploymentverifierfileparams
+ + ", noofiterations=" + noofiterations + ", waittime=" + waittime + ", postverificationscript="
+ + postverificationscript + ", postverificationScriptparams=" + postverificationScriptparams + "]";
+ }
+
+ }
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.model;
+
+public class Onap {
+
+ private String remoteserver;
+ private String username;
+ private String password;
+ private int portnumber;
+ private String srcdir;
+ private String destdir;
+ private String filename;
+ private String fileparams;
+ private String deploymentverifier;
+ private String verifierparams;
+ int noofiterations;
+ int waittime;
+ String filetrasferscript;
+ String filetransferparams;
+
+
+ public String getSrcdir() {
+ return srcdir;
+ }
+
+
+ public void setSrcdir(String srcdir) {
+ this.srcdir = srcdir;
+ }
+
+
+ public String getDestdir() {
+ return destdir;
+ }
+
+
+ public void setDestdir(String destdir) {
+ this.destdir = destdir;
+ }
+
+
+ public String getRemoteserver() {
+ return remoteserver;
+ }
+
+
+ public void setRemoteserver(String remoteserver) {
+ this.remoteserver = remoteserver;
+ }
+
+
+ public String getUsername() {
+ return username;
+ }
+
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+
+ public String getPassword() {
+ return password;
+ }
+
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+
+ public int getPortnumber() {
+ return portnumber;
+ }
+
+
+ public void setPortnumber(int portnumber) {
+ this.portnumber = portnumber;
+ }
+
+
+
+
+
+ public String getFilename() {
+ return filename;
+ }
+
+
+ public void setFilename(String filename) {
+ this.filename = filename;
+ }
+
+
+ public String getFileparams() {
+ return fileparams;
+ }
+
+
+ public void setFileparams(String fileparams) {
+ this.fileparams = fileparams;
+ }
+
+
+ public String getDeploymentverifier() {
+ return deploymentverifier;
+ }
+
+
+ public void setDeploymentverifier(String deploymentverifier) {
+ this.deploymentverifier = deploymentverifier;
+ }
+
+
+ public int getNoofiterations() {
+ return noofiterations;
+ }
+
+
+ public void setNoofiterations(int noofiterations) {
+ this.noofiterations = noofiterations;
+ }
+
+
+ public int getWaittime() {
+ return waittime;
+ }
+
+
+ public void setWaittime(int waittime) {
+ this.waittime = waittime;
+ }
+
+
+
+
+ public String getVerifierparams() {
+ return verifierparams;
+ }
+
+
+ public void setVerifierparams(String verifierparams) {
+ this.verifierparams = verifierparams;
+ }
+
+
+ public String getFiletrasferscript() {
+ return filetrasferscript;
+ }
+
+
+ public void setFiletrasferscript(String filetrasferscript) {
+ this.filetrasferscript = filetrasferscript;
+ }
+
+
+
+ public String getFiletransferparams() {
+ return filetransferparams;
+ }
+
+
+ public void setFiletransferparams(String filetransferparams) {
+ this.filetransferparams = filetransferparams;
+ }
+
+
+ @Override
+ public String toString() {
+ return "Onap [remoteserver=" + remoteserver + ", username=" + username + ", password=" + password
+ + ", portnumber=" + portnumber + ", srcdir=" + srcdir + ", destdir=" + destdir + ", filename="
+ + filename + ", fileparams=" + fileparams + ", deploymentverifier=" + deploymentverifier
+ + ", verifierparams=" + verifierparams + ", noofiterations=" + noofiterations + ", waittime=" + waittime
+ + ", filetrasferscript=" + filetrasferscript + ", filetransferparams=" + filetransferparams + "]";
+ }
+
+
+ }
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.model;
+
+public class Tempest {
+
+ private String remoteserver;
+ private String username;
+ private String password;
+ private int portnumber;
+ private String srcdir;
+ private String destdir;
+ private String filename;
+ private String fileparams;
+ private String deploymentverifier;
+ private String verifierparams;
+ int noofiterations;
+ int waittime;
+ String filetrasferscript;
+ String filetransferparams;
+
+
+ public String getSrcdir() {
+ return srcdir;
+ }
+
+
+ public void setSrcdir(String srcdir) {
+ this.srcdir = srcdir;
+ }
+
+
+ public String getDestdir() {
+ return destdir;
+ }
+
+
+ public void setDestdir(String destdir) {
+ this.destdir = destdir;
+ }
+
+
+ public String getRemoteserver() {
+ return remoteserver;
+ }
+
+
+ public void setRemoteserver(String remoteserver) {
+ this.remoteserver = remoteserver;
+ }
+
+
+ public String getUsername() {
+ return username;
+ }
+
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+
+ public String getPassword() {
+ return password;
+ }
+
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+
+ public int getPortnumber() {
+ return portnumber;
+ }
+
+
+ public void setPortnumber(int portnumber) {
+ this.portnumber = portnumber;
+ }
+
+
+
+
+
+ public String getFilename() {
+ return filename;
+ }
+
+
+ public void setFilename(String filename) {
+ this.filename = filename;
+ }
+
+
+ public String getFileparams() {
+ return fileparams;
+ }
+
+
+ public void setFileparams(String fileparams) {
+ this.fileparams = fileparams;
+ }
+
+
+ public String getDeploymentverifier() {
+ return deploymentverifier;
+ }
+
+
+ public void setDeploymentverifier(String deploymentverifier) {
+ this.deploymentverifier = deploymentverifier;
+ }
+
+
+ public int getNoofiterations() {
+ return noofiterations;
+ }
+
+
+ public void setNoofiterations(int noofiterations) {
+ this.noofiterations = noofiterations;
+ }
+
+
+ public int getWaittime() {
+ return waittime;
+ }
+
+
+ public void setWaittime(int waittime) {
+ this.waittime = waittime;
+ }
+
+
+
+
+ public String getVerifierparams() {
+ return verifierparams;
+ }
+
+
+ public void setVerifierparams(String verifierparams) {
+ this.verifierparams = verifierparams;
+ }
+
+
+ public String getFiletrasferscript() {
+ return filetrasferscript;
+ }
+
+
+ public void setFiletrasferscript(String filetrasferscript) {
+ this.filetrasferscript = filetrasferscript;
+ }
+
+
+
+
+ public String getFiletransferparams() {
+ return filetransferparams;
+ }
+
+
+ public void setFiletransferparams(String filetransferparams) {
+ this.filetransferparams = filetransferparams;
+ }
+
+
+ @Override
+ public String toString() {
+ return "Tempest [remoteserver=" + remoteserver + ", username=" + username + ", password=" + password
+ + ", portnumber=" + portnumber + ", srcdir=" + srcdir + ", destdir=" + destdir + ", filename="
+ + filename + ", fileparams=" + fileparams + ", deploymentverifier=" + deploymentverifier
+ + ", verifierparams=" + verifierparams + ", noofiterations=" + noofiterations + ", waittime=" + waittime
+ + ", filetrasferscript=" + filetrasferscript + ", filetransferparams=" + filetransferparams + "]";
+ }
+
+
+
+ }
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.model;
+
+public class WorkflowResponse {
+ int status;
+ String message;
+
+
+ public WorkflowResponse(int status, String message) {
+ super();
+ this.status = status;
+ this.message = message;
+ }
+ public int getStatus() {
+ return status;
+ }
+ public void setStatus(int status) {
+ this.status = status;
+ }
+ public String getMessage() {
+ return message;
+ }
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service;
+
+public interface BashScriptExecutionService {
+
+ public void executeScript(String filepatch);
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service;
+
+import com.akraino.bpm.model.BuildResponse;
+
+public interface DeployResponseSenderService {
+
+ public void sendResponse(BuildResponse response);
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service;
+
+public interface DeploymentVerificationService {
+
+ public void executeScript(String filepatch,int waittime,int iterations);
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service;
+
+public interface FileTransferService {
+
+ public void transferFile(String srcdir,String destdir,String filename,String servername,String username,String password,int port);
+ public void transferFile(String srcdir,String destdir,String servername,String username,String password,int port);
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service;
+
+public interface RemoteDeploymentVerificationService {
+
+ public void executeScript(String remoteserver,String username,String password,int portnumber,String filename,
+ String fileparams,String srcdir,String destdir,int waittime,int iterations,String command);
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service;
+
+public interface RemoteScriptExecutionService {
+
+ public void executeRemoteScript(String remoteserver,String username,String password,int portnumber,String filename,String fileparams,String srcdir,String destdir,String command);
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service;
+
+public interface ScriptExecutionService {
+
+ public void executeScript(String filepatch);
+
+ public void executeCDScript(String dir,String cmd);
+
+ //public void executeAirshipScript(String cmd);
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service;
+
+public interface YamlVerificationService {
+
+ public void verify (String target);
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.BashScriptExecutionService;
+
+
+@Service("bashscriptExecutionService")
+public class BashScriptExecutionServiceImpl implements BashScriptExecutionService{
+
+ private static Logger logger = LoggerFactory.getLogger(BashScriptExecutionServiceImpl.class);
+
+ public void executeScript(String filepatch) {
+
+ try {
+ logger.debug("Executing the script.............");
+ Process p = Runtime.getRuntime().exec(filepatch);
+ p.waitFor();
+ BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String line = "";
+ while ((line = input.readLine()) != null) {
+ logger.debug(line);
+ if(line.contains("Error:")) {
+ throw new TaskExecutorException("problem while executing the Bash script. "+line);
+ }
+
+ }
+
+ } catch (IOException e) {
+ throw new TaskExecutorException(filepatch + " not found.");
+ } catch (InterruptedException e) {
+ throw new TaskExecutorException("problem while executing the script "+filepatch);
+ }
+
+
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.config.CamundaCorsFilter;
+import com.akraino.bpm.model.BuildResponse;
+import com.akraino.bpm.service.DeployResponseSenderService;
+
+@Service("deployResponseSenderService")
+public class DeployResponseSenderServiceImpl implements DeployResponseSenderService {
+
+ private static Logger logger = LoggerFactory.getLogger(DeployResponseSenderServiceImpl.class);
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @Autowired
+ private CamundaCorsFilter camundaCorsFilter;
+
+ public void sendResponse(BuildResponse response) {
+ try {
+ logger.debug(response.toString());
+ HttpEntity<BuildResponse> request = new HttpEntity<BuildResponse>(response);
+ ResponseEntity<Void> httpresposne =restTemplate
+ .exchange(camundaCorsFilter.getBuildresponseurl(), HttpMethod.POST, request, Void.class);
+
+ logger.debug("Build response HttpResponseStatus :"+httpresposne.getStatusCodeValue());
+ }catch (Exception e ) {
+ logger.error("problem while sending deploy response :"+e.getMessage());
+
+ throw new TaskExecutorException("problem while sending deploy response :"+e.getMessage());
+
+ }
+ }
+
+ }
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.DeploymentVerificationService;
+
+
+@Service("deploymentVerificationService")
+public class DeploymentverificationServiceImpl implements DeploymentVerificationService{
+
+ private static Logger logger = LoggerFactory.getLogger(DeploymentverificationServiceImpl.class);
+
+ public void executeScript(String filepatch,int waitttime,int iterations) {
+
+ boolean issuccess=false;
+ for( int i=0;i<=iterations;i++) {
+ try {
+ logger.debug("Executing the deployment verification script.............iteration : {}",i);
+ Thread.sleep(waitttime*1000);
+ Process p = Runtime.getRuntime().exec(filepatch);
+ p.waitFor();
+ BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String line = "";
+ while ((line = input.readLine()) != null) {
+ if(line.equals("0")) {
+ issuccess=true;
+ }
+ }
+
+ logger.debug("Script exit code :"+p.exitValue());
+ if(p.exitValue()!=0) {
+ throw new TaskExecutorException("problem while executing the script . exist code :"+p.exitValue());
+ }
+ } catch (IOException e) {
+ throw new TaskExecutorException(filepatch + " not found.");
+ } catch (InterruptedException e) {
+ throw new TaskExecutorException("problem while executing the script "+filepatch);
+ }
+ if(issuccess) {
+ break;
+ }
+
+ }
+
+ if(!issuccess) {
+ logger.debug("verification script returned 1 ");
+ throw new TaskExecutorException("1");
+ }
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.FileTransferService;
+import com.jcraft.jsch.ChannelSftp;
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.Session;
+
+@Service("fileTransferService")
+public class FileTransferServiceImpl implements FileTransferService {
+
+ private static Logger logger = LoggerFactory.getLogger(FileTransferServiceImpl.class);
+
+ public void transferFile(String srcdir, String destdir, String filename,String servername,String username,String password,int port) {
+
+ logger.debug("file transfor filename={},srcdir={},destdir={}",filename,srcdir,destdir);
+ ChannelSftp sftpChannel=null;
+ try {
+ JSch jsch = new JSch();
+ Session session = jsch.getSession(username, servername, port);
+ session.setConfig("StrictHostKeyChecking", "no");
+ session.setPassword(password);
+ session.connect();
+ sftpChannel = (ChannelSftp)session.openChannel("sftp");
+ sftpChannel.setPty(true);
+ sftpChannel.connect();
+ sftpChannel.cd(destdir);
+ sftpChannel.put(new FileInputStream(new File (srcdir+"/"+filename)), filename);
+ sftpChannel.chmod(Integer.parseInt("777", 8),filename);
+ } catch (Exception e) {
+ logger.error("Exception occured while ftp : "+e);
+ throw new TaskExecutorException("problem while transfering the file to remote machine :"+e.getMessage());
+ } finally {
+ sftpChannel.disconnect();
+ }
+ }
+
+
+ public void transferFile(String srcdir, String destdir,String servername,String username,String password,int port) {
+
+ List<File> files=getAllfiles(new File(srcdir));
+ for(File file: files) {
+ transferFile(srcdir,destdir,file.getName(),servername,username,password,port);
+ }
+
+
+ }
+
+ private List<File> getAllfiles(File rootDirectory){
+ List<File> results = new ArrayList<File>();
+
+ if(rootDirectory==null) {
+ throw new TaskExecutorException("problem while transfering the file to remote machine : src diectory Not found");
+ }
+
+ for(File currentItem : rootDirectory.listFiles()){
+ if(currentItem.isDirectory()){
+ results.addAll(getAllfiles(currentItem));
+ }
+ else{
+ results.add(currentItem);
+ }
+ }
+ return results;
+ }
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.RemoteDeploymentVerificationService;
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.Session;
+
+
+@Service("remoteDeploymentVerificationService")
+public class RemoteDeploymentverificationServiceImpl implements RemoteDeploymentVerificationService{
+
+ private static Logger logger = LoggerFactory.getLogger(RemoteDeploymentverificationServiceImpl.class);
+
+ public void executeScript(String remoteserver,String username,String password,int portnumber,
+ String filename,String fileparams,String srcdir,String destdir,int waitttime,int iterations,String command) {
+
+ boolean issuccess=false;
+ //String filepath=destdir+"/"+filename+" "+(fileparams!=null?fileparams.replaceAll(",", " "):" ");
+ ChannelExec channelExec=null;
+ BufferedReader reader =null;
+ Session session=null;
+ for( int i=0;i<=iterations;i++) {
+ try {
+ logger.debug("Executing the deployment verification script.............iteration : {}",i);
+ Thread.sleep(waitttime*1000);
+ JSch jsch = new JSch();
+ session = jsch.getSession(username, remoteserver, portnumber);
+ session.setConfig("StrictHostKeyChecking", "no");
+ session.setPassword(password);
+ session.connect();
+ channelExec = (ChannelExec)session.openChannel("exec");
+ InputStream in = channelExec.getInputStream();
+ channelExec.setPty(true);
+ channelExec.setCommand(command);
+ channelExec.connect();
+ reader = new BufferedReader(new InputStreamReader(in));
+ String line;
+ logger.debug("Script output......................");
+ while ((line = reader.readLine()) != null){
+ logger.debug(line);
+ }
+ channelExec.disconnect();
+ while (!channelExec.isClosed()) {
+
+ }
+ int exitStatus = channelExec.getExitStatus();
+ logger.debug("Script exit code :"+exitStatus);
+ if(exitStatus==0) {
+ issuccess=true;
+ }
+ }
+ catch (IOException e) {
+ throw new TaskExecutorException(filename + " not found.");
+ } catch (Exception e) {
+ throw new TaskExecutorException("problem while executing the script "+command);
+ }finally{
+ if(reader!=null) {
+ try {
+ reader.close();
+ }catch(Exception e) {
+ throw new TaskExecutorException("onap build failed");
+ }
+ }
+ if(session!=null) {
+ session.disconnect();
+ }
+ }
+
+ if(issuccess) {
+ break;
+ }
+
+ }
+
+ if(!issuccess) {
+ logger.debug("verification script returned 1 ");
+ throw new TaskExecutorException(" verification script exit code : 1");
+ }
+ }
+
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.RemoteScriptExecutionService;
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.JSch;
+import com.jcraft.jsch.Session;
+
+@Service("remoteScriptExecutionService")
+public class RemoteScriptExecutionServiceImpl implements RemoteScriptExecutionService{
+
+ private static Logger logger = LoggerFactory.getLogger(RemoteScriptExecutionServiceImpl.class);
+
+ public void executeRemoteScript(String remoteserver,String username,String password,int portnumber,String filename,
+ String fileparams,String srcdir,String destdir,String command) {
+
+ //String filepath=destdir+"/"+filename+" "+(fileparams!=null?fileparams.replaceAll(",", " "):" ");
+ ChannelExec channelExec=null;
+ Session session=null;
+ BufferedReader reader =null;
+ try {
+ //tranferFile(remoteserver,portnumber,username,password,filename,srcdir,destdir);
+ logger.debug("executing the script "+command);
+ JSch jsch = new JSch();
+ session = jsch.getSession(username, remoteserver, portnumber);
+ session.setConfig("StrictHostKeyChecking", "no");
+ session.setPassword(password);
+ session.connect();
+ channelExec = (ChannelExec)session.openChannel("exec");
+ InputStream in = channelExec.getInputStream();
+ channelExec.setCommand(command);
+ channelExec.setPty(true);
+ channelExec.connect();
+ reader = new BufferedReader(new InputStreamReader(in));
+ String line;
+ logger.debug("Script output......................");
+ while ((line = reader.readLine()) != null){
+ logger.debug(line);
+ }
+
+ channelExec.disconnect();
+ while (!channelExec.isClosed()) {
+
+ }
+
+ int exitStatus = channelExec.getExitStatus();
+
+ logger.debug("Script exit code :"+exitStatus);
+ if(exitStatus!=0) {
+ throw new TaskExecutorException("problem while executing the script . exist code :"+exitStatus);
+ }
+
+
+ } catch (IOException e) {
+ throw new TaskExecutorException(filename + " not found.");
+ } catch (Exception e) {
+ throw new TaskExecutorException("Problem while executing script"+e.getMessage());
+ }finally{
+ if(reader!=null) {
+ try {
+ reader.close();
+ }catch(Exception e) {
+ throw new TaskExecutorException("onap build failed");
+ }
+ }
+ if(session!=null) {
+ session.disconnect();
+ }
+ }
+
+
+
+ }
+
+
+
+
+}
+
+
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.ScriptExecutionService;
+
+@Service("scriptExecutionService")
+public class ScriptExecutionServiceImpl implements ScriptExecutionService{
+
+ private static Logger logger = LoggerFactory.getLogger(ScriptExecutionServiceImpl.class);
+
+ public void executeScript(String filepatch) {
+
+ try {
+ logger.debug("Executing the script.............");
+ Process p = Runtime.getRuntime().exec(filepatch);
+ p.waitFor();
+ BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String line = "";
+ while ((line = input.readLine()) != null) {
+ logger.debug(line);
+ }
+ logger.debug("Script exit code :"+p.exitValue());
+ if(p.exitValue()!=0) {
+ throw new TaskExecutorException("problem while executing the script . exist code :"+p.exitValue());
+ }
+
+
+ } catch (IOException e) {
+ throw new TaskExecutorException(filepatch + " not found.");
+ } catch (InterruptedException e) {
+ throw new TaskExecutorException("problem while executing the script "+filepatch);
+ }
+
+ }
+ public void executeCDScript(String dir,String cmd) {
+
+ try {
+ logger.debug("Executing the script.............dir:{},command:{}",dir,cmd);
+
+ String[] command = { "/bin/sh", "-c", "sh "+cmd };
+ Process p = Runtime.getRuntime().exec(command, null, new File(dir));
+ p.waitFor();
+ BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String line = "";
+ while ((line = input.readLine()) != null) {
+ logger.debug(line);
+ }
+ logger.debug("Script exit code :"+p.exitValue());
+ if(p.exitValue()!=0) {
+ throw new TaskExecutorException("problem while executing the script . exist code :"+p.exitValue());
+ }
+
+
+ } catch (IOException e) {
+ throw new TaskExecutorException(cmd + " not found.");
+ } catch (InterruptedException e) {
+ throw new TaskExecutorException("problem while executing the script "+cmd);
+ }
+
+ }
+
+
+ /*public void executeAirshipScript(String cmd) {
+
+ try {
+ logger.debug("Executing the script.............{}",cmd);
+ ProcessBuilder pb = new ProcessBuilder(cmd);
+ Process shellProcess = pb.start();
+
+ shellProcess.waitFor();
+ BufferedReader input = new BufferedReader(new InputStreamReader(shellProcess.getInputStream()));
+ String line = "";
+ while ((line = input.readLine()) != null) {
+ logger.debug(line);
+ }
+ logger.debug("Script exit code :"+shellProcess.exitValue());
+ if(shellProcess.exitValue()!=0) {
+ throw new TaskExecutorException("problem while executing the script . exist code :"+shellProcess.exitValue());
+ }
+
+
+ } catch (IOException e) {
+ throw new TaskExecutorException(cmd + " not found.");
+ } catch (InterruptedException e) {
+ throw new TaskExecutorException("problem while executing the script "+cmd);
+ }
+
+ }*/
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import java.io.File;
+import java.io.FileFilter;
+
+import org.springframework.stereotype.Component;
+
+@Component
+public class YamlFileFilter implements FileFilter {
+
+ private final String[] okFileExtensions = new String[] {"yaml", "YAML"};
+
+ public boolean accept(File file)
+ {
+ for (String extension : okFileExtensions)
+ {
+ if (file.getName().toLowerCase().endsWith(extension))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ *
+ * 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.
+ */
+
+package com.akraino.bpm.service.impl;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.yaml.snakeyaml.Yaml;
+
+import com.akraino.bpm.Exception.TaskExecutorException;
+import com.akraino.bpm.service.YamlVerificationService;
+
+@Service("yamlVerificationService")
+public class YamlVerificationServiceImpl implements YamlVerificationService{
+
+ private static Logger logger = LoggerFactory.getLogger(YamlVerificationServiceImpl.class);
+
+ @Autowired
+ YamlFileFilter yamlFileFilter;
+
+ public void verify(String taget) {
+
+ logger.debug("Verifying the YAML files .............");
+ List<File> yamlFileList =searchForFile(new File(taget),yamlFileFilter);
+ for(File file:yamlFileList) {
+ try {
+ Object obj =check(file);
+ if(obj==null) {
+ throw new TaskExecutorException(file + "parsing failed.");
+ }
+ }catch(Exception ex ) {
+ throw new TaskExecutorException(file + " not found.");
+ }
+
+
+
+ }
+ }
+
+ private List<File> searchForFile(File rootDirectory, FileFilter filter){
+ List<File> results = new ArrayList<File>();
+ for(File currentItem : rootDirectory.listFiles(filter)){
+ if(currentItem.isDirectory()){
+ results.addAll(searchForFile(currentItem, filter));
+ }
+ else{
+ results.add(currentItem);
+ }
+ }
+ return results;
+ }
+
+
+
+ private Object check(File file) throws IOException {
+ Yaml yaml = new Yaml();
+ Object obj = yaml.load(new FileInputStream(file));
+ return obj;
+ }
+
+
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.0">
+ <bpmn:process id="airship" name="airship" isExecutable="true" camunda:versionTag="1">
+ <bpmn:sequenceFlow id="SequenceFlow_125l5l0" sourceRef="StartEvent_1" targetRef="Task_19usii1" />
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_125l5l0</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="Airship ScriptExecutor Task" camunda:delegateExpression="#{airshipScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_125l5l0</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0ji1v0x</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0ji1v0x" sourceRef="Task_19usii1" targetRef="Task_1jo0y1o" />
+ <bpmn:serviceTask id="Task_1jo0y1o" name="Airship WinSCPScript Executortask" camunda:delegateExpression="#{airshipWinScpScriptDelegate}">
+ <bpmn:incoming>SequenceFlow_0ji1v0x</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1jh4nm3</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1jh4nm3" sourceRef="Task_1jo0y1o" targetRef="DeployRemoteexecutor" />
+ <bpmn:serviceTask id="DeployRemoteexecutor" name="Airship Remote Script ecutor" camunda:delegateExpression="#{airshipRemoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_1jh4nm3</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_08xc1st">
+ <bpmn:text>Win Scp Script Executor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_05u86o6" sourceRef="Task_1jo0y1o" targetRef="TextAnnotation_08xc1st" />
+ <bpmn:textAnnotation id="TextAnnotation_071um3l">
+ <bpmn:text>Remote Script Executor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0xluc8y" sourceRef="DeployRemoteexecutor" targetRef="TextAnnotation_071um3l" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="airship">
+ <bpmndi:BPMNEdge id="SequenceFlow_125l5l0_di" bpmnElement="SequenceFlow_125l5l0">
+ <di:waypoint x="407" y="286" />
+ <di:waypoint x="457" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="387" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="389" y="268" />
+ <di:waypoint x="389" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="547" y="246" />
+ <di:waypoint x="586" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="371" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="346" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="457" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ji1v0x_di" bpmnElement="SequenceFlow_0ji1v0x">
+ <di:waypoint x="557" y="286" />
+ <di:waypoint x="607" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="582" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_08xc1st_di" bpmnElement="TextAnnotation_08xc1st">
+ <dc:Bounds x="707" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_05u86o6_di" bpmnElement="Association_05u86o6">
+ <di:waypoint x="697" y="246" />
+ <di:waypoint x="736" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0ek6xsx_di" bpmnElement="Task_1jo0y1o">
+ <dc:Bounds x="607" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1jh4nm3_di" bpmnElement="SequenceFlow_1jh4nm3">
+ <di:waypoint x="707" y="286" />
+ <di:waypoint x="791" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="704" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0gdjdwl_di" bpmnElement="DeployRemoteexecutor">
+ <dc:Bounds x="791" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_071um3l_di" bpmnElement="TextAnnotation_071um3l">
+ <dc:Bounds x="832" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0xluc8y_di" bpmnElement="Association_0xluc8y">
+ <di:waypoint x="859" y="246" />
+ <di:waypoint x="875" y="212" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.0">
+ <bpmn:process id="apache" name="apache" isExecutable="true" camunda:versionTag="1">
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_05ci0iu</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ApacheScriptExecutorTask" camunda:delegateExpression="#{apacheRemoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_0envlli</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0envlli" sourceRef="Task_1ahdja4" targetRef="Task_19usii1" />
+ <bpmn:sequenceFlow id="SequenceFlow_05ci0iu" sourceRef="StartEvent_1" targetRef="Task_1ahdja4" />
+ <bpmn:serviceTask id="Task_1ahdja4" name="ApacheScriptExecutorTask" camunda:delegateExpression="#{apacheScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_05ci0iu</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0envlli</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_04jvs8x">
+ <bpmn:text>File transfer script</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0liuxn1" sourceRef="Task_1ahdja4" targetRef="TextAnnotation_04jvs8x" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="apache">
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="325" y="272" />
+ <di:waypoint x="376" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="624" y="246" />
+ <di:waypoint x="613" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="295" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="270" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="585" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0envlli_di" bpmnElement="SequenceFlow_0envlli">
+ <di:waypoint x="529" y="286" />
+ <di:waypoint x="585" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="557" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05ci0iu_di" bpmnElement="SequenceFlow_05ci0iu">
+ <di:waypoint x="331" y="286" />
+ <di:waypoint x="429" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="380" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_04jvs8x_di" bpmnElement="TextAnnotation_04jvs8x">
+ <dc:Bounds x="443" y="172" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0liuxn1_di" bpmnElement="Association_0liuxn1">
+ <di:waypoint x="485" y="246" />
+ <di:waypoint x="491" y="202" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0c2vyop_di" bpmnElement="Task_1ahdja4">
+ <dc:Bounds x="429" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+camunda.bpm:
+ admin-user:
+ id: admin
+ password: admin
+ firstName: administrator
+ filter:
+ create: All tasks
+ buildresponseurl: http://localhost:8069/AECPortalMgmt/install/status/
+logging:
+ file: C:/tmp/scriptexecutor.log
+ level:
+ com.camunda.bpm: debug
+ org.camunda.bpm: warn
+ org.springframework: warn
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0">
+ <bpmn:process id="build" name="build" isExecutable="true" camunda:versionTag="1">
+ <bpmn:sequenceFlow id="SequenceFlow_125l5l0" sourceRef="StartEvent_1" targetRef="Task_19usii1" />
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_125l5l0</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ScriptExecutorTask" camunda:delegateExpression="#{scriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_125l5l0</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0ji1v0x</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0ji1v0x" sourceRef="Task_19usii1" targetRef="Task_1jo0y1o" />
+ <bpmn:serviceTask id="Task_1jo0y1o" name="YamlFileverificationTask" camunda:delegateExpression="#{yamlVerificationDelegate}">
+ <bpmn:incoming>SequenceFlow_0ji1v0x</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_08xc1st">
+ <bpmn:text>Yaml File validtor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_05u86o6" sourceRef="Task_1jo0y1o" targetRef="TextAnnotation_08xc1st" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="build">
+ <bpmndi:BPMNEdge id="SequenceFlow_125l5l0_di" bpmnElement="SequenceFlow_125l5l0">
+ <di:waypoint x="407" y="286" />
+ <di:waypoint x="457" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="387" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="389" y="268" />
+ <di:waypoint x="389" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="547" y="246" />
+ <di:waypoint x="586" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="371" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="346" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="457" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ji1v0x_di" bpmnElement="SequenceFlow_0ji1v0x">
+ <di:waypoint x="557" y="286" />
+ <di:waypoint x="607" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="582" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_08xc1st_di" bpmnElement="TextAnnotation_08xc1st">
+ <dc:Bounds x="707" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_05u86o6_di" bpmnElement="Association_05u86o6">
+ <di:waypoint x="697" y="246" />
+ <di:waypoint x="736" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0ek6xsx_di" bpmnElement="Task_1jo0y1o">
+ <dc:Bounds x="607" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.0">
+ <bpmn:process id="deploy" name="deploy" isExecutable="true" camunda:versionTag="1">
+ <bpmn:sequenceFlow id="SequenceFlow_125l5l0" sourceRef="StartEvent_1" targetRef="Task_19usii1" />
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_125l5l0</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ScriptExecutorTask" camunda:delegateExpression="#{deployScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_125l5l0</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0ji1v0x</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0ji1v0x" sourceRef="Task_19usii1" targetRef="Task_1jo0y1o" />
+ <bpmn:serviceTask id="Task_1jo0y1o" name="WinSCPScriptExecutortask" camunda:delegateExpression="#{winScpScriptDelegate}">
+ <bpmn:incoming>SequenceFlow_0ji1v0x</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1jh4nm3</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1jh4nm3" sourceRef="Task_1jo0y1o" targetRef="DeployRemoteexecutor" />
+ <bpmn:serviceTask id="Task_0ss7pht" name="Deploymentverfier" camunda:delegateExpression="#{DeployRemoteDeploymentVerificationDelegate}">
+ <bpmn:incoming>SequenceFlow_064ccvc</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0e9qo9c</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_064ccvc" sourceRef="DeployRemoteexecutor" targetRef="Task_0ss7pht" />
+ <bpmn:serviceTask id="DeployRemoteexecutor" name="Deploy Remote Script ecutor" camunda:delegateExpression="#{deployRemoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_1jh4nm3</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_064ccvc</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0e9qo9c" sourceRef="Task_0ss7pht" targetRef="Postverification" />
+ <bpmn:serviceTask id="Postverification" name="Post verification" camunda:delegateExpression="#{deployPostVerficationRemoteScriptExecutor}">
+ <bpmn:incoming>SequenceFlow_0e9qo9c</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_08xc1st">
+ <bpmn:text>Win Scp Script Executor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_05u86o6" sourceRef="Task_1jo0y1o" targetRef="TextAnnotation_08xc1st" />
+ <bpmn:textAnnotation id="TextAnnotation_0zgafn7">
+ <bpmn:text>Deployment verifier</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0h3xbpb" sourceRef="Task_0ss7pht" targetRef="TextAnnotation_0zgafn7" />
+ <bpmn:textAnnotation id="TextAnnotation_071um3l">
+ <bpmn:text>Remote Script Executor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0xluc8y" sourceRef="DeployRemoteexecutor" targetRef="TextAnnotation_071um3l" />
+ <bpmn:textAnnotation id="TextAnnotation_19qps2u">
+ <bpmn:text>Post verification </bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_1d4h61h" sourceRef="Postverification" targetRef="TextAnnotation_19qps2u" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="deploy">
+ <bpmndi:BPMNEdge id="SequenceFlow_125l5l0_di" bpmnElement="SequenceFlow_125l5l0">
+ <di:waypoint x="330" y="278" />
+ <di:waypoint x="368" y="278" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="387" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="324" y="265" />
+ <di:waypoint x="375" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="468" y="253" />
+ <di:waypoint x="565" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="294" y="260" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="270" y="296" width="88" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="368" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ji1v0x_di" bpmnElement="SequenceFlow_0ji1v0x">
+ <di:waypoint x="468" y="278" />
+ <di:waypoint x="527" y="278" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="582" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_08xc1st_di" bpmnElement="TextAnnotation_08xc1st">
+ <dc:Bounds x="707" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_05u86o6_di" bpmnElement="Association_05u86o6">
+ <di:waypoint x="627" y="252" />
+ <di:waypoint x="717" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0ek6xsx_di" bpmnElement="Task_1jo0y1o">
+ <dc:Bounds x="527" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_0zgafn7_di" bpmnElement="TextAnnotation_0zgafn7">
+ <dc:Bounds x="965" y="357" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0h3xbpb_di" bpmnElement="Association_0h3xbpb">
+ <di:waypoint x="950" y="317" />
+ <di:waypoint x="992" y="357" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1jh4nm3_di" bpmnElement="SequenceFlow_1jh4nm3">
+ <di:waypoint x="627" y="278" />
+ <di:waypoint x="689" y="278" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="704" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0pazttq_di" bpmnElement="Task_0ss7pht">
+ <dc:Bounds x="858" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_064ccvc_di" bpmnElement="SequenceFlow_064ccvc">
+ <di:waypoint x="789" y="278" />
+ <di:waypoint x="858" y="278" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="945.5" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0gdjdwl_di" bpmnElement="DeployRemoteexecutor">
+ <dc:Bounds x="689" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_071um3l_di" bpmnElement="TextAnnotation_071um3l">
+ <dc:Bounds x="707" y="353" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0xluc8y_di" bpmnElement="Association_0xluc8y">
+ <di:waypoint x="747" y="318" />
+ <di:waypoint x="754" y="353" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0e9qo9c_di" bpmnElement="SequenceFlow_0e9qo9c">
+ <di:waypoint x="958" y="278" />
+ <di:waypoint x="1029" y="278" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1vpzk0r_di" bpmnElement="Postverification">
+ <dc:Bounds x="1029" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_19qps2u_di" bpmnElement="TextAnnotation_19qps2u">
+ <dc:Bounds x="1129" y="158" width="100" height="41" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_1d4h61h_di" bpmnElement="Association_1d4h61h">
+ <di:waypoint x="1119" y="238" />
+ <di:waypoint x="1159" y="199" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0">
+ <bpmn:process id="onap" name="onap" isExecutable="true" camunda:versionTag="1">
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_05ci0iu</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ScriptExecutorTask" camunda:delegateExpression="#{remoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_0envlli</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ssw8fq</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_0ss7pht" name="Deploymentverfier" camunda:delegateExpression="#{remoteDeploymentVerificationDelegate}">
+ <bpmn:incoming>SequenceFlow_1ssw8fq</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1ssw8fq" sourceRef="Task_19usii1" targetRef="Task_0ss7pht" />
+ <bpmn:sequenceFlow id="SequenceFlow_0envlli" sourceRef="Task_1ahdja4" targetRef="Task_19usii1" />
+ <bpmn:sequenceFlow id="SequenceFlow_05ci0iu" sourceRef="StartEvent_1" targetRef="Task_1ahdja4" />
+ <bpmn:serviceTask id="Task_1ahdja4" name="ScriptExecutorTask" camunda:delegateExpression="#{scriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_05ci0iu</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0envlli</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_0zgafn7">
+ <bpmn:text>Deployment verifier</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0h3xbpb" sourceRef="Task_0ss7pht" targetRef="TextAnnotation_0zgafn7" />
+ <bpmn:textAnnotation id="TextAnnotation_04jvs8x">
+ <bpmn:text>File transfer script </bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0liuxn1" sourceRef="Task_1ahdja4" targetRef="TextAnnotation_04jvs8x" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="onap">
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="325" y="272" />
+ <di:waypoint x="376" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="624" y="246" />
+ <di:waypoint x="613" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="295" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="270" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="585" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_0zgafn7_di" bpmnElement="TextAnnotation_0zgafn7">
+ <dc:Bounds x="711" y="176" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0h3xbpb_di" bpmnElement="Association_0h3xbpb">
+ <di:waypoint x="774" y="246" />
+ <di:waypoint x="767" y="218" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0pazttq_di" bpmnElement="Task_0ss7pht">
+ <dc:Bounds x="735" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ssw8fq_di" bpmnElement="SequenceFlow_1ssw8fq">
+ <di:waypoint x="685" y="286" />
+ <di:waypoint x="735" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="665" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0envlli_di" bpmnElement="SequenceFlow_0envlli">
+ <di:waypoint x="529" y="286" />
+ <di:waypoint x="585" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="557" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05ci0iu_di" bpmnElement="SequenceFlow_05ci0iu">
+ <di:waypoint x="331" y="286" />
+ <di:waypoint x="429" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="380" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_04jvs8x_di" bpmnElement="TextAnnotation_04jvs8x">
+ <dc:Bounds x="443" y="172" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0liuxn1_di" bpmnElement="Association_0liuxn1">
+ <di:waypoint x="485" y="246" />
+ <di:waypoint x="491" y="202" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1jrhup4_di" bpmnElement="Task_1ahdja4">
+ <dc:Bounds x="429" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0">
+ <bpmn:process id="singlestepdeploy" name="singlestepdeploy" isExecutable="true" camunda:versionTag="1">
+ <bpmn:sequenceFlow id="SequenceFlow_125l5l0" sourceRef="StartEvent_1" targetRef="Task_19usii1" />
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_125l5l0</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ScriptExecutorTask" camunda:delegateExpression="#{bashScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_125l5l0</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="singlestepdeploy">
+ <bpmndi:BPMNEdge id="SequenceFlow_125l5l0_di" bpmnElement="SequenceFlow_125l5l0">
+ <di:waypoint x="407" y="286" />
+ <di:waypoint x="457" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="387" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="389" y="268" />
+ <di:waypoint x="389" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="547" y="246" />
+ <di:waypoint x="586" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="371" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="346" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="457" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0">
+ <bpmn:process id="tempest" name="tempest" isExecutable="true" camunda:versionTag="1">
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_05ci0iu</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="TempestScriptExecutorTask" camunda:delegateExpression="#{tempestRemoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_0envlli</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ssw8fq</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_0ss7pht" name="TemestDeploymentverfier" camunda:delegateExpression="#{tempestRemoteDeploymentVerificationDelegate}">
+ <bpmn:incoming>SequenceFlow_1ssw8fq</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1ssw8fq" sourceRef="Task_19usii1" targetRef="Task_0ss7pht" />
+ <bpmn:sequenceFlow id="SequenceFlow_0envlli" sourceRef="Task_1ahdja4" targetRef="Task_19usii1" />
+ <bpmn:sequenceFlow id="SequenceFlow_05ci0iu" sourceRef="StartEvent_1" targetRef="Task_1ahdja4" />
+ <bpmn:serviceTask id="Task_1ahdja4" name="TempestScriptExecutorTask" camunda:delegateExpression="#{tempestScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_05ci0iu</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0envlli</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_0zgafn7">
+ <bpmn:text>Deployment verifier</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0h3xbpb" sourceRef="Task_0ss7pht" targetRef="TextAnnotation_0zgafn7" />
+ <bpmn:textAnnotation id="TextAnnotation_04jvs8x">
+ <bpmn:text>File transfer script</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0liuxn1" sourceRef="Task_1ahdja4" targetRef="TextAnnotation_04jvs8x" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="tempest">
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="325" y="272" />
+ <di:waypoint x="376" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="624" y="246" />
+ <di:waypoint x="613" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="295" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="270" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="585" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_0zgafn7_di" bpmnElement="TextAnnotation_0zgafn7">
+ <dc:Bounds x="711" y="176" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0h3xbpb_di" bpmnElement="Association_0h3xbpb">
+ <di:waypoint x="774" y="246" />
+ <di:waypoint x="767" y="218" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0pazttq_di" bpmnElement="Task_0ss7pht">
+ <dc:Bounds x="735" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ssw8fq_di" bpmnElement="SequenceFlow_1ssw8fq">
+ <di:waypoint x="685" y="286" />
+ <di:waypoint x="735" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="665" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0envlli_di" bpmnElement="SequenceFlow_0envlli">
+ <di:waypoint x="529" y="286" />
+ <di:waypoint x="585" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="557" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05ci0iu_di" bpmnElement="SequenceFlow_05ci0iu">
+ <di:waypoint x="331" y="286" />
+ <di:waypoint x="429" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="380" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_04jvs8x_di" bpmnElement="TextAnnotation_04jvs8x">
+ <dc:Bounds x="443" y="172" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0liuxn1_di" bpmnElement="Association_0liuxn1">
+ <di:waypoint x="485" y="246" />
+ <di:waypoint x="491" y="202" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1jrhup4_di" bpmnElement="Task_1ahdja4">
+ <dc:Bounds x="429" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+#!/bin/bash
+#
+# Copyright (c) 2018 AT&T Intellectual Property. All other rights reserved.
+#
+# 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.
+
+#Pass version number as argument to run script:
+#example : ./build.sh 1.0.0-SNAPSHOT
+CON_NAME="akraino-camunda-workflow-engine"
+version=$1
+build=`curl -s http://nexus3.att-akraino.org/repository/maven-snapshots/org/akraino/camunda_workflow/$version/maven-metadata.xml | grep '<value>' | head -1 | sed "s/.*<value>\([^<]*\)<\/value>.*/\1/"`
+jar=camunda_workflow-$build.jar
+path="http://nexus3.att-akraino.org/repository/maven-snapshots/org/akraino/camunda_workflow/$version"
+JARURL="$path/$jar"
+wget $JARURL
+
+VERSION=$build
+sudo docker build -f Dockerfile -t "nexus3.att-akraino.org:10001/${CON_NAME}:${VERSION}" .
+sudo docker tag "nexus3.att-akraino.org:10001/${CON_NAME}:${VERSION}" "nexus3.att-akraino.org:10001/${CON_NAME}:latest"
+sudo docker login --username jenkins --password ZFXsSJjs nexus3.att-akraino.org:10001
+sudo docker push "nexus3.att-akraino.org:10001/${CON_NAME}:${VERSION}"
+sudo docker push "nexus3.att-akraino.org:10001/${CON_NAME}:latest"
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.0">
+ <bpmn:process id="airship" name="airship" isExecutable="true" camunda:versionTag="1">
+ <bpmn:sequenceFlow id="SequenceFlow_125l5l0" sourceRef="StartEvent_1" targetRef="Task_19usii1" />
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_125l5l0</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="Airship ScriptExecutor Task" camunda:delegateExpression="#{airshipScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_125l5l0</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0ji1v0x</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0ji1v0x" sourceRef="Task_19usii1" targetRef="Task_1jo0y1o" />
+ <bpmn:serviceTask id="Task_1jo0y1o" name="Airship WinSCPScript Executortask" camunda:delegateExpression="#{airshipWinScpScriptDelegate}">
+ <bpmn:incoming>SequenceFlow_0ji1v0x</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1jh4nm3</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1jh4nm3" sourceRef="Task_1jo0y1o" targetRef="DeployRemoteexecutor" />
+ <bpmn:serviceTask id="DeployRemoteexecutor" name="Airship Remote Script ecutor" camunda:delegateExpression="#{airshipRemoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_1jh4nm3</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_08xc1st">
+ <bpmn:text>Win Scp Script Executor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_05u86o6" sourceRef="Task_1jo0y1o" targetRef="TextAnnotation_08xc1st" />
+ <bpmn:textAnnotation id="TextAnnotation_071um3l">
+ <bpmn:text>Remote Script Executor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0xluc8y" sourceRef="DeployRemoteexecutor" targetRef="TextAnnotation_071um3l" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="airship">
+ <bpmndi:BPMNEdge id="SequenceFlow_125l5l0_di" bpmnElement="SequenceFlow_125l5l0">
+ <di:waypoint x="407" y="286" />
+ <di:waypoint x="457" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="387" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="389" y="268" />
+ <di:waypoint x="389" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="547" y="246" />
+ <di:waypoint x="586" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="371" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="346" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="457" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ji1v0x_di" bpmnElement="SequenceFlow_0ji1v0x">
+ <di:waypoint x="557" y="286" />
+ <di:waypoint x="607" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="582" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_08xc1st_di" bpmnElement="TextAnnotation_08xc1st">
+ <dc:Bounds x="707" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_05u86o6_di" bpmnElement="Association_05u86o6">
+ <di:waypoint x="697" y="246" />
+ <di:waypoint x="736" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0ek6xsx_di" bpmnElement="Task_1jo0y1o">
+ <dc:Bounds x="607" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1jh4nm3_di" bpmnElement="SequenceFlow_1jh4nm3">
+ <di:waypoint x="707" y="286" />
+ <di:waypoint x="791" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="704" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0gdjdwl_di" bpmnElement="DeployRemoteexecutor">
+ <dc:Bounds x="791" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_071um3l_di" bpmnElement="TextAnnotation_071um3l">
+ <dc:Bounds x="832" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0xluc8y_di" bpmnElement="Association_0xluc8y">
+ <di:waypoint x="859" y="246" />
+ <di:waypoint x="875" y="212" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.0">
+ <bpmn:process id="apache" name="apache" isExecutable="true" camunda:versionTag="1">
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_05ci0iu</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ApacheScriptExecutorTask" camunda:delegateExpression="#{apacheRemoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_0envlli</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0envlli" sourceRef="Task_1ahdja4" targetRef="Task_19usii1" />
+ <bpmn:sequenceFlow id="SequenceFlow_05ci0iu" sourceRef="StartEvent_1" targetRef="Task_1ahdja4" />
+ <bpmn:serviceTask id="Task_1ahdja4" name="ApacheScriptExecutorTask" camunda:delegateExpression="#{apacheScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_05ci0iu</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0envlli</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_04jvs8x">
+ <bpmn:text>File transfer script</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0liuxn1" sourceRef="Task_1ahdja4" targetRef="TextAnnotation_04jvs8x" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="apache">
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="325" y="272" />
+ <di:waypoint x="376" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="624" y="246" />
+ <di:waypoint x="613" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="295" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="270" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="585" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0envlli_di" bpmnElement="SequenceFlow_0envlli">
+ <di:waypoint x="529" y="286" />
+ <di:waypoint x="585" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="557" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05ci0iu_di" bpmnElement="SequenceFlow_05ci0iu">
+ <di:waypoint x="331" y="286" />
+ <di:waypoint x="429" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="380" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_04jvs8x_di" bpmnElement="TextAnnotation_04jvs8x">
+ <dc:Bounds x="443" y="172" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0liuxn1_di" bpmnElement="Association_0liuxn1">
+ <di:waypoint x="485" y="246" />
+ <di:waypoint x="491" y="202" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1jrhup4_di" bpmnElement="Task_1ahdja4">
+ <dc:Bounds x="429" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+camunda.bpm:\r
+ admin-user:\r
+ id: admin\r
+ password: admin \r
+ firstName: administrator\r
+ filter:\r
+ create: All tasks\r
+ buildresponseurl: http://135.16.101.85:8069/AECPortalMgmt/edgeSites/status\r
+logging:\r
+ file: /var/log/scriptexecutor.log\r
+ level:\r
+ com.camunda.bpm: debug\r
+ org.camunda.bpm: warn\r
+ org.springframework: warn\r
+spring.transaction.default-timeout: 21600\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0">
+ <bpmn:process id="build" name="build" isExecutable="true" camunda:versionTag="1">
+ <bpmn:sequenceFlow id="SequenceFlow_125l5l0" sourceRef="StartEvent_1" targetRef="Task_19usii1" />
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_125l5l0</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ScriptExecutorTask" camunda:delegateExpression="#{scriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_125l5l0</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0ji1v0x</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0ji1v0x" sourceRef="Task_19usii1" targetRef="Task_1jo0y1o" />
+ <bpmn:serviceTask id="Task_1jo0y1o" name="YamlFileverificationTask" camunda:delegateExpression="#{yamlVerificationDelegate}">
+ <bpmn:incoming>SequenceFlow_0ji1v0x</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_08xc1st">
+ <bpmn:text>Yaml File validtor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_05u86o6" sourceRef="Task_1jo0y1o" targetRef="TextAnnotation_08xc1st" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="build">
+ <bpmndi:BPMNEdge id="SequenceFlow_125l5l0_di" bpmnElement="SequenceFlow_125l5l0">
+ <di:waypoint x="407" y="286" />
+ <di:waypoint x="457" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="387" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="389" y="268" />
+ <di:waypoint x="389" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="547" y="246" />
+ <di:waypoint x="586" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="371" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="346" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="457" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ji1v0x_di" bpmnElement="SequenceFlow_0ji1v0x">
+ <di:waypoint x="557" y="286" />
+ <di:waypoint x="607" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="582" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_08xc1st_di" bpmnElement="TextAnnotation_08xc1st">
+ <dc:Bounds x="707" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_05u86o6_di" bpmnElement="Association_05u86o6">
+ <di:waypoint x="697" y="246" />
+ <di:waypoint x="736" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0ek6xsx_di" bpmnElement="Task_1jo0y1o">
+ <dc:Bounds x="607" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.16.0">
+ <bpmn:process id="deploy" name="deploy" isExecutable="true" camunda:versionTag="1">
+ <bpmn:sequenceFlow id="SequenceFlow_125l5l0" sourceRef="StartEvent_1" targetRef="Task_19usii1" />
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_125l5l0</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ScriptExecutorTask" camunda:delegateExpression="#{deployScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_125l5l0</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0ji1v0x</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0ji1v0x" sourceRef="Task_19usii1" targetRef="Task_1jo0y1o" />
+ <bpmn:serviceTask id="Task_1jo0y1o" name="WinSCPScriptExecutortask" camunda:delegateExpression="#{winScpScriptDelegate}">
+ <bpmn:incoming>SequenceFlow_0ji1v0x</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1jh4nm3</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1jh4nm3" sourceRef="Task_1jo0y1o" targetRef="DeployRemoteexecutor" />
+ <bpmn:serviceTask id="Task_0ss7pht" name="Deploymentverfier" camunda:delegateExpression="#{DeployRemoteDeploymentVerificationDelegate}">
+ <bpmn:incoming>SequenceFlow_064ccvc</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0e9qo9c</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_064ccvc" sourceRef="DeployRemoteexecutor" targetRef="Task_0ss7pht" />
+ <bpmn:serviceTask id="DeployRemoteexecutor" name="Deploy Remote Script ecutor" camunda:delegateExpression="#{deployRemoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_1jh4nm3</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_064ccvc</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0e9qo9c" sourceRef="Task_0ss7pht" targetRef="Postverification" />
+ <bpmn:serviceTask id="Postverification" name="Post verification" camunda:delegateExpression="#{deployPostVerficationRemoteScriptExecutor}">
+ <bpmn:incoming>SequenceFlow_0e9qo9c</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_08xc1st">
+ <bpmn:text>Win Scp Script Executor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_05u86o6" sourceRef="Task_1jo0y1o" targetRef="TextAnnotation_08xc1st" />
+ <bpmn:textAnnotation id="TextAnnotation_0zgafn7">
+ <bpmn:text>Deployment verifier</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0h3xbpb" sourceRef="Task_0ss7pht" targetRef="TextAnnotation_0zgafn7" />
+ <bpmn:textAnnotation id="TextAnnotation_071um3l">
+ <bpmn:text>Remote Script Executor</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0xluc8y" sourceRef="DeployRemoteexecutor" targetRef="TextAnnotation_071um3l" />
+ <bpmn:textAnnotation id="TextAnnotation_19qps2u">
+ <bpmn:text>Post verification </bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_1d4h61h" sourceRef="Postverification" targetRef="TextAnnotation_19qps2u" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="deploy">
+ <bpmndi:BPMNEdge id="SequenceFlow_125l5l0_di" bpmnElement="SequenceFlow_125l5l0">
+ <di:waypoint x="330" y="278" />
+ <di:waypoint x="368" y="278" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="387" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="324" y="265" />
+ <di:waypoint x="375" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="468" y="253" />
+ <di:waypoint x="565" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="294" y="260" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="270" y="296" width="88" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="368" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ji1v0x_di" bpmnElement="SequenceFlow_0ji1v0x">
+ <di:waypoint x="468" y="278" />
+ <di:waypoint x="527" y="278" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="582" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_08xc1st_di" bpmnElement="TextAnnotation_08xc1st">
+ <dc:Bounds x="707" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_05u86o6_di" bpmnElement="Association_05u86o6">
+ <di:waypoint x="627" y="252" />
+ <di:waypoint x="717" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0ek6xsx_di" bpmnElement="Task_1jo0y1o">
+ <dc:Bounds x="527" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_0zgafn7_di" bpmnElement="TextAnnotation_0zgafn7">
+ <dc:Bounds x="965" y="357" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0h3xbpb_di" bpmnElement="Association_0h3xbpb">
+ <di:waypoint x="950" y="317" />
+ <di:waypoint x="992" y="357" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1jh4nm3_di" bpmnElement="SequenceFlow_1jh4nm3">
+ <di:waypoint x="627" y="278" />
+ <di:waypoint x="689" y="278" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="704" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0pazttq_di" bpmnElement="Task_0ss7pht">
+ <dc:Bounds x="858" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_064ccvc_di" bpmnElement="SequenceFlow_064ccvc">
+ <di:waypoint x="789" y="278" />
+ <di:waypoint x="858" y="278" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="945.5" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0gdjdwl_di" bpmnElement="DeployRemoteexecutor">
+ <dc:Bounds x="689" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_071um3l_di" bpmnElement="TextAnnotation_071um3l">
+ <dc:Bounds x="707" y="353" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0xluc8y_di" bpmnElement="Association_0xluc8y">
+ <di:waypoint x="747" y="318" />
+ <di:waypoint x="754" y="353" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0e9qo9c_di" bpmnElement="SequenceFlow_0e9qo9c">
+ <di:waypoint x="958" y="278" />
+ <di:waypoint x="1029" y="278" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1vpzk0r_di" bpmnElement="Postverification">
+ <dc:Bounds x="1029" y="238" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_19qps2u_di" bpmnElement="TextAnnotation_19qps2u">
+ <dc:Bounds x="1129" y="158" width="100" height="41" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_1d4h61h_di" bpmnElement="Association_1d4h61h">
+ <di:waypoint x="1119" y="238" />
+ <di:waypoint x="1159" y="199" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0">
+ <bpmn:process id="onap" name="onap" isExecutable="true" camunda:versionTag="1">
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_05ci0iu</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="ScriptExecutorTask" camunda:delegateExpression="#{remoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_0envlli</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ssw8fq</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_0ss7pht" name="Deploymentverfier" camunda:delegateExpression="#{remoteDeploymentVerificationDelegate}">
+ <bpmn:incoming>SequenceFlow_1ssw8fq</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1ssw8fq" sourceRef="Task_19usii1" targetRef="Task_0ss7pht" />
+ <bpmn:sequenceFlow id="SequenceFlow_0envlli" sourceRef="Task_1ahdja4" targetRef="Task_19usii1" />
+ <bpmn:sequenceFlow id="SequenceFlow_05ci0iu" sourceRef="StartEvent_1" targetRef="Task_1ahdja4" />
+ <bpmn:serviceTask id="Task_1ahdja4" name="ScriptExecutorTask" camunda:delegateExpression="#{scriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_05ci0iu</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0envlli</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_0zgafn7">
+ <bpmn:text>Deployment verifier</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0h3xbpb" sourceRef="Task_0ss7pht" targetRef="TextAnnotation_0zgafn7" />
+ <bpmn:textAnnotation id="TextAnnotation_04jvs8x">
+ <bpmn:text>File transfer script </bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0liuxn1" sourceRef="Task_1ahdja4" targetRef="TextAnnotation_04jvs8x" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="onap">
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="325" y="272" />
+ <di:waypoint x="376" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="624" y="246" />
+ <di:waypoint x="613" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="295" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="270" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="585" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_0zgafn7_di" bpmnElement="TextAnnotation_0zgafn7">
+ <dc:Bounds x="711" y="176" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0h3xbpb_di" bpmnElement="Association_0h3xbpb">
+ <di:waypoint x="774" y="246" />
+ <di:waypoint x="767" y="218" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0pazttq_di" bpmnElement="Task_0ss7pht">
+ <dc:Bounds x="735" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ssw8fq_di" bpmnElement="SequenceFlow_1ssw8fq">
+ <di:waypoint x="685" y="286" />
+ <di:waypoint x="735" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="665" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0envlli_di" bpmnElement="SequenceFlow_0envlli">
+ <di:waypoint x="529" y="286" />
+ <di:waypoint x="585" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="557" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05ci0iu_di" bpmnElement="SequenceFlow_05ci0iu">
+ <di:waypoint x="331" y="286" />
+ <di:waypoint x="429" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="380" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_04jvs8x_di" bpmnElement="TextAnnotation_04jvs8x">
+ <dc:Bounds x="443" y="172" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0liuxn1_di" bpmnElement="Association_0liuxn1">
+ <di:waypoint x="485" y="246" />
+ <di:waypoint x="491" y="202" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1jrhup4_di" bpmnElement="Task_1ahdja4">
+ <dc:Bounds x="429" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0ryxuei" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.14.0">
+ <bpmn:process id="tempest" name="tempest" isExecutable="true" camunda:versionTag="1">
+ <bpmn:startEvent id="StartEvent_1" name="ScriptExecutionStartingPoint">
+ <bpmn:outgoing>SequenceFlow_05ci0iu</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="Task_19usii1" name="TempestScriptExecutorTask" camunda:delegateExpression="#{tempestRemoteScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_0envlli</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ssw8fq</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:serviceTask id="Task_0ss7pht" name="TemestDeploymentverfier" camunda:delegateExpression="#{tempestRemoteDeploymentVerificationDelegate}">
+ <bpmn:incoming>SequenceFlow_1ssw8fq</bpmn:incoming>
+ </bpmn:serviceTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1ssw8fq" sourceRef="Task_19usii1" targetRef="Task_0ss7pht" />
+ <bpmn:sequenceFlow id="SequenceFlow_0envlli" sourceRef="Task_1ahdja4" targetRef="Task_19usii1" />
+ <bpmn:sequenceFlow id="SequenceFlow_05ci0iu" sourceRef="StartEvent_1" targetRef="Task_1ahdja4" />
+ <bpmn:serviceTask id="Task_1ahdja4" name="TempestScriptExecutorTask" camunda:delegateExpression="#{tempestScriptExecutorTaskDelegate}">
+ <bpmn:incoming>SequenceFlow_05ci0iu</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0envlli</bpmn:outgoing>
+ </bpmn:serviceTask>
+ <bpmn:textAnnotation id="TextAnnotation_1p71e63">
+ <bpmn:text>Rest</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0bjstyh" sourceRef="StartEvent_1" targetRef="TextAnnotation_1p71e63" />
+ <bpmn:textAnnotation id="TextAnnotation_00kckqx">
+ <bpmn:text>Script execution Task</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_16sojmg" sourceRef="Task_19usii1" targetRef="TextAnnotation_00kckqx" />
+ <bpmn:textAnnotation id="TextAnnotation_0zgafn7">
+ <bpmn:text>Deployment verifier</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0h3xbpb" sourceRef="Task_0ss7pht" targetRef="TextAnnotation_0zgafn7" />
+ <bpmn:textAnnotation id="TextAnnotation_04jvs8x">
+ <bpmn:text>File transfer script</bpmn:text>
+ </bpmn:textAnnotation>
+ <bpmn:association id="Association_0liuxn1" sourceRef="Task_1ahdja4" targetRef="TextAnnotation_04jvs8x" />
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="tempest">
+ <bpmndi:BPMNShape id="TextAnnotation_1p71e63_di" bpmnElement="TextAnnotation_1p71e63">
+ <dc:Bounds x="339" y="182" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0bjstyh_di" bpmnElement="Association_0bjstyh">
+ <di:waypoint x="325" y="272" />
+ <di:waypoint x="376" y="212" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_00kckqx_di" bpmnElement="TextAnnotation_00kckqx">
+ <dc:Bounds x="557" y="166" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_16sojmg_di" bpmnElement="Association_16sojmg">
+ <di:waypoint x="624" y="246" />
+ <di:waypoint x="613" y="208" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+ <dc:Bounds x="295" y="268" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="270" y="304" width="90" height="24" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ServiceTask_0y4nqij_di" bpmnElement="Task_19usii1">
+ <dc:Bounds x="585" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="TextAnnotation_0zgafn7_di" bpmnElement="TextAnnotation_0zgafn7">
+ <dc:Bounds x="711" y="176" width="100" height="42" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0h3xbpb_di" bpmnElement="Association_0h3xbpb">
+ <di:waypoint x="774" y="246" />
+ <di:waypoint x="767" y="218" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_0pazttq_di" bpmnElement="Task_0ss7pht">
+ <dc:Bounds x="735" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1ssw8fq_di" bpmnElement="SequenceFlow_1ssw8fq">
+ <di:waypoint x="685" y="286" />
+ <di:waypoint x="735" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="665" y="265" width="90" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0envlli_di" bpmnElement="SequenceFlow_0envlli">
+ <di:waypoint x="529" y="286" />
+ <di:waypoint x="585" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="557" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05ci0iu_di" bpmnElement="SequenceFlow_05ci0iu">
+ <di:waypoint x="331" y="286" />
+ <di:waypoint x="429" y="286" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="380" y="265" width="0" height="12" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="TextAnnotation_04jvs8x_di" bpmnElement="TextAnnotation_04jvs8x">
+ <dc:Bounds x="443" y="172" width="100" height="30" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="Association_0liuxn1_di" bpmnElement="Association_0liuxn1">
+ <di:waypoint x="485" y="246" />
+ <di:waypoint x="491" y="202" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ServiceTask_1jrhup4_di" bpmnElement="Task_1ahdja4">
+ <dc:Bounds x="429" y="246" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>