Author: nickboldt
Date: 2012-04-23 15:01:33 -0400 (Mon, 23 Apr 2012)
New Revision: 40421
Added:
trunk/build/aggregate/soatests-site/.gitignore
trunk/build/aggregate/soatests-site/features/
trunk/build/aggregate/soatests-site/features/.gitignore
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/.gitignore
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/build.properties
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/epl-v10.html
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/feature.xml
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/pom.xml
trunk/build/aggregate/soatests-site/features/pom.xml
trunk/build/aggregate/soatests-site/site/
trunk/build/aggregate/soatests-site/site/.gitignore
trunk/build/aggregate/soatests-site/site/associate.properties
trunk/build/aggregate/soatests-site/site/index.html
trunk/build/aggregate/soatests-site/site/pom.xml
trunk/build/aggregate/soatests-site/site/site.xml
trunk/build/aggregate/soatests-site/tests/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/.classpath
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/.gitignore
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/META-INF/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/META-INF/MANIFEST.MF
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/build.properties
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/pom.xml
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/BPMN20.xsd
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/BPMNDI.xsd
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/DC.xsd
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/DI.xsd
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/Semantic.xsd
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/project.properties
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/Activator.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/DroolsAllBotTests.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DecisionTableTest.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DomainSpecificLanguageEditorTest.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DroolsRulesEditorTest.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DroolsViewsTest.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/GuidedDroolsRulesEditorTest.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/GuvnorRepositoriesTest.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsProject.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsRules.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsRuntime.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/OpenDroolsPerspective.java
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/RuleFlowTest.java
trunk/build/aggregate/soatests-site/tests/pom.xml
Removed:
trunk/build/aggregate/soatests-site/associate.properties
trunk/build/aggregate/soatests-site/index.html
trunk/build/aggregate/soatests-site/site.xml
Modified:
trunk/build/aggregate/soatests-site/pom.xml
Log:
add org.jboss.tools.drools.ui.bot.test and org.jboss.tools.drools.test.feature to
soatests-site so that they aren't needed on the old bottests site
Added: trunk/build/aggregate/soatests-site/.gitignore
===================================================================
--- trunk/build/aggregate/soatests-site/.gitignore (rev 0)
+++ trunk/build/aggregate/soatests-site/.gitignore 2012-04-23 19:01:33 UTC (rev 40421)
@@ -0,0 +1,2 @@
+.project
+.settings/
Deleted: trunk/build/aggregate/soatests-site/associate.properties
===================================================================
--- trunk/build/aggregate/soatests-site/associate.properties 2012-04-23 18:02:44 UTC (rev
40420)
+++ trunk/build/aggregate/soatests-site/associate.properties 2012-04-23 19:01:33 UTC (rev
40421)
@@ -1,7 +0,0 @@
-# options: Nightly Build (default), Development Milestone, Stable Release
-#update.site.description=Nightly Build
-#update.site.description=Development Milestone
-#update.site.version=3.2.0.M2.2010-07-16_13-26-18-H21
-
-# associate sites to add to the resulting repo
-associate.sites=http://download.jboss.org/jbosstools/updates/indigo/SR2/,http://download.jboss.org/jbosstools/updates/development/indigo/,http://download.jboss.org/jbosstools/updates/development/indigo/soa-tooling/
Added: trunk/build/aggregate/soatests-site/features/.gitignore
===================================================================
--- trunk/build/aggregate/soatests-site/features/.gitignore (rev
0)
+++ trunk/build/aggregate/soatests-site/features/.gitignore 2012-04-23 19:01:33 UTC (rev
40421)
@@ -0,0 +1,2 @@
+.settings/
+.project
Added:
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/.gitignore
===================================================================
---
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/.gitignore
(rev 0)
+++
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/.gitignore 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1 @@
+target/
Added:
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/build.properties
===================================================================
---
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/build.properties
(rev 0)
+++
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/build.properties 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,3 @@
+bin.includes = feature.xml
+src.includes = feature.xml,\
+ build.properties
Added:
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/epl-v10.html
===================================================================
---
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/epl-v10.html
(rev 0)
+++
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/epl-v10.html 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1" />
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+ body {
+ size: 8.5in 11.0in;
+ margin: 0.25in 0.5in 0.25in 0.5in;
+ tab-interval: 0.5in;
+ }
+ p {
+ margin-left: auto;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ }
+ p.list {
+ margin-left: 0.5in;
+ margin-top: 0.05em;
+ margin-bottom: 0.05em;
+ }
+ </style>
+
+</head>
+
+<body lang="EN-US">
+
+<p align=center><b>Eclipse Public License - v 1.0</b></p>
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
+AGREEMENT.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">where such changes and/or additions to the Program
+originate from and are distributed by that particular Contributor. A
+Contribution 'originates' from a Contributor if it was added to the
+Program by such Contributor itself or anyone acting on such
+Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"Licensed Patents" mean patent claims licensable by a
+Contributor which are necessarily infringed by the use or sale of its
+Contribution alone or when combined with the Program.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">a) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free copyright license to reproduce, prepare derivative works
+of, publicly display, publicly perform, distribute and sublicense the
+Contribution of such Contributor, if any, and such derivative works, in
+source code and object code form.</p>
+
+<p class="list">b) Subject to the terms of this Agreement, each
+Contributor hereby grants Recipient a non-exclusive, worldwide,
+royalty-free patent license under Licensed Patents to make, use, sell,
+offer to sell, import and otherwise transfer the Contribution of such
+Contributor, if any, in source code and object code form. This patent
+license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other
+combinations which include the Contribution. No hardware per se is
+licensed hereunder.</p>
+
+<p class="list">c) Recipient understands that although each Contributor
+grants the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.</p>
+
+<p class="list">d) Each Contributor represents that to its knowledge it
+has sufficient copyright rights in its Contribution, if any, to grant
+the copyright license set forth in this Agreement.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all Contributors
+all warranties and conditions, express and implied, including warranties
+or conditions of title and non-infringement, and implied warranties or
+conditions of merchantability and fitness for a particular purpose;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement;
and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and
+indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses")
+arising from claims, lawsuits and other legal actions brought by a third
+party against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In
+order to qualify, an Indemnified Contributor must: a) promptly notify
+the Commercial Contributor in writing of such claim, and b) allow the
+Commercial Contributor to control, and cooperate with the Commercial
+Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own
+expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to
+the risks and costs of program errors, compliance with applicable laws,
+damage to or loss of data, programs or equipment, and unavailability or
+interruption of operations.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the
+date such litigation is filed.</p>
+
+<p>All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of time
+after becoming aware of such noncompliance. If all Recipient's rights
+under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive.</p>
+
+<p>Everyone is permitted to copy and distribute copies of this
+Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The
+Agreement Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other than the
+Agreement Steward has the right to modify this Agreement. The Eclipse
+Foundation is the initial Agreement Steward. The Eclipse Foundation may
+assign the responsibility to serve as the Agreement Steward to a
+suitable separate entity. Each new version of the Agreement will be
+given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version
+of the Agreement is published, Contributor may elect to distribute the
+Program (including its Contributions) under the new version. Except as
+expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
+rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under this
+Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+</body>
+
+</html>
Added:
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/feature.xml
===================================================================
---
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/feature.xml
(rev 0)
+++
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/feature.xml 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature id="org.jboss.tools.drools.test.feature" label="JBoss Tools -
SOA Tooling - Drools Tests" version="1.0.0.qualifier">
+
+ <description
url="http://www.jboss.org/tools">
+ JBoss Tools - SOA Tooling - Drools Tests
+ </description>
+
+ <copyright>
+ Copyright (c) 2011 Red Hat, Inc. and Exadel, Inc.
+Distributed under license by JBoss by Red Hat. All rights reserved.
+This program is made available under the terms of the
+Eclipse Public License v1.0 which accompanies this distribution,
+and is available at
http://www.eclipse.org/legal/epl-v10.html
+Contributors:
+JBoss by Red Hat and Exadel, Inc. - initial API and implementation
+ </copyright>
+
+ <license>
+ Red Hat, Inc. licenses these features and plugins to you under
+certain open source licenses (or aggregations of such licenses), which
+in a particular case may include the Eclipse Public License, the GNU
+Lesser General Public License, and/or certain other open source
+licenses. For precise licensing details, consult the corresponding
+source code, or contact Red Hat Legal Affairs, 1801 Varsity Drive,
+Raleigh NC 27606 USA.
+ </license>
+
+ <plugin id="org.jboss.tools.drools.ui.bot.test" download-size="0"
install-size="0" version="0.0.0" />
+</feature>
Added:
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/pom.xml
===================================================================
---
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/pom.xml
(rev 0)
+++
trunk/build/aggregate/soatests-site/features/org.jboss.tools.drools.test.feature/pom.xml 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+ <parent>
+ <groupId>org.jboss.tools.soa-tooling</groupId>
+ <artifactId>org.jboss.tools.soa-tooling.tests.features</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.drools.test.feature</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+</project>
Added: trunk/build/aggregate/soatests-site/features/pom.xml
===================================================================
--- trunk/build/aggregate/soatests-site/features/pom.xml (rev 0)
+++ trunk/build/aggregate/soatests-site/features/pom.xml 2012-04-23 19:01:33 UTC (rev
40421)
@@ -0,0 +1,16 @@
+<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>
+ <parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.site.soa-tooling.tests.root</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.jboss.tools.soa-tooling</groupId>
+ <artifactId>org.jboss.tools.soa-tooling.tests.features</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <modules>
+ <module>org.jboss.tools.drools.test.feature</module>
+ </modules>
+</project>
Deleted: trunk/build/aggregate/soatests-site/index.html
===================================================================
--- trunk/build/aggregate/soatests-site/index.html 2012-04-23 18:02:44 UTC (rev 40420)
+++ trunk/build/aggregate/soatests-site/index.html 2012-04-23 19:01:33 UTC (rev 40421)
@@ -1,289 +0,0 @@
-<html>
-<head>
-<title>JBoss Tools - SOA Tooling Tests - Nightly Build Update Site</title>
-<style>
-@import
url("http://download.jboss.org/jbosstools/updates/web/site.css");
-</style>
-</head>
-<body marginheight="0" marginwidth="0" leftmargin="0"
topmargin="0">
-<center>
-<table marginheight="0" marginwidth="0" leftmargin="0"
topmargin="0"
- cellspacing="0" cellpadding="0" width="920"
class="bodyText">
- <tr>
- <td colspan="3"><img
-
src="https://www.jboss.org/dms/tools/images/tools-banner.png"
/></td>
- </tr>
- <tr>
- <td>      </td>
- <td>      </td>
- <td>      </td>
- </tr>
- <tr>
- <td>      </td>
- <td>
- <h2 class="title">JBoss Tools - SOA Tooling Tests - Nightly Build
Update Site</h2>
- <table width="100%">
- <tr class="header">
- <td class="sub-header" width="100%"><span>Latest
Build</span></td>
- </tr>
-
- <tr class="light-row" style="height: 30px">
- <td class="bodyText">
- <p class="bodyText">This is the <b>Nightly Build</b>
- Update Site for JBoss Tools - SOA Tooling Tests.
- <blockquote style="border: 1px dashed #1778be; padding: 2px">
- <ol>
- <li>To <a class="link"
-
href="http://www.jboss.org/tools/download/installation/update_3_3&qu...
- from this site, start up Eclipse 3.7, then do:
- <ul>
- <code><strong>Help > Install New Software...
></strong></code>
- </ul>
- </li>
- <li>Copy this site's URL into Eclipse, and hit Enter.</li>
- <li>When the site loads, select the features to install,
- or click the <code><strong>Select All</strong></code>
button.</li>
- <li>To properly resolve all dependencies, check
- <ul><code><strong>[x] Contact all update sites during install
to find required software</strong></code></ul>
-
- <li>Click <code><strong>Next</strong></code>,
agree to the license
- terms, and install.</li>
-
- <p class="bodyText">
- You can also download JBoss Tools as individual zips for
- offline installation. See <a class="link"
-
href="http://www.jboss.org/tools/download">JBoss Tools
- Downloads</a>.<br /> If you downloaded this site as a zip, see
- <a href="README.installation.txt">Installation
README</a>.
- See also <a
-
href="http://www.jboss.org/tools/download/installation">Inst...
- methods</a>.
- </p>
- </ol>
- </blockquote>
- </td>
- </tr>
- </table>
- </td>
- <td>      </td>
- </tr>
- <tr>
- <td></td>
- <td>
- <table
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xalan="http://xml.apache.org/xalan" border="0"
cellpadding="0" cellspacing="2">
-<tr style="background-color:#DDDDDD">
-<th style="font-size:small">Feature</th>
-<th style="font-size:small">Version</th>
-<th style="font-size:small">
- Feature Categor(ies)
- </th>
-</tr>
-<tr style="background-color:
- #EEEEEE
- ">
-<td class="rowLine">
-<a style="font-size:x-small"
href="features/org.jboss.tools.bpel.test.feature_1.2.0.v20120401-2114-H720-Beta3.jar">org.jboss.tools.bpel.test.feature</a>
-</td>
-<td>
-<span
style="font-size:x-small">1.2.0.v20120401-2114-H720-Beta3</span>
-</td>
-<td>
-<span style="font-size:x-small">
- |
- JBoss Tools - SOA Tooling Tests</span>
-</td>
-</tr>
-<tr style="background-color:
- #FFFFFF
- ">
-<td class="rowLine">
-<a style="font-size:x-small"
href="features/org.jboss.tools.esb.test.feature_1.5.0.v20120401-2137-H825-Beta3.jar">org.jboss.tools.esb.test.feature</a>
-</td>
-<td>
-<span
style="font-size:x-small">1.5.0.v20120401-2137-H825-Beta3</span>
-</td>
-<td>
-<span style="font-size:x-small">
- |
- JBoss Tools - SOA Tooling Tests</span>
-</td>
-</tr>
-<tr style="background-color:
- #EEEEEE
- ">
-<td class="rowLine">
-<a style="font-size:x-small"
href="features/org.jboss.tools.flow.common.test.feature_0.0.1.v20120401-2106-H672-Beta3.jar">org.jboss.tools.flow.common.test.feature</a>
-</td>
-<td>
-<span
style="font-size:x-small">0.0.1.v20120401-2106-H672-Beta3</span>
-</td>
-<td>
-<span style="font-size:x-small">
- |
- JBoss Tools - SOA Tooling Tests</span>
-</td>
-</tr>
-<tr style="background-color:
- #FFFFFF
- ">
-<td class="rowLine">
-<a style="font-size:x-small"
href="features/org.jboss.tools.jbpm3.test.feature_3.3.0.v20120401-2122-H700-Beta3.jar">org.jboss.tools.jbpm3.test.feature</a>
-</td>
-<td>
-<span
style="font-size:x-small">3.3.0.v20120401-2122-H700-Beta3</span>
-</td>
-<td>
-<span style="font-size:x-small">
- |
- JBoss Tools - SOA Tooling Tests</span>
-</td>
-</tr>
-<tr style="background-color:
- #EEEEEE
- ">
-<td class="rowLine">
-<a style="font-size:x-small"
href="features/org.jboss.tools.jbpm4.test.feature_4.4.0.v20120401-2122-H700-Beta3.jar">org.jboss.tools.jbpm4.test.feature</a>
-</td>
-<td>
-<span
style="font-size:x-small">4.4.0.v20120401-2122-H700-Beta3</span>
-</td>
-<td>
-<span style="font-size:x-small">
- |
- JBoss Tools - SOA Tooling Tests</span>
-</td>
-</tr>
-<tr style="background-color:
- #FFFFFF
- ">
-<td class="rowLine">
-<a style="font-size:x-small"
href="features/org.jboss.tools.modeshape.rest.test.feature_1.1.0.v20120401-2114-H648-Beta3.jar">org.jboss.tools.modeshape.rest.test.feature</a>
-</td>
-<td>
-<span
style="font-size:x-small">1.1.0.v20120401-2114-H648-Beta3</span>
-</td>
-<td>
-<span style="font-size:x-small">
- |
- JBoss Tools - SOA Tooling Tests</span>
-</td>
-</tr>
-<tr style="background-color:
- #EEEEEE
- ">
-<td class="rowLine">
-<a style="font-size:x-small"
href="features/org.jboss.tools.runtime.soa.test.feature_1.3.0.v20120404-0454-Beta3.jar">org.jboss.tools.runtime.soa.test.feature</a>
-</td>
-<td>
-<span style="font-size:x-small">1.3.0.v20120404-0454-Beta3</span>
-</td>
-<td>
-<span style="font-size:x-small">
- |
- JBoss Tools - SOA Tooling Tests</span>
-</td>
-</tr>
-<tr style="background-color:
- #FFFFFF
- ">
-<td class="rowLine">
-<a style="font-size:x-small"
href="features/org.jboss.tools.runtime.soa.test.feature.source_1.3.0.v20120404-0454-Beta3.jar">org.jboss.tools.runtime.soa.test.feature.source</a>
-</td>
-<td>
-<span style="font-size:x-small">1.3.0.v20120404-0454-Beta3</span>
-</td>
-<td>
-<span style="font-size:x-small">
- |
- JBoss Tools - SOA Tooling Tests</span>
-</td>
-</tr>
-<tr style="background-color:#DDDDDD">
-<th style="font-size:small" colspan="1">Metadata</th>
-<th style="font-size:small" colspan="1"/>
-<th style="font-size:small" colspan="1"/>
-</tr>
-<tr style="background-color:#EEEEEE">
-<td colspan="1" class="rowLine">
-<a style="font-size:x-small"
href="site.xml">site.xml</a>
- ::
- <a style="font-size:x-small"
href="artifacts.jar">artifacts.jar</a>
- ::
- <a style="font-size:x-small"
href="content.jar">content.jar</a>
-</td>
-<td colspan="1" class="rowLine">
- ::
- <a style="font-size:x-small"
href="plugins/">plugins</a>
- ::
- <a style="font-size:x-small"
href="features/">features</a>
-</td>
-<td colspan="1" class="rowLine">
-
- :: <a href="site.properties"
style="font-size:x-small">site.properties</a>
- </td>
-</tr>
-</table><br
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xalan="http://xml.apache.org/xalan"/>
-
- </td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <td>
- <table width="100%">
- <tr class="header">
- <td class="sub-header" width="100%"><span>
Installation
- Types</span></td>
- </tr>
- <tr class="light-row" style="height: 30px">
- <td class="bodyText">
- <p class="bodyText">Depending on how close to the bleeding edge
- you like to be, there are several types of releases available.</p>
- <br />
-
- </td>
- </tr>
-
- <tr class="dark-row" style="height: 30px">
- <td class="bodyText">
- <h4>Stable Releases</h4>
-
- <p><a
href="https://www.jboss.org/tools/download/stable.html">Stable
- releases</a> are - as indicated by their name - stable.</p><br/>
-
- </td>
- </tr>
-
- <tr class="light-row" style="height: 30px">
- <td class="bodyText">
- <h4>Development Milestones</h4>
-
- <p><a
href="https://www.jboss.org/tools/download/dev.html">Develop...
- builds</a>, released once per milestone and only a few times a year, are
- fairly stable, but there may be some things which do not yet work.
- If you would like to try one of these milestones, we'd greatly
- appreciate the assistance in testing and <a
-
href="https://jira.jboss.org/jira/browse/JBIDE">reporting of
- issues in our issue tracker</a>.</p><br/>
-
- </td>
- </tr>
-
- <tr class="dark-row" style="height: 30px">
- <td class="bodyText">
- <h4>Nightly Builds</h4>
-
- <p>The <a
-
href="https://www.jboss.org/tools/download/nightly.html">ble...
- edge</a> contains the latest and greatest new features, but nothing is
- stable or guaranteed - yet. If you're using a Milestone and need a
- fix, you can update to the latest Nightly, or wait for the next
- Milestone.</p><br/>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-</table>
-</center>
-</html>
Modified: trunk/build/aggregate/soatests-site/pom.xml
===================================================================
--- trunk/build/aggregate/soatests-site/pom.xml 2012-04-23 18:02:44 UTC (rev 40420)
+++ trunk/build/aggregate/soatests-site/pom.xml 2012-04-23 19:01:33 UTC (rev 40421)
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<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">
+<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>
<parent>
<groupId>org.jboss.tools</groupId>
@@ -8,80 +7,23 @@
<version>0.0.2-SNAPSHOT</version>
</parent>
<groupId>org.jboss.tools</groupId>
- <artifactId>org.jboss.tools.site.soa-tooling.tests</artifactId>
- <name>JBoss Tools - SOA Tooling Tests Site</name>
- <packaging>eclipse-update-site</packaging>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>install</id>
- <phase>install</phase>
- <configuration>
- <quiet>true</quiet>
- <tasks>
- <!-- called AFTER generating update site + zip to add in extra content -->
- <ant antfile="build.xml" target="basic.build"
dir="../">
- <property name="output.dir" value="${basedir}" />
- <property name="inputRepo"
- value="${jbosstools-nightly-staging-composite}" />
- <property name="update.site.name" value="JBoss Tools - SOA
Tooling Tests"/>
- <property name="JBT_VERSION" value="${JBT_VERSION}"
/>
- <property name="BUILD_ALIAS" value="${BUILD_ALIAS}"
/>
- </ant>
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- <dependencies>
- <dependency>
- <groupId>commons-net</groupId>
- <artifactId>commons-net</artifactId>
- <version>1.4.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant</artifactId>
- <version>1.8.2</version>
- </dependency>
- <dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant-nodeps</artifactId>
- <version>1.8.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant-trax</artifactId>
- <version>1.8.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant-commons-net</artifactId>
- <version>1.8.2</version>
- </dependency>
- <dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant-apache-regexp</artifactId>
- <version>1.8.2</version>
- </dependency>
- <dependency>
- <groupId>ant-contrib</groupId>
- <artifactId>ant-contrib</artifactId>
- <version>1.0b3</version>
- </dependency>
- </dependencies>
- </plugin>
- </plugins>
- </build>
+ <artifactId>org.jboss.tools.site.soa-tooling.tests.root</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>JBoss Tools - SOA Tooling Tests</name>
+ <packaging>pom</packaging>
+ <!-- This site build depends on both the Core and SOA Tooling composite sites, plus
the usual upstream dependencies and TP.
+ mvn clean install
+ or
+ mvn clean install -Pdefault,local.site
-Dlocal.site=file://home/nboldt/tmp/JBDS_REPO_Indigo/
+ -->
+ <modules>
+ <module>tests</module>
+ <module>features</module>
+ <module>site</module>
+ </modules>
<repositories>
+ <!-- JBT nightly components -->
<repository>
<id>jbosstools-nightly-staging-composite</id>
<url>${jbosstools-nightly-staging-composite}</url>
@@ -104,6 +46,7 @@
<enabled>true</enabled>
</releases>
</repository>
+ <!-- JBT target platform -->
<repository>
<id>jbosstools-target-site</id>
<url>${jbosstools-target-site}</url>
@@ -115,16 +58,5 @@
<enabled>true</enabled>
</releases>
</repository>
- <repository>
- <id>jboss-requirements-composite-mirror</id>
- <url>${jboss-requirements-composite-mirror}</url>
- <layout>p2</layout>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
</repositories>
</project>
Added: trunk/build/aggregate/soatests-site/site/.gitignore
===================================================================
--- trunk/build/aggregate/soatests-site/site/.gitignore (rev 0)
+++ trunk/build/aggregate/soatests-site/site/.gitignore 2012-04-23 19:01:33 UTC (rev
40421)
@@ -0,0 +1,5 @@
+.settings/
+.project
+target/
+.classpath
+zips/
Copied: trunk/build/aggregate/soatests-site/site/associate.properties (from rev 40420,
trunk/build/aggregate/soatests-site/associate.properties)
===================================================================
--- trunk/build/aggregate/soatests-site/site/associate.properties
(rev 0)
+++ trunk/build/aggregate/soatests-site/site/associate.properties 2012-04-23 19:01:33 UTC
(rev 40421)
@@ -0,0 +1,7 @@
+# options: Nightly Build (default), Development Milestone, Stable Release
+#update.site.description=Nightly Build
+#update.site.description=Development Milestone
+#update.site.version=3.2.0.M2.2010-07-16_13-26-18-H21
+
+# associate sites to add to the resulting repo
+associate.sites=http://download.jboss.org/jbosstools/updates/indigo/SR2/,http://download.jboss.org/jbosstools/updates/development/indigo/,http://download.jboss.org/jbosstools/updates/development/indigo/soa-tooling/
Copied: trunk/build/aggregate/soatests-site/site/index.html (from rev 40420,
trunk/build/aggregate/soatests-site/index.html)
===================================================================
--- trunk/build/aggregate/soatests-site/site/index.html (rev 0)
+++ trunk/build/aggregate/soatests-site/site/index.html 2012-04-23 19:01:33 UTC (rev
40421)
@@ -0,0 +1,289 @@
+<html>
+<head>
+<title>JBoss Tools - SOA Tooling Tests - Nightly Build Update Site</title>
+<style>
+@import
url("http://download.jboss.org/jbosstools/updates/web/site.css");
+</style>
+</head>
+<body marginheight="0" marginwidth="0" leftmargin="0"
topmargin="0">
+<center>
+<table marginheight="0" marginwidth="0" leftmargin="0"
topmargin="0"
+ cellspacing="0" cellpadding="0" width="920"
class="bodyText">
+ <tr>
+ <td colspan="3"><img
+
src="https://www.jboss.org/dms/tools/images/tools-banner.png"
/></td>
+ </tr>
+ <tr>
+ <td>      </td>
+ <td>      </td>
+ <td>      </td>
+ </tr>
+ <tr>
+ <td>      </td>
+ <td>
+ <h2 class="title">JBoss Tools - SOA Tooling Tests - Nightly Build
Update Site</h2>
+ <table width="100%">
+ <tr class="header">
+ <td class="sub-header" width="100%"><span>Latest
Build</span></td>
+ </tr>
+
+ <tr class="light-row" style="height: 30px">
+ <td class="bodyText">
+ <p class="bodyText">This is the <b>Nightly Build</b>
+ Update Site for JBoss Tools - SOA Tooling Tests.
+ <blockquote style="border: 1px dashed #1778be; padding: 2px">
+ <ol>
+ <li>To <a class="link"
+
href="http://www.jboss.org/tools/download/installation/update_3_3&qu...
+ from this site, start up Eclipse 3.7, then do:
+ <ul>
+ <code><strong>Help > Install New Software...
></strong></code>
+ </ul>
+ </li>
+ <li>Copy this site's URL into Eclipse, and hit Enter.</li>
+ <li>When the site loads, select the features to install,
+ or click the <code><strong>Select All</strong></code>
button.</li>
+ <li>To properly resolve all dependencies, check
+ <ul><code><strong>[x] Contact all update sites during install
to find required software</strong></code></ul>
+
+ <li>Click <code><strong>Next</strong></code>,
agree to the license
+ terms, and install.</li>
+
+ <p class="bodyText">
+ You can also download JBoss Tools as individual zips for
+ offline installation. See <a class="link"
+
href="http://www.jboss.org/tools/download">JBoss Tools
+ Downloads</a>.<br /> If you downloaded this site as a zip, see
+ <a href="README.installation.txt">Installation
README</a>.
+ See also <a
+
href="http://www.jboss.org/tools/download/installation">Inst...
+ methods</a>.
+ </p>
+ </ol>
+ </blockquote>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td>      </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <table
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xalan="http://xml.apache.org/xalan" border="0"
cellpadding="0" cellspacing="2">
+<tr style="background-color:#DDDDDD">
+<th style="font-size:small">Feature</th>
+<th style="font-size:small">Version</th>
+<th style="font-size:small">
+ Feature Categor(ies)
+ </th>
+</tr>
+<tr style="background-color:
+ #EEEEEE
+ ">
+<td class="rowLine">
+<a style="font-size:x-small"
href="features/org.jboss.tools.bpel.test.feature_1.2.0.v20120401-2114-H720-Beta3.jar">org.jboss.tools.bpel.test.feature</a>
+</td>
+<td>
+<span
style="font-size:x-small">1.2.0.v20120401-2114-H720-Beta3</span>
+</td>
+<td>
+<span style="font-size:x-small">
+ |
+ JBoss Tools - SOA Tooling Tests</span>
+</td>
+</tr>
+<tr style="background-color:
+ #FFFFFF
+ ">
+<td class="rowLine">
+<a style="font-size:x-small"
href="features/org.jboss.tools.esb.test.feature_1.5.0.v20120401-2137-H825-Beta3.jar">org.jboss.tools.esb.test.feature</a>
+</td>
+<td>
+<span
style="font-size:x-small">1.5.0.v20120401-2137-H825-Beta3</span>
+</td>
+<td>
+<span style="font-size:x-small">
+ |
+ JBoss Tools - SOA Tooling Tests</span>
+</td>
+</tr>
+<tr style="background-color:
+ #EEEEEE
+ ">
+<td class="rowLine">
+<a style="font-size:x-small"
href="features/org.jboss.tools.flow.common.test.feature_0.0.1.v20120401-2106-H672-Beta3.jar">org.jboss.tools.flow.common.test.feature</a>
+</td>
+<td>
+<span
style="font-size:x-small">0.0.1.v20120401-2106-H672-Beta3</span>
+</td>
+<td>
+<span style="font-size:x-small">
+ |
+ JBoss Tools - SOA Tooling Tests</span>
+</td>
+</tr>
+<tr style="background-color:
+ #FFFFFF
+ ">
+<td class="rowLine">
+<a style="font-size:x-small"
href="features/org.jboss.tools.jbpm3.test.feature_3.3.0.v20120401-2122-H700-Beta3.jar">org.jboss.tools.jbpm3.test.feature</a>
+</td>
+<td>
+<span
style="font-size:x-small">3.3.0.v20120401-2122-H700-Beta3</span>
+</td>
+<td>
+<span style="font-size:x-small">
+ |
+ JBoss Tools - SOA Tooling Tests</span>
+</td>
+</tr>
+<tr style="background-color:
+ #EEEEEE
+ ">
+<td class="rowLine">
+<a style="font-size:x-small"
href="features/org.jboss.tools.jbpm4.test.feature_4.4.0.v20120401-2122-H700-Beta3.jar">org.jboss.tools.jbpm4.test.feature</a>
+</td>
+<td>
+<span
style="font-size:x-small">4.4.0.v20120401-2122-H700-Beta3</span>
+</td>
+<td>
+<span style="font-size:x-small">
+ |
+ JBoss Tools - SOA Tooling Tests</span>
+</td>
+</tr>
+<tr style="background-color:
+ #FFFFFF
+ ">
+<td class="rowLine">
+<a style="font-size:x-small"
href="features/org.jboss.tools.modeshape.rest.test.feature_1.1.0.v20120401-2114-H648-Beta3.jar">org.jboss.tools.modeshape.rest.test.feature</a>
+</td>
+<td>
+<span
style="font-size:x-small">1.1.0.v20120401-2114-H648-Beta3</span>
+</td>
+<td>
+<span style="font-size:x-small">
+ |
+ JBoss Tools - SOA Tooling Tests</span>
+</td>
+</tr>
+<tr style="background-color:
+ #EEEEEE
+ ">
+<td class="rowLine">
+<a style="font-size:x-small"
href="features/org.jboss.tools.runtime.soa.test.feature_1.3.0.v20120404-0454-Beta3.jar">org.jboss.tools.runtime.soa.test.feature</a>
+</td>
+<td>
+<span style="font-size:x-small">1.3.0.v20120404-0454-Beta3</span>
+</td>
+<td>
+<span style="font-size:x-small">
+ |
+ JBoss Tools - SOA Tooling Tests</span>
+</td>
+</tr>
+<tr style="background-color:
+ #FFFFFF
+ ">
+<td class="rowLine">
+<a style="font-size:x-small"
href="features/org.jboss.tools.runtime.soa.test.feature.source_1.3.0.v20120404-0454-Beta3.jar">org.jboss.tools.runtime.soa.test.feature.source</a>
+</td>
+<td>
+<span style="font-size:x-small">1.3.0.v20120404-0454-Beta3</span>
+</td>
+<td>
+<span style="font-size:x-small">
+ |
+ JBoss Tools - SOA Tooling Tests</span>
+</td>
+</tr>
+<tr style="background-color:#DDDDDD">
+<th style="font-size:small" colspan="1">Metadata</th>
+<th style="font-size:small" colspan="1"/>
+<th style="font-size:small" colspan="1"/>
+</tr>
+<tr style="background-color:#EEEEEE">
+<td colspan="1" class="rowLine">
+<a style="font-size:x-small"
href="site.xml">site.xml</a>
+ ::
+ <a style="font-size:x-small"
href="artifacts.jar">artifacts.jar</a>
+ ::
+ <a style="font-size:x-small"
href="content.jar">content.jar</a>
+</td>
+<td colspan="1" class="rowLine">
+ ::
+ <a style="font-size:x-small"
href="plugins/">plugins</a>
+ ::
+ <a style="font-size:x-small"
href="features/">features</a>
+</td>
+<td colspan="1" class="rowLine">
+
+ :: <a href="site.properties"
style="font-size:x-small">site.properties</a>
+ </td>
+</tr>
+</table><br
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xalan="http://xml.apache.org/xalan"/>
+
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <table width="100%">
+ <tr class="header">
+ <td class="sub-header" width="100%"><span>
Installation
+ Types</span></td>
+ </tr>
+ <tr class="light-row" style="height: 30px">
+ <td class="bodyText">
+ <p class="bodyText">Depending on how close to the bleeding edge
+ you like to be, there are several types of releases available.</p>
+ <br />
+
+ </td>
+ </tr>
+
+ <tr class="dark-row" style="height: 30px">
+ <td class="bodyText">
+ <h4>Stable Releases</h4>
+
+ <p><a
href="https://www.jboss.org/tools/download/stable.html">Stable
+ releases</a> are - as indicated by their name - stable.</p><br/>
+
+ </td>
+ </tr>
+
+ <tr class="light-row" style="height: 30px">
+ <td class="bodyText">
+ <h4>Development Milestones</h4>
+
+ <p><a
href="https://www.jboss.org/tools/download/dev.html">Develop...
+ builds</a>, released once per milestone and only a few times a year, are
+ fairly stable, but there may be some things which do not yet work.
+ If you would like to try one of these milestones, we'd greatly
+ appreciate the assistance in testing and <a
+
href="https://jira.jboss.org/jira/browse/JBIDE">reporting of
+ issues in our issue tracker</a>.</p><br/>
+
+ </td>
+ </tr>
+
+ <tr class="dark-row" style="height: 30px">
+ <td class="bodyText">
+ <h4>Nightly Builds</h4>
+
+ <p>The <a
+
href="https://www.jboss.org/tools/download/nightly.html">ble...
+ edge</a> contains the latest and greatest new features, but nothing is
+ stable or guaranteed - yet. If you're using a Milestone and need a
+ fix, you can update to the latest Nightly, or wait for the next
+ Milestone.</p><br/>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+</center>
+</html>
Copied: trunk/build/aggregate/soatests-site/site/pom.xml (from rev 40420,
trunk/build/aggregate/soatests-site/pom.xml)
===================================================================
--- trunk/build/aggregate/soatests-site/site/pom.xml (rev 0)
+++ trunk/build/aggregate/soatests-site/site/pom.xml 2012-04-23 19:01:33 UTC (rev 40421)
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+ <parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.site</artifactId>
+ <version>0.0.2-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.site.soa-tooling.tests</artifactId>
+ <name>JBoss Tools - SOA Tooling Tests Site</name>
+ <packaging>eclipse-update-site</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.7</version>
+ <executions>
+ <execution>
+ <id>install</id>
+ <phase>install</phase>
+ <configuration>
+ <quiet>true</quiet>
+ <tasks>
+ <!-- called AFTER generating update site + zip to add in extra content -->
+ <ant antfile="build.xml" target="basic.build"
dir="../../">
+ <property name="output.dir" value="${basedir}" />
+ <property name="inputRepo"
+ value="${jbosstools-nightly-staging-composite-soa-tooling}" />
+ <property name="update.site.name" value="JBoss Tools - SOA
Tooling Tests"/>
+ <property name="JBT_VERSION" value="${JBT_VERSION}"
/>
+ <property name="BUILD_ALIAS" value="${BUILD_ALIAS}"
/>
+ </ant>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>commons-net</groupId>
+ <artifactId>commons-net</artifactId>
+ <version>1.4.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant</artifactId>
+ <version>1.8.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant-nodeps</artifactId>
+ <version>1.8.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant-trax</artifactId>
+ <version>1.8.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant-commons-net</artifactId>
+ <version>1.8.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant-apache-regexp</artifactId>
+ <version>1.8.2</version>
+ </dependency>
+ <dependency>
+ <groupId>ant-contrib</groupId>
+ <artifactId>ant-contrib</artifactId>
+ <version>1.0b3</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+
+ <repositories>
+ <repository>
+ <id>jbosstools-nightly-staging-composite-soa-tooling</id>
+ <url>${jbosstools-nightly-staging-composite-soa-tooling}</url>
+ <layout>p2</layout>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ <!-- JBIDE-10670 - TODO: instead of upstream staging bits, use ${jbosstools-nightly}
? -->
+ <repository>
+ <id>jbosstools-nightly-staging-composite</id>
+ <url>${jbosstools-nightly-staging-composite}</url>
+ <layout>p2</layout>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ <repository>
+ <id>jbosstools-target-site</id>
+ <url>${jbosstools-target-site}</url>
+ <layout>p2</layout>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ <repository>
+ <id>jboss-requirements-composite-mirror</id>
+ <url>${jboss-requirements-composite-mirror}</url>
+ <layout>p2</layout>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ </repositories>
+</project>
Copied: trunk/build/aggregate/soatests-site/site/site.xml (from rev 40420,
trunk/build/aggregate/soatests-site/site.xml)
===================================================================
--- trunk/build/aggregate/soatests-site/site/site.xml (rev 0)
+++ trunk/build/aggregate/soatests-site/site/site.xml 2012-04-23 19:01:33 UTC (rev 40421)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+ <description>JBoss Tools 3.3 - SOA Tooling Tests</description>
+
+ <!-- PLEASE NOTE!
+ When updating this file, please be sure that it parses as valid XML before committing
it.
+ To test, just run `mvn clean install` in this folder.
+
+ To regenerate the list of included test features, do this:
+
+ $ cd ~/trunk; find . -mindepth 3 -maxdepth 3 -type d -name "*test*feature" |
sort | \
+ sed "s#\.\/.\+\/features\/\(.\+\)#<feature
url=\"features/\1_0.0.0.jar\" id=\"\1\"
version=\"0.0.0\"><category name=\"JBoss Tools - SOA Tooling
Tests\"/></feature>#g"
+ -->
+
+ <category-def name="JBoss Tools - SOA Tooling Tests" label="JBoss
Tools - SOA Tooling Tests">
+ <description>JBoss Tools - SOA Tooling Tests
+ </description>
+ </category-def>
+
+<feature url="features/org.jboss.tools.bpel.test.feature_0.0.0.jar"
id="org.jboss.tools.bpel.test.feature" version="0.0.0"><category
name="JBoss Tools - SOA Tooling Tests"/></feature>
+<feature url="features/org.jboss.tools.drools.test.feature_0.0.0.jar"
id="org.jboss.tools.drools.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.esb.test.feature_0.0.0.jar"
id="org.jboss.tools.esb.test.feature" version="0.0.0"><category
name="JBoss Tools - SOA Tooling Tests"/></feature>
+<feature url="features/org.jboss.tools.flow.common.test.feature_0.0.0.jar"
id="org.jboss.tools.flow.common.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.jbpm3.test.feature_0.0.0.jar"
id="org.jboss.tools.jbpm3.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.jbpm4.test.feature_0.0.0.jar"
id="org.jboss.tools.jbpm4.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature
url="features/org.jboss.tools.modeshape.rest.test.feature_0.0.0.jar"
id="org.jboss.tools.modeshape.rest.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.modeshape.jcr.test.feature_0.0.0.jar"
id="org.jboss.tools.modeshape.jcr.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.runtime.soa.test.feature_0.0.0.jar"
id="org.jboss.tools.runtime.soa.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+
+<!-- TODO: add source features
+<feature url="features/org.jboss.tools.bpel.test.feature.source_0.0.0.jar"
id="org.jboss.tools.bpel.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.drools.test.feature.source_0.0.0.jar"
id="org.jboss.tools.drools.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.esb.test.feature.source_0.0.0.jar"
id="org.jboss.tools.esb.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature
url="features/org.jboss.tools.flow.common.test.feature.source_0.0.0.jar"
id="org.jboss.tools.flow.common.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.jbpm3.test.feature.source_0.0.0.jar"
id="org.jboss.tools.jbpm3.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature url="features/org.jboss.tools.jbpm4.test.feature.source_0.0.0.jar"
id="org.jboss.tools.jbpm4.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature
url="features/org.jboss.tools.modeshape.rest.test.feature.source_0.0.0.jar"
id="org.jboss.tools.modeshape.rest.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+<feature
url="features/org.jboss.tools.modeshape.jcr.test.feature.source_0.0.0.jar"
id="org.jboss.tools.modeshape.jcr.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+-->
+<feature
url="features/org.jboss.tools.runtime.soa.test.feature.source_0.0.0.jar"
id="org.jboss.tools.runtime.soa.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+
+<!-- disabled/deprecated/not included
+<feature url="features/org.jboss.tools.smooks.test.feature_0.0.0.jar"
id="org.jboss.tools.smooks.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
+-->
+
+</site>
Deleted: trunk/build/aggregate/soatests-site/site.xml
===================================================================
--- trunk/build/aggregate/soatests-site/site.xml 2012-04-23 18:02:44 UTC (rev 40420)
+++ trunk/build/aggregate/soatests-site/site.xml 2012-04-23 19:01:33 UTC (rev 40421)
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
- <description>JBoss Tools 3.3 - SOA Tooling Tests</description>
-
- <!-- PLEASE NOTE!
- When updating this file, please be sure that it parses as valid XML before committing
it.
- To test, just run `mvn clean install` in this folder.
-
- To regenerate the list of included test features, do this:
-
- $ cd ~/trunk; find . -mindepth 3 -maxdepth 3 -type d -name "*test*feature" |
sort | \
- sed "s#\.\/.\+\/features\/\(.\+\)#<feature
url=\"features/\1_0.0.0.jar\" id=\"\1\"
version=\"0.0.0\"><category name=\"JBoss Tools - SOA Tooling
Tests\"/></feature>#g"
- -->
-
- <category-def name="JBoss Tools - SOA Tooling Tests" label="JBoss
Tools - SOA Tooling Tests">
- <description>JBoss Tools - SOA Tooling Tests
- </description>
- </category-def>
-
-<feature url="features/org.jboss.tools.bpel.test.feature_0.0.0.jar"
id="org.jboss.tools.bpel.test.feature" version="0.0.0"><category
name="JBoss Tools - SOA Tooling Tests"/></feature>
-<feature url="features/org.jboss.tools.esb.test.feature_0.0.0.jar"
id="org.jboss.tools.esb.test.feature" version="0.0.0"><category
name="JBoss Tools - SOA Tooling Tests"/></feature>
-<feature url="features/org.jboss.tools.flow.common.test.feature_0.0.0.jar"
id="org.jboss.tools.flow.common.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature url="features/org.jboss.tools.jbpm3.test.feature_0.0.0.jar"
id="org.jboss.tools.jbpm3.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature url="features/org.jboss.tools.jbpm4.test.feature_0.0.0.jar"
id="org.jboss.tools.jbpm4.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature
url="features/org.jboss.tools.modeshape.rest.test.feature_0.0.0.jar"
id="org.jboss.tools.modeshape.rest.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature url="features/org.jboss.tools.modeshape.jcr.test.feature_0.0.0.jar"
id="org.jboss.tools.modeshape.jcr.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature url="features/org.jboss.tools.runtime.soa.test.feature_0.0.0.jar"
id="org.jboss.tools.runtime.soa.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-
-<!-- TODO: add source features
-<feature url="features/org.jboss.tools.bpel.test.feature.source_0.0.0.jar"
id="org.jboss.tools.bpel.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature url="features/org.jboss.tools.esb.test.feature.source_0.0.0.jar"
id="org.jboss.tools.esb.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature
url="features/org.jboss.tools.flow.common.test.feature.source_0.0.0.jar"
id="org.jboss.tools.flow.common.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature url="features/org.jboss.tools.jbpm3.test.feature.source_0.0.0.jar"
id="org.jboss.tools.jbpm3.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature url="features/org.jboss.tools.jbpm4.test.feature.source_0.0.0.jar"
id="org.jboss.tools.jbpm4.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature
url="features/org.jboss.tools.modeshape.rest.test.feature.source_0.0.0.jar"
id="org.jboss.tools.modeshape.rest.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-<feature
url="features/org.jboss.tools.modeshape.jcr.test.feature.source_0.0.0.jar"
id="org.jboss.tools.modeshape.jcr.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
--->
-<feature
url="features/org.jboss.tools.runtime.soa.test.feature.source_0.0.0.jar"
id="org.jboss.tools.runtime.soa.test.feature.source"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
-
-<!-- disabled/deprecated/not included
-<feature url="features/org.jboss.tools.smooks.test.feature_0.0.0.jar"
id="org.jboss.tools.smooks.test.feature"
version="0.0.0"><category name="JBoss Tools - SOA Tooling
Tests"/></feature>
--->
-
-</site>
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/.classpath
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/.classpath
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/.classpath 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con"
path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="resources"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/.gitignore
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/.gitignore
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/.gitignore 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1 @@
+target
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/META-INF/MANIFEST.MF
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/META-INF/MANIFEST.MF
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/META-INF/MANIFEST.MF 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Drools UI SWTBot Tests
+Bundle-SymbolicName: org.jboss.tools.drools.ui.bot.test
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.jboss.tools.drools.ui.bot.test.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.jboss.tools.jst.ui.bot.test,
+ org.eclipse.swtbot.eclipse.core;bundle-version="2.0.0",
+ org.eclipse.swtbot.eclipse.finder;bundle-version="2.0.0",
+ org.eclipse.swtbot.swt.finder;bundle-version="2.0.0",
+ org.junit4;bundle-version="4.5.0",
+ org.jboss.tools.ui.bot.ext,
+ org.drools.eclipse;bundle-version="5.3.0",
+ org.eclipse.swtbot.eclipse.gef.finder,
+ org.apache.log4j;bundle-version="1.2.13"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: JBoss by Red Hat
+Import-Package: org.eclipse.ui.forms.widgets
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/build.properties
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/build.properties
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/build.properties 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,5 @@
+source.. = src/,\
+ resources/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/pom.xml
===================================================================
--- trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/pom.xml
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/pom.xml 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+ <parent>
+ <groupId>org.jboss.tools.soa-tooling</groupId>
+ <artifactId>org.jboss.tools.soa-tooling.tests</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.drools.ui.bot.test</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tychoVersion}</version>
+ <configuration>
+ <useUIThread>false</useUIThread>
+ <testSuite>org.jboss.tools.drools.ui.bot.test</testSuite>
+ <testClass>org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests</testClass>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/BPMN20.xsd
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/BPMN20.xsd
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/BPMN20.xsd 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema elementFormDefault="qualified"
attributeFormDefault="unqualified"
+
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
+
targetNamespace="http://www.omg.org/spec/BPMN/20100524/MODEL">
+
+ <xsd:import
namespace="http://www.omg.org/spec/BPMN/20100524/DI"
schemaLocation="BPMNDI.xsd"/>
+ <xsd:include schemaLocation="Semantic.xsd"/>
+
+ <xsd:element name="definitions" type="tDefinitions"/>
+ <xsd:complexType name="tDefinitions">
+ <xsd:sequence>
+ <xsd:element ref="import" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="extension" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="rootElement" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="bpmndi:BPMNDiagram" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="relationship" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"
use="optional"/>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="targetNamespace" type="xsd:anyURI"
use="required"/>
+ <xsd:attribute name="expressionLanguage" type="xsd:anyURI"
use="optional"
default="http://www.w3.org/1999/XPath"/>
+ <xsd:attribute name="typeLanguage" type="xsd:anyURI"
use="optional"
default="http://www.w3.org/2001/XMLSchema"/>
+ <xsd:attribute name="exporter" type="xsd:string"/>
+ <xsd:attribute name="exporterVersion" type="xsd:string"/>
+ <xsd:anyAttribute namespace="##other"
processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:element name="import" type="tImport"/>
+ <xsd:complexType name="tImport">
+ <xsd:attribute name="namespace" type="xsd:anyURI"
use="required"/>
+ <xsd:attribute name="location" type="xsd:string"
use="required"/>
+ <xsd:attribute name="importType" type="xsd:anyURI"
use="required"/>
+ </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/BPMNDI.xsd
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/BPMNDI.xsd
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/BPMNDI.xsd 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
targetNamespace="http://www.omg.org/spec/BPMN/20100524/DI"
elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+ <xsd:import
namespace="http://www.omg.org/spec/DD/20100524/DC"
schemaLocation="DC.xsd" />
+ <xsd:import
namespace="http://www.omg.org/spec/DD/20100524/DI"
schemaLocation="DI.xsd" />
+
+ <xsd:element name="BPMNDiagram" type="bpmndi:BPMNDiagram" />
+ <xsd:element name="BPMNPlane" type="bpmndi:BPMNPlane" />
+ <xsd:element name="BPMNLabelStyle" type="bpmndi:BPMNLabelStyle"
/>
+ <xsd:element name="BPMNShape" type="bpmndi:BPMNShape"
substitutionGroup="di:DiagramElement" />
+ <xsd:element name="BPMNLabel" type="bpmndi:BPMNLabel" />
+ <xsd:element name="BPMNEdge" type="bpmndi:BPMNEdge"
substitutionGroup="di:DiagramElement" />
+
+ <xsd:complexType name="BPMNDiagram">
+ <xsd:complexContent>
+ <xsd:extension base="di:Diagram">
+ <xsd:sequence>
+ <xsd:element ref="bpmndi:BPMNPlane" />
+ <xsd:element ref="bpmndi:BPMNLabelStyle"
maxOccurs="unbounded" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="BPMNPlane">
+ <xsd:complexContent>
+ <xsd:extension base="di:Plane">
+ <xsd:attribute name="bpmnElement" type="xsd:QName" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="BPMNEdge">
+ <xsd:complexContent>
+ <xsd:extension base="di:LabeledEdge">
+ <xsd:sequence>
+ <xsd:element ref="bpmndi:BPMNLabel" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="bpmnElement" type="xsd:QName" />
+ <xsd:attribute name="sourceElement" type="xsd:QName" />
+ <xsd:attribute name="targetElement" type="xsd:QName" />
+ <xsd:attribute name="messageVisibleKind"
type="bpmndi:MessageVisibleKind" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="BPMNShape">
+ <xsd:complexContent>
+ <xsd:extension base="di:LabeledShape">
+ <xsd:sequence>
+ <xsd:element ref="bpmndi:BPMNLabel" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="bpmnElement" type="xsd:QName" />
+ <xsd:attribute name="isHorizontal" type="xsd:boolean" />
+ <xsd:attribute name="isExpanded" type="xsd:boolean" />
+ <xsd:attribute name="isMarkerVisible" type="xsd:boolean"
/>
+ <xsd:attribute name="isMessageVisible" type="xsd:boolean"
/>
+ <xsd:attribute name="participantBandKind"
type="bpmndi:ParticipantBandKind" />
+ <xsd:attribute name="choreographyActivityShape"
type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="BPMNLabel">
+ <xsd:complexContent>
+ <xsd:extension base="di:Label">
+ <xsd:attribute name="labelStyle" type="xsd:QName" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="BPMNLabelStyle">
+ <xsd:complexContent>
+ <xsd:extension base="di:Style">
+ <xsd:sequence>
+ <xsd:element ref="dc:Font" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="ParticipantBandKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="top_initiating" />
+ <xsd:enumeration value="middle_initiating" />
+ <xsd:enumeration value="bottom_initiating" />
+ <xsd:enumeration value="top_non_initiating" />
+ <xsd:enumeration value="middle_non_initiating" />
+ <xsd:enumeration value="bottom_non_initiating" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="MessageVisibleKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="initiating" />
+ <xsd:enumeration value="non_initiating" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/DC.xsd
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/DC.xsd
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/DC.xsd 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
targetNamespace="http://www.omg.org/spec/DD/20100524/DC"
elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+ <xsd:element name="Font" type="dc:Font" />
+ <xsd:element name="Point" type="dc:Point" />
+ <xsd:element name="Bounds" type="dc:Bounds" />
+
+ <xsd:complexType name="Font">
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="size" type="xsd:double" />
+ <xsd:attribute name="isBold" type="xsd:boolean" />
+ <xsd:attribute name="isItalic" type="xsd:boolean" />
+ <xsd:attribute name="isUnderline" type="xsd:boolean" />
+ <xsd:attribute name="isStrikeThrough" type="xsd:boolean" />
+ </xsd:complexType>
+
+ <xsd:complexType name="Point">
+ <xsd:attribute name="x" type="xsd:double"
use="required" />
+ <xsd:attribute name="y" type="xsd:double"
use="required" />
+ </xsd:complexType>
+
+ <xsd:complexType name="Bounds">
+ <xsd:attribute name="x" type="xsd:double"
use="required" />
+ <xsd:attribute name="y" type="xsd:double"
use="required" />
+ <xsd:attribute name="width" type="xsd:double"
use="required" />
+ <xsd:attribute name="height" type="xsd:double"
use="required" />
+ </xsd:complexType>
+
+</xsd:schema>
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/DI.xsd
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/DI.xsd
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/DI.xsd 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
targetNamespace="http://www.omg.org/spec/DD/20100524/DI"
elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+ <xsd:import
namespace="http://www.omg.org/spec/DD/20100524/DC"
schemaLocation="DC.xsd" />
+
+ <xsd:element name="DiagramElement" type="di:DiagramElement"
/>
+ <xsd:element name="Diagram" type="di:Diagram" />
+ <xsd:element name="Style" type="di:Style" />
+ <xsd:element name="Node" type="di:Node" />
+ <xsd:element name="Edge" type="di:Edge" />
+ <xsd:element name="Shape" type="di:Shape" />
+ <xsd:element name="Plane" type="di:Plane" />
+ <xsd:element name="LabeledEdge" type="di:LabeledEdge" />
+ <xsd:element name="Label" type="di:Label" />
+ <xsd:element name="LabeledShape" type="di:LabeledShape" />
+
+ <xsd:complexType abstract="true" name="DiagramElement">
+ <xsd:sequence>
+ <xsd:element name="extension" minOccurs="0">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any namespace="##other" minOccurs="0"
maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID" />
+ <xsd:anyAttribute namespace="##other" processContents="lax"
/>
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="Diagram">
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="documentation" type="xsd:string" />
+ <xsd:attribute name="resolution" type="xsd:double" />
+ <xsd:attribute name="id" type="xsd:ID" />
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="Node">
+ <xsd:complexContent>
+ <xsd:extension base="di:DiagramElement" />
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="Edge">
+ <xsd:complexContent>
+ <xsd:extension base="di:DiagramElement">
+ <xsd:sequence>
+ <xsd:element maxOccurs="unbounded" minOccurs="2"
name="waypoint" type="dc:Point" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="LabeledEdge">
+ <xsd:complexContent>
+ <xsd:extension base="di:Edge" />
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="Shape">
+ <xsd:complexContent>
+ <xsd:extension base="di:Node">
+ <xsd:sequence>
+ <xsd:element ref="dc:Bounds" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="LabeledShape">
+ <xsd:complexContent>
+ <xsd:extension base="di:Shape" />
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="Label">
+ <xsd:complexContent>
+ <xsd:extension base="di:Node">
+ <xsd:sequence>
+ <xsd:element ref="dc:Bounds" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="Plane">
+ <xsd:complexContent>
+ <xsd:extension base="di:Node">
+ <xsd:sequence>
+ <xsd:element ref="di:DiagramElement" maxOccurs="unbounded"
minOccurs="0" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType abstract="true" name="Style">
+ <xsd:attribute name="id" type="xsd:ID" />
+ </xsd:complexType>
+
+</xsd:schema>
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/Semantic.xsd
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/Semantic.xsd
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/XMLSchemas/Semantic.xsd 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,1562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema elementFormDefault="qualified"
attributeFormDefault="unqualified"
+
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+
targetNamespace="http://www.omg.org/spec/BPMN/20100524/MODEL">
+
+ <xsd:element name="activity" type="tActivity"/>
+ <xsd:complexType name="tActivity" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowNode">
+ <xsd:sequence>
+ <xsd:element ref="ioSpecification" minOccurs="0"
maxOccurs="1"/>
+ <xsd:element ref="property" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="dataInputAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="dataOutputAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="resourceRole" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="loopCharacteristics" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="isForCompensation" type="xsd:boolean"
default="false"/>
+ <xsd:attribute name="startQuantity" type="xsd:integer"
default="1"/>
+ <xsd:attribute name="completionQuantity" type="xsd:integer"
default="1"/>
+ <xsd:attribute name="default" type="xsd:IDREF"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="adHocSubProcess" type="tAdHocSubProcess"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tAdHocSubProcess">
+ <xsd:complexContent>
+ <xsd:extension base="tSubProcess">
+ <xsd:sequence>
+ <xsd:element name="completionCondition" type="tExpression"
minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="cancelRemainingInstances"
type="xsd:boolean" default="true"/>
+ <xsd:attribute name="ordering" type="tAdHocOrdering"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tAdHocOrdering">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Parallel"/>
+ <xsd:enumeration value="Sequential"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="artifact" type="tArtifact"/>
+ <xsd:complexType name="tArtifact" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="assignment" type="tAssignment" />
+ <xsd:complexType name="tAssignment">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="from" type="tExpression"
minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="to" type="tExpression"
minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="association" type="tAssociation"
substitutionGroup="artifact"/>
+ <xsd:complexType name="tAssociation">
+ <xsd:complexContent>
+ <xsd:extension base="tArtifact">
+ <xsd:attribute name="sourceRef" type="xsd:QName"
use="required"/>
+ <xsd:attribute name="targetRef" type="xsd:QName"
use="required"/>
+ <xsd:attribute name="associationDirection"
type="tAssociationDirection" default="None"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tAssociationDirection">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="One"/>
+ <xsd:enumeration value="Both"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="auditing" type="tAuditing"/>
+ <xsd:complexType name="tAuditing">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="baseElement" type="tBaseElement"/>
+ <xsd:complexType name="tBaseElement" abstract="true">
+ <xsd:sequence>
+ <xsd:element ref="documentation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="extensionElements" minOccurs="0"
maxOccurs="1" />
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"
use="optional"/>
+ <xsd:anyAttribute namespace="##other"
processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:element name="baseElementWithMixedContent"
type="tBaseElementWithMixedContent"/>
+ <xsd:complexType name="tBaseElementWithMixedContent"
abstract="true" mixed="true">
+ <xsd:sequence>
+ <xsd:element ref="documentation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="extensionElements" minOccurs="0"
maxOccurs="1" />
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"
use="optional"/>
+ <xsd:anyAttribute namespace="##other"
processContents="lax"/>
+ </xsd:complexType>
+
+ <xsd:element name="boundaryEvent" type="tBoundaryEvent"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tBoundaryEvent">
+ <xsd:complexContent>
+ <xsd:extension base="tCatchEvent">
+ <xsd:attribute name="cancelActivity" type="xsd:boolean"
default="true"/>
+ <xsd:attribute name="attachedToRef" type="xsd:QName"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="businessRuleTask" type="tBusinessRuleTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tBusinessRuleTask">
+ <xsd:complexContent>
+ <xsd:extension base="tTask">
+ <xsd:attribute name="implementation" type="tImplementation"
default="##unspecified"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="callableElement" type="tCallableElement"/>
+ <xsd:complexType name="tCallableElement">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element name="supportedInterfaceRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="ioSpecification" minOccurs="0"
maxOccurs="1"/>
+ <xsd:element ref="ioBinding" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="callActivity" type="tCallActivity"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tCallActivity">
+ <xsd:complexContent>
+ <xsd:extension base="tActivity">
+ <xsd:attribute name="calledElement" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="callChoreography" type="tCallChoreography"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tCallChoreography">
+ <xsd:complexContent>
+ <xsd:extension base="tChoreographyActivity">
+ <xsd:sequence>
+ <xsd:element ref="participantAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="calledChoreographyRef" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="callConversation" type="tCallConversation"
substitutionGroup="conversationNode"/>
+ <xsd:complexType name="tCallConversation">
+ <xsd:complexContent>
+ <xsd:extension base="tConversationNode">
+ <xsd:sequence>
+ <xsd:element ref="participantAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="calledCollaborationRef" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="cancelEventDefinition"
type="tCancelEventDefinition"
substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tCancelEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="catchEvent" type="tCatchEvent"/>
+ <xsd:complexType name="tCatchEvent" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tEvent">
+ <xsd:sequence>
+ <xsd:element ref="dataOutput" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="dataOutputAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="outputSet" minOccurs="0"
maxOccurs="1"/>
+ <xsd:element ref="eventDefinition" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element name="eventDefinitionRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="parallelMultiple" type="xsd:boolean"
default="false"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="category" type="tCategory"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tCategory">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element ref="categoryValue" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="categoryValue" type="tCategoryValue"/>
+ <xsd:complexType name="tCategoryValue">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="value" type="xsd:string"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="choreography" type="tChoreography"
substitutionGroup="collaboration"/>
+ <xsd:complexType name="tChoreography">
+ <xsd:complexContent>
+ <xsd:extension base="tCollaboration">
+ <xsd:sequence>
+ <xsd:element ref="flowElement" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="choreographyActivity"
type="tChoreographyActivity"/>
+ <xsd:complexType name="tChoreographyActivity"
abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowNode">
+ <xsd:sequence>
+ <xsd:element name="participantRef" type="xsd:QName"
minOccurs="2" maxOccurs="unbounded"/>
+ <xsd:element ref="correlationKey" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="initiatingParticipantRef"
type="xsd:QName" use="required"/>
+ <xsd:attribute name="loopType" type="tChoreographyLoopType"
default="None"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tChoreographyLoopType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="Standard"/>
+ <xsd:enumeration value="MultiInstanceSequential"/>
+ <xsd:enumeration value="MultiInstanceParallel"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="choreographyTask" type="tChoreographyTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tChoreographyTask">
+ <xsd:complexContent>
+ <xsd:extension base="tChoreographyActivity">
+ <xsd:sequence>
+ <xsd:element name="messageFlowRef" type="xsd:QName"
minOccurs="1" maxOccurs="2"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="collaboration" type="tCollaboration"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tCollaboration">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element ref="participant" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="messageFlow" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="artifact" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="conversationNode" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="conversationAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="participantAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="messageFlowAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="correlationKey" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element name="choreographyRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="conversationLink" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="isClosed" type="xsd:boolean"
default="false"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="compensateEventDefinition"
type="tCompensateEventDefinition"
substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tCompensateEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition">
+ <xsd:attribute name="waitForCompletion"
type="xsd:boolean"/>
+ <xsd:attribute name="activityRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="complexBehaviorDefinition"
type="tComplexBehaviorDefinition"/>
+ <xsd:complexType name="tComplexBehaviorDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="condition" type="tFormalExpression"
minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="event" type="tImplicitThrowEvent"
minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="complexGateway" type="tComplexGateway"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tComplexGateway">
+ <xsd:complexContent>
+ <xsd:extension base="tGateway">
+ <xsd:sequence>
+ <xsd:element name="activationCondition" type="tExpression"
minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="default" type="xsd:IDREF"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="conditionalEventDefinition"
type="tConditionalEventDefinition"
substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tConditionalEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition">
+ <xsd:sequence>
+ <xsd:element name="condition" type="tExpression"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="conversation" type="tConversation"
substitutionGroup="conversationNode"/>
+ <xsd:complexType name="tConversation">
+ <xsd:complexContent>
+ <xsd:extension base="tConversationNode"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="conversationAssociation"
type="tConversationAssociation"/>
+ <xsd:complexType name="tConversationAssociation">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="innerConversationNodeRef"
type="xsd:QName" use="required"/>
+ <xsd:attribute name="outerConversationNodeRef"
type="xsd:QName" use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="conversationLink"
type="tConversationLink"/>
+ <xsd:complexType name="tConversationLink">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="name" type="xsd:string"
use="optional"/>
+ <xsd:attribute name="sourceRef" type="xsd:QName"
use="required"/>
+ <xsd:attribute name="targetRef" type="xsd:QName"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="conversationNode"
type="tConversationNode"/>
+ <xsd:complexType name="tConversationNode" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="participantRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="messageFlowRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="correlationKey" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="correlationKey" type="tCorrelationKey"/>
+ <xsd:complexType name="tCorrelationKey">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="correlationPropertyRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="correlationProperty"
type="tCorrelationProperty" substitutionGroup="rootElement"/>
+ <xsd:complexType name="tCorrelationProperty">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element ref="correlationPropertyRetrievalExpression"
minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
use="optional"/>
+ <xsd:attribute name="type" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="correlationPropertyBinding"
type="tCorrelationPropertyBinding"/>
+ <xsd:complexType name="tCorrelationPropertyBinding">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="dataPath" type="tFormalExpression"
minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="correlationPropertyRef" type="xsd:QName"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="correlationPropertyRetrievalExpression"
type="tCorrelationPropertyRetrievalExpression"/>
+ <xsd:complexType name="tCorrelationPropertyRetrievalExpression">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="messagePath" type="tFormalExpression"
minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="messageRef" type="xsd:QName"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="correlationSubscription"
type="tCorrelationSubscription"/>
+ <xsd:complexType name="tCorrelationSubscription">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="correlationPropertyBinding" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="correlationKeyRef" type="xsd:QName"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataAssociation" type="tDataAssociation"
/>
+ <xsd:complexType name="tDataAssociation">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="sourceRef" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="targetRef" type="xsd:IDREF"
minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="transformation" type="tFormalExpression"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element ref="assignment" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataInput" type="tDataInput" />
+ <xsd:complexType name="tDataInput">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="dataState" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
use="optional"/>
+ <xsd:attribute name="itemSubjectRef" type="xsd:QName" />
+ <xsd:attribute name="isCollection" type="xsd:boolean"
default="false"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataInputAssociation"
type="tDataInputAssociation" />
+ <xsd:complexType name="tDataInputAssociation">
+ <xsd:complexContent>
+ <xsd:extension base="tDataAssociation"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataObject" type="tDataObject"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tDataObject">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowElement">
+ <xsd:sequence>
+ <xsd:element ref="dataState" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+ <xsd:attribute name="isCollection" type="xsd:boolean"
default="false"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataObjectReference"
type="tDataObjectReference" substitutionGroup="flowElement"/>
+ <xsd:complexType name="tDataObjectReference">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowElement">
+ <xsd:sequence>
+ <xsd:element ref="dataState" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+ <xsd:attribute name="dataObjectRef" type="xsd:IDREF"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataOutput" type="tDataOutput" />
+ <xsd:complexType name="tDataOutput">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="dataState" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
use="optional" />
+ <xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+ <xsd:attribute name="isCollection" type="xsd:boolean"
default="false"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataOutputAssociation"
type="tDataOutputAssociation" />
+ <xsd:complexType name="tDataOutputAssociation">
+ <xsd:complexContent>
+ <xsd:extension base="tDataAssociation"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataState" type="tDataState" />
+ <xsd:complexType name="tDataState">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataStore" type="tDataStore"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tDataStore">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element ref="dataState" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="capacity" type="xsd:integer"/>
+ <xsd:attribute name="isUnlimited" type="xsd:boolean"
default="true"/>
+ <xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="dataStoreReference" type="tDataStoreReference"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tDataStoreReference">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowElement">
+ <xsd:sequence>
+ <xsd:element ref="dataState" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+ <xsd:attribute name="dataStoreRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="documentation" type="tDocumentation"/>
+ <xsd:complexType name="tDocumentation" mixed="true">
+ <xsd:sequence>
+ <xsd:any namespace="##any" processContents="lax"
minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id" type="xsd:ID"
use="optional"/>
+ <xsd:attribute name="textFormat" type="xsd:string"
default="text/plain"/>
+ </xsd:complexType>
+
+ <xsd:element name="endEvent" type="tEndEvent"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tEndEvent">
+ <xsd:complexContent>
+ <xsd:extension base="tThrowEvent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="endPoint" type="tEndPoint"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tEndPoint">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="error" type="tError"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tError">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="errorCode" type="xsd:string"/>
+ <xsd:attribute name="structureRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="errorEventDefinition"
type="tErrorEventDefinition" substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tErrorEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition">
+ <xsd:attribute name="errorRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="escalation" type="tEscalation"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tEscalation">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="escalationCode" type="xsd:string"/>
+ <xsd:attribute name="structureRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="escalationEventDefinition"
type="tEscalationEventDefinition"
substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tEscalationEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition">
+ <xsd:attribute name="escalationRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="event" type="tEvent"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tEvent" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowNode">
+ <xsd:sequence>
+ <xsd:element ref="property" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="eventBasedGateway" type="tEventBasedGateway"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tEventBasedGateway">
+ <xsd:complexContent>
+ <xsd:extension base="tGateway">
+ <xsd:attribute name="instantiate" type="xsd:boolean"
default="false"/>
+ <xsd:attribute name="eventGatewayType"
type="tEventBasedGatewayType" default="Exclusive"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tEventBasedGatewayType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Exclusive"/>
+ <xsd:enumeration value="Parallel"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="eventDefinition" type="tEventDefinition"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tEventDefinition" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="exclusiveGateway" type="tExclusiveGateway"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tExclusiveGateway">
+ <xsd:complexContent>
+ <xsd:extension base="tGateway">
+ <xsd:attribute name="default" type="xsd:IDREF"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="expression" type="tExpression"/>
+ <xsd:complexType name="tExpression">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElementWithMixedContent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="extension" type="tExtension"/>
+ <xsd:complexType name="tExtension">
+ <xsd:sequence>
+ <xsd:element ref="documentation" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="definition" type="xsd:QName"/>
+ <xsd:attribute name="mustUnderstand" type="xsd:boolean"
use="optional" default="false"/>
+ </xsd:complexType>
+
+ <xsd:element name="extensionElements" type="tExtensionElements"
/>
+ <xsd:complexType name="tExtensionElements">
+ <xsd:sequence>
+ <xsd:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="flowElement" type="tFlowElement"/>
+ <xsd:complexType name="tFlowElement" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="auditing" minOccurs="0"
maxOccurs="1"/>
+ <xsd:element ref="monitoring" minOccurs="0"
maxOccurs="1"/>
+ <xsd:element name="categoryValueRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="flowNode" type="tFlowNode"/>
+ <xsd:complexType name="tFlowNode" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowElement">
+ <xsd:sequence>
+ <xsd:element name="incoming" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="outgoing" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="formalExpression" type="tFormalExpression"
substitutionGroup="expression"/>
+ <xsd:complexType name="tFormalExpression">
+ <xsd:complexContent>
+ <xsd:extension base="tExpression">
+ <xsd:attribute name="language" type="xsd:anyURI"
use="optional"/>
+ <xsd:attribute name="evaluatesToTypeRef"
type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="gateway" type="tGateway"
abstract="true"/>
+ <xsd:complexType name="tGateway">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowNode">
+ <xsd:attribute name="gatewayDirection"
type="tGatewayDirection" default="Unspecified"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tGatewayDirection">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Unspecified"/>
+ <xsd:enumeration value="Converging"/>
+ <xsd:enumeration value="Diverging"/>
+ <xsd:enumeration value="Mixed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="globalBusinessRuleTask"
type="tGlobalBusinessRuleTask" substitutionGroup="rootElement"/>
+ <xsd:complexType name="tGlobalBusinessRuleTask">
+ <xsd:complexContent>
+ <xsd:extension base="tGlobalTask">
+ <xsd:attribute name="implementation" type="tImplementation"
default="##unspecified"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="globalChoreographyTask"
type="tGlobalChoreographyTask" substitutionGroup="choreography"/>
+ <xsd:complexType name="tGlobalChoreographyTask">
+ <xsd:complexContent>
+ <xsd:extension base="tChoreography">
+ <xsd:attribute name="initiatingParticipantRef"
type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:element name="globalConversation" type="tGlobalConversation"
substitutionGroup="collaboration"/>
+ <xsd:complexType name="tGlobalConversation">
+ <xsd:complexContent>
+ <xsd:extension base="tCollaboration"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="globalManualTask" type="tGlobalManualTask"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tGlobalManualTask">
+ <xsd:complexContent>
+ <xsd:extension base="tGlobalTask"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="globalScriptTask" type="tGlobalScriptTask"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tGlobalScriptTask">
+ <xsd:complexContent>
+ <xsd:extension base="tGlobalTask">
+ <xsd:sequence>
+ <xsd:element ref="script" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="scriptLanguage" type="xsd:anyURI"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="globalTask" type="tGlobalTask"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tGlobalTask">
+ <xsd:complexContent>
+ <xsd:extension base="tCallableElement">
+ <xsd:sequence>
+ <xsd:element ref="resourceRole" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="globalUserTask" type="tGlobalUserTask"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tGlobalUserTask">
+ <xsd:complexContent>
+ <xsd:extension base="tGlobalTask">
+ <xsd:sequence>
+ <xsd:element ref="rendering" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="implementation" type="tImplementation"
default="##unspecified"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="group" type="tGroup"
substitutionGroup="artifact"/>
+ <xsd:complexType name="tGroup">
+ <xsd:complexContent>
+ <xsd:extension base="tArtifact">
+ <xsd:attribute name="categoryValueRef" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="humanPerformer" type="tHumanPerformer"
substitutionGroup="performer"/>
+ <xsd:complexType name="tHumanPerformer">
+ <xsd:complexContent>
+ <xsd:extension base="tPerformer"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tImplementation">
+ <xsd:union memberTypes="xsd:anyURI">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="##unspecified" />
+ <xsd:enumeration value="##WebService" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="implicitThrowEvent" type="tImplicitThrowEvent"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tImplicitThrowEvent">
+ <xsd:complexContent>
+ <xsd:extension base="tThrowEvent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="inclusiveGateway" type="tInclusiveGateway"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tInclusiveGateway">
+ <xsd:complexContent>
+ <xsd:extension base="tGateway">
+ <xsd:attribute name="default" type="xsd:IDREF"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="inputSet" type="tInputSet" />
+ <xsd:complexType name="tInputSet">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="dataInputRefs" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="optionalInputRefs" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="whileExecutingInputRefs" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="outputSetRefs" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="interface" type="tInterface"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tInterface">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element ref="operation" minOccurs="1"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
use="required"/>
+ <xsd:attribute name="implementationRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="intermediateCatchEvent"
type="tIntermediateCatchEvent" substitutionGroup="flowElement"/>
+ <xsd:complexType name="tIntermediateCatchEvent">
+ <xsd:complexContent>
+ <xsd:extension base="tCatchEvent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="intermediateThrowEvent"
type="tIntermediateThrowEvent" substitutionGroup="flowElement"/>
+ <xsd:complexType name="tIntermediateThrowEvent">
+ <xsd:complexContent>
+ <xsd:extension base="tThrowEvent"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="ioBinding" type="tInputOutputBinding" />
+ <xsd:complexType name="tInputOutputBinding">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="operationRef" type="xsd:QName"
use="required"/>
+ <xsd:attribute name="inputDataRef" type="xsd:IDREF"
use="required"/>
+ <xsd:attribute name="outputDataRef" type="xsd:IDREF"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="ioSpecification"
type="tInputOutputSpecification" />
+ <xsd:complexType name="tInputOutputSpecification">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="dataInput" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="dataOutput" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="inputSet" minOccurs="1"
maxOccurs="unbounded"/>
+ <xsd:element ref="outputSet" minOccurs="1"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="itemDefinition" type="tItemDefinition"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tItemDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:attribute name="structureRef" type="xsd:QName"/>
+ <xsd:attribute name="isCollection" type="xsd:boolean"
default="false"/>
+ <xsd:attribute name="itemKind" type="tItemKind"
default="Information"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tItemKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Information"/>
+ <xsd:enumeration value="Physical"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="lane" type="tLane"/>
+ <xsd:complexType name="tLane">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="partitionElement" type="tBaseElement"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="flowNodeRef" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="childLaneSet" type="tLaneSet"
minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="partitionElementRef"
type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="laneSet" type="tLaneSet"/>
+ <xsd:complexType name="tLaneSet">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="lane" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="linkEventDefinition"
type="tLinkEventDefinition" substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tLinkEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition">
+ <xsd:sequence>
+ <xsd:element name="source" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="target" type="xsd:QName"
minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="loopCharacteristics"
type="tLoopCharacteristics"/>
+ <xsd:complexType name="tLoopCharacteristics" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="manualTask" type="tManualTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tManualTask">
+ <xsd:complexContent>
+ <xsd:extension base="tTask"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="message" type="tMessage"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tMessage">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="itemRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="messageEventDefinition"
type="tMessageEventDefinition"
substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tMessageEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition">
+ <xsd:sequence>
+ <xsd:element name="operationRef" type="xsd:QName"
minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="messageRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="messageFlow" type="tMessageFlow"/>
+ <xsd:complexType name="tMessageFlow">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="name" type="xsd:string"
use="optional"/>
+ <xsd:attribute name="sourceRef" type="xsd:QName"
use="required"/>
+ <xsd:attribute name="targetRef" type="xsd:QName"
use="required"/>
+ <xsd:attribute name="messageRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="messageFlowAssociation"
type="tMessageFlowAssociation"/>
+ <xsd:complexType name="tMessageFlowAssociation">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="innerMessageFlowRef" type="xsd:QName"
use="required"/>
+ <xsd:attribute name="outerMessageFlowRef" type="xsd:QName"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="monitoring" type="tMonitoring"/>
+ <xsd:complexType name="tMonitoring">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="multiInstanceLoopCharacteristics"
type="tMultiInstanceLoopCharacteristics"
substitutionGroup="loopCharacteristics"/>
+ <xsd:complexType name="tMultiInstanceLoopCharacteristics">
+ <xsd:complexContent>
+ <xsd:extension base="tLoopCharacteristics">
+ <xsd:sequence>
+ <xsd:element name="loopCardinality" type="tExpression"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="loopDataInputRef" type="xsd:QName"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="loopDataOutputRef" type="xsd:QName"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="inputDataItem" type="tDataInput"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="outputDataItem" type="tDataOutput"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element ref="complexBehaviorDefinition" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element name="completionCondition" type="tExpression"
minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="isSequential" type="xsd:boolean"
default="false"/>
+ <xsd:attribute name="behavior"
type="tMultiInstanceFlowCondition" default="All"/>
+ <xsd:attribute name="oneBehaviorEventRef" type="xsd:QName"
use="optional"/>
+ <xsd:attribute name="noneBehaviorEventRef" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tMultiInstanceFlowCondition">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="One"/>
+ <xsd:enumeration value="All"/>
+ <xsd:enumeration value="Complex"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="operation" type="tOperation"/>
+ <xsd:complexType name="tOperation">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="inMessageRef" type="xsd:QName"
minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="outMessageRef" type="xsd:QName"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="errorRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
use="required"/>
+ <xsd:attribute name="implementationRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="outputSet" type="tOutputSet" />
+ <xsd:complexType name="tOutputSet">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="dataOutputRefs" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="optionalOutputRefs" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="whileExecutingOutputRefs" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="inputSetRefs" type="xsd:IDREF"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="parallelGateway" type="tParallelGateway"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tParallelGateway">
+ <xsd:complexContent>
+ <xsd:extension base="tGateway"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="participant" type="tParticipant"/>
+ <xsd:complexType name="tParticipant">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="interfaceRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="endPointRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element ref="participantMultiplicity" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="processRef" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="participantAssociation"
type="tParticipantAssociation"/>
+ <xsd:complexType name="tParticipantAssociation">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="innerParticipantRef" type="xsd:QName"
minOccurs="1" maxOccurs="1"/>
+ <xsd:element name="outerParticipantRef" type="xsd:QName"
minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="participantMultiplicity"
type="tParticipantMultiplicity"/>
+ <xsd:complexType name="tParticipantMultiplicity">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="minimum" type="xsd:int"
default="0"/>
+ <xsd:attribute name="maximum" type="xsd:int"
default="1"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="partnerEntity" type="tPartnerEntity"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tPartnerEntity">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element name="participantRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="partnerRole" type="tPartnerRole"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tPartnerRole">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element name="participantRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="performer" type="tPerformer"
substitutionGroup="resourceRole"/>
+ <xsd:complexType name="tPerformer">
+ <xsd:complexContent>
+ <xsd:extension base="tResourceRole"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="potentialOwner" type="tPotentialOwner"
substitutionGroup="performer"/>
+ <xsd:complexType name="tPotentialOwner">
+ <xsd:complexContent>
+ <xsd:extension base="tHumanPerformer"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="process" type="tProcess"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tProcess">
+ <xsd:complexContent>
+ <xsd:extension base="tCallableElement">
+ <xsd:sequence>
+ <xsd:element ref="auditing" minOccurs="0"
maxOccurs="1"/>
+ <xsd:element ref="monitoring" minOccurs="0"
maxOccurs="1"/>
+ <xsd:element ref="property" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="laneSet" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="flowElement" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="artifact" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="resourceRole" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="correlationSubscription" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element name="supports" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="processType" type="tProcessType"
default="None"/>
+ <xsd:attribute name="isClosed" type="xsd:boolean"
default="false"/>
+ <xsd:attribute name="isExecutable" type="xsd:boolean"/>
+ <xsd:attribute name="definitionalCollaborationRef"
type="xsd:QName" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tProcessType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="Public"/>
+ <xsd:enumeration value="Private"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="property" type="tProperty" />
+ <xsd:complexType name="tProperty">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="dataState" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="receiveTask" type="tReceiveTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tReceiveTask">
+ <xsd:complexContent>
+ <xsd:extension base="tTask">
+ <xsd:attribute name="implementation" type="tImplementation"
default="##WebService"/>
+ <xsd:attribute name="instantiate" type="xsd:boolean"
default="false"/>
+ <xsd:attribute name="messageRef" type="xsd:QName"
use="optional"/>
+ <xsd:attribute name="operationRef" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="relationship" type="tRelationship"/>
+ <xsd:complexType name="tRelationship">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element name="source" type="xsd:QName"
minOccurs="1" maxOccurs="unbounded"/>
+ <xsd:element name="target" type="xsd:QName"
minOccurs="1" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="type" type="xsd:string"
use="required"/>
+ <xsd:attribute name="direction"
type="tRelationshipDirection"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tRelationshipDirection">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="None"/>
+ <xsd:enumeration value="Forward"/>
+ <xsd:enumeration value="Backward"/>
+ <xsd:enumeration value="Both"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="rendering" type="tRendering"/>
+ <xsd:complexType name="tRendering">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="resource" type="tResource"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tResource">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:sequence>
+ <xsd:element ref="resourceParameter" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="resourceAssignmentExpression"
type="tResourceAssignmentExpression"/>
+ <xsd:complexType name="tResourceAssignmentExpression">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="expression" minOccurs="1"
maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="resourceParameter"
type="tResourceParameter"/>
+ <xsd:complexType name="tResourceParameter">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="type" type="xsd:QName"/>
+ <xsd:attribute name="isRequired" type="xsd:boolean"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="resourceParameterBinding"
type="tResourceParameterBinding"/>
+ <xsd:complexType name="tResourceParameterBinding">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:sequence>
+ <xsd:element ref="expression" minOccurs="1"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="parameterRef" type="xsd:QName"
use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="resourceRole" type="tResourceRole"/>
+ <xsd:complexType name="tResourceRole">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement">
+ <xsd:choice>
+ <xsd:sequence>
+ <xsd:element name="resourceRef" type="xsd:QName"/>
+ <xsd:element ref="resourceParameterBinding" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:element ref="resourceAssignmentExpression" minOccurs="0"
maxOccurs="1"/>
+ </xsd:choice>
+ <xsd:attribute name="name" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="rootElement" type="tRootElement"/>
+ <xsd:complexType name="tRootElement" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tBaseElement"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="scriptTask" type="tScriptTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tScriptTask">
+ <xsd:complexContent>
+ <xsd:extension base="tTask">
+ <xsd:sequence>
+ <xsd:element ref="script" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="scriptFormat" type="xsd:string"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="script" type="tScript"/>
+ <xsd:complexType name="tScript" mixed="true">
+ <xsd:sequence>
+ <xsd:any namespace="##any" processContents="lax"
minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendTask" type="tSendTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tSendTask">
+ <xsd:complexContent>
+ <xsd:extension base="tTask">
+ <xsd:attribute name="implementation" type="tImplementation"
default="##WebService"/>
+ <xsd:attribute name="messageRef" type="xsd:QName"
use="optional"/>
+ <xsd:attribute name="operationRef" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="sequenceFlow" type="tSequenceFlow"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tSequenceFlow">
+ <xsd:complexContent>
+ <xsd:extension base="tFlowElement">
+ <xsd:sequence>
+ <xsd:element name="conditionExpression" type="tExpression"
minOccurs="0" maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="sourceRef" type="xsd:IDREF"
use="required"/>
+ <xsd:attribute name="targetRef" type="xsd:IDREF"
use="required"/>
+ <xsd:attribute name="isImmediate" type="xsd:boolean"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="serviceTask" type="tServiceTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tServiceTask">
+ <xsd:complexContent>
+ <xsd:extension base="tTask">
+ <xsd:attribute name="implementation" type="tImplementation"
default="##WebService"/>
+ <xsd:attribute name="operationRef" type="xsd:QName"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="signal" type="tSignal"
substitutionGroup="rootElement"/>
+ <xsd:complexType name="tSignal">
+ <xsd:complexContent>
+ <xsd:extension base="tRootElement">
+ <xsd:attribute name="name" type="xsd:string"/>
+ <xsd:attribute name="structureRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="signalEventDefinition"
type="tSignalEventDefinition"
substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tSignalEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition">
+ <xsd:attribute name="signalRef" type="xsd:QName"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="standardLoopCharacteristics"
type="tStandardLoopCharacteristics"
substitutionGroup="loopCharacteristics"/>
+ <xsd:complexType name="tStandardLoopCharacteristics">
+ <xsd:complexContent>
+ <xsd:extension base="tLoopCharacteristics">
+ <xsd:sequence>
+ <xsd:element name="loopCondition" type="tExpression"
minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="testBefore" type="xsd:boolean"
default="false"/>
+ <xsd:attribute name="loopMaximum" type="xsd:integer"
use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="startEvent" type="tStartEvent"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tStartEvent">
+ <xsd:complexContent>
+ <xsd:extension base="tCatchEvent">
+ <xsd:attribute name="isInterrupting" type="xsd:boolean"
default="true"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="subChoreography" type="tSubChoreography"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tSubChoreography">
+ <xsd:complexContent>
+ <xsd:extension base="tChoreographyActivity">
+ <xsd:sequence>
+ <xsd:element ref="flowElement" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="artifact" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="subConversation" type="tSubConversation"
substitutionGroup="conversationNode"/>
+ <xsd:complexType name="tSubConversation">
+ <xsd:complexContent>
+ <xsd:extension base="tConversationNode">
+ <xsd:sequence>
+ <xsd:element ref="conversationNode" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="subProcess" type="tSubProcess"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tSubProcess">
+ <xsd:complexContent>
+ <xsd:extension base="tActivity">
+ <xsd:sequence>
+ <xsd:element ref="laneSet" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="flowElement" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="artifact" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="triggeredByEvent" type="xsd:boolean"
default="false"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="task" type="tTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tTask">
+ <xsd:complexContent>
+ <xsd:extension base="tActivity"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="terminateEventDefinition"
type="tTerminateEventDefinition"
substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tTerminateEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="textAnnotation" type="tTextAnnotation"
substitutionGroup="artifact"/>
+ <xsd:complexType name="tTextAnnotation">
+ <xsd:complexContent>
+ <xsd:extension base="tArtifact">
+ <xsd:sequence>
+ <xsd:element ref="text" minOccurs="0"
maxOccurs="1"/>
+ </xsd:sequence>
+ <xsd:attribute name="textFormat" type="xsd:string"
default="text/plain"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="text" type="tText"/>
+ <xsd:complexType name="tText" mixed="true">
+ <xsd:sequence>
+ <xsd:any namespace="##any" processContents="lax"
minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="throwEvent" type="tThrowEvent"/>
+ <xsd:complexType name="tThrowEvent" abstract="true">
+ <xsd:complexContent>
+ <xsd:extension base="tEvent">
+ <xsd:sequence>
+ <xsd:element ref="dataInput" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="dataInputAssociation" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element ref="inputSet" minOccurs="0"
maxOccurs="1"/>
+ <xsd:element ref="eventDefinition" minOccurs="0"
maxOccurs="unbounded"/>
+ <xsd:element name="eventDefinitionRef" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="timerEventDefinition"
type="tTimerEventDefinition" substitutionGroup="eventDefinition"/>
+ <xsd:complexType name="tTimerEventDefinition">
+ <xsd:complexContent>
+ <xsd:extension base="tEventDefinition">
+ <xsd:choice>
+ <xsd:element name="timeDate" type="tExpression"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="timeDuration" type="tExpression"
minOccurs="0" maxOccurs="1"/>
+ <xsd:element name="timeCycle" type="tExpression"
minOccurs="0" maxOccurs="1"/>
+ </xsd:choice>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="transaction" type="tTransaction"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tTransaction">
+ <xsd:complexContent>
+ <xsd:extension base="tSubProcess">
+ <xsd:attribute name="method" type="tTransactionMethod"
default="##Compensate"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:simpleType name="tTransactionMethod">
+ <xsd:union memberTypes="xsd:anyURI">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="##Compensate" />
+ <xsd:enumeration value="##Image" />
+ <xsd:enumeration value="##Store" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="userTask" type="tUserTask"
substitutionGroup="flowElement"/>
+ <xsd:complexType name="tUserTask">
+ <xsd:complexContent>
+ <xsd:extension base="tTask">
+ <xsd:sequence>
+ <xsd:element ref="rendering" minOccurs="0"
maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="implementation" type="tImplementation"
default="##unspecified"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/project.properties
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/project.properties
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/resources/project.properties 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,3 @@
+use-external-drools-runtime=true
+guvnor-repository-url=/jboss-brms/org.drools.guvnor.Guvnor/webdav
+external-drools-runtime-home=/home/vpakan/tmp/drools
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/Activator.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/Activator.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/Activator.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,50 @@
+package org.jboss.tools.drools.ui.bot.test;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.jboss.tools.drools.ui.bot.test";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/DroolsAllBotTests.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/DroolsAllBotTests.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/DroolsAllBotTests.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.drools.ui.bot.test;
+
+import java.io.File;
+
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.jboss.tools.drools.ui.bot.test.smoke.DecisionTableTest;
+import org.jboss.tools.drools.ui.bot.test.smoke.DomainSpecificLanguageEditorTest;
+import org.jboss.tools.drools.ui.bot.test.smoke.DroolsRulesEditorTest;
+import org.jboss.tools.drools.ui.bot.test.smoke.DroolsViewsTest;
+import org.jboss.tools.drools.ui.bot.test.smoke.GuvnorRepositoriesTest;
+import org.jboss.tools.drools.ui.bot.test.smoke.ManageDroolsProject;
+import org.jboss.tools.drools.ui.bot.test.smoke.ManageDroolsRules;
+import org.jboss.tools.drools.ui.bot.test.smoke.ManageDroolsRuntime;
+import org.jboss.tools.drools.ui.bot.test.smoke.OpenDroolsPerspective;
+import org.jboss.tools.drools.ui.bot.test.smoke.RuleFlowTest;
+import org.jboss.tools.ui.bot.ext.RequirementAwareSuite;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.SWTUtilExt;
+import org.jboss.tools.ui.bot.ext.config.ServerBean;
+import org.jboss.tools.ui.bot.ext.config.TestConfigurator;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.ui.bot.ext.types.PerspectiveType;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ *
+ * This is Drools swtbot test case for JBoss Tools.
+ *
+ * @author Vladimir Pakan
+ *
+ */
+(a)RunWith(RequirementAwareSuite.class)
+@SuiteClasses({
+ OpenDroolsPerspective.class,
+ ManageDroolsRuntime.class,
+ ManageDroolsProject.class,
+ ManageDroolsRules.class,
+ DroolsRulesEditorTest.class,
+ // GuidedDroolsRulesEditorTest.class,
+ DomainSpecificLanguageEditorTest.class,
+ RuleFlowTest.class,
+ DecisionTableTest.class,
+ GuvnorRepositoriesTest.class,
+ DroolsViewsTest.class
+})
+public class DroolsAllBotTests extends SWTTestExt {
+ public static final String DROOLS_PROJECT_NAME = "droolsTest";
+ public static final String DROOLS_RUNTIME_NAME = "Drools Test Runtime";
+ public static String DROOLS_RUNTIME_LOCATION = null;
+ public static String CREATE_DROOLS_RUNTIME_LOCATION = null;
+ public static String SRC_MAIN_JAVA_TREE_NODE = "src/main/java";
+ public static String SRC_MAIN_RULES_TREE_NODE = "src/main/rules";
+ public static String COM_SAMPLE_TREE_NODE = "com.sample";
+ public static String DROOLS_TEST_JAVA_TREE_NODE = "DroolsTest.java";
+ public static final String TEST_DROOLS_RULE_NAME = "TestRule.drl";
+ public static final String SAMPLE_DROOLS_RULE_NAME = "Sample.drl";
+ public static final String GUIDED_DROOLS_RULE_NAME = "GuidedRule.brl";
+ public static final String DOMAIN_SPECIFIC_LANGUAGE_FILE_NAME =
"DslTest.dsl";
+ public static final String RULE_FLOW_JAVA_TEST_FILE_NAME =
"ProcessTest.java";
+ public static final String RULE_FLOW_RF_FILE_NAME = "ruleflow.rf";
+ public static final String RULE_FLOW_SAMPLE_FILE_NAME = "sample.bpmn";
+ // this variable should be set in ManageDroolsProject class according to used Drools
version
+ public static String RULE_FLOW_FILE_NAME = RULE_FLOW_SAMPLE_FILE_NAME; // default
choice
+ public static final String DECISION_TABLE_JAVA_TEST_FILE_NAME =
"DecisionTableTest.java";
+ public static final String USE_EXTERNAL_DROOLS_RUNTIME_PROPERTY_NAME =
"use-external-drools-runtime";
+ public static final String EXTERNAL_DROOLS_RUTIME_HOME_PROPERTY_NAME =
"external-drools-runtime-home";
+ public static final String GUVNOR_REPOSITORY_URL_PROPERTY_NAME =
"guvnor-repository-url";
+ private static boolean USE_EXTERNAL_DROOLS_RUNTIME;
+ private static boolean isFirstRun = true;
+
+ private static String testDroolsRuntimeName = null;
+ private static String testDroolsRuntimeLocation = null;
+ private static String guvnorRepositoryUrl = null;
+ private static String guvnorRepositoryRootTreeItem =
"http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/webdav/";
+
+ public static String getTestDroolsRuntimeName() {
+ return testDroolsRuntimeName;
+ }
+
+ public static void setTestDroolsRuntimeName(String testDroolsRuntimeName) {
+ DroolsAllBotTests.testDroolsRuntimeName = testDroolsRuntimeName;
+ }
+
+ public static String getTestDroolsRuntimeLocation() {
+ return testDroolsRuntimeLocation;
+ }
+
+ public static void setTestDroolsRuntimeLocation(String testDroolsRuntimeLocation) {
+ DroolsAllBotTests.testDroolsRuntimeLocation = testDroolsRuntimeLocation;
+ }
+
+ public static String getGuvnorRepositoryUrl() {
+ return guvnorRepositoryUrl;
+ }
+
+ private static void setGuvnorRepositoryUrl(String guvnorRepositoryUrl) {
+ DroolsAllBotTests.guvnorRepositoryUrl = guvnorRepositoryUrl;
+ }
+
+ public static String getGuvnorRepositoryRootTreeItem() {
+ return guvnorRepositoryRootTreeItem;
+ }
+
+ private static void setGuvnorRepositoryRootTreeItem(String
guvnorRepositoryRootTreeItem) {
+ DroolsAllBotTests.guvnorRepositoryRootTreeItem = guvnorRepositoryRootTreeItem;
+ }
+
+ @BeforeClass
+ public static void setUpTest() {
+ if (isFirstRun) {
+ isFirstRun = false;
+ } else {
+ return;
+ }
+ props = util.loadProperties(Activator.PLUGIN_ID);
+ String guvnorRepositoryUrl =
props.getProperty(DroolsAllBotTests.GUVNOR_REPOSITORY_URL_PROPERTY_NAME);
+ if (guvnorRepositoryUrl != null) {
+ DroolsAllBotTests.setGuvnorRepositoryUrl(guvnorRepositoryUrl);
+
DroolsAllBotTests.setGuvnorRepositoryRootTreeItem("http://localhost:8080" +
guvnorRepositoryUrl);
+ }
+ String useExternalDroolRuntime =
props.getProperty(DroolsAllBotTests.USE_EXTERNAL_DROOLS_RUNTIME_PROPERTY_NAME);
+ DroolsAllBotTests.USE_EXTERNAL_DROOLS_RUNTIME = useExternalDroolRuntime != null
&& useExternalDroolRuntime.equalsIgnoreCase("true");
+ String droolsRuntimeLocation =
props.getProperty(DroolsAllBotTests.EXTERNAL_DROOLS_RUTIME_HOME_PROPERTY_NAME);
+ String tmpDir = System.getProperty("java.io.tmpdir");
+ if (droolsRuntimeLocation == null || droolsRuntimeLocation.length() == 0) {
+ DroolsAllBotTests.DROOLS_RUNTIME_LOCATION = tmpDir;
+ } else {
+ DroolsAllBotTests.DROOLS_RUNTIME_LOCATION = droolsRuntimeLocation;
+ }
+ DroolsAllBotTests.CREATE_DROOLS_RUNTIME_LOCATION = tmpDir + File.separator +
"drools";
+ // Create directory for Drools Runtime which will be created as a part of test
+ new File(DroolsAllBotTests.CREATE_DROOLS_RUNTIME_LOCATION).mkdir();
+ try {
+ bot.button(IDELabel.Button.NO).click();
+ } catch (WidgetNotFoundException wnfe) {
+ // Do nothing ignore this error
+ }
+ try {
+ SWTBotView welcomeView =
eclipse.getBot().viewByTitle(IDELabel.View.WELCOME);
+ welcomeView.close();
+ } catch (WidgetNotFoundException wnfe) {
+ // Do nothing ignore this error
+ }
+ // Close JBoss Central editor
+ for (SWTBotEditor editor : bot.editors()) {
+ if (IDELabel.View.JBOSS_CENTRAL.equals(editor.getTitle())) {
+ editor.close();
+ break;
+ }
+ }
+ eclipse.openPerspective(PerspectiveType.JAVA);
+ eclipse.maximizeActiveShell();
+
+ // Removes legacy files after previous run
+ ServerBean server = TestConfigurator.currentConfig.getServer();
+ if (server != null) {
+ final String serverHome = server.runtimeHome;
+ if (serverHome != null) {
+ deleteGuvnorRepositoryIfExists(serverHome + "/bin/");
+ }
+ }
+ }
+
+ private static void deleteGuvnorRepositoryIfExists(final String
pathToDirectoryWithRepository) {
+ delete(new File(pathToDirectoryWithRepository + "repository.xml"));
+ delete(new File(pathToDirectoryWithRepository + "repository"));
+ }
+
+ public static boolean delete(final File file) {
+ if (!file.exists()) {
+ return false;
+ }
+ if (file.isDirectory()) {
+ for (final String s : file.list()) {
+ delete(new File(file, s));
+ }
+ }
+ return file.delete();
+ }
+
+ public static boolean useExternalDroolsRuntime() {
+ return USE_EXTERNAL_DROOLS_RUNTIME;
+ }
+
+ @AfterClass
+ public static void tearDownTest() {
+ // delete created drools runtime
+ SWTUtilExt.deleteDirectory(DroolsAllBotTests.CREATE_DROOLS_RUNTIME_LOCATION);
+ }
+}
\ No newline at end of file
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DecisionTableTest.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DecisionTableTest.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DecisionTableTest.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,53 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.junit.Test;
+/**
+ * Tests Decision Table
+ * @author Vladimir Pakan
+ *
+ */
+public class DecisionTableTest extends SWTTestExt{
+ /**
+ * Tests Decision Table
+ */
+ @Test
+ public void testDecisionTable() {
+ runDecisionTable(DroolsAllBotTests.DECISION_TABLE_JAVA_TEST_FILE_NAME);
+ }
+ /**
+ * Runs newly created Drools project and check result
+ * @param decisionTableFileName
+ */
+ private void runDecisionTable(String decisionTableFileName){
+ console.clearConsole();
+ bot.sleep(5000L);
+
+ SWTBotTreeItem tiTestFile = packageExplorer.selectTreeItem(decisionTableFileName,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_JAVA_TREE_NODE,
+ DroolsAllBotTests.COM_SAMPLE_TREE_NODE});
+
+ eclipse.runTreeItemAsJavaApplication(tiTestFile);
+
+ String consoleText = console.getConsoleText(3*1000L,60*1000L,true);
+
+ assertTrue(decisionTableFileName + " didn't run properly.\n" +
+ "Console Text was: " + consoleText + "\n" +
+ "Expected console text is: Hello World\nGoodbye cruel world\n",
+ consoleText.endsWith("Hello World\nGoodbye cruel world\n"));
+ }
+}
\ No newline at end of file
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DomainSpecificLanguageEditorTest.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DomainSpecificLanguageEditorTest.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DomainSpecificLanguageEditorTest.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,229 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEclipseEditor;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.jboss.tools.ui.bot.ext.SWTEclipseExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.helper.KeyboardHelper;
+import org.jboss.tools.ui.bot.ext.parts.SWTBotEditorExt;
+import org.jboss.tools.ui.bot.ext.types.EntityType;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.ui.bot.ext.types.JobName;
+import org.jboss.tools.ui.bot.ext.view.ProblemsView;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.junit.Test;
+/**
+ * Tests Domain Specific Language Editor
+ * @author Vladimir Pakan
+ *
+ */
+public class DomainSpecificLanguageEditorTest extends SWTTestExt{
+ /**
+ * Tests Domain Specific Language Editor
+ */
+ private static final String LANGUAGE_EXRESSION = "Message {msg} of type {t}
contains {what}";
+ @Test
+ public void testDomainSpecificLanguageEditor() {
+ createDslFile(DroolsAllBotTests.DOMAIN_SPECIFIC_LANGUAGE_FILE_NAME);
+ addDslExpression(DroolsAllBotTests.DOMAIN_SPECIFIC_LANGUAGE_FILE_NAME);
+ useDslExpression(DroolsAllBotTests.DOMAIN_SPECIFIC_LANGUAGE_FILE_NAME,
+ DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME);
+ runDslExpressionCheck(DroolsAllBotTests.DROOLS_TEST_JAVA_TREE_NODE,
+ DroolsAllBotTests.DOMAIN_SPECIFIC_LANGUAGE_FILE_NAME);
+ }
+ /**
+ * Creates DSL File
+ * @param dslFileName
+ */
+ private void createDslFile(String dslFileName){
+ packageExplorer.show();
+ SWTBotTreeItem tiRules =
packageExplorer.selectTreeItem(DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME});
+
+ tiRules.select();
+ eclipse.createNew(EntityType.DSL_DROOLS_FILE);
+ bot.textWithLabel(IDELabel.NewDslDroolsFileDialog.FILE_NAME).setText(dslFileName);
+ eclipse.selectTreeLocation(DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ "src",
+ "main",
+ "rules");
+ bot.button(IDELabel.Button.FINISH).click();
+ bot.sleep(Timing.time1S());
+ tiRules.expand();
+ // Test if new DSL File is within package tree view
+ assertTrue("New DSL File was not created properly. It's not present within
Package Explorer",
+ SWTEclipseExt.containsTreeItemWithLabel(tiRules, dslFileName));
+ // Test if new DSL File is opened in editor
+ assertTrue("New DSL File was not created properly. File " + dslFileName +
" is not opened in editor",
+ SWTEclipseExt.existEditorWithLabel(bot,dslFileName));
+
+ }
+ /**
+ * Adds DSL Expression to DSL File
+ * @param dslFileName
+ */
+ private void addDslExpression(String dslFileName){
+ SWTBotEditor dslRuleEditor = bot.editorByTitle(dslFileName);
+ SWTBot dslRuleEditorBot = dslRuleEditor.bot();
+ dslRuleEditorBot
+ .button(IDELabel.Button.ADD_WITHOUT_DOTS).click();
+ SWTBot dialogBot = dslRuleEditorBot
+ .shell(IDELabel.DslDroolsFileEditor.ADD_LANGUAGE_MAPPING_DIALOG_TITLE)
+ .activate()
+ .bot();
+
+ dialogBot.textWithLabel(IDELabel.DslDroolsFileEditor.LANGUAGE_EXPRESSION_TEXT_LABEL)
+ .setText(DomainSpecificLanguageEditorTest.LANGUAGE_EXRESSION);
+ dialogBot.textWithLabel(IDELabel.DslDroolsFileEditor.RULE_MAPPING_TEXT_LABEL)
+ .setText("{msg} : Message(status == {t}, {what} : message)");
+ dialogBot.comboBoxWithLabel(IDELabel.DslDroolsFileEditor.SCOPE_COMBO_LABEL)
+ .setSelection(IDELabel.DslDroolsFileEditor.SCOPE_COMBO_VALUE);
+ dialogBot.button(IDELabel.Button.OK).click();
+ dslRuleEditor.save();
+
+ assertTrue("DSL table has to containt this Language Expression:\n" +
+ DomainSpecificLanguageEditorTest.LANGUAGE_EXRESSION,
+ SWTEclipseExt.isItemInTableColumn(dslRuleEditorBot.table(),
+ DomainSpecificLanguageEditorTest.LANGUAGE_EXRESSION,
+ 0));
+
+ }
+ /**
+ * Use defined language expression in dslFileName file within sampleDrlFileName file
+ * @param dslFileName
+ * @param sampleDrlFileName
+ */
+ private void useDslExpression (String dslFileName,String sampleDrlFileName){
+ packageExplorer.show();
+ SWTBotEclipseEditor drlDroolsEditor =
packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME).toTextEditor();
+ SWTBotEditorExt ruleEditor =
bot.swtBotEditorExtByTitle(DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME);
+ ruleEditor.selectPage(IDELabel.DroolsEditor.TEXT_EDITOR_TAB);
+ // update drl file
+ drlDroolsEditor.insertText(3,0,"\nexpander " +
+ dslFileName +
+ ";\n");
+ int[] linesToIgnoreExpander = new int[]{8,10,11,12,13,20};
+ for (int lineNumber : linesToIgnoreExpander){
+ drlDroolsEditor.insertText(lineNumber,0,">");
+ }
+ drlDroolsEditor.selectLine(18);
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.pressKeyCode(bot.getDisplay(),(int)SWT.DEL);
+ bot.sleep(Timing.time1S());
+ drlDroolsEditor.insertText(18, 0, " Message m of type Message.GOODBYE
contains myMessage");
+ drlDroolsEditor.save();
+ util.waitForJobs(Timing.time10S(), JobName.BUILDING_WS);
+ SWTBotTreeItem[] errors = ProblemsView
+ .getFilteredErrorsTreeItems(bot,
+ null,
+ null,
+ sampleDrlFileName,
+ null);
+ assertTrue("File "
+ + sampleDrlFileName
+ + " was not udpated properly. There are these errors: "
+ + SWTEclipseExt.getFormattedTreeNodesText(errors),
+ errors == null || errors.length == 0);
+
+ SWTBotTreeItem[] warnings = ProblemsView
+ .getFilteredWarningsTreeItems(bot,
+ null,
+ null,
+ sampleDrlFileName,
+ null);
+ assertTrue("File "
+ + sampleDrlFileName
+ + " was not udpated properly. There are these warnings: "
+ + SWTEclipseExt.getFormattedTreeNodesText(warnings),
+ warnings == null || warnings.length == 0);
+ }
+ /**
+ * Runs javaFileName testing defined DSL
+ * @param javaFileName
+ * @param dslFileName
+ */
+ private void runDslExpressionCheck(String javaFileName,
+ String dslFileName){
+
+ packageExplorer.show();
+ SWTBotEclipseEditor drlDroolsEditor =
packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_JAVA_TREE_NODE,
+ DroolsAllBotTests.COM_SAMPLE_TREE_NODE,
+ javaFileName).toTextEditor();
+ // Change java file content to support new DSL
+ updateJavaTestFile(drlDroolsEditor,dslFileName);
+
+ console.clearConsole();
+ bot.sleep(Timing.time5S());
+
+ SWTBotTreeItem tiTestFile = packageExplorer.selectTreeItem(javaFileName,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_JAVA_TREE_NODE,
+ DroolsAllBotTests.COM_SAMPLE_TREE_NODE});
+
+ eclipse.runTreeItemAsJavaApplication(tiTestFile);
+
+ String consoleText = console.getConsoleText(3*1000L,60*1000L,true);
+
+ assertTrue(javaFileName + " didn't run properly.\n" +
+ "Console Text was: " + consoleText + "\n" +
+ "Expected console text is: " + "Hello World\nGoodbye cruel
world\n",
+ "Hello World\nGoodbye cruel world\n".equals(consoleText));
+ }
+ /**
+ * Update properly Java Test file in drlDroolsEditor to be able to run
+ * with new DSL definition
+ * @param drlDroolsEditor
+ * @param dslFileName
+ */
+ private void updateJavaTestFile(SWTBotEclipseEditor drlDroolsEditor,
+ String dslFileName){
+ int lineIndex = 0;
+ String foundLineText = null;
+ while (lineIndex < drlDroolsEditor.getLineCount() && foundLineText ==
null){
+ String lineText = drlDroolsEditor.getTextOnLine(lineIndex);
+ if(lineText.trim().startsWith("kbuilder.add")){
+ foundLineText = lineText;
+ }
+ else{
+ lineIndex++;
+ }
+ }
+ if (foundLineText != null){
+ drlDroolsEditor.insertText(lineIndex,0,
+ "kbuilder.add(ResourceFactory.newClassPathResource(\"" +
+ dslFileName +
+ "\"), ResourceType.DSL);\n");
+ lineIndex++;
+ drlDroolsEditor.selectLine(lineIndex);
+ KeyboardHelper.pressKeyCode(bot.getDisplay(),(int)SWT.DEL);
+ drlDroolsEditor.insertText(foundLineText
+ .replace("ResourceType.DRL","ResourceType.DSLR") +
"\n");
+ drlDroolsEditor.save();
+ util.waitForJobs(Timing.time10S(), JobName.BUILDING_WS);
+ }
+ else{
+ throw new RuntimeException("File " +
+ drlDroolsEditor.getTitle() +
+ " has wrong content. It doesn't contain 'kbuilder.add'
string.");
+ }
+ }
+
+}
\ No newline at end of file
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DroolsRulesEditorTest.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DroolsRulesEditorTest.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DroolsRulesEditorTest.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,95 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEclipseEditor;
+import org.eclipse.swtbot.swt.finder.utils.Position;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.parts.ContentAssistBot;
+import org.jboss.tools.ui.bot.ext.parts.SWTBotEditorExt;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.junit.Test;
+/**
+ * Tests Drools Rule Editor
+ * @author Vladimir Pakan
+ *
+ */
+public class DroolsRulesEditorTest extends SWTTestExt{
+ /**
+ * Tests Drools Rule Editor
+ */
+ private static final String CONTENT_ASSIST_IMPORT = "import";
+ private static final String CONTENT_ASSIST_MESSAGE = "Message";
+ @Test
+ public void testDroolsRulesEditor() {
+ codeCompletionCheck(DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME);
+ reteViewCheck(DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME);
+ }
+ /**
+ * Check code completion for Drools Rule
+ * @param droolsRuleName
+ */
+ private void codeCompletionCheck(String droolsRuleName){
+
+ packageExplorer.show();
+ packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,droolsRuleName);
+ SWTBotEditorExt ruleEditor = bot.swtBotEditorExtByTitle(droolsRuleName);
+ ruleEditor.selectPage(IDELabel.DroolsEditor.TEXT_EDITOR_TAB);
+ ruleEditor.typeText(3, 0, "i");
+ ContentAssistBot contentAssist = ruleEditor.contentAssist();
+ contentAssist.checkContentAssist(DroolsRulesEditorTest.CONTENT_ASSIST_IMPORT, true);
+ ruleEditor.typeText(6, 0, "m");
+ contentAssist.checkContentAssist(DroolsRulesEditorTest.CONTENT_ASSIST_MESSAGE,
true);
+
+ SWTBotEclipseEditor ruleTextEditor = ruleEditor.toTextEditor();
+ String lineText = ruleTextEditor.getTextOnLine(3).trim();
+ assertTrue("Content Assist for " +
DroolsRulesEditorTest.CONTENT_ASSIST_IMPORT +
+ " was not inserted properly.\n" +
+ "Inserted text is: " + lineText + "\n" +
+ "Expected text is: " + DroolsRulesEditorTest.CONTENT_ASSIST_IMPORT,
+ lineText.equals(DroolsRulesEditorTest.CONTENT_ASSIST_IMPORT));
+
+ lineText = ruleTextEditor.getTextOnLine(6).trim();
+ String messageContentAssistText = DroolsRulesEditorTest.CONTENT_ASSIST_MESSAGE +
"( )";
+ assertTrue("Content Assist for " +
DroolsRulesEditorTest.CONTENT_ASSIST_MESSAGE +
+ " was not inserted properly.\n" +
+ "Inserted text is: " + lineText + "\n" +
+ "Expected text has to stard with: " + messageContentAssistText,
+ lineText.startsWith(messageContentAssistText));
+
+ Position cursorPosition = ruleTextEditor.cursorPosition();
+ assertTrue("Content Assist for " +
DroolsRulesEditorTest.CONTENT_ASSIST_MESSAGE +
+ " was not inserted properly.\n" +
+ "Position of cursor is wrong: " + cursorPosition + "\n" +
+ "Expected X cursor position is: " + 9,
+ cursorPosition.column == 9);
+
+ ruleEditor.close();
+
+ }
+ /**
+ * Check Rete View of Drools Rule
+ * @param droolsRuleName
+ */
+ private void reteViewCheck(String droolsRuleName){
+
+ packageExplorer.show();
+ packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,droolsRuleName);
+ SWTBotEditorExt ruleEditor = bot.swtBotEditorExtByTitle(droolsRuleName);
+ ruleEditor.selectPage(IDELabel.DroolsEditor.RETE_TREE_TAB);
+
+ }
+}
+
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DroolsViewsTest.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DroolsViewsTest.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/DroolsViewsTest.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,589 @@
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import static org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory.withLabel;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEclipseEditor;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.jboss.tools.ui.bot.ext.SWTOpenExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.gen.IView;
+import org.jboss.tools.ui.bot.ext.helper.DragAndDropHelper;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Test class for testing Drools views.
+ *
+ * @author jgargula
+ */
+public class DroolsViewsTest extends SWTTestExt {
+
+ private static final String PROJECT_NAME = "droolsViewsTest";
+ private static final String RULES_FILE = "Sample.drl";
+ private static final String RULES_FILE_PATH = "src/main/rules";
+ private static final String JAVA_FILE = "DroolsTest.java";
+ private static final String JAVA_FILE_PATH = "src/main/java";
+ private static final String SAMPLE_TREE_NODE = "com.sample";
+ private static final String GLOBAL_VARIABLE_NAME = "globalString";
+ private static final String GLOBAL_VARIABLE_VALUE = "abcd";
+ private static final String LOG_FILE = "test.log";
+ private static boolean isFirstTimeRun = true;
+
+ /**
+ * Prepares all necessary things.
+ */
+ @Before
+ public void setUp() {
+ if (isFirstTimeRun) {
+ eclipse.closeAllEditors();
+ manageProject();
+ setUpOnce();
+ }
+
+ SWTBotTreeItem javaTreeItem = packageExplorer.selectTreeItem(JAVA_FILE, new
String[] {PROJECT_NAME, JAVA_FILE_PATH, SAMPLE_TREE_NODE});
+ eclipse.debugTreeItemAsDroolsApplication(javaTreeItem);
+
+ if (isFirstTimeRun) {
+ eclipse.closeConfirmPerspectiveSwitchShellIfOpened(false, true);
+ } else {
+ while (bot.waitForShell(IDELabel.Shell.PROGRESS_INFORMATION, 0) != null) {
+ bot.sleep(Timing.time2S());
+ }
+ }
+
+ // waits for running debugging
+ while (!eclipse.isDebugging()) {
+ bot.sleep(Timing.time500MS());
+ }
+
+ // waits for stopping at breakpoint
+ while (!eclipse.isSuspendedAtBreakpoint()) {
+ bot.sleep(Timing.time1S());
+ }
+
+ isFirstTimeRun = false;
+ bot.sleep(Timing.time1S());
+ }
+
+ /**
+ * This should be executed just before the first test.
+ */
+ private void setUpOnce() {
+ adjustDroolsTestFile();
+ adjustSampleFile();
+ bot.saveAllEditors();
+ }
+
+ /**
+ * Deletes all existing projects
+ * and creates brand new project.
+ */
+ private void manageProject() {
+ ManageDroolsProject.createDroolsProject(PROJECT_NAME);
+
+ Widget openingProjectWidget = null;
+ try {
+ openingProjectWidget = bot.widget(withLabel("Drools Runtime"));
+ } catch (WidgetNotFoundException wnfe) {
+ // openingProjectWidget should be null in this case
+ }
+ for (int i = 0; i < 30; i++) {
+ if (openingProjectWidget == null || (openingProjectWidget.isDisposed()
+ && packageExplorer.bot().tree().getAllItems().length > 0))
{
+ break;
+ } else {
+ bot.sleep(Timing.time2S());
+ }
+ }
+ }
+
+ /**
+ * Finishes tests.
+ */
+ @After
+ public void tearDown() {
+ eclipse.closeView(IDELabel.View.AGENDA);
+ eclipse.closeView(IDELabel.View.GLOBAL_DATA);
+ eclipse.closeView(IDELabel.View.AUDIT);
+ eclipse.closeView(IDELabel.View.WORKING_MEMORY);
+ eclipse.finishDebug();
+ }
+
+ /**
+ * Test of Agenda view.
+ */
+ @Test
+ public void agendaTest() {
+ bot.editorByTitle(RULES_FILE).show();
+ eclipse.stepOver();
+ openView(IDELabel.View.AGENDA);
+ HashSet<Activation> expectedSet = new HashSet<Activation>(2);
+ // indicies are not compared
+ expectedSet.add(new Activation(0, "Bye Bye"));
+ expectedSet.add(new Activation(1, "GoodBye"));
+ assertEquals(expectedSet, new
HashSet<Activation>(getActivationsFromAgenda()));
+ eclipse.resumeDebug();
+ final String CONSOLE_TEXT_MESSAGE_1 = "Expected console text is:\n";
+ final String CONSOLE_TEXT_MESSAGE_2 = "but was:\n";
+ final String EXPECTED_CONSOLE_TEXT_1 = "Hello World\nGoodbye cruel
world\nabcd\n";
+ final String EXPECTED_CONSOLE_TEXT_2 = "JustBye rule\nFinished\n";
+ assertTrue(CONSOLE_TEXT_MESSAGE_1 + EXPECTED_CONSOLE_TEXT_1 +
CONSOLE_TEXT_MESSAGE_2 + console.getConsoleText(),
+ EXPECTED_CONSOLE_TEXT_1.equals(console.getConsoleText()));
+ expectedSet.clear();
+ expectedSet.add(new Activation(0, "Finish rule"));
+ showView(IDELabel.View.AGENDA);
+ assertEquals(expectedSet, new
HashSet<Activation>(getActivationsFromAgenda()));
+ eclipse.finishDebug();
+ assertTrue(CONSOLE_TEXT_MESSAGE_1 + EXPECTED_CONSOLE_TEXT_1 +
EXPECTED_CONSOLE_TEXT_2 + CONSOLE_TEXT_MESSAGE_2
+ + console.getConsoleText(), (EXPECTED_CONSOLE_TEXT_1 +
EXPECTED_CONSOLE_TEXT_2).equals(console.getConsoleText()));
+ }
+
+ /**
+ * Tests refreshing of Agenda view.
+ */
+ @Test
+ @Ignore
+ public void refreshAgendaTest() {
+ openView(IDELabel.View.AGENDA);
+ eclipse.stepOver();
+ assertTrue("Agenda is not refreshing automatically.",
bot.tree().getAllItems()[0].getItems().length > 0);
+ }
+
+ /**
+ * Test of global variable in Global Data.
+ */
+ @Test
+ public void globalDataTest() {
+ openView(IDELabel.View.GLOBAL_DATA);
+ assertTrue("Global data has wrong number of items. Expected 1 but was
"
+ + bot.tree().getAllItems().length, bot.tree().getAllItems().length ==
1);
+ assertTrue("Global data does not contain variable '" +
GLOBAL_VARIABLE_NAME + "' with value '"
+ + GLOBAL_VARIABLE_VALUE + "'",
bot.tree().getAllItems()[0].getText()
+ .contains(GLOBAL_VARIABLE_NAME + "= \"" +
GLOBAL_VARIABLE_VALUE + "\""));
+ }
+
+ /**
+ * Test of Audit view.
+ */
+ @Test
+ public void auditTest() {
+ eclipse.finishDebug();
+ openView(IDELabel.View.AUDIT);
+ SWTBotView auditView = bot.viewByTitle(IDELabel.View.AUDIT);
+ assertEquals("Tree in Audit view should be empty, but it has " +
auditView.bot().tree().getAllItems().length
+ + " items.", 0, auditView.bot().tree().getAllItems().length);
+ packageExplorer.selectTreeItem(PROJECT_NAME,
null).contextMenu(IDELabel.Menu.REFRESH).click();
+ assertTrue("Log file '" + LOG_FILE + "' was not
created.", packageExplorer.existsResource(PROJECT_NAME, LOG_FILE));
+ SWTBotTreeItem treeItem = packageExplorer.selectTreeItem(LOG_FILE, new String[]
{PROJECT_NAME});
+ DragAndDropHelper.dragAndDropOnTo(treeItem.widget, auditView.getWidget());
+ SWTBotTreeItem[] auditTreeItems = auditView.bot().tree().getAllItems();
+ assertTrue("Tree in Audit view should not be empty, but it was.",
auditTreeItems.length > 0);
+ assertFalse("Log file '" + LOG_FILE + "' was not loaded
properly into Audit view.",
+ "The selected audit log is
empty.".equals(auditTreeItems[0].getText()));
+ assertEquals("Tree in Audit view has wrong number of items.", 4,
auditTreeItems.length);
+ int index = 0;
+ assertTrue("The first node of the audit view's tree does not contain
right text.",
+ auditTreeItems[index].getText().startsWith("Object
inserted"));
+ assertEquals("The first node has wrong number of items", 1,
auditTreeItems[index].getItems().length);
+ assertTrue("Child node of the first node does not contain right
text.",
+ auditTreeItems[index].getItems()[0].getText().startsWith("Activation
created: Rule Hello World"));
+ index = 1;
+ assertTrue("The second node does not contain the right text.",
+ auditTreeItems[index].getText().startsWith("Activation executed:
Rule Hello World"));
+ assertEquals("The second node has wrong number of items.", 1,
auditTreeItems[index].getItems().length);
+ assertTrue("Child node of the second node does not contain the right
text.",
+ auditTreeItems[index].getItems()[0].getText().startsWith("Object
updated"));
+ assertEquals("Child node of the second node has wrong number of
items.", 2, auditTreeItems[index].getItems()[0].getItems().length);
+ assertTrue("Child node of the second node does not contain the right
text.",
+
auditTreeItems[index].getItems()[0].getItems()[0].getText().startsWith("Activation
created: Rule GoodBye"));
+ assertTrue("Child node of the second node does not contain the right
text.",
+
auditTreeItems[index].getItems()[0].getItems()[1].getText().startsWith("Activation
created: Rule Bye Bye"));
+ index = 2;
+ assertTrue("The third node does not contain the right text.",
+ auditTreeItems[index].getText().startsWith("Activation executed:
Rule Bye Bye"));
+ assertEquals("The third node has wrong number of items.", 1,
auditTreeItems[index].getItems().length);
+ assertTrue("Child node of the third node does not contain the right
text.",
+ auditTreeItems[index].getItems()[0].getText().startsWith("Object
updated"));
+ assertEquals("Child node of the third node has wrong number of items.",
2, auditTreeItems[index].getItems()[0].getItems().length);
+ assertTrue("Child node of the third node does not contain the right
text.",
+
auditTreeItems[index].getItems()[0].getItems()[0].getText().startsWith("Activation
created: Rule Finish rule"));
+ assertTrue("Child node of the third node does not contain the right
text.",
+
auditTreeItems[index].getItems()[0].getItems()[1].getText().startsWith("Activation
cancelled: Rule GoodBye"));
+ index = 3;
+ assertTrue("The fourth node does not contain the right text.",
+ auditTreeItems[index].getText().startsWith("Activation executed:
Rule Finish rule"));
+ assertEquals("The fourth node has wrong number of items.", 0,
auditTreeItems[index].getItems().length);
+
+ auditView.toolbarButton("Clear Log").click();
+ assertEquals("Tree should be empty, but it was not.", 0,
auditView.bot().tree().getAllItems().length);
+ }
+
+ /**
+ * Test of Working Memory view
+ */
+ @Test
+ public void workingMemoryTest() {
+ openView(IDELabel.View.WORKING_MEMORY);
+
+ SWTBotTree workingMemoryTree = bot.tree();
+ assertEquals("Working memory tree was expected to have exactly 1 root item,
but it had "
+ + workingMemoryTree.getAllItems().length + " root items.", 1,
workingMemoryTree.getAllItems().length);
+
+ String rootItemText = workingMemoryTree.getAllItems()[0].getText();
+ assertNotNull(rootItemText);
+ assertTrue("Root item of working memory tree had unexpected text: " +
rootItemText,
+ rootItemText.contains("DroolsTest$Message"));
+
+ List<String> treeItemsStrings =
workingMemoryTree.expandNode(rootItemText).getNodes();
+ final int EXPECTED_ITEMS = 6;
+ assertEquals("There should be " + EXPECTED_ITEMS + " items but was
" + treeItemsStrings.size(),
+ EXPECTED_ITEMS, treeItemsStrings.size());
+
+ String messageString = "message= \"Goodbye cruel world\"";
+ String statusString = "status= 1";
+ String[] itemsStrings = new String[] {"BYE= 2", "FINISH=
3","GOODBYE= 1", "HELLO= 0", messageString, statusString};
+ Set<String> expectedWorkingMemorySet = new
HashSet<String>(EXPECTED_ITEMS);
+ for (int i = 0; i < itemsStrings.length; i++) {
+ expectedWorkingMemorySet.add(itemsStrings[i]);
+ }
+ assertEquals(expectedWorkingMemorySet, getWorkingMemoryItems(rootItemText));
+
+ eclipse.resumeDebug();
+ expectedWorkingMemorySet.remove(messageString);
+ expectedWorkingMemorySet.remove(statusString);
+ messageString = "message= \"JustBye rule\"";
+ statusString = "status= 3";
+ expectedWorkingMemorySet.add(messageString);
+ expectedWorkingMemorySet.add(statusString);
+ assertEquals(expectedWorkingMemorySet, getWorkingMemoryItems(rootItemText));
+
+ eclipse.resumeDebug();
+ expectedWorkingMemorySet.clear();
+ showView(IDELabel.View.CONSOLE);
+ showView(IDELabel.View.WORKING_MEMORY);
+ assertEquals("Working memory view should be empty. Maybe it was not
refreshed.",
+ expectedWorkingMemorySet, getWorkingMemoryItems(rootItemText));
+ }
+
+ /**
+ * Gets working memory items from Working Memory view.
+ *
+ * @param rootNode Root node name
+ * @return Set of strings representing working memory items.
+ */
+ private Set<String> getWorkingMemoryItems(final String rootNode) {
+ waitForStoppingDebugging();
+ showView(IDELabel.View.WORKING_MEMORY);
+ Set<String> stringSet = new HashSet<String>();
+
+ List<String> nodesStrings = null;
+ try {
+ nodesStrings = bot.tree().expandNode(rootNode).getNodes();
+ } catch (WidgetNotFoundException wnfe) {
+ return stringSet;
+ }
+
+ for (String s : nodesStrings) {
+ final int index = s.indexOf('(');
+ if (index > 0) {
+ s = s.substring(0, index);
+ }
+ stringSet.add(s.trim());
+ }
+
+ return stringSet;
+ }
+
+ /**
+ * Waits while debugging is stopped at breakpoint or finished.
+ */
+ private void waitForStoppingDebugging() {
+ for (int i = 0; i < 20; i++) {
+ SWTBotMenu resumeMenu =
bot.menu(IDELabel.Menu.RUN).menu(IDELabel.Menu.RESUME);
+ if (resumeMenu.isEnabled()) {
+ return;
+ }
+ SWTBotMenu terminateMenu =
bot.menu(IDELabel.Menu.RUN).menu(IDELabel.Menu.TERMINATE);
+ if (!resumeMenu.isEnabled() && !terminateMenu.isEnabled()) {
+ return;
+ }
+ bot.sleep(Timing.time1S());
+ }
+ }
+
+ /**
+ * Adds some pieces of code to DroolsTest.java
+ */
+ private void adjustDroolsTestFile() {
+ packageExplorer.show();
+ SWTBotEclipseEditor droolsTestEditor = packageExplorer.openFile(PROJECT_NAME,
+ JAVA_FILE_PATH, SAMPLE_TREE_NODE, JAVA_FILE).toTextEditor();
+ droolsTestEditor.insertText(46, 0, " public static final int BYE =
2;\n"
+ + " public static final int FINISH = 3;\n");
+ droolsTestEditor.insertText(20, 0, "
ksession.setGlobal(\""
+ + GLOBAL_VARIABLE_NAME + "\", \"" +
GLOBAL_VARIABLE_VALUE + "\");\n");
+ }
+
+ /**
+ * Adds some source code to Sample.drl
+ */
+ private void adjustSampleFile() {
+ packageExplorer.show();
+ SWTBotEclipseEditor sampleEditor = packageExplorer.openFile(PROJECT_NAME,
+ RULES_FILE_PATH, RULES_FILE).toTextEditor();
+ sampleEditor.insertText(20, 0, "\nrule \"Bye Bye\"\n"
+ + " when\n"
+ + " m : Message(status == Message.BYE || status ==
Message.GOODBYE, myMessage : message)\n"
+ + " then\n"
+ + " System.out.println(myMessage);\n"
+ + " System.out.println(globalString);\n"
+ + " m.setMessage(\"JustBye rule\");\n"
+ + " m.setStatus(Message.FINISH);\n"
+ + " update(m);\n"
+ + "end\n\n"
+ + "rule \"Finish rule\"\n"
+ + " when\n"
+ + " Message(status == Message.FINISH, myMessage :
message)\n"
+ + " then\n"
+ + " System.out.println(myMessage);\n"
+ + " System.out.println(\"Finished\");\n"
+ + "end\n");
+ sampleEditor.insertText(16, 8, "m : ");
+ sampleEditor.insertText(19, 0, " m.setMessage(\"Bye
Bye\");\n"
+ + " m.setStatus(Message.BYE);\n"
+ + " update(m);\n");
+ sampleEditor.insertText(4, 0, "global String globalString;\n\n");
+ eclipse.setNewBreakpoints(sampleEditor, 13, 35);
+ }
+
+ /**
+ * This method opens view with given title.
+ *
+ * @param viewTitle Title of desired view.
+ */
+ private void openView(final String viewTitle) {
+ checkViewTitleNull(viewTitle);
+
+ IView iView;
+ try {
+ iView = (IView)
Class.forName("org.jboss.tools.ui.bot.ext.gen.ActionItem$View$Drools"
+ + viewTitle.replace(" ",
"")).getField("LABEL").get(null);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("It is not possible to get IView
object for view with title '"
+ + viewTitle + "'.", e);
+ }
+
+ new SWTOpenExt(bot).viewOpen(iView);
+ }
+
+ /**
+ * Shows view with given title.
+ * It shows and focuses chosen view.
+ * If view is closed then it is opened.
+ *
+ * @param viewTitle Title of desired view.
+ */
+ private void showView(final String viewTitle) {
+ checkViewTitleNull(viewTitle);
+ boolean isViewOpened = false;
+ for (final SWTBotView view : bot.views()) {
+ if (viewTitle.equals(view.getTitle())) {
+ view.getWidget().getDisplay().syncExec(new Runnable() {
+ public void run() {
+ view.show();
+ view.setFocus();
+ }
+ });
+ isViewOpened = true;
+ break;
+ }
+ }
+ if (!isViewOpened) {
+ openView(viewTitle);
+ }
+ }
+
+ /**
+ * Checks if given string is null and if so this method
+ * throws IllegalArgumentException.
+ *
+ * @param viewTitle String to check.
+ */
+ private void checkViewTitleNull(final String viewTitle) {
+ if (viewTitle == null) {
+ throw new IllegalArgumentException("'viewTitle' cannot be
null");
+ }
+ }
+
+ /**
+ * Gets list of current activations in working memory.
+ *
+ * @return List of current activations in working memory
+ */
+ private List<Activation> getActivationsFromAgenda() {
+ List<Activation> activations = new ArrayList<Activation>();
+ bot.tree().expandNode(bot.tree().getAllItems()[0].getText(), true);
+ for (SWTBotTreeItem item : bot.tree().getAllItems()[0].getItems()) {
+ Activation activation = new Activation(
+ parseIndex(item.getText()),
+ parseRuleName(item.getItems()[0].getText()));
+ activations.add(activation);
+ }
+ return activations;
+ }
+
+ /**
+ * Parses text for an activation index in working memory.
+ *
+ * @param text Text to parse
+ * @return index of activation in working memory
+ */
+ private int parseIndex(final String text) {
+ int beginIndex = text.indexOf('[');
+ int endIndex = text.indexOf(']');
+ if (beginIndex < 0 || endIndex < 0) {
+ throw new IllegalArgumentException("Given text is not parsable for
index. Given text was '" + text + "'");
+ }
+ return Integer.valueOf(text.substring(beginIndex + 1, endIndex));
+ }
+
+ /**
+ * Parses rule name of activation in working memory.
+ *
+ * @param text Text to parse
+ * @return Rule name
+ */
+ private String parseRuleName(final String text) {
+ if (!text.startsWith("ruleName")) {
+ return null;
+ }
+ int i = text.indexOf('"');
+ return text.substring(i + 1, text.indexOf('"', i + 1));
+ }
+
+ /**
+ * This class is representation of activation in working memory.
+ *
+ * @author jgargula
+ */
+ private class Activation {
+ private int index = 0;
+ private String ruleName = null;
+
+ /**
+ * Constructor.
+ */
+ public Activation() {
+ super();
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param index Index of activation
+ */
+ public Activation(int index) {
+ this();
+ setIndex(index);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param index Index of activation
+ * @param ruleName Rule name of activation
+ */
+ public Activation(int index, String ruleName) {
+ this(index);
+ setRuleName(ruleName);
+ }
+
+ /**
+ * Getter for <code>index</code>.
+ *
+ * @return index of activation
+ */
+ public int getIndex() {
+ return index;
+ }
+
+ /**
+ * Setter for <code>index</code>.
+ *
+ * @param index Index to be set on the activation
+ */
+ public void setIndex(int index) {
+ this.index = index;
+ }
+
+ /**
+ * Getter for <code>ruleName</code>.
+ *
+ * @return rule name of activation
+ */
+ public String getRuleName() {
+ return ruleName;
+ }
+
+ /**
+ * Setter for <code>ruleName</code>.
+ * @param ruleName
+ */
+ public void setRuleName(String ruleName) {
+ this.ruleName = ruleName;
+ }
+
+ /**
+ * @return String representation of activation.
+ */
+ public String toString() {
+ return "Activation [index=" + getIndex() + ";
ruleName=\"" + getRuleName() + "\"]";
+ }
+
+ /**
+ * Hash code.
+ */
+ @Override
+ public int hashCode() {
+ return 31 + ((ruleName == null) ? 0 : ruleName.hashCode());
+ }
+
+ /**
+ * Two activations are equal if they have the same rule name.
+ * Indicies are ignored while comparing.
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null || !(obj instanceof Activation)) {
+ return false;
+ }
+ if (this == obj) {
+ return true;
+ }
+ Activation other = (Activation) obj;
+ if (getRuleName() == null) {
+ if (other.getRuleName() != null) {
+ return false;
+ }
+ }
+ if (getRuleName() == null && other.getRuleName() == null) {
+ return true;
+ }
+ return getRuleName().equals(other.getRuleName());
+ }
+ }
+}
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/GuidedDroolsRulesEditorTest.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/GuidedDroolsRulesEditorTest.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/GuidedDroolsRulesEditorTest.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,175 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import java.awt.event.KeyEvent;
+
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEclipseEditor;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.jboss.tools.ui.bot.ext.SWTEclipseExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.helper.ImageHyperlinkHelper;
+import org.jboss.tools.ui.bot.ext.helper.KeyboardHelper;
+import org.jboss.tools.ui.bot.ext.parts.SWTBotEditorExt;
+import org.jboss.tools.ui.bot.ext.types.EntityType;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.junit.Test;
+/**
+ * Tests Guided Drools Rule Editor
+ * @author Vladimir Pakan
+ *
+ */
+public class GuidedDroolsRulesEditorTest extends SWTTestExt{
+ private static final String DROOLS_PACKAGE_FILE = "drools.package";
+ /**
+ * Tests Guided Drools Rule Editor
+ */
+ @Test
+ public void testGuidedDroolsRulesEditorTest() {
+ createGuidedDroolsRule(DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME);
+ editDroolsPackageFile();
+ addGuidedDroolsRuleCondition(DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME);
+ removeGuidedDroolsRuleCondition(DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME);
+ }
+ /**
+ * Creates Guided Drools Rule
+ * @param guidedDroolsRuleName
+ */
+ private void createGuidedDroolsRule(String guidedDroolsRuleName){
+ packageExplorer.show();
+ SWTBotTreeItem tiRules =
packageExplorer.selectTreeItem(DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME});
+
+ tiRules.select();
+ eclipse.createNew(EntityType.GUIDED_DROOLS_RULE);
+
bot.textWithLabel(IDELabel.NewGuidedDroolsRuleDialog.FILE_NAME).setText(guidedDroolsRuleName);
+ eclipse.selectTreeLocation(DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ "src",
+ "main",
+ "rules");
+ bot.button(IDELabel.Button.FINISH).click();
+ bot.sleep(Timing.time1S());
+ tiRules.expand();
+ // Test if new Drools Rule is within package tree view
+ assertTrue("New Guided Drools Rule was not created properly. It's not
present within Package Explorer",
+ SWTEclipseExt.containsTreeItemWithLabel(tiRules, guidedDroolsRuleName));
+ // Test if new Drools Rule is opened in editor
+ assertTrue("New Guided Drools Rule was not created properly. File " +
guidedDroolsRuleName + " is not opened in editor",
+ SWTEclipseExt.existEditorWithLabel(bot,guidedDroolsRuleName));
+ // Test if drools.package file is within package tree view
+ assertTrue("New Guided Drools Rule was not created properly. It's not
present within Package Explorer",
+ SWTEclipseExt.containsTreeItemWithLabel(tiRules,
+ GuidedDroolsRulesEditorTest.DROOLS_PACKAGE_FILE));
+ }
+ /**
+ * Edits drools.package file.
+ * Actually only adds import java.util.List to file
+ */
+ private void editDroolsPackageFile(){
+ packageExplorer.show();
+ SWTBotEclipseEditor droolsPackageEditor =
packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ GuidedDroolsRulesEditorTest.DROOLS_PACKAGE_FILE).toTextEditor();
+ droolsPackageEditor.setText(droolsPackageEditor.getText() +
+ "\nimport java.util.List;");
+ droolsPackageEditor.save();
+ droolsPackageEditor.close();
+ }
+
+ private void addGuidedDroolsRuleCondition(String guidedDroolsRuleName){
+ packageExplorer.show();
+ SWTBotEclipseEditor droolsEditor =
packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME).toTextEditor();
+ SWTBot droolsEditorBot = droolsEditor.bot();
+ droolsEditorBot.toolbarButton().click();
+ SWTBotShell dialogShell =
droolsEditorBot.shell(IDELabel.GuidedDroolsRuleEditor.WHEN_ADD_DIALOG_TITLE);
+ dialogShell.activate();
+
dialogShell.bot().comboBoxWithLabel(IDELabel.GuidedDroolsRuleEditor.WHEN_ADD_FACT_COMBO)
+ .setSelection("List");
+ ImageHyperlinkHelper
+ .imageHyperlinkWithTooltip(droolsEditorBot,
+ IDELabel.GuidedDroolsRuleEditor.ADD_FIELD_TO_THIS_CONDITION_TOOLTIP)
+ .click();
+ dialogShell =
droolsEditorBot.shell(IDELabel.GuidedDroolsRuleEditor.UPDATE_CONSTRAINTS_DIALOG_TITLE);
+ dialogShell.activate();
+ dialogShell.bot().comboBox()
+
.setSelection(IDELabel.GuidedDroolsRuleEditor.ADD_RESTRICTION_ON_A_FIELD_COMBO_VALUE);
+ droolsEditorBot.comboBox()
+ .setSelection(IDELabel.GuidedDroolsRuleEditor.WHEN_COMBO_CONSTRAINTS_VALUE);
+ ImageHyperlinkHelper
+ .imageHyperlinkWithTooltip(droolsEditorBot,
+ IDELabel.GuidedDroolsRuleEditor.CHOOSE_VALUE_EDITOR_TYPE_TOOLTIP)
+ .click();
+ dialogShell =
droolsEditorBot.shell(IDELabel.GuidedDroolsRuleEditor.SELECT_VALUE_EDITOR_TYPE_DIALOG_TITLE);
+ dialogShell.activate();
+
dialogShell.bot().comboBoxWithLabel(IDELabel.GuidedDroolsRuleEditor.SELECT_VALUE_EDITOR_TYPE_COMBO_LABEL)
+
.setSelection(IDELabel.GuidedDroolsRuleEditor.SELECT_VALUE_EDITOR_TYPE_COMBO_VALUE);
+
droolsEditorBot.comboBox(1).setSelection(IDELabel.GuidedDroolsRuleEditor.FIELD_VALUE_COMBO_VALUE);
+ droolsEditor.save();
+ droolsEditor.close();
+ droolsEditor = packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME).toTextEditor();
+ SWTBotEditorExt ruleEditor =
bot.swtBotEditorExtByTitle(DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME);
+ ruleEditor.selectPage(2);
+ String editorContent = droolsEditor.getText();
+ assertTrue(DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME +
+ " has to contain text: List( empty == true )\n" +
+ "but it doesn't.\n" +
+ "It contains this text: " + editorContent,
+ editorContent.replaceAll("
","").indexOf("List(empty==true)") > 0);
+ }
+ /**
+ * Removes Drools Rule Condition from Guided Drools Rule
+ * @param guidedDroolsRuleName
+ */
+ private void removeGuidedDroolsRuleCondition(String guidedDroolsRuleName){
+ packageExplorer.show();
+ SWTBotEclipseEditor droolsEditor =
packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME).toTextEditor();
+ SWTBot droolsEditorBot = droolsEditor.bot();
+ SWTBotEditorExt ruleEditor =
bot.swtBotEditorExtByTitle(DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME);
+ ruleEditor.selectPage(0);
+ ImageHyperlinkHelper
+ .imageHyperlinkWithTooltip(droolsEditorBot,
+ IDELabel.GuidedDroolsRuleEditor.REMOVE_THIS_CONDITION_TOOLTIP)
+ .click();
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.pressKeyCodeUsingAWT(KeyEvent.VK_RIGHT);
+ KeyboardHelper.releaseKeyCodeUsingAWT(KeyEvent.VK_RIGHT);
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.pressKeyCodeUsingAWT(KeyEvent.VK_ENTER);
+ KeyboardHelper.releaseKeyCodeUsingAWT(KeyEvent.VK_ENTER);
+ bot.sleep(Timing.time1S());
+ droolsEditor.save();
+ droolsEditor.close();
+ droolsEditor = packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME).toTextEditor();
+ ruleEditor = bot.swtBotEditorExtByTitle(DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME);
+ ruleEditor.selectPage(2);
+ String editorContent = droolsEditor.getText();
+ assertTrue(DroolsAllBotTests.GUIDED_DROOLS_RULE_NAME +
+ " has to contain textjak e:\nwhen\nthen\n" +
+ "but it doesn't.\n" +
+ "It contains this text: " + editorContent,
+ ruleEditor.getTextOnLine(2).trim().equals("when") &&
+ ruleEditor.getTextOnLine(3).trim().equals("then"));
+ }
+
+}
\ No newline at end of file
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/GuvnorRepositoriesTest.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/GuvnorRepositoriesTest.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/GuvnorRepositoriesTest.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,559 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import static org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable.syncExec;
+
+import java.awt.event.KeyEvent;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.matchers.WidgetMatcherFactory;
+import org.eclipse.swtbot.swt.finder.results.StringResult;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.hamcrest.Matcher;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.jboss.tools.ui.bot.ext.SWTEclipseExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.SWTUtilExt;
+import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.config.Annotations.Require;
+import org.jboss.tools.ui.bot.ext.config.Annotations.Server;
+import org.jboss.tools.ui.bot.ext.config.Annotations.ServerState;
+import org.jboss.tools.ui.bot.ext.config.requirement.PrepareViews;
+import org.jboss.tools.ui.bot.ext.config.requirement.RequirementNotFulfilledException;
+import org.jboss.tools.ui.bot.ext.config.requirement.StartServer;
+import org.jboss.tools.ui.bot.ext.config.requirement.StopServer;
+import org.jboss.tools.ui.bot.ext.gen.ActionItem.View.GuvnorGuvnorResourceHistory;
+import org.jboss.tools.ui.bot.ext.helper.ContextMenuHelper;
+import org.jboss.tools.ui.bot.ext.helper.DragAndDropHelper;
+import org.jboss.tools.ui.bot.ext.helper.KeyboardHelper;
+import org.jboss.tools.ui.bot.ext.parts.SWTBotBrowserExt;
+import org.jboss.tools.ui.bot.ext.types.EntityType;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.ui.bot.ext.types.JobName;
+import org.jboss.tools.ui.bot.ext.types.PerspectiveType;
+import org.jboss.tools.ui.bot.ext.view.GuvnorRepositories;
+import org.junit.Test;
+/**
+ * Tests Guvnor Repositories
+ * @author Vladimir Pakan
+ *
+ */
+@Require(server = @Server(state = ServerState.Present),
+clearProjects=false,
+clearWorkspace=false,
+runOnce=true,
+perspective="Guvnor Repository Exploring"
+)
+public class GuvnorRepositoriesTest extends SWTTestExt{
+ @SuppressWarnings("unused")
+ private static final Logger log = Logger.getLogger(GuvnorRepositoriesTest.class);
+ private static final String GUVNOR_TEST_FILE = "Dummy rule.drl";
+ private static final String GUVNOR_REPOSITORY_IMPORT_TEST_FILE =
"Underage.brl";
+ private static final String GUVNOR_REPOSITORY_HISTORY_TEST_FILE =
"MortgageModel.model.drl";
+ private static final String GUVNOR_USER_NAME = "admin";
+ private static final String GUVNOR_PASSWORD = "admin";
+ private GuvnorRepositories guvnorRepositories = new GuvnorRepositories();
+
+ /**
+ * Tests Guvnor Repositories
+ */
+ @Test
+ public void testGuvnorRepositories() {
+ startGuvnor();
+ addGuvnorRepository();
+ deleteGuvnorRepository();
+ addGuvnorRepository();
+ openGuvnorConsole();
+ drillIntoFunctionalityCheck();
+ browseGuvnorRepository(GuvnorRepositoriesTest.GUVNOR_TEST_FILE);
+ guvnorFunctionalityCheck(GuvnorRepositoriesTest.GUVNOR_TEST_FILE,
+ DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME,
+ GuvnorRepositoriesTest.GUVNOR_REPOSITORY_IMPORT_TEST_FILE);
+ repositoryHistoryCheck(GuvnorRepositoriesTest.GUVNOR_REPOSITORY_HISTORY_TEST_FILE);
+ stopGuvnor();
+ }
+
+ /**
+ * Adds Guvnor Repository
+ */
+ private void addGuvnorRepository(){
+ eclipse.openPerspective(PerspectiveType.GUVNOR_REPOSITORY_EXPLORING);
+ SWTBot guvnorRepositoriesBot = guvnorRepositories.show().bot();
+ SWTUtilExt.getViewToolbarButtonWithTooltip(
+ guvnorRepositories.show(),
+ IDELabel.GuvnorRepositories.ADD_GUVNOR_REPOSITORY_TOOLTIP)
+ .click();
+ eclipse.waitForShell("");
+ SWTBot addGuvnorRepositoryDialog = guvnorRepositoriesBot.activeShell().bot();
+ String guvnorRepositoryUrl = DroolsAllBotTests.getGuvnorRepositoryUrl();
+ if (guvnorRepositoryUrl != null && guvnorRepositoryUrl.length() > 0){
+
addGuvnorRepositoryDialog.textWithLabel(IDELabel.GuvnorAddRepositoryDialog.REPOSITORY)
+ .setText(guvnorRepositoryUrl);
+ }
+ addGuvnorRepositoryDialog.button(IDELabel.Button.FINISH).click();
+ assertTrue("Guvnor repository was not created properly",
+ guvnorRepositoriesBot.tree().rowCount() == 1);
+ }
+ /**
+ * Deletes Guvnor Repostiry
+ */
+ private void deleteGuvnorRepository(){
+ SWTBot guvnorRepositoriesBot = guvnorRepositories.show().bot();;
+ SWTBotTree guvnorRepositoryTree = guvnorRepositoriesBot.tree();
+ guvnorRepositoryTree.select(0);
+ SWTUtilExt.getViewToolbarButtonWithTooltip(
+ guvnorRepositories.show(),
+ IDELabel.GuvnorRepositories.REMOVE_GUVNOR_REPOSITORY_TOOLTIP)
+ .click();
+
guvnorRepositoriesBot.shell(IDELabel.GuvnorRepositories.REMOVE_GUVNOR_REPOSITORY_DIALOG_TITLE)
+ .activate();
+ bot.button(IDELabel.Button.OK).click();
+ assertTrue("Guvnor repository was not deleted properly",
+ guvnorRepositoriesBot.tree().rowCount() == 0);
+ }
+
+ /**
+ * Opens Guvnor Console
+ */
+ private void openGuvnorConsole(){
+ SWTBot guvnorRepositoriesBot = guvnorRepositories.show().bot();
+ SWTBotTree guvnorRepositoryTree = guvnorRepositoriesBot.tree();
+ SWTBotTreeItem tiGuvnorRepository = guvnorRepositoryTree.getAllItems()[0];
+ ContextMenuHelper.prepareTreeItemForContextMenu(guvnorRepositoryTree,
tiGuvnorRepository);
+ new SWTBotMenu(ContextMenuHelper.getContextMenu(guvnorRepositoryTree,
+ IDELabel.Menu.OPEN_GUVNOR_CONSOLE, false)).click();
+ bot.sleep(Timing.time5S());
+ SWTBotBrowserExt browser =
bot.browserByTitle(IDELabel.GuvnorConsole.GUVNOR_CONSOLE_TITLE);
+ browser.setInputTextViaJavaScript(GuvnorRepositoriesTest.GUVNOR_USER_NAME, 1, bot);
+ browser.setInputTextViaJavaScript(GuvnorRepositoriesTest.GUVNOR_PASSWORD, 2, bot);
+ browser.clickOnButtonViaJavaScript(0, bot);
+ browser.clickOnButtonViaJavaScript(IDELabel.GuvnorConsole.BUTTON_YES_INSTALL_SAMPLES,
bot);
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.pressKeyCodeUsingAWT(KeyEvent.VK_RIGHT);
+ KeyboardHelper.releaseKeyCodeUsingAWT(KeyEvent.VK_RIGHT);
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.pressKeyCodeUsingAWT(KeyEvent.VK_ENTER);
+ KeyboardHelper.releaseKeyCodeUsingAWT(KeyEvent.VK_ENTER);
+ bot.sleep(Timing.time30S()); // so long because of NFS filesystem on remote machines
+ KeyboardHelper.pressKeyCodeUsingAWT(KeyEvent.VK_ENTER);
+ KeyboardHelper.releaseKeyCodeUsingAWT(KeyEvent.VK_ENTER);
+ }
+ /**
+ * Browse Guvnor Repository and open fileToOpenFile
+ * @param fileToOpen
+ */
+ private void browseGuvnorRepository(String fileToOpen){
+
+ guvnorRepositories.show();
+
+
guvnorRepositories.openFile(Timing.time3S(),DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),
+ IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM,
+ IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM,
+ fileToOpen);
+
+ assertTrue("File from Guvnor Repository was not opened properly. File " +
fileToOpen + " is not opened in editor",
+ SWTEclipseExt.existEditorWithLabel(bot,fileToOpen + " (Read only)"));
+
+ }
+ /**
+ * Starts Guvnor AS
+ */
+ private void startGuvnor(){
+ try {
+ new StartServer().fulfill();
+ new PrepareViews().fulfill();
+ } catch (RequirementNotFulfilledException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ /**
+ * Stops Guvnor AS
+ */
+ private void stopGuvnor(){
+ try {
+ new StopServer().fulfill();
+ } catch (RequirementNotFulfilledException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ /**
+ * Imports file with fileName to Drools project and check update and commit Guvnor
functionality
+ * @param fileName
+ * @param sampleFileName
+ * @param importFileName
+ */
+ private void guvnorFunctionalityCheck(String fileName, String sampleFileName, String
importFileName){
+ eclipse.openPerspective(PerspectiveType.JAVA);
+ guvnorRepositories.show().bot();
+ SWTBotTreeItem tiGuvnorFile =
guvnorRepositories.selectTreeItem(Timing.time3S(),fileName,
+ new String[]{DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),
+ IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM,
+ IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM});
+ tiGuvnorFile.select();
+ SWTBot packageExplorerBot = packageExplorer.show().bot();
+ SWTBotTreeItem tiDroolRuleDir =
packageExplorer.selectTreeItem(DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME});
+ DragAndDropHelper.dragAndDropOnTo(tiGuvnorFile.widget,tiDroolRuleDir.widget);
+
bot.waitForShell(IDELabel.Shell.COPY_FILE_FROM_GUVNOR_TO_PACKAGE_EXPLORER).activate();
+ bot.button(IDELabel.Button.OK).click();
+ SWTBotTree packageExplorerTree = packageExplorerBot.tree();
+ // File is renamed because there is appended Guvnor info to Tree Item Label
+ // So we need to get real label of Tree Item and use it later
+ SWTBotTreeItem tiDroolRuleFile =
SWTEclipseExt.getTreeItemOnPathStartsWith(packageExplorerBot,
+ packageExplorerTree,
+ Timing.time1S(),
+ fileName,
+ new String[]{DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE});
+ SWTBotEditor editor = packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ tiDroolRuleFile.getText());
+
+ assertTrue("File moved from Guvnor Repository to Drools project was not opened
properly. File " + fileName + " is not opened in editor",
+ SWTEclipseExt.existEditorWithLabel(bot,fileName));
+ // Test Update from Guvnor Repository
+ final String changeText = "#$%SWTBot Change#$%";
+ final String originalEditorText = editor.toTextEditor().getText();
+ editor.toTextEditor().insertText(0, 0, changeText);
+ editor.save();
+ bot.sleep(Timing.time1S());
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree,
tiDroolRuleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_UPDATE);
+ bot.sleep(Timing.time5S());
+ assertTrue("Update from Guvnor Repository was not successful. File " +
fileName + " has not updated content.",
+ editor.toTextEditor().getText().equals(originalEditorText));
+ // Test commit to Guvnor Repository
+ editor.toTextEditor().insertText(0, 0, changeText);
+ editor.save();
+ bot.sleep(Timing.time1S());
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree,
tiDroolRuleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_COMMIT);
+ bot.sleep(Timing.time5S());
+ editor.close();
+ editor =
guvnorRepositories.openFile(Timing.time2S(),DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),
+ IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM,
+ IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM,
+ fileName);
+ String editorText =
GuvnorRepositoriesTest.trimEditorText(editor.toTextEditor().getText());
+ String expectedEditorText = GuvnorRepositoriesTest.trimEditorText(changeText +
originalEditorText);
+ assertTrue("Commit to Guvnor Repository was not successful. File " +
fileName + " was not commited properly." +
+ "\nIt has content: " + editorText +
+ "\nExpected content: " + expectedEditorText,
+ editorText.equals(expectedEditorText));
+ // Test Add To Repository
+ SWTBotTreeItem tiSampleFile = packageExplorer.selectTreeItem(sampleFileName,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE});
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree, tiSampleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_ADD);
+ eclipse.waitForShell("");
+ SWTBotShell addToGuvnorShell = packageExplorerBot.activeShell();
+ SWTBot addToGuvnorDialogBot = addToGuvnorShell.bot();
+ addToGuvnorDialogBot.button(IDELabel.Button.NEXT).click();
+ SWTEclipseExt.getTreeItemOnPath(addToGuvnorDialogBot,
+ addToGuvnorDialogBot.tree(),
+ Timing.time3S(),
+ IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM,
+ new String[]{DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),
+ IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM})
+ .select();
+ bot.sleep(Timing.time5S());
+ addToGuvnorDialogBot.button(IDELabel.Button.FINISH).click();
+ eclipse.waitForClosedShell(addToGuvnorShell);
+ boolean isAddedToGuvnorRepository = false;
+ try{
+ guvnorRepositories.selectTreeItem(Timing.time2S(),sampleFileName,
+ new String[]{DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),
+ IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM,
+ IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM});
+ isAddedToGuvnorRepository = true;
+ } catch (WidgetNotFoundException wnfe){
+ isAddedToGuvnorRepository = false;
+ }
+
+ assertTrue("File " + sampleFileName + " was not added to Guvnor
Repository.",
+ isAddedToGuvnorRepository);
+ // Test Deleting from Guvnor Repository file is already selected in Guvnor Repository
Tree
+ packageExplorerBot = packageExplorer.show().bot();
+ packageExplorerTree = packageExplorerBot.tree();
+ packageExplorerBot.sleep(Timing.time2S());
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree, tiSampleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_DELETE);
+ SWTBot dialogBot =
packageExplorerBot.shell(IDELabel.Shell.CONFIRM_DELETE).activate().bot();
+ dialogBot.button(IDELabel.Button.OK).click();
+ packageExplorerBot.sleep(Timing.time2S());
+ boolean isRemovedFromGuvnorRepository = false;
+ try{
+ guvnorRepositories.selectTreeItem(Timing.time2S(),sampleFileName,
+ new String[]{DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),
+ IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM,
+ IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM});
+ isRemovedFromGuvnorRepository = false;
+ } catch (WidgetNotFoundException wnfe){
+ isRemovedFromGuvnorRepository = true;
+ }
+ assertTrue("File " + sampleFileName + " was not removed from Guvnor
Repository.",
+ isRemovedFromGuvnorRepository);
+ // Import File From Repository
+ eclipse.createNew(EntityType.RESOURCES_FROM_GUVNOR);
+ bot.button(IDELabel.Button.NEXT).click();
+ bot.sleep(Timing.time2S());
+ SWTEclipseExt.getTreeItemOnPath(
+ bot,
+ bot.tree(),
+ Timing.time5S(),
+ importFileName,
+ new String[] {
+ DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),
+ IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM,
+ IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM }).select();
+ bot.button(IDELabel.Button.NEXT).click();
+ SWTEclipseExt.getTreeItemOnPath(bot,
+ bot.tree(),
+ Timing.time1S(),
+ "rules",
+ new String[]
{DroolsAllBotTests.DROOLS_PROJECT_NAME,"src","main"}).select();
+ bot.button(IDELabel.Button.FINISH).click();
+ util.waitForJobs(Timing.time5S(),JobName.BUILDING_WS);
+ bot.sleep(Timing.time1S());
+ packageExplorerBot = packageExplorer.show().bot();
+ packageExplorerTree = packageExplorerBot.tree();
+ boolean isAddedFromGuvnorRepository = false;
+ SWTBotTreeItem tiImportRuleFile = null;
+ try{
+ tiImportRuleFile = SWTEclipseExt.getTreeItemOnPathStartsWith(packageExplorerBot,
+ packageExplorerTree,
+ Timing.time1S(),
+ importFileName,
+ new String[]{DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE});
+ isAddedFromGuvnorRepository = true;
+ } catch (WidgetNotFoundException wnfe){
+ isAddedFromGuvnorRepository = false;
+ }
+ assertTrue("File " + importFileName + " was not added from Guvnor
Repository.",
+ isAddedFromGuvnorRepository);
+
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree,
tiImportRuleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_DISCONNECT);
+ bot.sleep(Timing.time1S());
+ // name of the file has to be without Guvnor information appended to end of file
name
+ // when imported from Guvnor repository
+ assertTrue("File " + importFileName + " was not disconnected from
Guvnor Repository.",
+ tiImportRuleFile.getText().trim().equals(importFileName));
+ }
+ private void drillIntoFunctionalityCheck(){
+ SWTBotView guvnorReposioryView = guvnorRepositories.show();
+ SWTBotTreeItem tiRoot =
guvnorRepositories.selectTreeItem(DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),null)
+ .doubleClick();
+ bot.sleep(Timing.time5S());
+ SWTBotShell activeShell = bot.activeShell();
+ SWTBot dialogBot = null;
+ if (activeShell.getText().length() != 0){
+ dialogBot = bot.shell("").activate().bot();
+ }
+ else{
+ dialogBot = activeShell.bot();
+ }
+
+ dialogBot.textWithLabel(IDELabel.GuvnorConsoleLoginDialog.USER_NAME).setText(
+ GuvnorRepositoriesTest.GUVNOR_USER_NAME);
+ dialogBot.textWithLabel(IDELabel.GuvnorConsoleLoginDialog.PASSWORD).setText(
+ GuvnorRepositoriesTest.GUVNOR_PASSWORD);
+ dialogBot.button(IDELabel.Button.OK).click();
+ tiRoot.expand();
+ bot.sleep(Timing.time2S());
+ tiRoot.select(IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM);
+ SWTUtilExt.getViewToolbarButtonWithTooltip(guvnorReposioryView,
+ IDELabel.GuvnorRepositories.GO_INTO_GUVNOR_REPOSITORY_TOOLTIP)
+ .click();
+ SWTBot guvnorRepositoryBot = guvnorReposioryView.bot();
+ SWTBotTree guvnorRepositoryTree = guvnorRepositoryBot.tree();
+ guvnorRepositoryBot.sleep(Timing.time3S());
+ assertTrue("Guvnor repository Go Into functionality doesn't work
properly.\n" +
+ "Expected First Tree Item in Guvnor Repository is " +
IDELabel.GuvnorRepositories.DEFAULT_PACKAGE_TREE_ITEM +
+ "\nBut it was " + guvnorRepositoryTree.getAllItems()[0].getText(),
+
IDELabel.GuvnorRepositories.DEFAULT_PACKAGE_TREE_ITEM.equals(guvnorRepositoryTree.getAllItems()[0].getText()));
+
+ guvnorRepositories.selectTreeItem(Timing.time2S(),
IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM,
+ null);
+ SWTUtilExt.getViewToolbarButtonWithTooltip(guvnorReposioryView,
+ IDELabel.GuvnorRepositories.GO_INTO_GUVNOR_REPOSITORY_TOOLTIP)
+ .click();
+ guvnorRepositoryBot.sleep(Timing.time3S());
+ assertTrue("Guvnor repository Go Into functionality doesn't work
properly.\n" +
+ "Expected First Tree Item in Guvnor Repository is " +
IDELabel.GuvnorRepositories.APPLICANTDSL_DSL_TREE_ITEM +
+ "\nBut it was " + guvnorRepositoryTree.getAllItems()[0].getText(),
+
IDELabel.GuvnorRepositories.APPLICANTDSL_DSL_TREE_ITEM.equals(guvnorRepositoryTree.getAllItems()[0].getText()));
+
+ SWTUtilExt.getViewToolbarButtonWithTooltip(guvnorReposioryView,
+ IDELabel.GuvnorRepositories.BACK_GUVNOR_REPOSITORY_TOOLTIP)
+ .click();
+ guvnorRepositoryBot.sleep(Timing.time3S());
+ assertTrue("Guvnor repository Back functionality doesn't work
properly.\n" +
+ "Expected First Tree Item in Guvnor Repository is " +
IDELabel.GuvnorRepositories.DEFAULT_PACKAGE_TREE_ITEM +
+ "\nBut it was " + guvnorRepositoryTree.getAllItems()[0].getText(),
+
IDELabel.GuvnorRepositories.DEFAULT_PACKAGE_TREE_ITEM.equals(guvnorRepositoryTree.getAllItems()[0].getText()));
+
+ SWTUtilExt.getViewToolbarButtonWithTooltip(guvnorReposioryView,
+ IDELabel.GuvnorRepositories.HOME_GUVNOR_REPOSITORY_TOOLTIP)
+ .click();
+ guvnorRepositoryBot.sleep(Timing.time3S());
+ assertTrue("Guvnor repository Home functionality doesn't work
properly.\n" +
+ "Expected First Tree Item in Guvnor Repository is " +
DroolsAllBotTests.getGuvnorRepositoryRootTreeItem() +
+ "\nBut it was " + guvnorRepositoryTree.getAllItems()[0].getText(),
+
DroolsAllBotTests.getGuvnorRepositoryRootTreeItem().equals(guvnorRepositoryTree.getAllItems()[0].getText()));
+ }
+ /**
+ * Check Repository History Functionality
+ * @param testFileName
+ */
+ private void repositoryHistoryCheck (String testFileName){
+ // Import File From Repository
+ eclipse.createNew(EntityType.RESOURCES_FROM_GUVNOR);
+ bot.button(IDELabel.Button.NEXT).click();
+ SWTEclipseExt.getTreeItemOnPath(
+ bot,
+ bot.tree(),
+ Timing.time5S(),
+ testFileName,
+ new String[] {
+ DroolsAllBotTests.getGuvnorRepositoryRootTreeItem(),
+ IDELabel.GuvnorRepositories.PACKAGES_TREE_ITEM,
+ IDELabel.GuvnorRepositories.MORTGAGE_TREE_ITEM }).select();
+ bot.button(IDELabel.Button.NEXT).click();
+ SWTEclipseExt.getTreeItemOnPath(bot,
+ bot.tree(),
+ Timing.time1S(),
+ "rules",
+ new String[]
{DroolsAllBotTests.DROOLS_PROJECT_NAME,"src","main"}).select();
+ bot.button(IDELabel.Button.FINISH).click();
+ util.waitForJobs(Timing.time5S(),JobName.BUILDING_WS);
+ bot.sleep(Timing.time1S());
+ SWTBot packageExplorerBot = packageExplorer.show().bot();
+ SWTBotTree packageExplorerTree = packageExplorerBot.tree();
+ // File is renamed because there is appended Guvnor info to Tree Item Label
+ // So we need to get real label of Tree Item and use it later
+ SWTBotTreeItem tiTestRuleFile =
SWTEclipseExt.getTreeItemOnPathStartsWith(packageExplorerBot,
+ packageExplorerTree,
+ Timing.time1S(),
+ testFileName,
+ new String[]{DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE});
+ SWTBotEditor editor = packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ tiTestRuleFile.getText());
+ // change test file
+ String addedChange = "SWTBOT Change!@#$asdfghjkl)(*&^";
+ editor.toTextEditor().insertText(0,0,addedChange);
+ editor.save();
+ bot.sleep(Timing.time1S());
+ // commit changes
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree,
tiTestRuleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_COMMIT);
+ bot.sleep(Timing.time5S());
+ // check history
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree,
tiTestRuleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_SHOW_HISTORY);
+ bot.sleep(Timing.time5S());
+ SWTBotView guvnorResourceHistoryView =
open.viewOpen(GuvnorGuvnorResourceHistory.LABEL);
+ SWTBot guvnorResourceHistoryBot = guvnorResourceHistoryView.bot();
+ SWTBotTable guvnorResourceHistoryTable = guvnorResourceHistoryView.bot().table();
+ assertTrue("Guvnor Resource History table for file " + testFileName +
+ " has to contain at least one record but is empty.",
+ guvnorResourceHistoryTable.rowCount() > 0);
+ // Compare Revisions
+ String secondAddedChange = "222222" + addedChange;
+ editor.toTextEditor().insertText(0,0,secondAddedChange);
+ editor.saveAndClose();
+ bot.sleep(Timing.time1S());
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree,
tiTestRuleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_COMPARE_WITH_VERSION);
+ eclipse.waitForShell("");
+ guvnorResourceHistoryBot.activeShell().bot().button(IDELabel.Button.OK).click();
+ SWTBotEditor compareEditor = bot.editorByTitle("Compare");
+ Matcher<StyledText> widgetOfTypeMatcher =
WidgetMatcherFactory.widgetOfType(StyledText.class);
+ final List<?> styledTexts =
compareEditor.bot().widgets(widgetOfTypeMatcher,compareEditor.getWidget());
+ String newVersionEditorText = syncExec(new StringResult() {
+ public String run() {
+ return ((StyledText)styledTexts.get(0)).getText();
+ }
+ });
+ String revisionEditorText = syncExec(new StringResult() {
+ public String run() {
+ return ((StyledText)styledTexts.get(1)).getText();
+ }
+ });
+ compareEditor.close();
+ assertTrue("Actual version of file opened within compare editor has wrong
content.\n" +
+ "Content should start with " + secondAddedChange +
+ "\n but is " +
newVersionEditorText,newVersionEditorText.startsWith(secondAddedChange));
+ assertTrue("File stored in Guvnor Repository opened within compare editor has
wrong content.\n" +
+ "Content should start with " + addedChange +
+ "\n but is " +
revisionEditorText,revisionEditorText.startsWith(addedChange));
+ // Open Revision
+ guvnorResourceHistoryView.show();
+ guvnorResourceHistoryTable.setFocus();
+ bot.sleep(Timing.time1S());
+ guvnorResourceHistoryTable.select(0);
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.pressKeyCodeUsingAWT(KeyEvent.VK_ENTER);
+ KeyboardHelper.releaseKeyCodeUsingAWT(KeyEvent.VK_ENTER);
+ bot.sleep(Timing.time1S());
+ SWTBotEditor revisonFileEditor = eclipse.editorStartsWith(testFileName);
+ String revisionFileText = revisonFileEditor.toTextEditor().getText();
+ revisonFileEditor.close();
+ assertTrue("File stored in Guvnor Repository has wrong content.\n" +
+ "Content should start with " + addedChange +
+ "\n but is " +
revisionFileText,revisionFileText.startsWith(addedChange));
+ // Switch to version
+ editor = packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ tiTestRuleFile.getText());
+ ContextMenuHelper.prepareTreeItemForContextMenu(packageExplorerTree,
tiTestRuleFile);
+ ContextMenuHelper.clickContextMenu(packageExplorerTree,
+ IDELabel.Menu.GUVNOR,IDELabel.Menu.GUVNOR_SWITCH_TO_VERSION);
+ eclipse.waitForShell("");
+ guvnorResourceHistoryBot.activeShell().bot().button(IDELabel.Button.OK).click();
+ bot.sleep(Timing.time3S());
+ String editorText = editor.toTextEditor().getText();
+ assertTrue("Switched version of file has wrong content.\n" +
+ "Content should start with " + addedChange +
+ "\n but is " + editorText,editorText.startsWith(addedChange));
+ }
+
+ private static String trimEditorText (String textToTrim){
+
+ return textToTrim.replaceAll("\n", "").replaceAll("\t",
"").replaceAll("\r", "").replaceAll(" ",
"");
+
+ }
+
+}
\ No newline at end of file
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsProject.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsProject.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsProject.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,167 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import java.io.File;
+
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotCheckBox;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.jboss.tools.ui.bot.ext.SWTEclipseExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.helper.FileRenameHelper;
+import org.jboss.tools.ui.bot.ext.types.EntityType;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.ui.bot.ext.types.ViewType;
+import org.jboss.tools.ui.bot.ext.view.ProblemsView;
+import org.jboss.tools.ui.bot.test.WidgetVariables;
+import org.junit.Test;
+/**
+ * Test managing of Drools Project
+ * @author Vladimir Pakan
+ *
+ */
+public class ManageDroolsProject extends SWTTestExt{
+ /**
+ * Test manage Drools project
+ */
+ private static final String RENAMED_DROOLS_PROJECT =
DroolsAllBotTests.DROOLS_PROJECT_NAME + "-renamed";
+
+ @Test
+ public void testManageDroolsProject() {
+ createDroolsProjectTest (DroolsAllBotTests.DROOLS_PROJECT_NAME);
+ runNewDroolsProject (DroolsAllBotTests.DROOLS_PROJECT_NAME);
+ renameDroolsProject (DroolsAllBotTests.DROOLS_PROJECT_NAME,
ManageDroolsProject.RENAMED_DROOLS_PROJECT);
+ deleteDroolsProject (ManageDroolsProject.RENAMED_DROOLS_PROJECT);
+ createDroolsProjectTest (DroolsAllBotTests.DROOLS_PROJECT_NAME);
+ }
+
+ public static void createDroolsProject(String droolsProjectName) {
+ eclipse.showView(ViewType.PACKAGE_EXPLORER);
+ eclipse.createNew(EntityType.DROOLS_PROJECT);
+ bot.textWithLabel(IDELabel.NewDroolsProjectDialog.NAME).setText(droolsProjectName);
+ bot.button(IDELabel.Button.NEXT).click();
+ // check all buttons
+ int index = 0;
+ boolean checkBoxExists = true;
+ while (checkBoxExists){
+ try{
+ SWTBotCheckBox checkBox = bot.checkBox(index);
+ if (!checkBox.isChecked()){
+ checkBox.click();
+ }
+ index++;
+ }catch (WidgetNotFoundException wnfe){
+ checkBoxExists = false;
+ }catch (IndexOutOfBoundsException ioobe){
+ checkBoxExists = false;
+ }
+ }
+ bot.button(IDELabel.Button.NEXT).click();
+ //final String CODE_COMPATIBILITY =
IDELabel.NewDroolsProjectDialog.CODE_COMPATIBLE_WITH_50_DROOLS;
+ final String CODE_COMPATIBILITY =
IDELabel.NewDroolsProjectDialog.CODE_COMPATIBLE_WITH_51_DROOLS_OR_ABOVE;
+ if
(CODE_COMPATIBILITY.equals(IDELabel.NewDroolsProjectDialog.CODE_COMPATIBLE_WITH_51_DROOLS_OR_ABOVE))
{
+ DroolsAllBotTests.RULE_FLOW_FILE_NAME =
DroolsAllBotTests.RULE_FLOW_SAMPLE_FILE_NAME;
+ } else {
+ DroolsAllBotTests.RULE_FLOW_FILE_NAME = DroolsAllBotTests.RULE_FLOW_RF_FILE_NAME;
+ }
+
bot.comboBoxWithLabel(IDELabel.NewDroolsProjectDialog.GENERATE_CODE_COMPATIBLE_WITH_COMBO_BOX_LABEL)
+ .setSelection(CODE_COMPATIBILITY);
+ bot.button(IDELabel.Button.FINISH).click();
+ }
+
+ /**
+ * Creates new Drools project
+ * @param droolsProjectName
+ */
+ private void createDroolsProjectTest(String droolsProjectName){
+ createDroolsProject(droolsProjectName);
+ SWTTestExt.util.waitForAll(30*1000L);
+ bot.waitForNumberOfShells(1, 60);
+ assertTrue("Project "
+ + droolsProjectName
+ + " was not created
properly.",SWTEclipseExt.isProjectInPackageExplorer(bot,droolsProjectName));
+ String projectPath = File.separator + droolsProjectName;
+ SWTBotTreeItem[] errors = ProblemsView.getFilteredErrorsTreeItems(bot,null
,projectPath, null,null);
+ assertTrue("Project "
+ + droolsProjectName
+ + " was not created properly. There are these errors: "
+ + SWTEclipseExt.getFormattedTreeNodesText(errors),
+ errors == null || errors.length == 0);
+ SWTBotTreeItem[] warnings = ProblemsView.getFilteredWarningsTreeItems(bot,null
,projectPath, null,null);
+ assertTrue("Project "
+ + droolsProjectName
+ + " was not created properly. There are these warnings: "
+ + SWTEclipseExt.getFormattedTreeNodesText(warnings),
+ warnings == null || warnings.length == 0);
+
+ }
+ /**
+ * Runs newly created Drools project and check result
+ * @param droolsProjectName
+ */
+ private void runNewDroolsProject(String droolsProjectName){
+ console.clearConsole();
+ bot.sleep(5000L);
+
+ SWTBotTreeItem tiTestFile =
packageExplorer.selectTreeItem(DroolsAllBotTests.DROOLS_TEST_JAVA_TREE_NODE,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_JAVA_TREE_NODE,
+ DroolsAllBotTests.COM_SAMPLE_TREE_NODE});
+
+ eclipse.runTreeItemAsJavaApplication(tiTestFile);
+
+ String consoleText = console.getConsoleText(3*1000L,60*1000L,true);
+
+ assertTrue("DroolsTest.java class didn't run properly.\n" +
+ "Console Text was: " + consoleText + "\n" +
+ "Expected console text is: " + "Hello World\nGoodbye cruel
world\n",
+ "Hello World\nGoodbye cruel world\n".equals(consoleText));
+ }
+ /**
+ * Renames Drools project and check result
+ * @param droolsProjectName
+ * @param renamedProjectName
+ */
+ private void renameDroolsProject(String droolsProjectName, String renamedProjectName){
+ packageExplorer.show();
+
+ bot.sleep(TIME_1S);
+
+ SWTBot webProjects = bot.viewByTitle(WidgetVariables.PACKAGE_EXPLORER).bot();
+ SWTBotTree tree = webProjects.tree();
+
+ tree.setFocus();
+ String checkResult = FileRenameHelper.checkProjectRenamingWithinPackageExplorer(bot,
+ DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ ManageDroolsProject.RENAMED_DROOLS_PROJECT,
+ IDELabel.Shell.RENAME_JAVA_PROJECT);
+ assertNull(checkResult,checkResult);
+ }
+
+ /**
+ * Deletes Drools project and check result
+ *
+ * @param droolsProjectName
+ */
+ private void deleteDroolsProject(final String droolsProjectName) {
+ bot.sleep(Timing.time10S()); // because of NFS filesystem
+ packageExplorer.deleteProject(droolsProjectName, true);
+ assertFalse("Drools project: " + droolsProjectName + " was not
deleted properly",
+ packageExplorer.existsResource(droolsProjectName));
+ }
+}
+
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsRules.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsRules.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsRules.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,118 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEclipseEditor;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.helper.ContextMenuHelper;
+import org.jboss.tools.ui.bot.ext.types.EntityType;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.ui.bot.ext.types.ViewType;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.junit.Test;
+/**
+ * Test managing of Drools Rules
+ * @author Vladimir Pakan
+ *
+ */
+public class ManageDroolsRules extends SWTTestExt{
+ /**
+ * Test manage Drools Rules
+ */
+ @Test
+ public void testManageDroolsRules() {
+ createDroolsRule (DroolsAllBotTests.TEST_DROOLS_RULE_NAME);
+ bot.sleep(Timing.time3S());
+ debugDroolsRule (DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME);
+ }
+ /**
+ * Creates Drools Rule and checks result
+ * @param droolsRuletName
+ */
+ private void createDroolsRule(String droolsRuleName){
+
+ packageExplorer.show();
+ SWTBotTreeItem tiDroolsRules =
packageExplorer.selectTreeItem(DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME});
+
+ tiDroolsRules.select();
+ eclipse.createNew(EntityType.DROOLS_RULE);
+
+ bot.textWithLabel(IDELabel.NewDroolsRuleDialog.FILE_NAME).setText(droolsRuleName);
+
bot.textWithLabel(IDELabel.NewDroolsRuleDialog.RULE_PACKAGE_NAME).setText(DroolsAllBotTests.COM_SAMPLE_TREE_NODE);
+ bot.button(IDELabel.Button.FINISH).click();
+ bot.sleep(Timing.time1S());
+ tiDroolsRules.expand();
+ // Test if new Drools Rule is within package tree view
+ boolean isRuleCreated = true;
+ try{
+ tiDroolsRules.getNode(droolsRuleName);
+ } catch (WidgetNotFoundException wnfe){
+ isRuleCreated = false;
+ }
+ assertTrue("New Drools Rule was not created properly. It's not present
within Package Explorer",isRuleCreated);
+ // Test if new Drools Rule is opened in editor
+ isRuleCreated = true;
+ try{
+ bot.editorByTitle(droolsRuleName);
+ } catch (WidgetNotFoundException wnfe){
+ isRuleCreated = false;
+ }
+ assertTrue("New Drools Rule was not created properly. File " +
droolsRuleName + " is not opened in editor",isRuleCreated);
+ }
+ /**
+ * Debug Drools Rule and checks result
+ * @param droolsRuletName
+ */
+ private void debugDroolsRule(String droolsRuleName){
+ packageExplorer.show();
+ SWTBotTreeItem tiDroolsRule =
packageExplorer.selectTreeItem(DroolsAllBotTests.SAMPLE_DROOLS_RULE_NAME,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE});
+ SWTBot packageExplorerBot =
bot.viewByTitle(ViewType.PACKAGE_EXPLORER.getViewLabel()).bot();
+ SWTBotTree tree = packageExplorerBot.tree();
+ // Select and Open Rule File
+ ContextMenuHelper.prepareTreeItemForContextMenu(tree , tiDroolsRule);
+ new SWTBotMenu(ContextMenuHelper.getContextMenu(tree, IDELabel.Menu.OPEN,
true)).click();
+ SWTBotEclipseEditor ruleEditor = bot.editorByTitle(droolsRuleName).toTextEditor();
+ ruleEditor.selectRange(8, 0, 0);
+ bot.menu(IDELabel.Menu.RUN).menu(IDELabel.Menu.TOGGLE_BREAKPOINT).click();
+ SWTBotTreeItem tiDroolsTest =
packageExplorer.selectTreeItem(DroolsAllBotTests.DROOLS_TEST_JAVA_TREE_NODE,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_JAVA_TREE_NODE,
+ DroolsAllBotTests.COM_SAMPLE_TREE_NODE});
+ console.clearConsole();
+ eclipse.debugTreeItemAsDroolsApplication(tiDroolsTest);
+ eclipse.closeConfirmPerspectiveSwitchShellIfOpened(false);
+ String consoleText = console.getConsoleText(3*1000L,3*1000L,true);
+ assertTrue("Drools Rule was not debuged properly.\nConsole content should have
been empty but is:\n" + consoleText,
+ consoleText.length() == 0);
+ SWTBotView debugView = bot.viewByTitle(ViewType.DEBUG.getViewLabel());
+ debugView.toolbarButton(IDELabel.DebugView.BUTTON_STEP_OVER_TOOLTIP).click();
+ consoleText = console.getConsoleText(3*1000L,60*1000L,true);
+ assertTrue("Drools Rule was not debuged properly.\nConsole content should
be:\n'Hello World\n' but is:\n" + consoleText,
+ consoleText.equals("Hello World\n"));
+ debugView.toolbarButton(IDELabel.DebugView.BUTTON_RESUME_TOOLTIP).click();
+ consoleText = console.getConsoleText(3*1000L,60*1000L,true);
+ assertTrue("Drools Rule was not debuged properly.\nConsole content should
be:Hello World\nGoodbye cruel world\n" + consoleText,
+ consoleText.equals("Hello World\nGoodbye cruel world\n"));
+ }
+
+}
+
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsRuntime.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsRuntime.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/ManageDroolsRuntime.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,180 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import java.io.File;
+
+import org.jboss.tools.ui.bot.ext.SWTEclipseExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.ui.bot.ext.types.IDELabel.PreferencesDialog;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.junit.Test;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
+import org.drools.eclipse.util.DroolsRuntimeManager;
+import org.drools.eclipse.util.DroolsRuntime;
+/**
+ * Test managing of Drools Runtime
+ * @author Vladimir Pakan
+ *
+ */
+public class ManageDroolsRuntime extends SWTTestExt{
+ /**
+ * Test manage Drools Runtime
+ */
+ @Test
+ public void testManageDroolsRuntime() {
+
addDroolsRuntime(DroolsAllBotTests.DROOLS_RUNTIME_NAME,DroolsAllBotTests.DROOLS_RUNTIME_LOCATION,true);
+ editDroolsRuntime(DroolsAllBotTests.getTestDroolsRuntimeName(),
+ DroolsAllBotTests.getTestDroolsRuntimeLocation(),
+ "edited" , "testedit");
+ removeDroolsRuntime(DroolsAllBotTests.getTestDroolsRuntimeName());
+
createDroolsRuntime(DroolsAllBotTests.DROOLS_RUNTIME_NAME,DroolsAllBotTests.CREATE_DROOLS_RUNTIME_LOCATION);
+ if (DroolsAllBotTests.useExternalDroolsRuntime()){
+ removeDroolsRuntime(DroolsAllBotTests.DROOLS_RUNTIME_NAME);
+
addDroolsRuntime(DroolsAllBotTests.DROOLS_RUNTIME_NAME,DroolsAllBotTests.DROOLS_RUNTIME_LOCATION,true);
+ }
+ }
+ /**
+ * Adds Drools Runtime
+ * @param runtimeName
+ * @param runtimeLocation
+ * @param setAsDefault
+ */
+ private void addDroolsRuntime(String runtimeName, String runtimeLocation, boolean
setAsDefault){
+ selectDroolsPreferences();
+ bot.button(IDELabel.Button.ADD).click();
+ bot.shell(IDELabel.Shell.DROOLS_RUNTIME).activate();
+ bot.textWithLabel(IDELabel.DroolsRuntimeDialog.NAME).setText(runtimeName);
+ bot.textWithLabel(IDELabel.DroolsRuntimeDialog.PATH).setText(runtimeLocation);
+ bot.button(IDELabel.Button.OK).click();
+ bot.shell(IDELabel.Shell.PREFERENCES).activate();
+ SWTBotTable table = bot.table();
+ boolean droolsRuntimeAdded =
+
SWTEclipseExt.isItemInTableColumn(table,runtimeName,IDELabel.DroolsRuntimeDialog.COLUMN_NAME_INDEX)
+ &&
SWTEclipseExt.isItemInTableColumn(table,runtimeLocation,IDELabel.DroolsRuntimeDialog.COLUMN_LOCATION_INDEX);
+ // Set new runtime as default
+ if (setAsDefault){
+ table.getTableItem(0).check();
+ }
+ bot.button(IDELabel.Button.OK).click();
+ assertTrue("Drools Runtime with name [" + runtimeName +
+ "] and location [" + runtimeLocation +
+ "] was not added properly.",droolsRuntimeAdded);
+ DroolsAllBotTests.setTestDroolsRuntimeName(runtimeName);
+ DroolsAllBotTests.setTestDroolsRuntimeLocation(runtimeLocation);
+ SWTEclipseExt.hideWarningIfDisplayed(bot);
+ }
+ /**
+ * Selects Drools Preferences within Preferences Dialog
+ */
+ private void selectDroolsPreferences(){
+ jbt.delay();
+ bot.menu(IDELabel.Menu.WINDOW).menu(IDELabel.Menu.PREFERENCES).click();
+ bot.shell(IDELabel.Shell.PREFERENCES).activate();
+ SWTBotTreeItem tiDroolsGroup =
bot.tree().expandNode(IDELabel.PreferencesDialog.DROOLS_GROUP);
+ tiDroolsGroup.select(PreferencesDialog.INSTALLED_DROOLS_RUNTIMES);
+ }
+ /**
+ * Edits Drools Runtime
+ * @param runtimeName
+ * @param runtimeLocation
+ * @param nameSuffix
+ * @param locationSuffix
+ */
+ private void editDroolsRuntime(String runtimeName, String runtimeLocation, String
nameSuffix, String locationSuffix){
+ selectDroolsPreferences();
+ SWTBotTable table = bot.table();
+ table.getTableItem(runtimeName).select();
+ bot.button(IDELabel.Button.EDIT).click();
+ bot.shell(IDELabel.Shell.DROOLS_RUNTIME).activate();
+ SWTBotText txName = bot.textWithLabel(IDELabel.DroolsRuntimeDialog.NAME);
+ SWTBotText txPath = bot.textWithLabel(IDELabel.DroolsRuntimeDialog.PATH);
+ String editedDroolsRuntimeName = txName.getText() + " " + nameSuffix;
+ String editedDroolsRuntimeLocation = txPath.getText() + File.separator +
nameSuffix;
+ new File(editedDroolsRuntimeLocation).mkdir();
+ txName.setText(editedDroolsRuntimeName);
+ txPath.setText(editedDroolsRuntimeLocation);
+ bot.button(IDELabel.Button.OK).click();
+ bot.shell(IDELabel.Shell.PREFERENCES).activate();
+ boolean droolsRuntimeEdited =
+
SWTEclipseExt.isItemInTableColumn(table,editedDroolsRuntimeName,IDELabel.DroolsRuntimeDialog.COLUMN_NAME_INDEX)
+ &&
SWTEclipseExt.isItemInTableColumn(table,editedDroolsRuntimeLocation,IDELabel.DroolsRuntimeDialog.COLUMN_LOCATION_INDEX);
+ bot.button(IDELabel.Button.OK).click();
+ assertTrue("Drools Runtime with name [" + runtimeName +
+ "] and location [" + runtimeLocation +
+ "] was not renamed properly.",droolsRuntimeEdited);
+ DroolsAllBotTests.setTestDroolsRuntimeName(editedDroolsRuntimeName);
+ DroolsAllBotTests.setTestDroolsRuntimeLocation(editedDroolsRuntimeLocation);
+ SWTEclipseExt.hideWarningIfDisplayed(bot);
+ }
+
+ /**
+ * Removes Drools Runtime
+ * @param runtimeName
+ * @param runtimeLocation
+ */
+ private void removeDroolsRuntime(String runtimeName){
+ selectDroolsPreferences();
+ SWTBotTable table = bot.table();
+ table.getTableItem(runtimeName).select();
+ bot.button(IDELabel.Button.REMOVE).click();
+ boolean droolsRuntimeRemoved =
!SWTEclipseExt.isItemInTableColumn(table,runtimeName,
+ IDELabel.DroolsRuntimeDialog.COLUMN_NAME_INDEX);
+ bot.button(IDELabel.Button.OK).click();
+ assertTrue("Drools Runtime with name [" + runtimeName +
+ "] was not removed properly.",droolsRuntimeRemoved);
+ // Remove temporary directory created within editDroolsRuntime() method
+ if
(!DroolsAllBotTests.getTestDroolsRuntimeName().equals(DroolsAllBotTests.DROOLS_RUNTIME_NAME)){
+ File tempDir = new File (DroolsAllBotTests.getTestDroolsRuntimeLocation());
+ if (tempDir.isDirectory()){
+ tempDir.delete();
+ }
+ }
+ DroolsAllBotTests.setTestDroolsRuntimeName(null);
+ DroolsAllBotTests.setTestDroolsRuntimeLocation(null);
+ SWTEclipseExt.hideWarningIfDisplayed(bot);
+ }
+ /**
+ * Creates Drools Runtime
+ * @param runtimeName
+ * @param runtimeLocation
+ */
+ private void createDroolsRuntime(String runtimeName, String runtimeLocation){
+ DroolsRuntimeManager.createDefaultRuntime(runtimeLocation);
+ DroolsRuntime droolsRuntime = new DroolsRuntime();
+ droolsRuntime.setName(runtimeName);
+ droolsRuntime.setPath(runtimeLocation);
+ droolsRuntime.setDefault(true);
+ DroolsRuntimeManager.setDroolsRuntimes(new DroolsRuntime[]{droolsRuntime});
+ // Test if Drools runtime is defined
+ assertTrue("Drools Runtime was not properly created on location: " +
runtimeLocation,
+ new File (runtimeLocation + File.separator +
"drools-core.jar").exists());
+ selectDroolsPreferences();
+ SWTBotTable table = bot.table();
+ boolean droolsRuntimeCreated =
+
SWTEclipseExt.isItemInTableColumn(table,runtimeName,IDELabel.DroolsRuntimeDialog.COLUMN_NAME_INDEX)
+ &&
SWTEclipseExt.isItemInTableColumn(table,runtimeLocation,IDELabel.DroolsRuntimeDialog.COLUMN_LOCATION_INDEX);
+ bot.button(IDELabel.Button.OK).click();
+ SWTEclipseExt.hideWarningIfDisplayed(bot);
+ assertTrue("Drools Runtime with name [" + runtimeName +
+ "] and location [" + runtimeLocation +
+ "] was not created properly.",droolsRuntimeCreated);
+ DroolsAllBotTests.setTestDroolsRuntimeName(runtimeName);
+ DroolsAllBotTests.setTestDroolsRuntimeLocation(runtimeLocation);
+
+ }
+
+}
+
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/OpenDroolsPerspective.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/OpenDroolsPerspective.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/OpenDroolsPerspective.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,50 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.ui.bot.ext.types.PerspectiveType;
+import org.junit.Test;
+/**
+ * Test opening perspective
+ * @author Vladimir Pakan
+ *
+ */
+public class OpenDroolsPerspective extends SWTTestExt{
+ /**
+ * Test Opening Drools Rules
+ */
+ @Test
+ public void testOpenDroolsPerspective() {
+ openDroolsPerspective();
+ }
+ /**
+ * Open Drools Perspective
+ */
+ private void openDroolsPerspective(){
+ eclipse.openPerspective(PerspectiveType.DROOLS);
+ boolean wasFound = false;
+ try{
+ bot.toolbarDropDownButtonWithTooltip(IDELabel.Button.DROOLS_WORKBENCH);
+ wasFound = true;
+ } catch (WidgetNotFoundException wnfe){
+ wasFound = false;
+ }
+ eclipse.openPerspective(PerspectiveType.JAVA);
+ assertTrue("Drools Perspective was not opened properly. Button " +
+ IDELabel.Button.DROOLS_WORKBENCH + " is not present in Workbench",
+ wasFound);
+ }
+}
+
Added:
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/RuleFlowTest.java
===================================================================
---
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/RuleFlowTest.java
(rev 0)
+++
trunk/build/aggregate/soatests-site/tests/org.jboss.tools.drools.ui.bot.test/src/org/jboss/tools/drools/ui/bot/test/smoke/RuleFlowTest.java 2012-04-23
19:01:33 UTC (rev 40421)
@@ -0,0 +1,770 @@
+ /*******************************************************************************
+ * Copyright (c) 2007-2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+
+package org.jboss.tools.drools.ui.bot.test.smoke;
+
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+
+import org.eclipse.swtbot.eclipse.gef.finder.SWTGefBot;
+import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditor;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotCheckBox;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.jboss.tools.drools.ui.bot.test.DroolsAllBotTests;
+import org.jboss.tools.ui.bot.ext.SWTEclipseExt;
+import org.jboss.tools.ui.bot.ext.SWTOpenExt;
+import org.jboss.tools.ui.bot.ext.SWTTestExt;
+import org.jboss.tools.ui.bot.ext.SWTUtilExt;
+import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.gen.ActionItem;
+import org.jboss.tools.ui.bot.ext.helper.KeyboardHelper;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
+import org.jboss.tools.ui.bot.ext.types.ViewType;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+/**
+ * Tests Rule Flow
+ * @author Vladimir Pakan
+ *
+ */
+public class RuleFlowTest extends SWTTestExt{
+ private static final String RULE_FLOW_FILE_DIRECTORY = "src" + File.separator
+
+ "main" + File.separator +
+ "rules";
+ private static final String ROOT_NODE_NAME = "process";
+ private static final String HEADER_NODE_NAME = "header";
+ private static final String NODES_NODE_NAME = "nodes";
+ private static final String CONNECTIONS_NODE_NAME = "connections";
+ private static final String CONNECTION_NODE_NAME = "connection";
+ private static final int NODES_NODE_CHILDREN_COUNT = 7;
+ private static final int CONNECTIONS_NODE_CHILDREN_COUNT = 1;
+ private static final int ROOT_NODE_CHILDREN_COUNT = 3;
+
+ private boolean isEditorMaximized = false;
+
+ /**
+ * Tests Rule Flow
+ */
+ @Test
+ public void testRuleFlow() {
+ runRuleFlowCheck(DroolsAllBotTests.RULE_FLOW_JAVA_TEST_FILE_NAME);
+ ruleFlowEditorCheck(DroolsAllBotTests.RULE_FLOW_FILE_NAME);
+ }
+
+ /**
+ * Sets all drools flow nodes.
+ */
+ @SuppressWarnings("unused")
+ private void setAllDroolsFlowNodes() {
+ new
SWTOpenExt(bot).preferenceOpen(ActionItem.Preference.DroolsDroolsFlownodes.LABEL);
+ bot.waitForShell(IDELabel.Shell.PREFERENCES);
+ for (SWTBotCheckBox checkBox : bot.checkBoxes()) {
+ if (checkBox.isEnabled()) {
+ checkBox.select();
+ }
+ }
+ bot.button(IDELabel.Button.OK).click();
+ bot.waitForShell(IDELabel.Shell.WARNING);
+ bot.button(IDELabel.Button.OK).click();
+ }
+
+ /**
+ * Runs newly created Drools project and check result
+ * @param droolsProjectName
+ */
+ private void runRuleFlowCheck(String droolsRuleTestFileName){
+ console.clearConsole();
+ bot.sleep(5000L);
+
+ SWTBotTreeItem tiTestFile = packageExplorer.selectTreeItem(droolsRuleTestFileName,
+ new String[] {DroolsAllBotTests.DROOLS_PROJECT_NAME,
+ DroolsAllBotTests.SRC_MAIN_JAVA_TREE_NODE,
+ DroolsAllBotTests.COM_SAMPLE_TREE_NODE});
+
+ eclipse.runTreeItemAsJavaApplication(tiTestFile);
+
+ String consoleText = console.getConsoleText(3*1000L,60*1000L,true);
+
+ assertTrue(droolsRuleTestFileName + " didn't run properly.\n" +
+ "Console Text was: " + consoleText + "\n" +
+ "Expected console text is: " + "Hello World\n",
+ "Hello World\n".equals(consoleText));
+ }
+
+ /**
+ * Add all possible object to RF diagram and then remove them
+ * @param ruleFlowRfFileName
+ */
+ private void ruleFlowEditorCheck(String ruleFlowFileName) {
+ packageExplorer.show();
+ packageExplorer.openFile(DroolsAllBotTests.DROOLS_PROJECT_NAME ,
+ DroolsAllBotTests.SRC_MAIN_RULES_TREE_NODE, ruleFlowFileName);
+ // Test if Rule Flow File is opened in editor
+ assertTrue("Rule Flow File is not opened properly. File " +
ruleFlowFileName + " is not opened in editor",
+ SWTEclipseExt.existEditorWithLabel(bot, ruleFlowFileName));
+ // Maximize editor
+ bot.menu(IDELabel.Menu.WINDOW)
+ .menu(IDELabel.Menu.NAVIGATION)
+ .menu(IDELabel.Menu.MAXIMIZE_ACTIVE_VIEW_OR_EDITOR)
+ .click();
+ isEditorMaximized = true;
+ SWTGefBot gefBot = new SWTGefBot();
+ SWTBotGefEditor gefEditor = gefBot.gefEditor(ruleFlowFileName);
+ // Clear Editor
+ gefEditor.setFocus();
+ deleteAllObjectsFromRuleFile(gefEditor, DroolsAllBotTests.DROOLS_PROJECT_NAME,
ruleFlowFileName);
+ // Draw each component
+ String[] tools = new String[]{"Start Event","End
Event","Rule Task",
+ "Gateway [diverge]","Gateway [converge]","Reusable
Sub-Process",
+ "Script Task"
+ };
+ int xspacing = 100;
+ int xoffset = 10;
+ int yspacing = 100;
+ int yoffset = 10;
+ for (int toolIndex = 0;toolIndex < tools.length;toolIndex++){
+ gefEditor.activateTool(tools[toolIndex]);
+ gefEditor.click(xspacing * (toolIndex % 3) + xoffset,
+ yspacing * (toolIndex / 3) + yoffset);
+ }
+ // Add Sequence Flow between Start and End Node
+ gefEditor.activateTool("Sequence Flow");
+ // Click on Start Node
+ gefEditor.click(xoffset + 5, yoffset + 5);
+ // Click on End Node
+ gefEditor.click(xspacing + xoffset + 5, yoffset + 5);
+ gefEditor.save();
+ checkFullRuleFile(DroolsAllBotTests.DROOLS_PROJECT_NAME , ruleFlowFileName);
+ // check synchronization with Properties View
+ gefEditor.activateTool("Select");
+ gefEditor.click(xoffset + 5, yoffset + 5);
+ SWTBotTree tree = eclipse.showView(ViewType.PROPERTIES).tree();
+ String id = tree.getTreeItem("Id").cell(1);
+ String name = tree.getTreeItem("Name").cell(1);
+ assertTrue("First editor element has to have Id=1 and Name=Start." +
+ "\nBut it has Id=" + id +
+ " Name=" + name, id.equals("1") &&
name.equals("Start"));
+ // Delete each component
+ gefEditor.activateTool("Select");
+ for (int toolIndex = 0;toolIndex < tools.length;toolIndex++){
+ gefEditor.click(xspacing * (toolIndex % 3) + xoffset + 10,
+ yspacing * (toolIndex / 3) + yoffset + 10);
+ gefEditor.setFocus();
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.typeKeyCodeUsingAWT(KeyEvent.VK_DELETE);
+ }
+ // Restore maximized editor
+ bot.menu(IDELabel.Menu.WINDOW)
+ .menu(IDELabel.Menu.NAVIGATION)
+ .menu(IDELabel.Menu.MAXIMIZE_ACTIVE_VIEW_OR_EDITOR)
+ .click();
+ isEditorMaximized = false;
+ gefEditor.save();
+ gefEditor.close();
+ checkEmptyRuleFile(DroolsAllBotTests.DROOLS_PROJECT_NAME , ruleFlowFileName);
+ }
+
+ /**
+ * Converts to full path of rule flow file.
+ *
+ * @param projectName Project name
+ * @param ruleFlowFileName File name of rule flow
+ * @return Full path to rule flow file
+ */
+ private String getFullPathToRuleFlowFile(final String projectName, final String
ruleFlowFileName) {
+ return SWTUtilExt.getPathToProject(projectName) + File.separator
+ + RuleFlowTest.RULE_FLOW_FILE_DIRECTORY + File.separator +
ruleFlowFileName;
+ }
+
+ /**
+ * Return normalized document from file with given name.
+ *
+ * @param fileName File name to get it normalized document from.
+ * @return Normalized document
+ */
+ private Document getNormalizedDocument(final String fileName) {
+ Document document = loadXmlFile(fileName);
+ document.normalizeDocument();
+ return document;
+ }
+
+ /**
+ * Decides according to used Drools version.
+ *
+ * @param projectName
+ * @param ruleFlowFileName
+ */
+ private void checkFullRuleFile(final String projectName, final String
ruleFlowFileName) {
+ if (DroolsAllBotTests.RULE_FLOW_SAMPLE_FILE_NAME.equals(ruleFlowFileName)) {
+ checkFullBpmnFile(projectName, ruleFlowFileName);
+ } else {
+ checkFullRFFile(projectName, ruleFlowFileName);
+ }
+ }
+
+ /**
+ * Checks full BPMN file.
+ *
+ * @param projectName
+ * @param ruleFlowFileName
+ */
+ private void checkFullBpmnFile(final String projectName, final String
ruleFlowFileName) {
+ final String START_EVENT_NODE_NAME = "startEvent";
+ final String END_EVENT_NODE_NAME = "endEvent";
+ final String BUSINESS_RULE_TASK = "businessRuleTask";
+ final String COMPLEX_GATEWAY_NODE_NAME = "complexGateway";
+ final String CALL_ACTIVITY_NODE_NAME = "callActivity";
+ final String SCRIPT_TASK_NODE_NAME = "scriptTask";
+ final String SEQUENCE_FLOW_NODE_NAME = "sequenceFlow";
+ final String GATEWAY_DIRECTION = "gatewayDirection";
+ final String DIVERGING = "Diverging";
+ final String CONVERGING = "Converging";
+ final String SOURCE_REF = "sourceRef";
+ final String TARGET_REF = "targetRef";
+ final String ID = "id";
+
+ final String fullRuleFlowFileName = getFullPathToRuleFlowFile(projectName,
ruleFlowFileName);
+
+ assertTrue("'" + fullRuleFlowFileName + "' is not valid
BPMN 2 XML file.", isValidBpmnXml(fullRuleFlowFileName));
+
+ Document document = getNormalizedDocument(fullRuleFlowFileName);
+
+ final String START_EVENT_ID;
+ final String END_EVENT_ID;
+
+ assertEquals("There should be just one '" + START_EVENT_NODE_NAME +
"' element in XML.",
+ 1, document.getElementsByTagName(START_EVENT_NODE_NAME).getLength());
+ START_EVENT_ID =
document.getElementsByTagName(START_EVENT_NODE_NAME).item(0).getAttributes()
+ .getNamedItem(ID).getTextContent();
+
+ assertEquals("There should be just one '" + END_EVENT_NODE_NAME +
"' element in XML.",
+ 1, document.getElementsByTagName(END_EVENT_NODE_NAME).getLength());
+ END_EVENT_ID =
document.getElementsByTagName(END_EVENT_NODE_NAME).item(0).getAttributes()
+ .getNamedItem(ID).getTextContent();
+
+ assertEquals("There should be just one '" + BUSINESS_RULE_TASK +
"' element in XML.",
+ 1, document.getElementsByTagName(BUSINESS_RULE_TASK).getLength());
+
+ NodeList gatewayNodes =
document.getElementsByTagName(COMPLEX_GATEWAY_NODE_NAME);
+ assertEquals("There should be exactly two '" +
COMPLEX_GATEWAY_NODE_NAME + "' elements in XML.",
+ 2, gatewayNodes.getLength());
+ int diverging = 0;
+ int converging = 0;
+ for (int i = 0; i < gatewayNodes.getLength(); i++) {
+ NamedNodeMap attributes = gatewayNodes.item(i).getAttributes();
+ for (int j = 0; j < attributes.getLength(); j++) {
+ Node attribute = attributes.item(j);
+ if (GATEWAY_DIRECTION.equals(attribute.getNodeName())) {
+ if (DIVERGING.equals(attribute.getTextContent())) {
+ diverging++;
+ } else if (CONVERGING.equals(attribute.getTextContent())) {
+ converging++;
+ }
+ }
+ }
+ }
+ assertEquals("There should be one diverging and one converting gateway, but
it wasn't so.",
+ 1, diverging * converging);
+
+ assertEquals("There should be just one '" + CALL_ACTIVITY_NODE_NAME
+ "' element in XML.",
+ 1, document.getElementsByTagName(CALL_ACTIVITY_NODE_NAME).getLength());
+
+ assertEquals("There should be just one '" + SCRIPT_TASK_NODE_NAME +
"' element in XML.",
+ 1, document.getElementsByTagName(SCRIPT_TASK_NODE_NAME).getLength());
+
+ assertEquals("There should be just one '" + SEQUENCE_FLOW_NODE_NAME
+ "' element in XML.",
+ 1, document.getElementsByTagName(SEQUENCE_FLOW_NODE_NAME).getLength());
+
+ NamedNodeMap attributes =
document.getElementsByTagName(SEQUENCE_FLOW_NODE_NAME).item(0).getAttributes();
+ final String sourceRef = attributes.getNamedItem(SOURCE_REF).getTextContent();
+ assertEquals("Source of sequence flow should be '" + START_EVENT_ID
+ "' but was '"
+ + sourceRef + "'.", START_EVENT_ID, sourceRef);
+ final String targetRef = attributes.getNamedItem(TARGET_REF).getTextContent();
+ assertEquals("Target of sequence flow should be '" + END_EVENT_ID +
"' but was '"
+ + targetRef, END_EVENT_ID, targetRef);
+ }
+
+ /**
+ * Check content of Rule Flow file containing all possible objects
+ *
+ * @param projectName
+ * @param ruleFlowFileName
+ */
+ private void checkFullRFFile(final String projectName, final String ruleFlowFileName)
{
+ String errorDescription = null;
+ Document doc = getNormalizedDocument(getFullPathToRuleFlowFile(projectName,
ruleFlowFileName));
+ Element rootNode = doc.getDocumentElement();
+ if (rootNode.getNodeName().equals(ROOT_NODE_NAME)) {
+ NodeList rootNodeList = rootNode.getChildNodes();
+ List<Node> rootNodes = removeTextNodes(rootNodeList);
+ if (rootNodes.size() == ROOT_NODE_CHILDREN_COUNT) {
+ Node header = rootNodes.get(0);
+ errorDescription = checkEmptyFileNode(header, HEADER_NODE_NAME);
+ if (errorDescription == null) {
+ Node nodesNode = rootNodes.get(1);
+ errorDescription = checkNodeName(nodesNode, NODES_NODE_NAME);
+ if (errorDescription == null) {
+ errorDescription = checkNodesFileNodes(removeTextNodes(nodesNode
+ .getChildNodes()));
+ if (errorDescription == null) {
+ Node connectionsNode = rootNodes.get(2);
+ errorDescription = checkNodeName(connectionsNode,
+ CONNECTIONS_NODE_NAME);
+ if (errorDescription == null) {
+ errorDescription =
checkConnectionsFileNodes(removeTextNodes(connectionsNode
+ .getChildNodes()));
+ }
+ }
+ }
+ }
+ } else {
+ errorDescription = "Root node has to have " + ROOT_NODE_CHILDREN_COUNT
+ + " child nodes but it has " + rootNodeList.getLength();
+ }
+ } else {
+ errorDescription = "Root node has to have name '" + ROOT_NODE_NAME
+ + "' but it has name '" + rootNode.getNodeName() +
"'";
+ }
+ assertNull(errorDescription,errorDescription);
+ }
+
+ /**
+ * Decides according to used Drools version.
+ *
+ * @param projectName
+ * @param ruleFlowFileName
+ */
+ private void checkEmptyRuleFile(final String projectName, final String
ruleFlowFileName) {
+ if (DroolsAllBotTests.RULE_FLOW_SAMPLE_FILE_NAME.equals(ruleFlowFileName)) {
+ checkEmptyBpmnFile(projectName, ruleFlowFileName);
+ } else {
+ checkEmptyRFFile(projectName, ruleFlowFileName);
+ }
+ }
+
+ /**
+ * Checks empty BPMN file with given name.
+ *
+ * @param projectName
+ * @param ruleFlowFileName
+ */
+ private void checkEmptyBpmnFile(final String projectName, final String
ruleFlowFileName) {
+ final String fullRuleFlowFileName = getFullPathToRuleFlowFile(projectName,
ruleFlowFileName);
+ assertTrue("'" + fullRuleFlowFileName + "' is not a valid
BPMN 2 XML file.",
+ isValidBpmnXml(fullRuleFlowFileName));
+
+ final String PROCESS_NODE_NAME = "process";
+ Document document = getNormalizedDocument(fullRuleFlowFileName);
+ NodeList processNode = document.getElementsByTagName(PROCESS_NODE_NAME);
+ assertEquals("There should be just one '" + PROCESS_NODE_NAME +
"' node.", 1, processNode.getLength());
+ NodeList processChildNodes = processNode.item(0).getChildNodes();
+ for (int i = 0; i < processChildNodes.getLength(); i++) {
+ final String processChildNodeName = processChildNodes.item(i).getNodeName();
+ if (!("#text".equals(processChildNodeName) ||
"#comment".equals(processChildNodeName))) {
+ fail("'" + PROCESS_NODE_NAME + "' node should not
have any child nodes (except #text and #comment) but it has.");
+ }
+ }
+ }
+
+ /**
+ * Check content of empty Rule Flow file
+ * @param projectName
+ * @param ruleFlowRfFileName
+ */
+ private void checkEmptyRFFile(String projectName, String ruleFlowFileName){
+
+ Document doc = loadXmlFile(SWTUtilExt.getPathToProject(projectName) +
+ File.separator + RuleFlowTest.RULE_FLOW_FILE_DIRECTORY + File.separator +
+ ruleFlowFileName);
+
+ String errorDescription = null;
+
+ Element rootNode = doc.getDocumentElement();
+ doc.normalizeDocument();
+ if (rootNode.getNodeName().equals(ROOT_NODE_NAME)) {
+ NodeList rootNodeList = rootNode.getChildNodes();
+ List<Node> nodes = removeTextNodes(rootNodeList);
+ if (nodes.size() == ROOT_NODE_CHILDREN_COUNT) {
+ Node header = nodes.get(0);
+ errorDescription = checkEmptyFileNode(header, HEADER_NODE_NAME);
+ if (errorDescription == null) {
+ Node nodesNode = nodes.get(1);
+ errorDescription = checkEmptyFileNode(nodesNode, NODES_NODE_NAME);
+ if (errorDescription == null) {
+ Node connnections = nodes.get(2);
+ errorDescription = checkEmptyFileNode(connnections, CONNECTIONS_NODE_NAME);
+ }
+ }
+ } else {
+ errorDescription = "Root node has to have " +
+ ROOT_NODE_CHILDREN_COUNT +
+ " child nodes but it has " +
+ rootNodeList.getLength();
+ }
+ } else {
+ errorDescription = "Root node has to have name '" + ROOT_NODE_NAME
+ + "' but it has name '" + rootNode.getNodeName() +
"'";
+ }
+ assertNull(errorDescription,errorDescription);
+
+ }
+ /**
+ * Loads and parse XML file with fileName from file system
+ * @param fileName - full path to XML file
+ * @return
+ */
+ private Document loadXmlFile (String fileName){
+ File file = new File(fileName);
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db;
+ Document doc = null;
+ try {
+ db = dbf.newDocumentBuilder();
+ doc = db.parse(file);
+ } catch (ParserConfigurationException pce) {
+ throw new RuntimeException(pce);
+ } catch (SAXException saxe) {
+ throw new RuntimeException(saxe);
+ } catch (IOException ioe) {
+ throw new RuntimeException(ioe);
+ }
+ return doc;
+ }
+ private static List<Node> removeTextNodes(NodeList rootNodeList){
+ LinkedList<Node> nodes = new LinkedList<Node>();
+ for (int index = 0 ; index < rootNodeList.getLength(); index++){
+ Node node = rootNodeList.item(index);
+ if (!node.getNodeName().equals("#text")){
+ nodes.add(node);
+ }
+ }
+ return nodes;
+ }
+ /**
+ * Check if node is correct for empty file
+ * @param node
+ * @param expectedNodeName
+ * @return
+ */
+ private static String checkEmptyFileNode (Node node,String expectedNodeName){
+ String errorDescription = null;
+ if (node.getNodeName().equals(expectedNodeName)){
+ if (removeTextNodes(node.getChildNodes()).size() == 0){
+ if(node.getTextContent().trim().length() != 0){
+ errorDescription = expectedNodeName + " node has to have no text value but
it has " +
+ node.getTextContent();
+ }
+ }
+ else{
+ errorDescription = expectedNodeName + " node has to have no children but is
has " +
+ removeTextNodes(node.getChildNodes()).size();
+
+ }
+ }
+ else{
+ errorDescription = checkNodeName(node, expectedNodeName);
+ }
+
+ return errorDescription;
+
+ }
+ /**
+ * Check nodes of Nodes children.
+ * @param nodes - list of nodes of nodes node stripped from text nodes
+ * @return
+ */
+ private static String checkNodesFileNodes(List<Node> nodes){
+ String errorDescription = null;
+
+ if (nodes.size() == NODES_NODE_CHILDREN_COUNT){
+ List<String> mandatoryNodes = getMandatoryNodesOfNodesNode();
+ int index = 0;
+ Iterator<Node> iterator = nodes.iterator();
+ while (index < nodes.size() && errorDescription == null){
+ String nodeName = iterator.next().getNodeName();
+ if (mandatoryNodes.contains(nodeName)){
+ mandatoryNodes.remove(nodeName);
+ }
+ else{
+ errorDescription = "Nodes node cannot contain node " + nodeName;
+ }
+ index++;
+ }
+ if (errorDescription == null && mandatoryNodes.size() > 0) {
+ StringBuilder sb = new StringBuilder("");
+ for (String nodeName : mandatoryNodes){
+ if (sb.length() != 0){
+ sb.append(", ");
+ }
+ sb.append(nodeName);
+ }
+ errorDescription = "Nodes node doesn't contain all necesarry
nodes.\n" +
+ "These node(s) are missing within nodes node: " +
+ sb.toString();
+ }
+ }
+ else{
+ errorDescription = "Nodes node has to have " +
+ NODES_NODE_CHILDREN_COUNT +
+ " child nodes but it has " +
+ nodes.size();
+ }
+
+ return errorDescription;
+ }
+ /**
+ * Returns list of mandatory nodes of nodes node
+ * @return
+ */
+ private static List<String> getMandatoryNodesOfNodesNode(){
+ LinkedList<String> allowedNodes = new LinkedList<String>();
+ allowedNodes.add("split");
+ /*
+ allowedNodes.add("timerNode");
+ allowedNodes.add("humanTask");
+ */
+ allowedNodes.add("ruleSet");
+ allowedNodes.add("actionNode");
+ /*
+ allowedNodes.add("composite");
+ */
+ allowedNodes.add("end");
+ /*
+ allowedNodes.add("workItem");
+ allowedNodes.add("fault");
+ */
+ allowedNodes.add("subProcess");
+ allowedNodes.add("start");
+ /*
+ allowedNodes.add("workItem");
+ allowedNodes.add("eventNode");
+ */
+ allowedNodes.add("join");
+
+ return allowedNodes;
+ }
+
+ /**
+ * Check nodes of connections children.
+ * @param nodes - list of nodes of connections node stripped from text nodes
+ * @return
+ */
+ private static String checkConnectionsFileNodes(List<Node> nodes){
+ String errorDescription = null;
+
+ if (nodes.size() == CONNECTIONS_NODE_CHILDREN_COUNT){
+ Node connectioNode = nodes.get(0);
+ errorDescription = checkEmptyFileNode(connectioNode, CONNECTION_NODE_NAME);
+ }
+ else{
+ errorDescription = "Conections node has to have " +
+ CONNECTIONS_NODE_CHILDREN_COUNT +
+ " child nodes but it has " +
+ nodes.size();
+ }
+
+ return errorDescription;
+ }
+ /**
+ * Check if node has expected name
+ * @param node
+ * @param expectedNodeName
+ * @return
+ */
+ private static String checkNodeName (Node node, String expectedNodeName){
+ String errorDescription = null;
+
+ if (!node.getNodeName().equals(expectedNodeName)){
+ errorDescription = "Node has to have name '" +
+ expectedNodeName + "' but it has name '" +
+ node.getNodeName() + "'";
+ }
+
+ return errorDescription;
+ }
+
+ protected void tearDown(){
+ if (isEditorMaximized){
+ // Restore maximized editor
+ bot.menu(IDELabel.Menu.WINDOW)
+ .menu(IDELabel.Menu.NAVIGATION)
+ .menu(IDELabel.Menu.MAXIMIZE_ACTIVE_VIEW_OR_EDITOR)
+ .click();
+ isEditorMaximized = false;
+ }
+ try {
+ super.tearDown();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Deletes all objects from rule file.
+ *
+ * @param gefEditor
+ * @param projectName
+ * @param ruleFlowFileName
+ */
+ private void deleteAllObjectsFromRuleFile(SWTBotGefEditor gefEditor, String
projectName, String ruleFlowFileName) {
+ if (DroolsAllBotTests.RULE_FLOW_SAMPLE_FILE_NAME.equals(ruleFlowFileName)) {
+ deleteAllObjectFromBpmnFile(gefEditor, projectName, ruleFlowFileName);
+ } else {
+ deleteAllObjectsFromRFFile(gefEditor, projectName, ruleFlowFileName);
+ }
+ }
+
+ /**
+ * Delete all objects from RF File
+ * @param gefEditor
+ * @param projectName
+ * @param ruleFlowFileName
+ */
+ private void deleteAllObjectsFromRFFile(SWTBotGefEditor gefEditor, String projectName,
String ruleFlowFileName) {
+
+ Document doc = loadXmlFile(SWTUtilExt.getPathToProject(projectName)
+ + File.separator + RuleFlowTest.RULE_FLOW_FILE_DIRECTORY
+ + File.separator + ruleFlowFileName);
+
+ String errorDescription = null;
+ Element rootNode = doc.getDocumentElement();
+ doc.normalizeDocument();
+ if (rootNode.getNodeName().equals(ROOT_NODE_NAME)) {
+ NodeList rootNodeList = rootNode.getChildNodes();
+ List<Node> rootNodes = removeTextNodes(rootNodeList);
+ if (rootNodes.size() == ROOT_NODE_CHILDREN_COUNT) {
+ Node nodesNode = rootNodes.get(1);
+ errorDescription = checkNodeName(nodesNode, NODES_NODE_NAME);
+ if (errorDescription == null) {
+ List<Node> nodes = removeTextNodes(nodesNode.getChildNodes());
+ for (Node node : nodes){
+ NamedNodeMap attributes = node.getAttributes();
+ int xPos =
Integer.parseInt(attributes.getNamedItem("x").getNodeValue());
+ int yPos =
Integer.parseInt(attributes.getNamedItem("y").getNodeValue());
+ gefEditor.click(xPos + 3, yPos + 3);
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.typeKeyCodeUsingAWT(KeyEvent.VK_DELETE);
+ bot.sleep(Timing.time1S());
+ }
+ }
+ } else {
+ errorDescription = "'" + NODES_NODE_NAME + "'"
+" was not found on expected location within RF file." +
+ " RF file structure has been changed";
+ }
+ } else {
+ errorDescription = "Root Node has to have name '" + ROOT_NODE_NAME +
"'. RF file structure has been changed.";
+ }
+ assertNull(errorDescription,errorDescription);
+ }
+
+ /**
+ * Deletes all object from BPMN file.
+ *
+ * @param gefEditor
+ * @param projectName
+ * @param ruleFlowFileName
+ */
+ private void deleteAllObjectFromBpmnFile(SWTBotGefEditor gefEditor, String
projectName, String ruleFlowFileName) {
+ final String fileName = getFullPathToRuleFlowFile(projectName,
ruleFlowFileName);
+ assertTrue("Rule flow file '" + fileName + "' is not
valid.", isValidBpmnXml(fileName));
+
+ Document document = getNormalizedDocument(fileName);
+ NodeList nodeList = document.getElementsByTagName("*");
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node xAttribute =
nodeList.item(i).getAttributes().getNamedItem("g:x");
+ Node yAttribute =
nodeList.item(i).getAttributes().getNamedItem("g:y");
+ if (xAttribute != null && yAttribute != null) {
+ int x = Integer.parseInt(xAttribute.getNodeValue());
+ int y = Integer.parseInt(yAttribute.getNodeValue());
+ final int OFFSET = 3;
+ gefEditor.click(x + OFFSET, y + OFFSET);
+ bot.sleep(Timing.time1S());
+ KeyboardHelper.typeKeyCodeUsingAWT(KeyEvent.VK_DELETE);
+ bot.sleep(Timing.time1S());
+ }
+ }
+ }
+
+ /**
+ * Validates file with given name if it is valid BPMN 2 XML.
+ *
+ * @param bpmnXmlFileName Name of the file to be validated.
+ * @return <code>true</code> if given document is valid BPMN 2 XML file,
+ * <code>false</code> otherwise.
+ */
+ private static boolean isValidBpmnXml(final String bpmnXmlFileName) {
+ final String XML_SCHEMA_FILE = "resources/XMLSchemas/BPMN20.xsd";
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ dbf.setNamespaceAware(true);
+
+ DocumentBuilder parser;
+ Document document;
+ try {
+ parser = dbf.newDocumentBuilder();
+ document = parser.parse(new File(bpmnXmlFileName));
+ } catch (ParserConfigurationException pce) {
+ pce.printStackTrace();
+ return false;
+ } catch (SAXException saxe) {
+ saxe.printStackTrace();
+ return false;
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ return false;
+ }
+
+ SchemaFactory schemaFactory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ Source schemaFile = new StreamSource(new File(XML_SCHEMA_FILE));
+ Schema schema;
+ try {
+ schema = schemaFactory.newSchema(schemaFile);
+ } catch (SAXException saxe) {
+ saxe.printStackTrace();
+ return false;
+ }
+
+ Validator validator = schema.newValidator();
+ try {
+ validator.validate(new DOMSource(document));
+ } catch (SAXException saxe) {
+ // instance document is invalid!
+ log.error("ERROR: Document '" + bpmnXmlFileName + "'
is invalid (" + saxe.getMessage() + ")");
+ return false;
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ return false;
+ }
+
+ return true;
+ }
+}
\ No newline at end of file
Added: trunk/build/aggregate/soatests-site/tests/pom.xml
===================================================================
--- trunk/build/aggregate/soatests-site/tests/pom.xml (rev 0)
+++ trunk/build/aggregate/soatests-site/tests/pom.xml 2012-04-23 19:01:33 UTC (rev 40421)
@@ -0,0 +1,16 @@
+<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>
+ <parent>
+ <groupId>org.jboss.tools</groupId>
+ <artifactId>org.jboss.tools.site.soa-tooling.tests.root</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <groupId>org.jboss.tools.soa-tooling</groupId>
+ <artifactId>org.jboss.tools.soa-tooling.tests</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <modules>
+ <module>org.jboss.tools.drools.ui.bot.test</module>
+ </modules>
+</project>