modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationManager.java
| 8 --
modules/enterprise/gui/portal-war/src/main/groovy/org/guest/GuestServer.groovy
| 31 ++++++++
modules/enterprise/gui/portal-war/src/main/groovy/org/guest/GuestServlet.groovy
| 22 +++++
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationEditor.java
| 37 ++++++----
modules/enterprise/gui/portal-war/src/main/resources/org/guest/GuestTestRunner.groovy
| 11 ++
5 files changed, 90 insertions(+), 19 deletions(-)
New commits:
commit f6d8e99d5363b5516268e7c403bb598f7eaaebad
Merge: a1d88c9... e8349c2...
Author: John Sanda <john(a)localhost.localdomain>
Date: Tue Mar 2 12:16:00 2010 -0500
Merge branch 'raw-config' of
ssh://git.fedorahosted.org/git/rhq/rhq into
raw-config
commit a1d88c9715509fc0cfe58506e6a60214b020c4e1
Author: John Sanda <john(a)localhost.localdomain>
Date: Tue Mar 2 12:14:28 2010 -0500
Updating ConfigurationManager to catch any exceptions thrown during a validation call
Initial refactoring of ResourceConfigurationEditor to support validation changes.
Validation errors
are now propagated via an exception and the error messages are now parsed out of the
exception.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationManager.java
index 15d3c2d..ebdeb2a 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/configuration/ConfigurationManager.java
@@ -331,8 +331,6 @@ public class ConfigurationManager extends AgentService implements
ContainerServi
public void validate(Configuration configuration, int resourceId, boolean
isStructured)
throws ConfigurationValidationException {
- boolean success = true;
-
boolean daemonOnly = true;
boolean onlyIfStarted = true;
ResourceConfigurationFacet facet;
@@ -358,12 +356,12 @@ public class ConfigurationManager extends AgentService implements
ContainerServi
for (RawConfiguration rawConfiguration :
configuration.getRawConfigurations()) {
try {
facet.validateRawConfiguration(rawConfiguration);
- } catch (IllegalArgumentException e) {
+ } catch (Throwable t) {
if (errors == null) {
errors = new HashMap<String, String>();
}
- errors.put(rawConfiguration.getPath(), e.getMessage());
- rawConfiguration.errorMessage = e.getMessage();
+ errors.put(rawConfiguration.getPath(), t.getMessage());
+ rawConfiguration.errorMessage = t.getMessage();
}
}
if (errors != null) {
diff --git
a/modules/enterprise/gui/portal-war/src/main/groovy/org/guest/GuestServer.groovy
b/modules/enterprise/gui/portal-war/src/main/groovy/org/guest/GuestServer.groovy
new file mode 100644
index 0000000..7b0fe62
--- /dev/null
+++ b/modules/enterprise/gui/portal-war/src/main/groovy/org/guest/GuestServer.groovy
@@ -0,0 +1,31 @@
+package org.guest
+
+class GuestServer {
+
+ String scriptsDir
+
+ String suiteFile
+
+ String outputDir
+
+ def executeTests() {
+ def basedir =
'/Users/john/Development/redhat/imanage/rhq/modules/enterprise/server/jar'
+ scriptsDir = "$basedir/src/test/script"
+ suiteFile = "$basedir/src/test/resources/guest-testng.xml"
+ outputDir = "$basedir/target"
+
+ def classLoader = new GroovyClassLoader(Thread.currentThread().contextClassLoader)
+ def testRunnerScriptURL =
classLoader.getResource("org/guest/GuestTestRunner.groovy")
+ def scriptEngine = new GroovyScriptEngine(".", classLoader)
+ def binding = new Binding([
+ 'scriptsDir': scriptsDir,
+ 'suiteFile': suiteFile,
+ 'outputDir': outputDir,
+ 'scriptsClassLoader': classLoader
+ ])
+
+ scriptEngine.run(testRunnerScriptURL.toURI().path, binding)
+ }
+
+}
+
\ No newline at end of file
diff --git
a/modules/enterprise/gui/portal-war/src/main/groovy/org/guest/GuestServlet.groovy
b/modules/enterprise/gui/portal-war/src/main/groovy/org/guest/GuestServlet.groovy
new file mode 100644
index 0000000..288a0f9
--- /dev/null
+++ b/modules/enterprise/gui/portal-war/src/main/groovy/org/guest/GuestServlet.groovy
@@ -0,0 +1,22 @@
+package org.guest
+
+import javax.servlet.ServletException
+import javax.servlet.http.HttpServlet
+import javax.servlet.http.HttpServletRequest
+import javax.servlet.http.HttpServletResponse
+
+class GuestServlet extends HttpServlet {
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) {
+ doPost(request, response)
+ }
+
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) {
+ def scriptsDir = request.getParameter("scriptsDir")
+ def suiteFile = request.getParameter("suiteFile")
+ def outputDir = request.getParameter("outputDir")
+
+ new GuestServer(scriptsDir: scriptsDir, suiteFile: suiteFile, outputDir:
outputDir).executeTests()
+ }
+
+}
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationEditor.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationEditor.java
index c10bd22..c4696e0 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationEditor.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationEditor.java
@@ -184,12 +184,6 @@ public class ResourceConfigurationEditor extends
ResourceConfigurationViewer imp
case FAILURE:
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
"Configuration update request with id "
+ updateRequest.getId() + " failed.",
updateRequest.getErrorMessage());
- // for (RawConfiguration raw :
resourceConfiguration.getRawConfigurations()) {
- // String message = raw.errorMessage;
- // if (message != null) {
- //
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, raw.getPath(), message);
- // }
- // }
copyErrorMessages(updateRequest);
return "failure";
@@ -199,9 +193,20 @@ public class ResourceConfigurationEditor extends
ResourceConfigurationViewer imp
}
}
} catch (EJBException e) {
- FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Unable to
contact the remote agent.", e
- .getCause());
- return "failure";
+ if (e.getCausedByException() != null &&
+ e.getCausedByException() instanceof ConfigurationValidationException) {
+ ConfigurationValidationException validationException =
+ (ConfigurationValidationException) e.getCausedByException();
+ FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
"Configuration update failed: " +
+ validationException.getMessage());
+ copyErrorMessages(validationException);
+ return "failure";
+ }
+ else {
+ FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Unable
to contact the remote agent.", e
+ .getCause());
+ return "failure";
+ }
}
// updateRequest will be null if there is no change to the configuration.
ConfigurationManagerBean checks to
@@ -221,6 +226,15 @@ public class ResourceConfigurationEditor extends
ResourceConfigurationViewer imp
}
}
+ private void copyErrorMessages(ConfigurationValidationException exception) {
+ for (String path : exception.errors.keySet()) {
+ RawConfigUIBean rawUIBean = findRawConfigUIBeanByPath(path);
+ if (rawUIBean != null) {
+ rawUIBean.setErrorMessage(exception.errors.get(path));
+ }
+ }
+ }
+
private void copyErrorMessages(AbstractResourceConfigurationUpdate update) {
Configuration updatedConfiguration = update.getConfiguration();
for (RawConfiguration updatedRaw : updatedConfiguration.getRawConfigurations())
{
@@ -228,11 +242,6 @@ public class ResourceConfigurationEditor extends
ResourceConfigurationViewer imp
if (rawUIBean != null) {
rawUIBean.setErrorMessage(updatedRaw.errorMessage);
}
-
- // RawConfiguration raw =
findRawConfigurationByPath(updatedRaw.getPath());
- // if (raw != null) {
- // raw.errorMessage = updatedRaw.errorMessage;
- // }
}
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/resources/org/guest/GuestTestRunner.groovy
b/modules/enterprise/gui/portal-war/src/main/resources/org/guest/GuestTestRunner.groovy
new file mode 100644
index 0000000..922bad1
--- /dev/null
+++
b/modules/enterprise/gui/portal-war/src/main/resources/org/guest/GuestTestRunner.groovy
@@ -0,0 +1,11 @@
+package org.guest
+
+import org.testng.xml.XmlSuite
+import org.testng.TestNG
+
+scriptsClassLoader.addURL(new File(scriptsDir).toURI().toURL())
+
+def testNG = new TestNG()
+testNG.commandLineSuite = new XmlSuite(fileName: suiteFile)
+testNG.outputDirectory = outputDir
+testNG.run()
\ No newline at end of file