Author: chris.laprun(a)jboss.com
Date: 2009-02-23 07:24:53 -0500 (Mon, 23 Feb 2009)
New Revision: 12863
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
Log:
- JBPORTAL-2317:
+ Properly deal with creation and renaming operation error display and name validation
+ Moved generic code from concrete subclasses to
CoordinationManagerBean.CoordinationBean for rename and create method
+ Added h:message tags and ids where needed in editCoordination.xhtml
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java 2009-02-23
11:51:07 UTC (rev 12862)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java 2009-02-23
12:24:53 UTC (rev 12863)
@@ -129,27 +129,29 @@
return result;
}
- public String create()
+ protected void internalRename(String oldName, String newName) throws
IllegalCoordinationException
{
+
managerBean.getCoordinationService().renameAliasBinding(managerBean.getSelectedPage(),
oldName, newName);
+ }
+
+ protected void internalCreate() throws IllegalCoordinationException
+ {
if (aliasName != null)
{
- try
+ HashSet<QName> qNames = new HashSet<QName>();
+ for (String qName : originalQNames)
{
- HashSet<QName> qNames = new HashSet<QName>();
- for (String qName : originalQNames)
- {
- qNames.add(QName.valueOf(qName));
- }
-
managerBean.getCoordinationService().setAliasBinding(managerBean.getSelectedPage(),
aliasName, qNames);
+ qNames.add(QName.valueOf(qName));
}
- catch (IllegalCoordinationException e)
- {
- e.printStackTrace(); //To change body of catch statement use File | Settings
| File Templates.
- }
+
managerBean.getCoordinationService().setAliasBinding(managerBean.getSelectedPage(),
aliasName, qNames);
}
- return resetSelection();
}
+ protected String getBeanName()
+ {
+ return aliasName;
+ }
+
public String resetSelection()
{
aliasName = null;
@@ -164,12 +166,6 @@
return resetSelection();
}
- public String rename(String oldName, String newName) throws
IllegalCoordinationException
- {
-
managerBean.getCoordinationService().renameAliasBinding(managerBean.getSelectedPage(),
oldName, newName);
- return resetSelection();
- }
-
public void extractInfoFrom(Window window, PortletInfo info)
{
// retrieve metadata on public render parameters
@@ -225,9 +221,9 @@
}
@Override
- public String getCreationTargetName()
+ public String getObjectNameForMessages()
{
- return "aliasName";
+ return "alias";
}
public boolean isAlreadyExisting(String objectName)
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java 2009-02-23
11:51:07 UTC (rev 12862)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java 2009-02-23
12:24:53 UTC (rev 12863)
@@ -66,6 +66,7 @@
private CoordinationType selectedType;
private String newName;
static final String EDIT_COORDINATION = "editCoordination";
+ private static final String RENAME_COORDINATION = "renameCoordination";
private enum CoordinationType
{
@@ -136,12 +137,62 @@
public abstract String delete(String name) throws IllegalCoordinationException;
- public abstract String rename(String oldName, String newName) throws
IllegalCoordinationException;
+ public String rename(String oldName, String newName)
+ {
+ if (isOldAndNewDifferent(oldName, newName))
+ {
+ if (checkNameValidity(newName, "renameForm:newName") != null)
+ {
+ try
+ {
+ internalRename(oldName, newName);
+ }
+ catch (IllegalCoordinationException e)
+ {
+ beanContext.createErrorMessageFrom(e);
+ }
+ }
+ else
+ {
+ // redisplay page with error message
+ return RENAME_COORDINATION;
+ }
+ }
+ return resetSelection();
+ }
+
+ protected abstract void internalRename(String oldName, String newName) throws
IllegalCoordinationException;
+
public abstract void extractInfoFrom(Window window, PortletInfo info);
- public abstract String create() throws IllegalCoordinationException;
+ public String create()
+ {
+ String nameForMessages = getObjectNameForMessages();
+ String target = "create-" + nameForMessages + "-form:" +
getAdditionalFormId() + nameForMessages + "Name";
+ if (checkNameValidity(getBeanName(), target) != null)
+ {
+ try
+ {
+ internalCreate();
+ }
+ catch (IllegalCoordinationException e)
+ {
+ beanContext.createErrorMessageFrom(e);
+ }
+ }
+ else
+ {
+ // do not reset the selection if the name is incorrect, let user modify it
first...
+ // also gives the opportunity to display error messages
+ return null;
+ }
+ return resetSelection();
+ }
+
+ protected abstract void internalCreate() throws IllegalCoordinationException;
+
public String resetSelection()
{
managerBean.refresh();
@@ -163,12 +214,25 @@
public abstract String getObjectTypeName();
/**
- * Returns the name of the target for errors when creating/renaming a Coordination
element. Made public so that it
- * can be accessed from CoordinationManagerBean
+ * Returns the object name used in identifiers for target of messages. Creation
forms have id similar to:
+ * <code>created-getObjectNameForMessages()-form</code> while, input
fields for these forms are named:
+ * <code>getObjectNameForMessages()Name</code>.
*
* @return
*/
- public abstract String getCreationTargetName();
+ protected abstract String getObjectNameForMessages();
+
+ protected abstract String getBeanName();
+
+ /**
+ * Additional form information for create form if needed.
+ *
+ * @return
+ */
+ protected String getAdditionalFormId()
+ {
+ return "";
+ }
}
public Page getSelectedPage()
@@ -399,7 +463,7 @@
}
catch (IllegalCoordinationException e)
{
- e.printStackTrace(); //To change body of catch statement use File | Settings
| File Templates.
+ beanContext.createErrorMessageFrom(e);
}
}
@@ -429,19 +493,19 @@
{
if (selectedType != null)
{
- if (!isOldAndNewDifferent(selectedName, newName))
+ CoordinationBean coordinationBean = selectedType.getBean();
+
+ // call rename on sub-bean and check that we're not requesting renaming
again (in case an error occurred)
+ if (RENAME_COORDINATION.equals(coordinationBean.rename(selectedName, newName)))
{
- return null;
+ // error occurred: redisplay rename dialog
+ return RENAME_COORDINATION;
}
-
- CoordinationBean coordinationBean = selectedType.getBean();
- newName = checkNameValidity(newName, coordinationBean.getCreationTargetName());
- if (newName != null)
+ else
{
- coordinationBean.rename(selectedName, newName);
+ // all went well: refresh!
refresh();
}
-
}
// reset selection
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2009-02-23
11:51:07 UTC (rev 12862)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2009-02-23
12:24:53 UTC (rev 12863)
@@ -291,22 +291,24 @@
}
}
- public String create()
+ protected void internalRename(String oldName, String newName) throws
IllegalCoordinationException
{
+
managerBean.getCoordinationService().renameEventWiring(managerBean.getSelectedPage(),
oldName, newName);
+ }
+
+ protected void internalCreate() throws IllegalCoordinationException
+ {
if (currentWiring != null)
{
- try
- {
-
managerBean.getCoordinationService().setEventWiring(currentWiring.getSources(),
currentWiring.getDestinations(), currentWiring.getName());
- }
- catch (IllegalCoordinationException e)
- {
- e.printStackTrace(); //To change body of catch statement use File | Settings
| File Templates.
- }
+ managerBean.getCoordinationService().setEventWiring(currentWiring.getSources(),
currentWiring.getDestinations(), currentWiring.getName());
}
- return resetSelection();
}
+ protected String getBeanName()
+ {
+ return currentWiring != null ? currentWiring.getName() : null;
+ }
+
public String resetSelection()
{
currentWiring = null;
@@ -324,12 +326,6 @@
return resetSelection();
}
- public String rename(String oldName, String newName) throws
IllegalCoordinationException
- {
-
managerBean.getCoordinationService().renameEventWiring(managerBean.getSelectedPage(),
oldName, newName);
- return resetSelection();
- }
-
public void extractInfoFrom(Window window, PortletInfo info)
{
// retrieve metadata on events
@@ -486,11 +482,17 @@
}
@Override
- public String getCreationTargetName()
+ public String getObjectNameForMessages()
{
- return "wiringName";
+ return "wiring";
}
+ @Override
+ protected String getAdditionalFormId()
+ {
+ return "COORDINATION_EVENT_CREATE_STEP5:";
+ }
+
public boolean isAlreadyExisting(String objectName)
{
return displayEventWirings.containsKey(objectName);
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2009-02-23
11:51:07 UTC (rev 12862)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2009-02-23
12:24:53 UTC (rev 12863)
@@ -162,8 +162,13 @@
}
}
- public String create() throws IllegalCoordinationException
+ protected void internalRename(String oldName, String newName) throws
IllegalCoordinationException
{
+
managerBean.getCoordinationService().renameParameterBinding(managerBean.getSelectedPage(),
oldName, newName);
+ }
+
+ protected void internalCreate() throws IllegalCoordinationException
+ {
if (windowBindingName != null)
{
Map<Window, Set<QName>> windowBinding = new HashMap<Window,
Set<QName>>();
@@ -178,8 +183,11 @@
managerBean.getCoordinationService().setParameterBinding(windowBindingName,
windowBinding);
}
+ }
- return resetSelection();
+ protected String getBeanName()
+ {
+ return windowBindingName;
}
public String resetSelection()
@@ -196,12 +204,6 @@
return resetSelection();
}
- public String rename(String name, String newName) throws IllegalCoordinationException
- {
-
managerBean.getCoordinationService().renameParameterBinding(managerBean.getSelectedPage(),
name, newName);
- return resetSelection();
- }
-
/**
* Enforce the fact that you can only select one qname per window
*
@@ -377,9 +379,9 @@
}
@Override
- public String getCreationTargetName()
+ public String getObjectNameForMessages()
{
- return "bindingName";
+ return "binding";
}
public boolean isAlreadyExisting(String objectName)
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2009-02-23
11:51:07 UTC (rev 12862)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/jsf/editCoordination.xhtml 2009-02-23
12:24:53 UTC (rev 12863)
@@ -43,7 +43,7 @@
<div id="aliasBindings" class="coordination-section">
<h3 class="sectionTitle tenpx-bottom" style="margin-top:
3px;">#{bundle.COORDINATION_ALIAS_CREATE}</h3>
<h:outputText value="#{bundle.COORDINATION_ALIAS_CREATE_NO_PARAMS}"
rendered="#{empty aliasManager.availableRenderParameters}"/>
- <h:form rendered="#{!empty
aliasManager.availableRenderParameters}">
+ <h:form rendered="#{!empty aliasManager.availableRenderParameters}"
id="create-alias-form">
<div class="float-left tenpx-right">
<h4>#{bundle.COORDINATION_ALIAS_CREATE_STEP1}</h4>
<h:selectManyListbox id="alias" size="5"
value="#{aliasManager.originalQNames}"
@@ -55,8 +55,11 @@
<h:panelGroup rendered="#{!empty
aliasManager.originalQNames}">
<h4>#{bundle.COORDINATION_ALIAS_CREATE_STEP2}</h4>
<div class="full-width">
- <span><h:inputText id="aliasName"
value="#{aliasManager.aliasName}"/></span>
<span>
+ <h:inputText id="aliasName"
value="#{aliasManager.aliasName}"/>
+ <h:message for="aliasName"
errorClass="portlet-msg-error"/>
+ </span>
+ <span>
<h:commandButton
value="#{bundle.COORDINATION_ALIAS_CREATE_CREATE}"
action="#{aliasManager.create}"
styleClass="portlet-form-button"/>
<h:commandButton value="#{bundle.COMMON_CANCEL}"
action="#{aliasManager.cancel}"
@@ -138,7 +141,7 @@
<!-- Create parameter binding -->
<h3 class="sectionTitle
tenpx-top-bottom">#{bundle.COORDINATION_PARAMETER_CREATE}</h3>
<h:outputText
value="#{bundle.COORDINATION_PARAMETER_CREATE_NO_PAIRS}" rendered="#{empty
parameterManager.availableParameterWindowPairs}"/>
- <h:form rendered="#{!empty
parameterManager.availableParameterWindowPairs}">
+ <h:form rendered="#{!empty
parameterManager.availableParameterWindowPairs}"
id="create-binding-form">
<div class="float-left tenpx-right">
<h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP1}</h4>
<h:selectManyListbox id="parameterWindowPair"
size="5" value="#{parameterManager.selectedParameterWindowPairs}"
@@ -151,8 +154,11 @@
<div class="float-left paramBinding-step2">
<h4>#{bundle.COORDINATION_PARAMETER_CREATE_STEP2}</h4>
<div class="full-width">
- <span><h:inputText id="bindingName"
value="#{parameterManager.windowBindingName}"/></span>
<span>
+ <h:inputText id="bindingName"
value="#{parameterManager.windowBindingName}"/>
+ <h:message for="bindingName"
errorClass="portlet-msg-error"/>
+ </span>
+ <span>
<h:commandButton
value="#{bundle.COORDINATION_PARAMETER_CREATE_CREATE}"
action="#{parameterManager.create}"
styleClass="portlet-form-button"/>
<h:commandButton value="#{bundle.COMMON_CANCEL}"
action="#{parameterManager.cancel}"
@@ -236,7 +242,7 @@
<!-- Create new event wiring -->
<h3 class="sectionTitle
tenpx-top-bottom">#{bundle.COORDINATION_EVENT_CREATE}</h3>
<h:outputText value="#{bundle.COORDINATION_EVENT_CREATE_NO_EVENTS}"
rendered="#{empty eventManager.sourceEvents}"/>
- <h:form rendered="#{!empty eventManager.sourceEvents}">
+ <h:form rendered="#{!empty eventManager.sourceEvents}"
id="create-wiring-form">
<div class="half-width float-left">
<div class="full-width pad5">
<h4>#{bundle.COORDINATION_EVENT_CREATE_STEP1}</h4>
@@ -318,6 +324,7 @@
<div class="margin10">
<h4>#{bundle.COORDINATION_EVENT_CREATE_STEP5}</h4>
<h:inputText id="wiringName"
value="#{eventManager.wiringName}"/>
+ <h:message for="wiringName"
errorClass="portlet-msg-error"/>
<h:commandButton
value="#{bundle.COORDINATION_EVENT_CREATE_CREATE}"
action="#{eventManager.create}"
styleClass="portlet-form-button"/>
<h:commandButton value="#{bundle.COMMON_CANCEL}"
action="#{eventManager.cancel}"