Author: hansbak
Date: Fri Aug  2 02:56:59 2013
New Revision: 1509516

URL: http://svn.apache.org/r1509516
Log:
work in progress: made the componentlist paged, ordered and more readable, 
clicking on the component name provides a junit test list from which a test can 
be run. even in production because all database changes are rolled back

Added:
    
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/RunTestEvents.java
   (with props)
    
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy
   (with props)
    
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy
   (with props)
    ofbiz/trunk/framework/webtools/widget/ArtifactInfoForms.xml   (with props)
Removed:
    ofbiz/trunk/framework/webtools/webapp/webtools/component/viewComponents.ftl
Modified:
    ofbiz/trunk/framework/webtools/build.xml
    ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml
    ofbiz/trunk/framework/webtools/widget/ArtifactInfoScreens.xml
    ofbiz/trunk/framework/webtools/widget/MiscScreens.xml

Modified: ofbiz/trunk/framework/webtools/build.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/build.xml?rev=1509516&r1=1509515&r2=1509516&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/build.xml (original)
+++ ofbiz/trunk/framework/webtools/build.xml Fri Aug  2 02:56:59 2013
@@ -45,5 +45,6 @@ under the License.
         <fileset dir="../webapp/lib" includes="*.jar"/>
         <fileset dir="../webapp/build/lib" includes="*.jar"/>
         <fileset dir="../widget/build/lib" includes="*.jar"/>
+        <fileset dir="../testtools/build/lib" includes="*.jar"/>
     </path>
 </project>

Added: 
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/RunTestEvents.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/RunTestEvents.java?rev=1509516&view=auto
==============================================================================
--- 
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/RunTestEvents.java
 (added)
+++ 
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/RunTestEvents.java
 Fri Aug  2 02:56:59 2013
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ 
*******************************************************************************/
+package org.ofbiz.webtools.artifactinfo;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.ofbiz.base.container.ContainerException;
+
+import org.ofbiz.testtools.*;
+
+/**
+ * Event used to run a Junit test
+ */
+public class RunTestEvents {
+
+    public static final String module = RunTestEvents.class.getName();
+
+    public static String runTest(HttpServletRequest request, 
HttpServletResponse response) throws ContainerException {
+        
+        String componentName = request.getParameter("compName");
+        String suiteName = request.getParameter("suiteName");
+        String caseName = request.getParameter("caseName");
+        String result = null;
+
+        String[] args = null;
+        if (caseName == null) {
+            args = new String[]{"-componentname=" + componentName, 
"-suitename=" + suiteName + "-loglevel=info"};
+        } else {
+            args = new String[]{"-componentname=" + componentName, 
"-suitename=" + suiteName, "-case=" + caseName, "-loglevel=info"};
+        }
+
+        TestRunContainer testRunContainer = new TestRunContainer();
+        testRunContainer.init(args, "frontend test run", "   ");
+        if (testRunContainer.start() == false) {
+            result = "error";
+        } else {
+            result = "success";
+        }
+
+        return result;
+    }
+}
+

Propchange: 
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/RunTestEvents.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/RunTestEvents.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: 
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/RunTestEvents.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy?rev=1509516&view=auto
==============================================================================
--- 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy
 (added)
+++ 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy
 Fri Aug  2 02:56:59 2013
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Collection;
+import java.util.List;
+
+import org.ofbiz.base.component.ComponentConfig;
+import org.ofbiz.base.component.ComponentConfig.WebappInfo;
+
+import javolution.util.FastMap;
+import javolution.util.FastList;
+import org.ofbiz.base.util.*
+
+Collection <ComponentConfig> components = ComponentConfig.getAllComponents();
+
+List componentList = FastList.newInstance();
+
+components.each { component ->
+     List<WebappInfo> webApps = component.getWebappInfos();
+     webApps.each { webApp ->
+         componentMap = FastMap.newInstance();
+         componentMap.compName = component.getComponentName();
+         componentMap.rootLocation =  component.getRootLocation();
+         componentMap.enabled = (component.enabled() == true? "Y" : "N");
+         componentMap.webAppName = webApp.getName();
+         componentMap.contextRoot = webApp.getContextRoot();
+         componentMap.location = webApp.getLocation();
+         componentMap.webAppName = webApp.getName();
+         componentMap.contextRoot = webApp.getContextRoot();
+         componentMap.location = webApp.getLocation();
+         componentList.add(componentMap);
+     }
+}
+
+// sort the entries
+componentList = UtilMisc.sortMaps(componentList, UtilMisc.toList("+compName"));
+
+// make the list more readable
+lastComp = null;
+for (int entry = 0; entry < componentList.size(); entry++) {
+    compSave = componentList[entry].compName;
+    if (lastComp != null && compSave.equals(lastComp)) {
+        componentList[entry].compName = "";
+        componentList[entry].rootLocation = "";
+        componentList[entry].enabled = "";
+    }    
+    lastComp = compSave;
+}
+context.componentList = componentList;

Propchange: 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy?rev=1509516&view=auto
==============================================================================
--- 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy
 (added)
+++ 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy
 Fri Aug  2 02:56:59 2013
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.ofbiz.base.util.*;
+import org.ofbiz.base.component.ComponentConfig;
+import org.ofbiz.base.config.GenericConfigException;
+import org.ofbiz.base.config.ResourceHandler;
+import org.ofbiz.testtools.TestListContainer.FoundTest;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import java.util.Collection;
+import java.util.List;
+
+import javolution.util.FastMap;
+import javolution.util.FastList;
+
+List testList = FastList.newInstance();
+for (ComponentConfig.TestSuiteInfo testSuiteInfo: 
ComponentConfig.getAllTestSuiteInfos(parameters.compName)) {
+    String componentName = testSuiteInfo.componentConfig.getComponentName();
+    ResourceHandler testSuiteResource = testSuiteInfo.createResourceHandler();
+
+    try {
+        Document testSuiteDocument = testSuiteResource.getDocument();
+        Element documentElement = testSuiteDocument.getDocumentElement();
+        suiteName =  documentElement.getAttribute("suite-name")
+        firstLine = true;
+        for (Element testCaseElement : 
UtilXml.childElementList(documentElement, UtilMisc.toSet("test-case", 
"test-group"))) {
+            testMap = FastMap.newInstance();
+            String caseName = testCaseElement.getAttribute("case-name");
+            if (firstLine == true) {
+                testMap = UtilMisc.toMap("suiteName", suiteName, "caseName", 
caseName);
+                firstLine = false;
+            } else {
+                testMap = UtilMisc.toMap("caseName", caseName);
+            }
+            testList.add(testMap);
+        }
+    } catch (GenericConfigException e) {
+        String errMsg = "Error reading XML document from ResourceHandler for 
loader [" + testSuiteResource.getLoaderName() + "] and location [" + 
testSuiteResource.getLocation() + "]";
+        Debug.logError(e, errMsg, module);
+        throw new IllegalArgumentException(errMsg);
+    }
+
+
+
+}
+
+context.suits = testList;

Propchange: 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: 
ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml?rev=1509516&r1=1509515&r2=1509516&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml 
(original)
+++ ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/controller.xml Fri 
Aug  2 02:56:59 2013
@@ -363,6 +363,16 @@ under the License.
         <response name="success" type="view" value="ViewComponents"/>
     </request-map>
 
+    <request-map uri="TestSuiteInfo">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="TestSuiteInfo"/>
+    </request-map>
+
+    <request-map uri="RunTest">
+        <security https="true" auth="true"/>
+        <event type="java" 
path="org.ofbiz.webtools.artifactinfo.RunTestEvents" invoke="runTest"/>
+        <response name="success" type="request-redirect" 
value="TestSuiteInfo"/>
+    </request-map>
     <!-- EntitySQL requests -->
     <request-map uri="EntitySQLProcessor">
         <security https="true" auth="true"/>
@@ -680,12 +690,12 @@ under the License.
     <view-map name="EntityImport" 
page="component://webtools/widget/EntityScreens.xml#EntityImport" 
type="screen"/>
     <view-map name="EntityImportReaders" 
page="component://webtools/widget/EntityScreens.xml#EntityImportReaders" 
type="screen"/>
 
-    <view-map name="ViewComponents" 
page="component://webtools/widget/MiscScreens.xml#ViewComponents" 
type="screen"/>
-
     <!-- cert views -->
     <view-map name="viewbrowsercerts" type="screen" 
page="component://webtools/widget/CommonScreens.xml#browsercerts"/>
 
     <!-- Artifact Info Views -->
+    <view-map name="ViewComponents" 
page="component://webtools/widget/ArtifactInfoScreens.xml#ViewComponents" 
type="screen"/>
+    <view-map name="TestSuiteInfo" 
page="component://webtools/widget/ArtifactInfoScreens.xml#TestSuiteInfo" 
type="screen"/>
     <view-map name="ArtifactInfo" type="screen" 
page="component://webtools/widget/ArtifactInfoScreens.xml#ArtifactInfo"/>
 
     <!-- Label Manager Views -->

Added: ofbiz/trunk/framework/webtools/widget/ArtifactInfoForms.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/widget/ArtifactInfoForms.xml?rev=1509516&view=auto
==============================================================================
--- ofbiz/trunk/framework/webtools/widget/ArtifactInfoForms.xml (added)
+++ ofbiz/trunk/framework/webtools/widget/ArtifactInfoForms.xml Fri Aug  2 
02:56:59 2013
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+    http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+
+<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+    
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-form.xsd";>
+        <form name="ComponentList" type="list" separate-columns="true" 
title="Component List" list-name="componentList" target=""
+        odd-row-style="alternate-row" header-row-style="header-row-2" 
default-table-style="basic-table hover-bar">
+        <field name="compName">
+            <hyperlink target="TestSuiteInfo?compName=${compName}" 
description="${compName}" ></hyperlink>
+        </field>
+        <field name="rootLocation"><display/></field>
+        <field name="enabled"><display/></field>
+        <field name="webAppName"><display/></field>
+        <field name="contextRoot"><display/></field>
+        <field name="location"><display/></field>
+    </form>
+
+    <form name="TestSuiteInfo" type="list" separate-columns="true" 
title="Component List" list-name="suits" target=""
+        odd-row-style="alternate-row" header-row-style="header-row-2" 
default-table-style="basic-table hover-bar">
+        <field name="compName"><hidden value="${parameters.compName}"/></field>
+        <field name="suiteName"><display/></field>
+        <!-- field name="runSuite" use-when="suiteName!=void">
+            <hyperlink 
target="RunTest?compName=${parameters.compName}&amp;suiteName=${suiteName}" 
description="run suite"/>
+        </field-->
+        <field name="caseName"><display/></field>
+        <field name="runCase">
+            <hyperlink 
target="RunTest?compName=${parameters.compName}&amp;suiteName=${suiteName}&amp;caseName=${caseName}"
 description="run case"/>
+        </field>
+    </form>
+</forms>

Propchange: ofbiz/trunk/framework/webtools/widget/ArtifactInfoForms.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/webtools/widget/ArtifactInfoForms.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/framework/webtools/widget/ArtifactInfoForms.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: ofbiz/trunk/framework/webtools/widget/ArtifactInfoScreens.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/widget/ArtifactInfoScreens.xml?rev=1509516&r1=1509515&r2=1509516&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/widget/ArtifactInfoScreens.xml (original)
+++ ofbiz/trunk/framework/webtools/widget/ArtifactInfoScreens.xml Fri Aug  2 
02:56:59 2013
@@ -42,4 +42,42 @@ under the License.
             </fail-widgets>
         </section>
     </screen>
+    <screen name="ViewComponents">
+        <section>
+            <actions>
+                <set field="headerItem" value="main"/>
+                <set field="titleProperty" value="WebtoolsViewComponents"/>
+                <set field="tabButtonItem" value="viewents"/>
+                <script 
location="component://webtools/webapp/webtools/WEB-INF/actions/artifactinfo/ComponentList.groovy"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonArtifactDecorator" 
location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <screenlet>
+                            <include-form name="ComponentList" 
location="component://webtools/widget/ArtifactInfoForms.xml"/>
+                        </screenlet>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    <screen name="TestSuiteInfo">
+        <section>
+            <actions>
+                <set field="headerItem" value="main"/>
+                <set field="titleProperty" value="WebtoolsViewComponents"/>
+                <set field="tabButtonItem" value="viewents"/>
+                <script 
location="component://webtools/webapp/webtools/WEB-INF/actions/artifactinfo/TestSuiteInfo.groovy"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonArtifactDecorator" 
location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <screenlet title="Component: ${parameters.compName}">
+                            <include-form name="TestSuiteInfo" 
location="component://webtools/widget/ArtifactInfoForms.xml"/>
+                        </screenlet>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
 </screens>

Modified: ofbiz/trunk/framework/webtools/widget/MiscScreens.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/widget/MiscScreens.xml?rev=1509516&r1=1509515&r2=1509516&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/widget/MiscScreens.xml (original)
+++ ofbiz/trunk/framework/webtools/widget/MiscScreens.xml Fri Aug  2 02:56:59 
2013
@@ -20,22 +20,6 @@ under the License.
 <screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
     
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd";>
 
-    <screen name="ViewComponents">
-        <section>
-            <actions>
-                <set field="headerItem" value="main"/>
-                <set field="titleProperty" value="WebtoolsViewComponents"/>
-                <set field="tabButtonItem" value="viewents"/>
-            </actions>
-            <widgets>
-                <decorator-screen name="CommonArtifactDecorator" 
location="${parameters.mainDecoratorLocation}">
-                    <decorator-section name="body">
-                        <platform-specific><html><html-template 
location="component://webtools/webapp/webtools/component/viewComponents.ftl"/></html></platform-specific>
-                    </decorator-section>
-                </decorator-screen>
-            </widgets>
-        </section>
-    </screen>
 
     <screen name="viewdatafile">
         <section>


Reply via email to