modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ExistingResourceConfigurationUIBean.java | 8 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigDirectory.java | 4 modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java | 54 - modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationEditor.java | 287 ++++------ modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationViewer.java | 265 +++++++++ modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/components.xml | 2 modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml | 19 modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/add-map.xhtml | 6 modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit-map.xhtml | 6 modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml | 126 ++-- modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml | 46 - modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/RawServer.groovy | 2 modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/StructuredAndRawServer.groovy | 2 13 files changed, 511 insertions(+), 316 deletions(-)
New commits: commit 9639d79f1b5ee0cfe90b89ad8849dd94838a05fb Merge: 48dc406... ced3c1b... Author: John Sanda john@localhost.localdomain Date: Wed Feb 3 11:02:41 2010 -0500
Merge branch 'raw-config' of ssh://git.fedorahosted.org/git/rhq/rhq into raw-config
diff --cc modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ExistingResourceConfigurationUIBean.java index 9d43732,ebb3bc6..bcedcfb --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ExistingResourceConfigurationUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ExistingResourceConfigurationUIBean.java @@@ -313,10 -328,9 +328,9 @@@ public class ExistingResourceConfigurat if (editedRaw.getSha256().equals(originalRaw.getSha256())) { --numberOfModifiedFiles; RawConfigUIBean rawUIBean = findRawConfigUIBeanByPath(editedRaw.getPath()); - rawUIBean.setModified(false); +// rawUIBean.setModified(false); getModified().remove(editedRaw.getPath()); - } - else { + } else { ++numberOfModifiedFiles; } return null;
commit 48dc40645ddd0a062e0b7c599f2771bd086769d6 Author: John Sanda john@localhost.localdomain Date: Wed Feb 3 10:53:01 2010 -0500
Adding and updating support for undo operation in ResourceConfigurationEditor and in edit.xhtml
The undo operation through the file menu now works for resources that support structured and raw configuration. The code changes still need to be applied to raw-only. I had to refactor the file menu JSF code a bit. First, the file menu item is now omitted and has been replaced with a <h:outputLabel>. The undo button was previously rendered with <h:commandButton> and used a4j:support. It is now rendered with aj4:button.
These changes allow for each component to respond separately to mouse clicks and the a4j button allows for an ajax request to be sent instead of a full post-back. Ajax requests should be possible using,
<h:commandButton> a4j:support/ </h:commandButton>
but for some reason it was causing full post-backs. I also encounted some seam-related exceptions involving concurrent request timeouts for the same conversation. It is not clear why those exceptions were getting thrown, but they were causing the undo operatin to break. Specifying the concurrent-request-timeout attribute for the edit.xhtml page navigation declaration in pages.xml resolved that issue.
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java index 5ba82bc..475ed1a 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java @@ -63,7 +63,10 @@ public class RawConfigUIBean { }
public void undoEdit() { - rawConfiguration = originalRawConfiguration.deepCopy(false); + Configuration configuration = rawConfiguration.getConfiguration(); + configuration.removeRawConfiguration(rawConfiguration); + rawConfiguration = originalRawConfiguration.deepCopy(true); + configuration.addRawConfiguration(rawConfiguration); }
/** @return The full path name of the raw config file */ diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml index cfdb513..eec0dd8 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml @@ -17,7 +17,7 @@
<page view-id="/rhq/resource/configuration/view-map.xhtml" action="#{configurationViewer.initialize}"/>
- <page view-id="/rhq/resource/configuration/edit.xhtml"> + <page view-id="/rhq/resource/configuration/edit.xhtml" concurrent-request-timeout="3000"> <action execute="#{configurationEditor.initialize}" on-postback="false"/> <begin-conversation join="true"/>
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml index b520d47..266b97a 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml @@ -234,8 +234,6 @@ THIS TEXT WILL BE REMOVED. <h:panelGrid columns="1"> <rich:panel id="fileMenuPanel" style="width:100%"> <f:facet name="header">Files</f:facet> - - <rich:panelMenu id="fileMenu" mode="ajax" expandMode="client" @@ -247,24 +245,22 @@ THIS TEXT WILL BE REMOVED. expanded="true" selectedChild="#{selectedRawUIBean.path}"> <c:forEach items="#{rawConfigDir.rawConfigUIBeans}" var="rawConfigUIBean"> - <rich:panelMenuItem label="#{rawConfigUIBean.fileName}" - icon="#{rawConfigUIBean.icon}" - onclick="cursor_wait();" - oncomplete="cursor_clear();" - action="#{configurationEditor.select(rawConfigUIBean.path)}" - limitToList="true" - reRender="fileContents,selectedFileHeader,modalEditor,fileMenu"> + <rich:panelMenuItem label="" + icon="#{rawConfigUIBean.icon}"> <h:panelGroup> - <h:outputText value="#{#rawConfigUIBean.fileName}"/> - <h:commandButton value="Undo" - styleClass="buttonmed" - rendered="#{rawConfigUIBean.modified}"> + <h:outputLabel value="#{rawConfigUIBean.fileName}"> <a4j:support event="onclick" - onsumbit="cursor_wait()" + onsubmit="cursor_wait()" oncomplete="cursor_clear()" - action="#{configurationEditor.undoEdit(rawConfigUIBean.path)}" - reRender="fileMenu,fileContents"/> - </h:commandButton> + action="#{configurationEditor.select(rawConfigUIBean.path)}" + limitToList="true" + reRender="fileContents,selectedFileHeader,modalEditor,fileMenuPanel"/> + </h:outputLabel> + <a4j:commandButton value="Undo" + styleClass="buttonmed" + rendered="#{rawConfigUIBean.modified}" + action="#{configurationEditor.undoEdit(rawConfigUIBean.path)}" + reRender="fileMenuPanel,fileContents"/> </h:panelGroup> </rich:panelMenuItem> </c:forEach> diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml index 889436f..a76af3f 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml @@ -195,7 +195,7 @@ THIS TEXT WILL BE REMOVED. onlabelclick="cursor_wait();" oncomplete="cursor_clear();" limitToList="true" - reRender="upperEditButton,lowerEditStructuredButton,lowerEditRawButton,fileUpload,upperCommitPanel,lowerCommitPanel"> + reRender="upperEditButton,lowerEditStructuredButton,lowerEditRawButton"> <h:outputText value=" #{messages.nopermissionedit}" rendered="#{!ResourceUIBean.permissions.configure}"/>
commit 285dbe27561d19dea8bd1929ea3a489863463111 Author: John Sanda john@localhost.localdomain Date: Tue Feb 2 17:01:50 2010 -0500
Adding ResourceConfigurationEditor.undoEdit() and corresponding method in RawConfigUIBean
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java index 9a0fab5..5ba82bc 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java @@ -62,6 +62,10 @@ public class RawConfigUIBean { Events.instance().raiseEvent("rawConfigUpdate", this); }
+ public void undoEdit() { + rawConfiguration = originalRawConfiguration.deepCopy(false); + } + /** @return The full path name of the raw config file */ public String getPath() { return rawConfiguration.getPath(); 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 4339aef..8757de5 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 @@ -171,6 +171,15 @@ public class ResourceConfigurationEditor extends ResourceConfigurationViewer { return null; }
+ public void undoEdit(String path) { + RawConfigUIBean rawConfigUIBean = findRawConfigUIBeanByPath(path); + rawConfigUIBean.undoEdit(); + } + + /** + * + * @return + */ public String finishAddMap() { FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Map added."); return "success"; diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml index 031a6ef..b520d47 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml @@ -262,7 +262,7 @@ THIS TEXT WILL BE REMOVED. <a4j:support event="onclick" onsumbit="cursor_wait()" oncomplete="cursor_clear()" - action="#{ExistingResourceConfigurationUIBean.undoEdit(rawConfigUIBean.path)}" + action="#{configurationEditor.undoEdit(rawConfigUIBean.path)}" reRender="fileMenu,fileContents"/> </h:commandButton> </h:panelGroup>
commit 8af8a03f6d51cfc5b0d26a8f9b5f8a22a63d0ba9 Author: John Sanda john@localhost.localdomain Date: Tue Feb 2 15:37:29 2010 -0500
Updating page nav rules and ResourceConfigurationEditor to support adding/editing complex properties
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 f22a56c..4339aef 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 @@ -170,4 +170,14 @@ public class ResourceConfigurationEditor extends ResourceConfigurationViewer {
return null; } + + public String finishAddMap() { + FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Map added."); + return "success"; + } + + public String finishEditMap() { + FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Map updated."); + return "success"; + } } diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml index 9313b60..cfdb513 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml @@ -20,6 +20,7 @@ <page view-id="/rhq/resource/configuration/edit.xhtml"> <action execute="#{configurationEditor.initialize}" on-postback="false"/> <begin-conversation join="true"/> + <navigation from-action="#{configurationEditor.updateConfiguration}"> <rule if-outcome="success"> <end-conversation before-redirect="false"/> @@ -28,6 +29,14 @@ </redirect> </rule> </navigation> + + <navigation from-action="#{configurationEditor.finishAddMap}"> + <render view-id="/rhq/resource/configuration/edit.xhtml"/> + </navigation> + + <navigation from-action="#{configurationEditor.finishEditMap}"> + <render view-id="/rhq/resource/configuration/edit.xhtml"/> + </navigation> </page>
</pages> \ No newline at end of file diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/add-map.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/add-map.xhtml index e29844c..8253558 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/add-map.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/add-map.xhtml @@ -27,12 +27,12 @@ THIS TEXT WILL BE REMOVED.
<input type="hidden" name="id" value="#{ResourceUIBean.id}"/>
- <onc:config configurationDefinition="#{ExistingResourceConfigurationUIBean.configurationDefinition}" - configuration="#{ExistingResourceConfigurationUIBean.configuration}" + <onc:config configurationDefinition="#{resourceConfigurationDefinition}" + configuration="#{resourceConfiguration}" listName="#{param.listName}"/>
<h:panelGrid columns="2" styleClass="buttons-table" columnClasses="button-cell"> - <h:commandButton value="OK" type="submit" action="#{ExistingResourceConfigurationUIBean.finishAddMap}" + <h:commandButton value="OK" type="submit" action="#{configurationEditor.finishAddMap}" alt="Click to Add Map" styleClass="buttonmed"/> <h:commandButton value="RESET" type="reset" immediate="true" alt="Click to Reset Fields" styleClass="buttonmed"/> diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit-map.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit-map.xhtml index 5471be2..46aaed8 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit-map.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit-map.xhtml @@ -27,14 +27,14 @@ THIS TEXT WILL BE REMOVED.
<input type="hidden" name="id" value="#{ResourceUIBean.id}"/>
- <onc:config configurationDefinition="#{ExistingResourceConfigurationUIBean.configurationDefinition}" - configuration="#{ExistingResourceConfigurationUIBean.configuration}" + <onc:config configurationDefinition="#{resourceConfigurationDefinition}" + configuration="#{resourceConfiguration}" listName="#{param.listName}" listIndex="#{param.listIndex}" prevalidate="true"/>
<h:panelGrid columns="2" styleClass="buttons-table" columnClasses="button-cell"> - <h:commandButton value="OK" action="#{ExistingResourceConfigurationUIBean.finishEditMap}" + <h:commandButton value="OK" action="#{configurationEditor.finishEditMap}" alt="Click to Update Map" styleClass="buttonmed"/> <h:commandButton value="RESET" type="reset" immediate="true" alt="Click to Reset Fields" styleClass="buttonmed"/>
commit 69d8203b48bc7bbb994f71ec166b0589e051bd1e Author: John Sanda john@localhost.localdomain Date: Tue Feb 2 14:49:24 2010 -0500
Adding update method to ResourceConfigurationEditor.
Also replacing more uses of ExistingResourceConfigurationUIBean with configurationEditor.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/RawConfiguration.java b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/RawConfiguration.java index c563385..e4e3d7e 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/RawConfiguration.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/RawConfiguration.java @@ -115,16 +115,8 @@ public class RawConfiguration implements Serializable, DeepCopyable<RawConfigura * @param contents The new contents */ public void setContents(String contents) { - if (configuration != null) { - configuration.removeRawConfiguration(this); - } - this.contents = contents; updateSha256(); - - if (configuration != null) { - configuration.addRawConfiguration(this); - } }
private void updateSha256() { diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ExistingResourceConfigurationUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ExistingResourceConfigurationUIBean.java index a996407..9d43732 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ExistingResourceConfigurationUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ExistingResourceConfigurationUIBean.java @@ -313,7 +313,7 @@ public class ExistingResourceConfigurationUIBean extends AbstractConfigurationUI if (editedRaw.getSha256().equals(originalRaw.getSha256())) { --numberOfModifiedFiles; RawConfigUIBean rawUIBean = findRawConfigUIBeanByPath(editedRaw.getPath()); - rawUIBean.setModified(false); +// rawUIBean.setModified(false); getModified().remove(editedRaw.getPath()); } else { @@ -327,8 +327,8 @@ public class ExistingResourceConfigurationUIBean extends AbstractConfigurationUI RawConfigUIBean bean = findRawConfigUIBeanByPath(path);
if (bean != null) { - bean.setModified(false); - bean.setIcon("/images/blank.png"); +// bean.setModified(false); +// bean.setIcon("/images/blank.png"); }
} @@ -496,7 +496,7 @@ public class ExistingResourceConfigurationUIBean extends AbstractConfigurationUI private void markCurrentRawConfigUIBeanModified() { RawConfigUIBean bean = findRawConfigUIBeanByPath(current.getPath()); if (bean != null) { - bean.setModified(true); +// bean.setModified(true); } }
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java index 90ad4d3..9a0fab5 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java @@ -24,6 +24,7 @@ package org.rhq.enterprise.gui.configuration.resource;
import org.jboss.seam.core.Events; +import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.RawConfiguration;
import javax.faces.component.NamingContainer; @@ -53,7 +54,11 @@ public class RawConfigUIBean { }
public void setContents(String contents) { + Configuration configuration = rawConfiguration.getConfiguration(); + configuration.removeRawConfiguration(rawConfiguration); rawConfiguration.setContents(contents); + configuration.addRawConfiguration(rawConfiguration); + Events.instance().raiseEvent("rawConfigUpdate", this); }
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 6c7eb7f..f22a56c 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 @@ -28,11 +28,16 @@ import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Observer; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.web.RequestParameter; +import org.rhq.core.domain.configuration.AbstractResourceConfigurationUpdate; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.RawConfiguration; +import org.rhq.core.gui.configuration.ConfigurationMaskingUtility; +import org.rhq.core.gui.util.FacesContextUtility; +import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; import org.rhq.enterprise.server.configuration.ConfigurationManagerLocal; import org.rhq.enterprise.server.util.LookupUtil;
+import javax.faces.application.FacesMessage; import java.util.HashSet; import java.util.Set;
@@ -131,4 +136,38 @@ public class ResourceConfigurationEditor extends ResourceConfigurationViewer {
return numberOfFilesModified + " files changed in this configuration"; } + + public String updateConfiguration() { + ConfigurationManagerLocal configurationMgr = LookupUtil.getConfigurationManager(); + + ConfigurationMaskingUtility.unmaskConfiguration(resourceConfiguration, resourceConfigurationDefinition); + + AbstractResourceConfigurationUpdate updateRequest = configurationMgr.updateStructuredOrRawConfiguration( + loggedInUser.getSubject(), resourceId, resourceConfiguration, isStructuredMode()); + + if (updateRequest != null) { + switch (updateRequest.getStatus()) { + case SUCCESS: + case INPROGRESS: + FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Configuration update request with id " + + updateRequest.getId() + " has been sent to the Agent."); + return "success"; + case FAILURE: + FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Configuration update request with id " + + updateRequest.getId() + " failed.", updateRequest.getErrorMessage()); + return "failure"; + case UNSENT: + FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Configuration update was not valid", + updateRequest.getErrorMessage()); + return "failure"; + } + } + else { + FacesContextUtility.addMessage(FacesMessage.SEVERITY_WARN, "No changes were made to the configuration, so " + + "no update request has been sent to the Agent."); + return "success"; + } + + return null; + } } diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationViewer.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationViewer.java index 3bb7c6c..3cab434 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationViewer.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationViewer.java @@ -62,7 +62,7 @@ public class ResourceConfigurationViewer { protected Configuration resourceConfiguration;
@Out - private ConfigurationDefinition resourceConfigurationDefinition; + protected ConfigurationDefinition resourceConfigurationDefinition;
@Out private Collection<RawConfigDirectory> rawConfigDirectories; @@ -181,6 +181,14 @@ public class ResourceConfigurationViewer {
/** @return The currently selected tab, structured (i.e., Basic Mode) or raw (i.e., Advanced Mode). */ public String getSelectedTab() { + if (isStructuredSupported()) { + return "structuredTab"; + } + + if (isRawSupported()) { + return "rawTab"; + } + if (mode == STRUCTURED_MODE) { return "structuredTab"; } @@ -213,7 +221,6 @@ public class ResourceConfigurationViewer { protected void changeToStructuredTab() { }
- public void select(String path) { selectedRawUIBean = findRawConfigUIBeanByPath(path); } diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/components.xml b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/components.xml index 126fb6f..2042013 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/components.xml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/components.xml @@ -12,7 +12,7 @@ <component name="org.jboss.seam.core.init"> <property name="debug">false</property> <!-- enable only when needed --> <property name="transactionManagementEnabled">false</property> - <property name="jndi-pattern">rhq/#{ejbName}/local</property> + <property name="jndiPattern">rhq/#{ejbName}/local</property> </component>
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml index b79dba9..9313b60 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/pages.xml @@ -20,6 +20,14 @@ <page view-id="/rhq/resource/configuration/edit.xhtml"> <action execute="#{configurationEditor.initialize}" on-postback="false"/> <begin-conversation join="true"/> + <navigation from-action="#{configurationEditor.updateConfiguration}"> + <rule if-outcome="success"> + <end-conversation before-redirect="false"/> + <redirect view-id="/rhq/resource/configuration/history.xhtml"> + <param name="id" value="#{ResourceUIBean.id}"/> + </redirect> + </rule> + </navigation> </page>
</pages> \ No newline at end of file diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml index 0b9ab22..031a6ef 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml @@ -49,7 +49,7 @@ THIS TEXT WILL BE REMOVED.
<h:form id="editResourceConfigurationForm" onsubmit="prepareInputsForSubmission(this)" - rendered="#{!ViewResourceConfigurationUIBean.updateInProgress}"> + rendered="#{!configurationEditor.updateInProgress}">
<input type="hidden" name="id" value="#{ResourceUIBean.id}"/>
@@ -61,7 +61,7 @@ THIS TEXT WILL BE REMOVED. style="padding-right:10px" value="#{configurationEditor.modifiedFilesMsg}"/> <h:commandButton value="Commit" - action="#{ExistingResourceConfigurationUIBean.updateRawConfiguration}" + action="#{configurationEditor.updateConfiguration}" title="Click to Save Changes" styleClass="buttonmed" rendered="${ResourceUIBean.permissions.configure}"/> @@ -70,14 +70,14 @@ THIS TEXT WILL BE REMOVED. </h:panelGrid>
<c:choose> - <c:when test="${ExistingResourceConfigurationUIBean.rawSupported}"> + <c:when test="${configurationEditor.rawSupported}"> <rich:tabPanel switchType="ajax" valueChangeListener="changeTabs"> <rich:tab label="Advanced Mode" onlabelclick="cursor_wait();" oncomplete="cursor_clear();"> <h:panelGrid columns="2" styleClass="raw-outer-table" columnClasses="raw-outer-table-left-col,raw-outer-table-right-col"> <h:panelGrid columns="1"> - <rich:panel style="width:100%"> + <rich:panel id="fileMenuPanel" style="width:100%"> <f:facet name="header">Files</f:facet>
<rich:panelMenu id="fileMenu" @@ -89,18 +89,17 @@ THIS TEXT WILL BE REMOVED. var="rawConfigDir"> <rich:panelMenuGroup label="#{rawConfigDir.path}" expanded="true" - selectedChild="#{ExistingResourceConfigurationUIBean.currentPath}"> + selectedChild="#{selectedRawUIBean.path}"> <c:forEach items="#{rawConfigDir.rawConfigUIBeans}" var="rawConfigUIBean"> <rich:panelMenuItem label="#{rawConfigUIBean.fileName}" icon="#{rawConfigUIBean.icon}" - binding="#{rawConfigUIBean.panelMenuItem}" onclick="cursor_wait();" oncomplete="cursor_clear();" - action="#{ExistingResourceConfigurationUIBean.select(rawConfigUIBean.path)}" + action="#{configurationEditor.select(rawConfigUIBean.path)}" limitToList="true" reRender="fileContents,selectedFileHeader,modalEditor,fileMenu"> <h:panelGroup> - <h:outputText value="#{#rawConfigUIBean.fileName}"/> + <h:outputText value="#{rawConfigUIBean.fileName}"/> <h:commandButton value="Undo" styleClass="buttonmed" rendered="#{rawConfigUIBean.modified}"> @@ -131,38 +130,37 @@ THIS TEXT WILL BE REMOVED.
<h:outputLink value="#" onclick="#{rich:component('uploadWindow')}.show()">Upload New</h:outputLink>
- <h:commandLink action="#{ExistingResourceConfigurationUIBean.download}" value="Download"> + <h:commandLink action="#{configurationEditor.download}" value="Download"> <h:graphicImage value="/images/download.png"/> <f:param name="id" value="#{ResourceUIBean.id}"/> </h:commandLink>
<a4j:status id="selectedFileHeader" - startText="Loading #{ExistingResourceConfigurationUIBean.current.path} ..." - stopText="#{ExistingResourceConfigurationUIBean.current.path}"/> + startText="Loading #{selectedRawUIBean.path} ..." + stopText="#{selectedRawUIBean.path}"/> </h:panelGrid>
<rich:panel style="margin-left:1px; border: none;"> <h:inputTextarea id="fileContents" style="width:100%" - value="#{ExistingResourceConfigurationUIBean.currentContents}" + value="#{selectedRawUIBean.contents}" readonly="false"> <a4j:support event="onkeyup" ignoreDupeResponses="true" - reRender="fileMenu" - requestDelay="1000" - action="#{ExistingResourceConfigurationUIBean.editCurrent}"/> + reRender="fileMenuPanel,upperCommitPanel,lowerCommitPanel" + requestDelay="1000"/> </h:inputTextarea> </rich:panel> </h:panelGrid> </h:panelGrid>
<h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> - <h:panelGroup style="text-align:right"> + <h:panelGroup id="lowerCommitPanel" style="text-align:right"> <h:outputText value="#{configurationEditor.modifiedFilesMsg}" rendered="#{configurationEditor .rawMode}" style="padding-right:10px"/> <h:commandButton value="Commit" - action="#{ExistingResourceConfigurationUIBean.updateRawConfiguration}" + action="#{configurationEditor.updateConfiguration}" title="Click to Save Changes" styleClass="buttonmed" rendered="${ResourceUIBean.permissions.configure}"/> @@ -172,18 +170,18 @@ THIS TEXT WILL BE REMOVED. </rich:tabPanel> </c:when>
- <c:when test="${ExistingResourceConfigurationUIBean.structuredSupported}"> + <c:when test="${configurationEditor.structuredSupported}"> <rich:tabPanel switchType="ajax" valueChangeListener="changeTabs"> <rich:tab label="Basic Mode" onlabelclick="cursor_wait();" oncomplete="cursor_clear();"> - <onc:config configurationDefinition="#{ExistingResourceConfigurationUIBean.configurationDefinition}" - configuration="#{ExistingResourceConfigurationUIBean.configuration}" - nullConfigurationDefinitionMessage="#{ExistingResourceConfigurationUIBean.nullConfigurationDefinitionMessage}" - nullConfigurationMessage="#{ExistingResourceConfigurationUIBean.nullConfigurationMessage}" + <onc:config configurationDefinition="#{resourceConfigurationDefinition}" + configuration="#{resourceConfiguration}" + nullConfigurationDefinitionMessage="#{msg['resource.configuration.definition.null']}" + nullConfigurationMessage="#{msg['resource.configuration.null']}" prevalidate="true"/>
<h:panelGrid columns="2" styleClass="buttons-table" columnClasses="button-cell" - rendered="#{ExistingResourceConfigurationUIBean.configuration != null}"> - <h:commandButton value="SAVE" action="#{ExistingResourceConfigurationUIBean.updateConfiguration}" + rendered="#{resourceConfiguration != null}"> + <h:commandButton value="SAVE" action="#{configurationEditor.updateConfiguration}" title="Click to Save Changes" styleClass="buttonmed" rendered="${ResourceUIBean.permissions.configure}"/> <h:commandButton value="RESET" type="reset" immediate="true" @@ -193,7 +191,7 @@ THIS TEXT WILL BE REMOVED. </rich:tabPanel> </c:when>
- <c:when test="${ExistingResourceConfigurationUIBean.structuredAndRawSupported}"> + <c:when test="${configurationEditor.structuredAndRawSupported}"> <rich:tabPanel id="configTabPanel" selectedTab="#{configurationEditor.selectedTab}" switchType="ajax" @@ -214,7 +212,7 @@ THIS TEXT WILL BE REMOVED. columnClasses="button-cell" rendered="#{resourceConfiguration != null}"> <h:commandButton value="SAVE" - action="#{ExistingResourceConfigurationUIBean.updateConfiguration}" + action="#{configurationEditor.updateConfiguration}" title="Click to Save Changes" styleClass="buttonmed" rendered="${ResourceUIBean.permissions.configure}"/> @@ -247,7 +245,7 @@ THIS TEXT WILL BE REMOVED. var="rawConfigDir"> <rich:panelMenuGroup label="#{rawConfigDir.path}" expanded="true" - selectedChild="#{ExistingResourceConfigurationUIBean.currentPath}"> + selectedChild="#{selectedRawUIBean.path}"> <c:forEach items="#{rawConfigDir.rawConfigUIBeans}" var="rawConfigUIBean"> <rich:panelMenuItem label="#{rawConfigUIBean.fileName}" icon="#{rawConfigUIBean.icon}" @@ -288,14 +286,14 @@ THIS TEXT WILL BE REMOVED.
<h:outputLink value="#" onclick="#{rich:component('uploadWindow')}.show()">Upload New</h:outputLink>
- <h:commandLink action="#{ExistingResourceConfigurationUIBean.download}" value="Download"> + <h:commandLink action="#{configurationEditor.download}" value="Download"> <h:graphicImage value="/images/download.png"/> <f:param name="id" value="#{ResourceUIBean.id}"/> </h:commandLink>
<a4j:status id="selectedFileHeader" - startText="Loading #{ExistingResourceConfigurationUIBean.current.path} ..." - stopText="#{ExistingResourceConfigurationUIBean.current.path}"/> + startText="Loading #{selectedRawUIBean.path} ..." + stopText="#{selectedRawUIBean.path}"/> </h:panelGrid>
<rich:panel id="fileContentsPanel" style="margin-left:1px; border: none;"> @@ -318,7 +316,7 @@ THIS TEXT WILL BE REMOVED. rendered="#{configurationEditor.displayChangedFilesLabel}" style="padding-right:10px"/> <h:commandButton value="Commit" - action="#{ExistingResourceConfigurationUIBean.updateRawConfiguration}" + action="#{configurationEditor.updateConfiguration}" title="Click to Save Changes" styleClass="buttonmed" rendered="${ResourceUIBean.permissions.configure}"/> @@ -334,7 +332,7 @@ THIS TEXT WILL BE REMOVED. </h:form>
<h:panelGroup layout="block" styleClass="InfoBlock" - rendered="#{ExistingResourceConfigurationUIBean.updateInProgress}"> + rendered="#{configurationEditor.updateInProgress}"> <b>${msg['note']}</b> ${msg['resource.config.Current.updateInProgress']} </h:panelGroup> </ui:define> diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml index 3b05ebb..889436f 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml @@ -212,7 +212,7 @@ THIS TEXT WILL BE REMOVED. var="rawConfigDir"> <rich:panelMenuGroup label="#{rawConfigDir.path}" expanded="true" - selectedChild="#{currentPath}"> + selectedChild="#{selectedRawUIBean.path}"> <c:forEach items="#{rawConfigDir.rawConfigUIBeans}" var="rawConfigUIBean"> <rich:panelMenuItem label="#{rawConfigUIBean.fileName}" icon="/images/blank.png"
commit 42af01a4ea5b6c53bb6f433ce6113a7b2ca74c11 Author: John Sanda john@localhost.localdomain Date: Tue Feb 2 09:21:16 2010 -0500
Refactoring methods for translating between structured and raw and for tracking changes
As part of this refactoring, introducing a new class, ResourceConfigurationViewer, which ResourceConfigurationEditor extends. ResourceConfigurationEditor has methods to handle translating between structured and raw.
RawConfigUIBean has been refactored such that it encapsulates logic to determinr whether or not the corresponding raw config file is modified. When the file is modified, RawConfigUIBean fires a seam event to inidicate that the file has been updated.
ResourceConfigurationEditor subscribes to the event fired by RawConfigUIBean. The event handler method contains logic for tracking the files that are modified.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/RawConfiguration.java b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/RawConfiguration.java index e4e3d7e..c563385 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/RawConfiguration.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/configuration/RawConfiguration.java @@ -115,8 +115,16 @@ public class RawConfiguration implements Serializable, DeepCopyable<RawConfigura * @param contents The new contents */ public void setContents(String contents) { + if (configuration != null) { + configuration.removeRawConfiguration(this); + } + this.contents = contents; updateSha256(); + + if (configuration != null) { + configuration.addRawConfiguration(this); + } }
private void updateSha256() { diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigDirectory.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigDirectory.java index fe346dd..953f0fa 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigDirectory.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigDirectory.java @@ -48,8 +48,6 @@ public class RawConfigDirectory { }
public void addRawConfig(RawConfiguration rawConfig) { - RawConfigUIBean bean = new RawConfigUIBean(); - bean.setRawConfiguration(rawConfig); - rawConfigUIBeans.add(bean); + rawConfigUIBeans.add(new RawConfigUIBean(rawConfig)); } } diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java index 260921d..90ad4d3 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/RawConfigUIBean.java @@ -23,53 +23,29 @@
package org.rhq.enterprise.gui.configuration.resource;
+import org.jboss.seam.core.Events; import org.rhq.core.domain.configuration.RawConfiguration; -import org.richfaces.component.html.HtmlPanelMenuItem;
import javax.faces.component.NamingContainer; import java.io.File;
public class RawConfigUIBean {
- private RawConfiguration rawConfiguration; - - private boolean modified; + private RawConfiguration originalRawConfiguration;
- private String modifiedContents; - - private HtmlPanelMenuItem panelMenuItem; + private RawConfiguration rawConfiguration;
- public RawConfiguration getRawConfiguration() { - return rawConfiguration; + public RawConfigUIBean(RawConfiguration rawConfiguration) { + this.rawConfiguration = rawConfiguration; + originalRawConfiguration = rawConfiguration.deepCopy(false); }
public void setRawConfiguration(RawConfiguration rawConfiguration) { this.rawConfiguration = rawConfiguration; }
- public HtmlPanelMenuItem getPanelMenuItem() { - return panelMenuItem; - } - - public void setPanelMenuItem(HtmlPanelMenuItem panelMenuItem) { - this.panelMenuItem = panelMenuItem; - } - - public String getModifiedContents() { - return modifiedContents; - } - - public void setModifiedContents(String contents) { - modifiedContents = contents; - } - public boolean isModified() { - return modified; - } - - public void setModified(boolean modified) { - this.modified = modified; - panelMenuItem.setIcon(getIcon()); + return !rawConfiguration.getSha256().equals(originalRawConfiguration.getSha256()); }
public String getContents() { @@ -78,6 +54,7 @@ public class RawConfigUIBean {
public void setContents(String contents) { rawConfiguration.setContents(contents); + Events.instance().raiseEvent("rawConfigUpdate", this); }
/** @return The full path name of the raw config file */ @@ -106,7 +83,4 @@ public class RawConfigUIBean { return "/images/blank.png"; }
- public void setIcon(String icon) { - panelMenuItem.setIcon(icon); - } } 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 9e5b695..6c7eb7f 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 @@ -24,228 +24,111 @@ package org.rhq.enterprise.gui.configuration.resource;
import org.jboss.seam.ScopeType; -import org.jboss.seam.annotations.*; +import org.jboss.seam.annotations.Name; +import org.jboss.seam.annotations.Observer; +import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.web.RequestParameter; -import org.rhq.core.domain.auth.Subject; -import org.rhq.core.domain.configuration.AbstractResourceConfigurationUpdate; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.RawConfiguration; -import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; -import org.rhq.core.domain.configuration.definition.ConfigurationFormat; -import org.rhq.core.gui.configuration.ConfigurationMaskingUtility; -import org.rhq.core.gui.util.FacesContextUtility; -import org.rhq.enterprise.gui.legacy.WebUser; -import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; import org.rhq.enterprise.server.configuration.ConfigurationManagerLocal; import org.rhq.enterprise.server.util.LookupUtil;
-import javax.faces.event.ValueChangeEvent; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; -import java.util.*; +import java.util.HashSet; +import java.util.Set;
@Name("configurationEditor") @Scope(ScopeType.CONVERSATION) -@Role(name = "configurationViewer", scope = ScopeType.PAGE) -public class ResourceConfigurationEditor { - - private static final boolean STRUCTURED_MODE = true; - private static final boolean RAW_MODE = false; - - private boolean mode = STRUCTURED_MODE; +public class ResourceConfigurationEditor extends ResourceConfigurationViewer {
private Configuration originalResourceConfiguration;
- @In("webUser") - private WebUser loggedInUser; - - @Out - private Configuration resourceConfiguration; - - @Out - private ConfigurationDefinition resourceConfigurationDefinition; + private int numberOfFilesModified;
- @Out - private Collection<RawConfigDirectory> rawConfigDirectories; - - @Out(required = false) - private RawConfigUIBean selectedRawUIBean; - - @RequestParameter("id") - private int resourceId; + private Set<String> modifiedFiles = new HashSet<String>();
@RequestParameter private String tab;
- private boolean readOnly = true; - - @Create - public void initialize() { - loadResourceConfigurationDefinition(); - loadResourceConfiguration(); - initRawConfigDirectories(); - + @Override + protected void doInitialization() { if (tab != null) { setSelectedTab(tab); } - } - - private void loadResourceConfigurationDefinition() { - int resourceTypeId = EnterpriseFacesContextUtility.getResource().getResourceType().getId();
- ConfigurationManagerLocal configurationManager = LookupUtil.getConfigurationManager(); - - resourceConfigurationDefinition = configurationManager.getResourceConfigurationDefinitionForResourceType( - loggedInUser.getSubject(), resourceTypeId); + originalResourceConfiguration = resourceConfiguration.deepCopy(true); }
- private void loadResourceConfiguration() { - Subject subject = loggedInUser.getSubject(); - - ConfigurationManagerLocal configurationManager = LookupUtil.getConfigurationManager(); - - AbstractResourceConfigurationUpdate configurationUpdate = - configurationManager.getLatestResourceConfigurationUpdate(subject, resourceId); - resourceConfiguration = (configurationUpdate != null) ? configurationUpdate.getConfiguration() : null; - - if (resourceConfiguration != null) { - ConfigurationMaskingUtility.maskConfiguration(resourceConfiguration, resourceConfigurationDefinition); + @Override + protected void changeToRawTab() { + resourceConfiguration = translateToRaw(); +// initRawConfigDirectories(); + for (RawConfiguration raw : resourceConfiguration.getRawConfigurations()) { + RawConfigUIBean uiBean = findRawConfigUIBeanByPath(raw.getPath()); + uiBean.setRawConfiguration(raw); } - }
- private void initRawConfigDirectories() { - if (isRawSupported() || isStructuredAndRawSupported()) { - initConfigDirectories(); - } - else { - rawConfigDirectories = Collections.EMPTY_LIST; - } + private Configuration translateToRaw() { + ConfigurationManagerLocal configurationMgr = LookupUtil.getConfigurationManager(); + return configurationMgr.translateResourceConfiguration(loggedInUser.getSubject(), resourceId, + resourceConfiguration, STRUCTURED_MODE); }
- private void initConfigDirectories() { - Map<String, RawConfigDirectory> dirs = new TreeMap<String, RawConfigDirectory>(); - - for (RawConfiguration rawConfig : resourceConfiguration.getRawConfigurations()) { - String parentDirPath = getParentDir(rawConfig); - RawConfigDirectory dir = dirs.get(parentDirPath); + @Override + protected void changeToStructuredTab() { + resourceConfiguration = translateToStructured(); + }
- if (dir == null) { - dir = new RawConfigDirectory(); - dir.setPath(parentDirPath); + private Configuration translateToStructured() { + ConfigurationManagerLocal configurationMgr = LookupUtil.getConfigurationManager(); + return configurationMgr.translateResourceConfiguration(loggedInUser.getSubject(), resourceId, + resourceConfiguration, RAW_MODE); + } + + @Observer("rawConfigUpdate") + public void rawConfigUpdated(RawConfigUIBean rawConfigUIBean) { + if (rawConfigUIBean.isModified()) { + // If the file is modified and not already in the cache, then the file was previously in an unmodified state + // so we want to increment the number of files modified and put the file in the cache to track its current + // state. + if (!modifiedFiles.contains(rawConfigUIBean.getPath())) { + modifiedFiles.add(rawConfigUIBean.getPath()); + ++numberOfFilesModified; } - - dir.addRawConfig(rawConfig); - dirs.put(parentDirPath, dir); - } - - rawConfigDirectories = dirs.values(); - - RawConfigDirectory selectedDir = null; - for (RawConfigDirectory dir : rawConfigDirectories) { - selectedDir = dir; - break; + // There is kind of an implicit else block to do nothing. If the file is modified and already in the cache, + // then that means we have already incremented the number of files modified, so we do not need to + // increment again. } - selectedRawUIBean = selectedDir.getRawConfigUIBeans().get(0); - } - - private String getParentDir(RawConfiguration rawConfig) { - File file = new File(rawConfig.getPath()); - return file.getParentFile().getAbsolutePath(); - } - - public boolean isReadOnly() { - return readOnly; - } - - public void setReadOnly(boolean readOnly) { - this.readOnly = readOnly; - } - - public boolean isRawSupported() { - return resourceConfigurationDefinition.getConfigurationFormat() == ConfigurationFormat.RAW; - } - - public boolean isStructuredSupported() { - return resourceConfigurationDefinition.getConfigurationFormat() == ConfigurationFormat.STRUCTURED; - } - - public boolean isStructuredAndRawSupported() { - return resourceConfigurationDefinition.getConfigurationFormat() == ConfigurationFormat.STRUCTURED_AND_RAW; - } - - public String getSelectedTab() { - if (mode == STRUCTURED_MODE) { - return "structuredTab"; + else if (modifiedFiles.contains(rawConfigUIBean.getPath())) { + // We fall into this block if the file is not modified and if the cache contains the file, which means it + // was previously in a modified state; therefore, we remove it from the cache, and decrement the number of + // files modified. + modifiedFiles.remove(rawConfigUIBean.getPath()); + --numberOfFilesModified; } - return "rawTab"; }
- public void setSelectedTab(String tab) { - if (tab.equals("structuredTab")) { - mode = STRUCTURED_MODE; - } - else { - mode = RAW_MODE; + public boolean isDisplayChangedFilesLabel() { + if (isStructuredMode()) { + return false; } - }
- public void changeTabs(ValueChangeEvent event) { - if (event.getNewValue().equals("rawTab")) { -// switchToRaw(); - mode = RAW_MODE; - } - else if (event.getNewValue().equals("structuredTab")) { -// switchToStructured(); - mode = STRUCTURED_MODE; + if (isRawSupported()) { + return true; } - }
- public void edit() { - originalResourceConfiguration = resourceConfiguration.deepCopy(true); - } - - public void select(String path) { - selectedRawUIBean = findRawConfigUIBeanByPath(path); + return isRawMode(); }
- private RawConfigUIBean findRawConfigUIBeanByPath(String path) { - for (RawConfigDirectory dir : rawConfigDirectories) { - for (RawConfigUIBean bean : dir.getRawConfigUIBeans()) { - if (bean.getPath().equals(path)) { - return bean; - } - } + public String getModifiedFilesMsg() { + if (!isDisplayChangedFilesLabel() || numberOfFilesModified == 0) { + return ""; } - return null; - } - - public boolean isUpdateInProgress() { - ConfigurationManagerLocal configurationMgr = LookupUtil.getConfigurationManager(); - return configurationMgr.isResourceConfigurationUpdateInProgress(loggedInUser.getSubject(), resourceId); - } - - public String download() { - try { - File file = new File(selectedRawUIBean.getFileName()); - - HttpServletResponse response = FacesContextUtility.getResponse(); - response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); - OutputStream ostream = response.getOutputStream(); - ostream.write(selectedRawUIBean.getContents().getBytes()); - ostream.flush(); - ostream.close(); - - FacesContextUtility.getFacesContext().responseComplete();
- return null; + if (numberOfFilesModified == 1) { + return "1 file changed in this configuration"; } - catch (IOException e) { -// log.error("Failed to complete download request for " + getCurrentPath(), e); - throw new RuntimeException(e); - } - }
+ return numberOfFilesModified + " files changed in this configuration"; + } } diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationViewer.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationViewer.java new file mode 100644 index 0000000..3bb7c6c --- /dev/null +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/configuration/resource/ResourceConfigurationViewer.java @@ -0,0 +1,258 @@ +/* + * RHQ Management Platform + * Copyright (C) 2005-2008 Red Hat, Inc. + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 2, as + * published by the Free Software Foundation, and/or the GNU Lesser + * General Public License, version 2.1, also as published by the Free + * Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License and the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License + * and the GNU Lesser General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +package org.rhq.enterprise.gui.configuration.resource; + +import org.jboss.seam.ScopeType; +import org.jboss.seam.annotations.*; +import org.jboss.seam.annotations.web.RequestParameter; +import org.rhq.core.domain.auth.Subject; +import org.rhq.core.domain.configuration.AbstractResourceConfigurationUpdate; +import org.rhq.core.domain.configuration.Configuration; +import org.rhq.core.domain.configuration.RawConfiguration; +import org.rhq.core.domain.configuration.definition.ConfigurationDefinition; +import org.rhq.core.domain.configuration.definition.ConfigurationFormat; +import org.rhq.core.gui.configuration.ConfigurationMaskingUtility; +import org.rhq.core.gui.util.FacesContextUtility; +import org.rhq.enterprise.gui.legacy.WebUser; +import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; +import org.rhq.enterprise.server.configuration.ConfigurationManagerLocal; +import org.rhq.enterprise.server.util.LookupUtil; + +import javax.faces.event.ValueChangeEvent; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.util.*; + +@Name("configurationViewer") +@Scope(ScopeType.PAGE) +public class ResourceConfigurationViewer { + + public static final boolean STRUCTURED_MODE = true; + public static final boolean RAW_MODE = false; + + private boolean mode = STRUCTURED_MODE; + + @In("webUser") + protected WebUser loggedInUser; + + @Out + protected Configuration resourceConfiguration; + + @Out + private ConfigurationDefinition resourceConfigurationDefinition; + + @Out + private Collection<RawConfigDirectory> rawConfigDirectories; + + @Out(required = false) + private RawConfigUIBean selectedRawUIBean; + + @RequestParameter("id") + protected int resourceId; + + /** + * This method "bootstraps" the viewer/editor and the model objects used in the view. Specifically, the resource + * configuration and the corresponding configuration definition are loaded from the database and are outjected for + * use in the view. + */ + @Create + public void initialize() { + loadResourceConfigurationDefinition(); + loadResourceConfiguration(); + initRawConfigDirectories(); + + doInitialization(); + } + + protected void doInitialization() { + } + + private void loadResourceConfigurationDefinition() { + int resourceTypeId = EnterpriseFacesContextUtility.getResource().getResourceType().getId(); + + ConfigurationManagerLocal configurationManager = LookupUtil.getConfigurationManager(); + + resourceConfigurationDefinition = configurationManager.getResourceConfigurationDefinitionForResourceType( + loggedInUser.getSubject(), resourceTypeId); + } + + private void loadResourceConfiguration() { + Subject subject = loggedInUser.getSubject(); + + ConfigurationManagerLocal configurationManager = LookupUtil.getConfigurationManager(); + + AbstractResourceConfigurationUpdate configurationUpdate = + configurationManager.getLatestResourceConfigurationUpdate(subject, resourceId); + resourceConfiguration = (configurationUpdate != null) ? configurationUpdate.getConfiguration() : null; + + if (resourceConfiguration != null) { + ConfigurationMaskingUtility.maskConfiguration(resourceConfiguration, resourceConfigurationDefinition); + } + + } + + protected void initRawConfigDirectories() { + if (isRawSupported() || isStructuredAndRawSupported()) { + initConfigDirectories(); + } + else { + rawConfigDirectories = Collections.EMPTY_LIST; + } + } + + private void initConfigDirectories() { + Map<String, RawConfigDirectory> dirs = new TreeMap<String, RawConfigDirectory>(); + + for (RawConfiguration rawConfig : resourceConfiguration.getRawConfigurations()) { + String parentDirPath = getParentDir(rawConfig); + RawConfigDirectory dir = dirs.get(parentDirPath); + + if (dir == null) { + dir = new RawConfigDirectory(); + dir.setPath(parentDirPath); + } + + dir.addRawConfig(rawConfig); + dirs.put(parentDirPath, dir); + } + + rawConfigDirectories = dirs.values(); + + RawConfigDirectory selectedDir = null; + for (RawConfigDirectory dir : rawConfigDirectories) { + selectedDir = dir; + break; + } + selectedRawUIBean = selectedDir.getRawConfigUIBeans().get(0); + } + + private String getParentDir(RawConfiguration rawConfig) { + File file = new File(rawConfig.getPath()); + return file.getParentFile().getAbsolutePath(); + } + + /** @return <code>true</code> if the resource configuration supports raw only, <code>false</code> otherwise */ + public boolean isRawSupported() { + return resourceConfigurationDefinition.getConfigurationFormat() == ConfigurationFormat.RAW; + } + + /** @return <code>true</code> if the resource configuration supports structured only, <code>false</code> otherwise */ + public boolean isStructuredSupported() { + return resourceConfigurationDefinition.getConfigurationFormat() == ConfigurationFormat.STRUCTURED; + } + + public boolean isStructuredMode() { + return mode == STRUCTURED_MODE; + } + + public boolean isRawMode() { + return mode == RAW_MODE; + } + + /** + * @return <code>true</code> if the resource configuration supports structured and raw, <code>false</code> otherwise + */ + public boolean isStructuredAndRawSupported() { + return resourceConfigurationDefinition.getConfigurationFormat() == ConfigurationFormat.STRUCTURED_AND_RAW; + } + + /** @return The currently selected tab, structured (i.e., Basic Mode) or raw (i.e., Advanced Mode). */ + public String getSelectedTab() { + if (mode == STRUCTURED_MODE) { + return "structuredTab"; + } + return "rawTab"; + } + + public void setSelectedTab(String tab) { + if (tab.equals("structuredTab")) { + mode = STRUCTURED_MODE; + } + else { + mode = RAW_MODE; + } + } + + public void changeTabs(ValueChangeEvent event) { + if (event.getNewValue().equals("rawTab")) { + mode = RAW_MODE; + changeToRawTab(); + } + else if (event.getNewValue().equals("structuredTab")) { + mode = STRUCTURED_MODE; + changeToStructuredTab(); + } + } + + protected void changeToRawTab() { + } + + protected void changeToStructuredTab() { + } + + + public void select(String path) { + selectedRawUIBean = findRawConfigUIBeanByPath(path); + } + + protected RawConfigUIBean findRawConfigUIBeanByPath(String path) { + for (RawConfigDirectory dir : rawConfigDirectories) { + for (RawConfigUIBean bean : dir.getRawConfigUIBeans()) { + if (bean.getPath().equals(path)) { + return bean; + } + } + } + return null; + } + + public boolean isUpdateInProgress() { + ConfigurationManagerLocal configurationMgr = LookupUtil.getConfigurationManager(); + return configurationMgr.isResourceConfigurationUpdateInProgress(loggedInUser.getSubject(), resourceId); + } + + public String download() { + try { + File file = new File(selectedRawUIBean.getFileName()); + + HttpServletResponse response = FacesContextUtility.getResponse(); + response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); + OutputStream ostream = response.getOutputStream(); + ostream.write(selectedRawUIBean.getContents().getBytes()); + ostream.flush(); + ostream.close(); + + FacesContextUtility.getFacesContext().responseComplete(); + + return null; + } + catch (IOException e) { +// log.error("Failed to complete download request for " + getCurrentPath(), e); + throw new RuntimeException(e); + } + } + +} diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml index ba713eb..0b9ab22 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/edit.xhtml @@ -57,9 +57,9 @@ THIS TEXT WILL BE REMOVED. <h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> <h:panelGroup id="upperCommitPanel" style="text-align:right"> <h:outputText id="changedFilesLabel" - rendered="#{ExistingResourceConfigurationUIBean.displayChangedFilesLabel}" + rendered="#{configurationEditor.displayChangedFilesLabel}" style="padding-right:10px" - value="#{ExistingResourceConfigurationUIBean.modifiedFilesMsg}"/> + value="#{configurationEditor.modifiedFilesMsg}"/> <h:commandButton value="Commit" action="#{ExistingResourceConfigurationUIBean.updateRawConfiguration}" title="Click to Save Changes" @@ -158,8 +158,8 @@ THIS TEXT WILL BE REMOVED.
<h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> <h:panelGroup style="text-align:right"> - <h:outputText value="#{ExistingResourceConfigurationUIBean.modifiedFilesMsg}" - rendered="#{ExistingResourceConfigurationUIBean.rawMode}" + <h:outputText value="#{configurationEditor.modifiedFilesMsg}" + rendered="#{configurationEditor .rawMode}" style="padding-right:10px"/> <h:commandButton value="Commit" action="#{ExistingResourceConfigurationUIBean.updateRawConfiguration}" @@ -197,22 +197,22 @@ THIS TEXT WILL BE REMOVED. <rich:tabPanel id="configTabPanel" selectedTab="#{configurationEditor.selectedTab}" switchType="ajax" - valueChangeListener="#{ExistingResourceConfigurationUIBean.changeTabs}"> + valueChangeListener="#{configurationEditor.changeTabs}"> <rich:tab id="structuredTab" label="Basic Mode" reRender="fileUpload,upperCommitPanel" onlabelclick="cursor_wait();" oncomplete="cursor_clear();"> - <onc:config configurationDefinition="#{ExistingResourceConfigurationUIBean.configurationDefinition}" - configuration="#{ExistingResourceConfigurationUIBean.configuration}" - nullConfigurationDefinitionMessage="#{ExistingResourceConfigurationUIBean.nullConfigurationDefinitionMessage}" - nullConfigurationMessage="#{ExistingResourceConfigurationUIBean.nullConfigurationMessage}" + <onc:config configurationDefinition="#{resourceConfigurationDefinition}" + configuration="#{resourceConfiguration}" + nullConfigurationDefinitionMessage="#{msg['resource.configuration.definition.null']}" + nullConfigurationMessage="#{msg['resource.configuration.null']}" prevalidate="true"/>
<h:panelGrid columns="2" styleClass="buttons-table" columnClasses="button-cell" - rendered="#{ExistingResourceConfigurationUIBean.configuration != null}"> + rendered="#{resourceConfiguration != null}"> <h:commandButton value="SAVE" action="#{ExistingResourceConfigurationUIBean.updateConfiguration}" title="Click to Save Changes" @@ -227,7 +227,7 @@ THIS TEXT WILL BE REMOVED. </rich:tab> <rich:tab id="rawTab" label="Advanced Mode" - reRender="fileUpload,upperCommitPanel,lowerCommitPanel" + reRender="fileUpload,fileMenuPanel,upperCommitPanel,lowerCommitPanel" onlabelclick="cursor_wait();" oncomplete="cursor_clear();"> <h:panelGrid columns="2" @@ -251,10 +251,9 @@ THIS TEXT WILL BE REMOVED. <c:forEach items="#{rawConfigDir.rawConfigUIBeans}" var="rawConfigUIBean"> <rich:panelMenuItem label="#{rawConfigUIBean.fileName}" icon="#{rawConfigUIBean.icon}" - binding="#{rawConfigUIBean.panelMenuItem}" onclick="cursor_wait();" oncomplete="cursor_clear();" - action="#{ExistingResourceConfigurationUIBean.select(rawConfigUIBean.path)}" + action="#{configurationEditor.select(rawConfigUIBean.path)}" limitToList="true" reRender="fileContents,selectedFileHeader,modalEditor,fileMenu"> <h:panelGroup> @@ -302,13 +301,12 @@ THIS TEXT WILL BE REMOVED. <rich:panel id="fileContentsPanel" style="margin-left:1px; border: none;"> <h:inputTextarea id="fileContents" style="width:100%" - value="#{ExistingResourceConfigurationUIBean.currentContents}" + value="#{selectedRawUIBean.contents}" readonly="false"> <a4j:support event="onkeyup" ignoreDupeResponses="true" - reRender="fileMenu,upperCommitPanel,lowerCommitPanel" - requestDelay="1000" - action="#{ExistingResourceConfigurationUIBean.editCurrent}"/> + reRender="fileMenuPanel,upperCommitPanel,lowerCommitPanel" + requestDelay="1000"/> </h:inputTextarea> </rich:panel> </h:panelGrid> @@ -316,8 +314,8 @@ THIS TEXT WILL BE REMOVED.
<h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> <h:panelGroup id="lowerCommitPanel" style="text-align:right"> - <h:outputText value="#{ExistingResourceConfigurationUIBean.modifiedFilesMsg}" - rendered="#{ExistingResourceConfigurationUIBean.rawMode}" + <h:outputText value="#{configurationEditor.modifiedFilesMsg}" + rendered="#{configurationEditor.displayChangedFilesLabel}" style="padding-right:10px"/> <h:commandButton value="Commit" action="#{ExistingResourceConfigurationUIBean.updateRawConfiguration}" diff --git a/modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/RawServer.groovy b/modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/RawServer.groovy index 6d7b3f5..ed97f48 100644 --- a/modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/RawServer.groovy +++ b/modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/RawServer.groovy @@ -50,7 +50,7 @@ class RawServer implements ResourceComponent, ResourceConfigurationFacet {
rawConfig.createNewFile() rawConfig.withWriter { writer -> - properties.each { key, value -> writer.writeLine("${key}=${value}") } + properties.each { key, value -> writer.writeLine("${key} = ${value}") } } }
diff --git a/modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/StructuredAndRawServer.groovy b/modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/StructuredAndRawServer.groovy index f1a0455..a20901e 100644 --- a/modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/StructuredAndRawServer.groovy +++ b/modules/plugins/raw-config-test/src/main/groovy/org/rhq/plugins/test/rawconfig/StructuredAndRawServer.groovy @@ -64,7 +64,7 @@ class StructuredAndRawServer implements ResourceComponent, ResourceConfiguration def addProperties(File rawConfig, Map properties) { rawConfig.createNewFile() rawConfig.withWriter {writer -> - properties.each {key, value -> writer.writeLine("${key}=${value}") } + properties.each {key, value -> writer.writeLine("${key} = ${value}") } } }
commit e610b55bd0c397b676766c6c31fa5bd3b20ad259 Author: John Sanda john@localhost.localdomain Date: Mon Feb 1 16:19:24 2010 -0500
Updating lower edit button on view.xhtml so that you are sent to the same tab on edit.xhtml.
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 4ad0606..9e5b695 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 @@ -4,17 +4,21 @@ * All rights reserved. * * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation version 2 of the License. + * it under the terms of the GNU General Public License, version 2, as + * published by the Free Software Foundation, and/or the GNU Lesser + * General Public License, version 2.1, also as published by the Free + * Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU General Public License and the GNU Lesser General Public License + * for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * and the GNU Lesser General Public License along with this program; + * if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
package org.rhq.enterprise.gui.configuration.resource; diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml index 59645e9..3b05ebb 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/configuration/view.xhtml @@ -48,18 +48,10 @@ THIS TEXT WILL BE REMOVED. <h:panelGrid columns="2" style="width:100%"> <h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> <h:panelGroup style="text-align:right"> - <s:button id="upperEditButton" value="Edit" view="edit.xhtml" styleClass="buttonmed"> <f:param name="id" value="#{ResourceUIBean.id}"/> <f:param name="tab" value="#{configurationViewer.selectedTab}"/> </s:button> - - ui:remove - <h:commandButton value="Edit" - action="#{ExistingResourceConfigurationUIBean.editRawConfiguration}" - title="Advanced Mode Edit of Raw Configuration Files" styleClass="buttonmed" - rendered="${ResourceUIBean.permissions.configure and !configurationViewer.updateInProgress}"/> - </ui:remove> </h:panelGroup> </h:panelGrid> </h:panelGrid> @@ -131,10 +123,10 @@ THIS TEXT WILL BE REMOVED.
<h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> <h:panelGroup style="text-align:right"> - <h:commandButton value="Edit" - action="#{ExistingResourceConfigurationUIBean.editRawConfiguration}" - title="Advanced Mode Edit of Raw Configuration Files" styleClass="buttonmed" - rendered="${ResourceUIBean.permissions.configure and !configurationViewer.updateInProgress}"/> + <s:button id="lowerEditRawButton" value="Edit" view="edit.xhtml" styleClass="buttonmed"> + <f:param name="id" value="#{ResourceUIBean.id}"/> + <f:param name="tab" value="#{configurationViewer.selectedTab}"/> + </s:button> </h:panelGroup> </h:panelGrid> </rich:tab> @@ -158,10 +150,10 @@ THIS TEXT WILL BE REMOVED.
<h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> <h:panelGroup style="text-align:right"> - <h:commandButton value="Edit" - action="#{ExistingResourceConfigurationUIBean.editConfiguration}" - title="Advanced Mode Edit of Raw Configuration Files" styleClass="buttonmed" - rendered="${ResourceUIBean.permissions.configure and !configurationViewer.updateInProgress}"/> + <s:button id="lowerEditStructuredButton" value="Edit" view="edit.xhtml" styleClass="buttonmed"> + <f:param name="id" value="#{ResourceUIBean.id}"/> + <f:param name="tab" value="#{configurationViewer.selectedTab}"/> + </s:button> </h:panelGroup> </h:panelGrid> </rich:tab> @@ -177,7 +169,7 @@ THIS TEXT WILL BE REMOVED. onlabelclick="cursor_wait();" oncomplete="cursor_clear();" limitToList="true" - reRender="upperEditButton,fileUpload,upperCommitPanel,lowerCommitPanel"> + reRender="upperEditButton,lowerEditStructuredButton,lowerEditRawButton,fileUpload,upperCommitPanel,lowerCommitPanel"> <h:outputText value=" #{messages.nopermissionedit}" rendered="#{!ResourceUIBean.permissions.configure}"/>
@@ -191,10 +183,10 @@ THIS TEXT WILL BE REMOVED.
<h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> <h:panelGroup style="text-align:right"> - <h:commandButton value="Edit" - action="#{ExistingResourceConfigurationUIBean.editConfiguration}" - title="Advanced Mode Edit of Raw Configuration Files" styleClass="buttonmed" - rendered="${ResourceUIBean.permissions.configure and !configurationViewer.updateInProgress}"/> + <s:button id="lowerEditStructuredButton" value="Edit" view="edit.xhtml" styleClass="buttonmed"> + <f:param name="id" value="#{ResourceUIBean.id}"/> + <f:param name="tab" value="#{configurationViewer.selectedTab}"/> + </s:button> </h:panelGroup> </h:panelGrid> </rich:tab> @@ -203,7 +195,7 @@ THIS TEXT WILL BE REMOVED. onlabelclick="cursor_wait();" oncomplete="cursor_clear();" limitToList="true" - reRender="upperEditButton,fileUpload,upperCommitPanel,lowerCommitPanel"> + reRender="upperEditButton,lowerEditStructuredButton,lowerEditRawButton,fileUpload,upperCommitPanel,lowerCommitPanel"> <h:outputText value=" #{messages.nopermissionedit}" rendered="#{!ResourceUIBean.permissions.configure}"/>
@@ -264,10 +256,10 @@ THIS TEXT WILL BE REMOVED.
<h:panelGrid columns="1" style="width:100%" columnClasses="raw-edit-footer"> <h:panelGroup style="text-align:right"> - <h:commandButton value="Edit" - action="#{ExistingResourceConfigurationUIBean.editRawConfiguration}" - title="Advanced Mode Edit of Raw Configuration Files" styleClass="buttonmed" - rendered="${ResourceUIBean.permissions.configure and !configurationViewer.updateInProgress}"/> + <s:button id="lowerEditRawButton" value="Edit" view="edit.xhtml" styleClass="buttonmed"> + <f:param name="id" value="#{ResourceUIBean.id}"/> + <f:param name="tab" value="#{configurationViewer.selectedTab}"/> + </s:button> </h:panelGroup> </h:panelGrid> </rich:tab>
rhq-commits@lists.fedorahosted.org