modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/config/SystemConfigForm.java
| 23 ++++++++++
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/authorization/GlobalPermissionsUIBean.java
| 9 +++
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/common/framework/ServerInfoUIBean.java
| 21 ++++++---
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/DefinitionFormPrepareAction.java
| 3 -
modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
| 1
modules/enterprise/gui/portal-war/src/main/webapp/admin/config/GeneralPropertiesConfigForm.jsp
| 14 ++++++
modules/enterprise/gui/portal-war/src/main/webapp/rhq/autogroup/layout/main.xhtml
| 4 +
modules/enterprise/gui/portal-war/src/main/webapp/rhq/group/layout/main.xhtml
| 4 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/RHQConstants.java
| 6 +-
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
| 23 ++++++++--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerLocal.java
| 4 +
11 files changed, 96 insertions(+), 16 deletions(-)
New commits:
commit 344be2ff459e13af30832c48d201ac7714fe229b
Author: Joseph Marques <joseph(a)redhat.com>
Date: Tue Jun 29 13:47:21 2010 -0400
BZ-609158: hide "alerting on call-time data" and "group-wise call-time
data view" behind the "experimental feature" conditional rendering feature
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/DefinitionFormPrepareAction.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/DefinitionFormPrepareAction.java
index ccf46dd..81648a2 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/DefinitionFormPrepareAction.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/legacy/action/resource/common/monitor/alerts/config/DefinitionFormPrepareAction.java
@@ -131,7 +131,8 @@ public abstract class DefinitionFormPrepareAction extends TilesAction
{
if (defForm.getTraits().size() > 0 && triggerNotSet)
defForm.getCondition(0).setTrigger("onTrait");
- request.setAttribute("showCalltimeMetrics",
defForm.getCalltimeMetrics().size() > 0);
+ boolean isExperimental =
LookupUtil.getSystemManager().isExperimentalFeaturesEnabled();
+ request.setAttribute("showCalltimeMetrics", isExperimental &&
defForm.getCalltimeMetrics().size() > 0);
if (defForm.getCalltimeMetrics().size() > 0 && triggerNotSet)
defForm.getCondition(0).setTrigger("onCallTime");
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/autogroup/layout/main.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/autogroup/layout/main.xhtml
index 5a01f31..13d1786 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/autogroup/layout/main.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/autogroup/layout/main.xhtml
@@ -81,7 +81,9 @@ THIS TEXT WILL BE REMOVED AS WELL.
<onc:subtab name="Graphs"
url="/rhq/autogroup/monitor/graphs.xhtml" />
<onc:subtab name="Tables"
url="/rhq/autogroup/monitor/tables.xhtml" />
<onc:subtab name="Schedules"
url="/rhq/autogroup/monitor/schedules.xhtml" />
- <onc:subtab name="Response"
url="/rhq/autogroup/monitor/response.xhtml" />
+ <c:if test="#{GlobalPermissionsUIBean.experimental}">
+ <onc:subtab name="Response"
url="/rhq/autogroup/monitor/response.xhtml" />
+ </c:if>
</onc:tab>
<onc:tab name="Events"
image="/images/icons/Events_grey_16.png">
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/group/layout/main.xhtml
b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/group/layout/main.xhtml
index ac806e8..08b9d77 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/group/layout/main.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/group/layout/main.xhtml
@@ -58,7 +58,9 @@ THIS TEXT WILL BE REMOVED AS WELL.
<onc:subtab name="Graphs"
url="/rhq/group/monitor/graphs.xhtml"/>
<onc:subtab name="Tables"
url="/rhq/group/monitor/tables.xhtml"/>
<onc:subtab name="Schedules"
url="/rhq/group/monitor/schedules.xhtml"/>
- <onc:subtab name="Response"
url="/rhq/group/monitor/response.xhtml"/>
+ <c:if test="#{GlobalPermissionsUIBean.experimental}">
+ <onc:subtab name="Response"
url="/rhq/group/monitor/response.xhtml"/>
+ </c:if>
</onc:tab>
<onc:tab name="Inventory"
image="/images/icons/Inventory_grey_16.png">
commit 332fe9ad8a96d058eee69285cd7960f119b9d6d5
Author: Joseph Marques <joseph(a)redhat.com>
Date: Tue Jun 29 13:45:07 2010 -0400
support a GLOBAL bit for toggling on/off experimental features in the product
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/config/SystemConfigForm.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/config/SystemConfigForm.java
index 237858d..48694d8 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/config/SystemConfigForm.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/admin/config/SystemConfigForm.java
@@ -37,6 +37,7 @@ public class SystemConfigForm extends BaseValidatorForm {
private String agentMaxQuietTimeAllowedVal = "0";
private boolean enableAgentAutoUpdate = false;
private boolean enableDebugMode = false;
+ private boolean enableExperimentalFeatures = false;
private String helpUserId = "";
private String helpPassword = "";
private String maintIntervalVal = "0";
@@ -75,6 +76,7 @@ public class SystemConfigForm extends BaseValidatorForm {
buf.append("
agentMaxQuietTimeAllowed=").append(agentMaxQuietTimeAllowed);
buf.append(" enableAgentAutoUpdate=").append(enableAgentAutoUpdate);
buf.append(" enableDebugMode=").append(enableDebugMode);
+ buf.append("
enableExperimentalFeatures=").append(enableExperimentalFeatures);
buf.append(" helpUserId=").append(helpUserId);
buf.append(" helpPassword=").append(helpPassword);
buf.append(" ldapEnabled=").append(ldapEnabled);
@@ -103,6 +105,7 @@ public class SystemConfigForm extends BaseValidatorForm {
agentMaxQuietTimeAllowedVal = null;
enableAgentAutoUpdate = true;
enableDebugMode = false;
+ enableExperimentalFeatures = false;
helpUserId = "";
helpPassword = "";
maintInterval = "";
@@ -165,6 +168,16 @@ public class SystemConfigForm extends BaseValidatorForm {
}
enableDebugMode = Boolean.valueOf(enableDebugModeStr).booleanValue();
+ String enableExperimentalFeaturesStr =
prop.getProperty(RHQConstants.EnableExperimentalFeatures);
+ if (enableExperimentalFeaturesStr == null) {
+ enableExperimentalFeaturesStr = Boolean.FALSE.toString();
+ } else if (enableExperimentalFeaturesStr.equals("0")) {
+ enableExperimentalFeaturesStr = Boolean.FALSE.toString();
+ } else if (enableExperimentalFeaturesStr.equals("1")) {
+ enableExperimentalFeaturesStr = Boolean.TRUE.toString();
+ }
+ enableExperimentalFeatures =
Boolean.valueOf(enableExperimentalFeaturesStr).booleanValue();
+
String maintIntervalValStr = prop.getProperty(RHQConstants.DataMaintenance);
Long maintIntervalLong = new Long(maintIntervalValStr);
maintInterval = findTimeUnit(maintIntervalLong.longValue());
@@ -292,6 +305,8 @@ public class SystemConfigForm extends BaseValidatorForm {
prop.setProperty(RHQConstants.EnableDebugMode, String.valueOf(enableDebugMode));
+ prop.setProperty(RHQConstants.EnableExperimentalFeatures,
String.valueOf(enableExperimentalFeatures));
+
long maintIntervalLong = convertToMillisecond(Integer.parseInt(maintIntervalVal),
maintInterval);
prop.setProperty(RHQConstants.DataMaintenance,
String.valueOf(maintIntervalLong));
@@ -383,6 +398,14 @@ public class SystemConfigForm extends BaseValidatorForm {
this.enableDebugMode = b;
}
+ public boolean getEnableExperimentalFeatures() {
+ return this.enableExperimentalFeatures;
+ }
+
+ public void setEnableExperimentalFeatures(boolean b) {
+ this.enableExperimentalFeatures = b;
+ }
+
public String getMaintIntervalVal() {
return maintIntervalVal;
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/authorization/GlobalPermissionsUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/authorization/GlobalPermissionsUIBean.java
index 9cf263f..9f6ffd0 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/authorization/GlobalPermissionsUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/authorization/GlobalPermissionsUIBean.java
@@ -23,7 +23,6 @@ import java.util.Set;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.authz.Permission;
import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility;
-import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.system.SystemManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -34,6 +33,7 @@ public class GlobalPermissionsUIBean {
private boolean settings;
private boolean isSuperuser;
private boolean isDebugMode;
+ private boolean isExperimental;
public GlobalPermissionsUIBean() {
Subject user = EnterpriseFacesContextUtility.getSubject();
@@ -48,7 +48,8 @@ public class GlobalPermissionsUIBean {
}
SystemManagerLocal systemManager = LookupUtil.getSystemManager();
- isDebugMode =
Boolean.valueOf(systemManager.getSystemConfiguration().getProperty(RHQConstants.EnableDebugMode));
+ isDebugMode = systemManager.isDebugModeEnabled();
+ isExperimental = systemManager.isExperimentalFeaturesEnabled();
}
public boolean isSuperuser() {
@@ -59,6 +60,10 @@ public class GlobalPermissionsUIBean {
return isDebugMode;
}
+ public boolean isExperimental() {
+ return isExperimental;
+ }
+
public boolean isSecurity() {
return security;
}
diff --git
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/common/framework/ServerInfoUIBean.java
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/common/framework/ServerInfoUIBean.java
index 2c9104d..efe3dba 100644
---
a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/common/framework/ServerInfoUIBean.java
+++
b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/common/framework/ServerInfoUIBean.java
@@ -18,19 +18,23 @@
*/
package org.rhq.enterprise.gui.common.framework;
+import java.util.TimeZone;
+
+import javax.faces.component.UIComponent;
+
import com.sun.facelets.Facelet;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.jboss.seam.Component;
+
import org.rhq.core.util.maven.MavenArtifactNotFoundException;
import org.rhq.core.util.maven.MavenArtifactProperties;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.system.SystemManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
-import javax.faces.component.UIComponent;
-import java.util.TimeZone;
-
/**
* A JSF managed bean that exposes various general server information - RHQ version,
timezone, etc.
*
@@ -50,6 +54,12 @@ public class ServerInfoUIBean {
return
Boolean.valueOf(systemManager.getSystemConfiguration().getProperty(RHQConstants.EnableDebugMode));
}
+ public boolean isExperimentalFeaturesEnabled() {
+ SystemManagerLocal systemManager = LookupUtil.getSystemManager();
+ return Boolean.valueOf(systemManager.getSystemConfiguration().getProperty(
+ RHQConstants.EnableExperimentalFeatures));
+ }
+
public String getFacesVersion() {
return getManifestVersion(UIComponent.class);
}
@@ -81,11 +91,10 @@ public class ServerInfoUIBean {
if (pkg != null) {
version = pkg.getImplementationVersion();
if (version == null) {
- version = pkg.getSpecificationVersion();
+ version = pkg.getSpecificationVersion();
}
}
- }
- catch (Exception e) {
+ } catch (Exception e) {
log.error("Error while looking up manifest version for " + clazz +
".", e);
}
return version;
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
b/modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
index 2d93e15..2510400 100644
---
a/modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
+++
b/modules/enterprise/gui/portal-war/src/main/webapp-filtered/WEB-INF/classes/ApplicationResources.properties
@@ -591,6 +591,7 @@ admin.settings.BaseURL=GUI Console URL:
admin.settings.AgentMaxQuietTimeAllowed=Agent Max Quiet Time Allowed:
admin.settings.EnableAgentAutoUpdate=Enable Agent Auto-Updates:
admin.settings.EnableDebugMode=Enable Debug Mode:
+admin.settings.EnableExperimentalFeatures=Enable Experimental Features:
admin.settings.HttpProxyUrl=HTTP Proxy URL:
admin.settings.HttpProxyPort=HTTP Proxy Port:
admin.settings.SenderEmailAddressLabel=From Email Address:
diff --git
a/modules/enterprise/gui/portal-war/src/main/webapp/admin/config/GeneralPropertiesConfigForm.jsp
b/modules/enterprise/gui/portal-war/src/main/webapp/admin/config/GeneralPropertiesConfigForm.jsp
index 30df9ef..068b230 100644
---
a/modules/enterprise/gui/portal-war/src/main/webapp/admin/config/GeneralPropertiesConfigForm.jsp
+++
b/modules/enterprise/gui/portal-war/src/main/webapp/admin/config/GeneralPropertiesConfigForm.jsp
@@ -101,4 +101,18 @@
</tr>
</hq:authorization>
+<hq:authorization permission="superuser">
+ <tr>
+ <td class="BlockLabel"><fmt:message
key="admin.settings.EnableExperimentalFeatures"/></td>
+ <td class="BlockContent">
+ <table cellpadding="0" cellspacing="4"
border="0">
+ <tr>
+ <td align="left"><html:radio
property="enableExperimentalFeatures" value="true"/><fmt:message
key="yesno.true"/></td>
+ <td align="left"><html:radio
property="enableExperimentalFeatures"
value="false"/><fmt:message key="yesno.false"/></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</hq:authorization>
+
</table>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/RHQConstants.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/RHQConstants.java
index 7bb1d72..6712b3d 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/RHQConstants.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/RHQConstants.java
@@ -63,10 +63,12 @@ public class RHQConstants {
// Are we allowing automatic AgentUpdate binary download
public static final String EnableAgentAutoUpdate =
"ENABLE_AGENT_AUTO_UPDATE";
-
- // Are we rendering a special "debug" menu for administrators?
+ // Are we rendering a special "debug" menu for administrators?
public static final String EnableDebugMode = "ENABLE_DEBUG_MODE";
+ // Are we rendering features which are marked as experimental for this installation?
+ public static final String EnableExperimentalFeatures =
"ENABLE_EXPERIMENTAL_FEATURES";
+
// How long do we keep data compressed in hourly intervals?
public static final String DataPurge1Hour = "CAM_DATA_PURGE_1H";
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
index edb5059..4dc713b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerBean.java
@@ -267,7 +267,7 @@ public class SystemManagerBean implements SystemManagerLocal,
SystemManagerRemot
// to support Oracle (whose booleans may be 1 or 0) transform the boolean
settings properly
String propName = prop.getPropertyKey();
if (RHQConstants.EnableAgentAutoUpdate.equals(propName) ||
RHQConstants.EnableDebugMode.equals(propName)
- || RHQConstants.DataReindex.equals(propName)) {
+ || RHQConstants.DataReindex.equals(propName) ||
RHQConstants.EnableExperimentalFeatures.equals(propName)) {
String booleanValue = prop.getPropertyValue();
if ("0".equals(booleanValue)) {
prop.setPropertyValue(Boolean.FALSE.toString());
@@ -473,8 +473,8 @@ public class SystemManagerBean implements SystemManagerLocal,
SystemManagerRemot
// we need to undeploy it first - on windows the files are locked and
can't be renamed until undeployed
ObjectName name =
ObjectNameFactory.create("jboss.system:service=MainDeployer");
MBeanServerConnection mbs = MBeanServerLocator.locateJBoss();
- MainDeployerMBean mbean = (MainDeployerMBean)
MBeanServerInvocationHandler.newProxyInstance(mbs, name,
- MainDeployerMBean.class, false);
+ MainDeployerMBean mbean = (MainDeployerMBean)
MBeanServerInvocationHandler.newProxyInstance(mbs,
+ name, MainDeployerMBean.class, false);
URL url = deployedInstallWar.toURI().toURL();
String urlString = url.toString().replace("%20", "
"); // bug in undeployer doesn't like %20 - it wants a real space
((MainDeployerMBean) mbean).undeploy(urlString);
@@ -542,6 +542,23 @@ public class SystemManagerBean implements SystemManagerLocal,
SystemManagerRemot
}
}
+ public boolean isDebugModeEnabled() {
+ try {
+ return
Boolean.valueOf(getSystemConfiguration().getProperty(RHQConstants.EnableDebugMode,
"false"));
+ } catch (Throwable t) {
+ return false; // paranoid catch-all
+ }
+ }
+
+ public boolean isExperimentalFeaturesEnabled() {
+ try {
+ return
Boolean.valueOf(getSystemConfiguration().getProperty(RHQConstants.EnableExperimentalFeatures,
+ "false"));
+ } catch (Throwable t) {
+ return false; // paranoid catch-all
+ }
+ }
+
/**
* Retrieves the currently active license. Returns null if there is no active
license. Otherwise it needs to
* propogate the appropriate error back up to the caller, otherwise the error will be
masked, and from a UI
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerLocal.java
index 18bb904..e339c8b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemManagerLocal.java
@@ -150,6 +150,10 @@ public interface SystemManagerLocal {
*/
void loadSystemConfigurationCache();
+ boolean isDebugModeEnabled();
+
+ boolean isExperimentalFeaturesEnabled();
+
//////////////////////////////////
// license specific methods follow