Author: chris.laprun(a)jboss.com
Date: 2007-05-15 16:15:13 -0400 (Tue, 15 May 2007)
New Revision: 7254
Modified:
trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java
trunk/wsrp/src/resources/portal-wsrp-war/WEB-INF/jsf/consumers/editConsumer.xhtml
Log:
- JBPORTAL-1395: Delay synchronization of values from ConsumerBean to persisted consumer.
- Check that given values are well-formed URLs.
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java 2007-05-15
15:22:50 UTC (rev 7253)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java 2007-05-15
20:15:13 UTC (rev 7254)
@@ -25,11 +25,14 @@
import org.jboss.portal.wsrp.WSRPConsumer;
import org.jboss.portal.wsrp.consumer.ConsumerRegistry;
+import org.jboss.portal.wsrp.consumer.EndpointConfigurationInfo;
import org.jboss.portal.wsrp.consumer.ProducerInfo;
import org.jboss.portal.wsrp.consumer.RefreshResult;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
+import java.net.MalformedURLException;
+import java.net.URL;
/**
* @author <a href="mailto:chris.laprun@jboss.com">Chris
Laprun</a>
@@ -42,7 +45,13 @@
private ConsumerRegistry registry;
private Boolean useWSDL = null;
private ConsumerManagerBean manager;
+ private boolean modified;
+ private String serviceDescription;
+ private String markup;
+ private String portletManagement;
+ private String registration;
+ private String wsdl;
public void setRegistry(ConsumerRegistry registry)
{
@@ -88,6 +97,11 @@
else
{
consumer = registry.getConsumer(id);
+ serviceDescription =
getProducerInfo().getEndpointConfigurationInfo().getServiceDescriptionURL();
+ markup = getProducerInfo().getEndpointConfigurationInfo().getMarkupURL();
+ portletManagement =
getProducerInfo().getEndpointConfigurationInfo().getPortletManagementURL();
+ registration =
getProducerInfo().getEndpointConfigurationInfo().getRegistrationURL();
+ wsdl = getProducerInfo().getEndpointConfigurationInfo().getWsdlDefinitionURL();
}
}
@@ -103,51 +117,56 @@
public String getServiceDescription()
{
- return
getProducerInfo().getEndpointConfigurationInfo().getServiceDescriptionURL();
+ return serviceDescription;
}
public void setServiceDescription(String sdURL)
{
- getProducerInfo().getEndpointConfigurationInfo().setServiceDescriptionURL(sdURL);
+ serviceDescription = modifyIfNeeded(serviceDescription, sdURL, "sd");
}
public String getMarkup()
{
- return getProducerInfo().getEndpointConfigurationInfo().getMarkupURL();
+ return markup;
}
public void setMarkup(String markupURL)
{
- getProducerInfo().getEndpointConfigurationInfo().setMarkupURL(markupURL);
+ markup = modifyIfNeeded(markup, markupURL, "m");
}
public String getPortletManagement()
{
- return getProducerInfo().getEndpointConfigurationInfo().getPortletManagementURL();
+ return portletManagement;
}
public void setPortletManagement(String pmURL)
{
- getProducerInfo().getEndpointConfigurationInfo().setPortletManagementURL(pmURL);
+ portletManagement = modifyIfNeeded(portletManagement, pmURL, "pm");
}
public String getRegistration()
{
- return getProducerInfo().getEndpointConfigurationInfo().getRegistrationURL();
+ return registration;
}
public void setRegistration(String rURL)
{
- getProducerInfo().getEndpointConfigurationInfo().setRegistrationURL(rURL);
+ registration = modifyIfNeeded(registration, rURL, "r");
}
public String getWsdl()
{
- return getProducerInfo().getEndpointConfigurationInfo().getWsdlDefinitionURL();
+ return wsdl;
}
public void setWsdl(String wsdlURL)
{
+ wsdl = modifyIfNeeded(wsdl, wsdlURL, "wsdl");
+ }
+
+ private void internalSetWsdl(String wsdlURL)
+ {
try
{
getProducerInfo().getEndpointConfigurationInfo().setWsdlDefinitionURL(wsdlURL);
@@ -202,11 +221,23 @@
public String update()
{
- if (consumer != null)
+ if (consumer != null && modified)
{
try
{
- registry.updateProducerInfo(getProducerInfo());
+ // update values
+ ProducerInfo prodInfo = getProducerInfo();
+ EndpointConfigurationInfo endpointInfo =
prodInfo.getEndpointConfigurationInfo();
+ endpointInfo.setMarkupURL(markup);
+ endpointInfo.setServiceDescriptionURL(serviceDescription);
+ endpointInfo.setPortletManagementURL(portletManagement);
+ endpointInfo.setRegistrationURL(registration);
+ if (isUseWSDL())
+ {
+ internalSetWsdl(wsdl);
+ }
+
+ registry.updateProducerInfo(prodInfo);
}
catch (Exception e)
{
@@ -280,4 +311,30 @@
// bypass the rest of the life cycle and re-display page
FacesContext.getCurrentInstance().renderResponse();
}
+
+ private String modifyIfNeeded(String oldValue, String newValue, String target)
+ {
+ if ((oldValue != null && !oldValue.equals(newValue)) || (oldValue == null
&& newValue != null))
+ {
+ URL url;
+ try
+ {
+ // check that the new value is a valid URL
+ url = new URL(newValue);
+
+ oldValue = newValue;
+ modified = true;
+ }
+ catch (MalformedURLException e)
+ {
+ createErrorMessage(target, "'" + newValue + "' is not
a valid URL: " + e.getLocalizedMessage());
+ }
+ finally
+ {
+ url = null;
+ }
+ }
+
+ return oldValue;
+ }
}
\ No newline at end of file
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java 2007-05-15
15:22:50 UTC (rev 7253)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerManagerBean.java 2007-05-15
20:15:13 UTC (rev 7254)
@@ -239,7 +239,9 @@
private void setConsumerIdInSession(boolean remove)
{
Map sessionMap =
FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
- sessionMap.remove("consumer");
+ String consumerBeanName = "consumer"; // must match ConsumerBean name in
faces-config.xml
+ sessionMap.remove(consumerBeanName); // force recreation of ConsumerBean
+
if (!remove)
{
sessionMap.put(CONSUMER_ID, selectedId);
Modified:
trunk/wsrp/src/resources/portal-wsrp-war/WEB-INF/jsf/consumers/editConsumer.xhtml
===================================================================
---
trunk/wsrp/src/resources/portal-wsrp-war/WEB-INF/jsf/consumers/editConsumer.xhtml 2007-05-15
15:22:50 UTC (rev 7253)
+++
trunk/wsrp/src/resources/portal-wsrp-war/WEB-INF/jsf/consumers/editConsumer.xhtml 2007-05-15
20:15:13 UTC (rev 7254)
@@ -154,7 +154,8 @@
styleClass="portlet-form-button">
<f:param name="id" value="#{consumer.id}"/>
</h:commandLink>
- <h:commandLink action="#{consumersMgr.listConsumers}"
value="Cancel" styleClass="portlet-form-button"/>
+ <h:commandLink action="#{consumersMgr.listConsumers}"
value="Cancel" immediate="true"
+ styleClass="portlet-form-button"/>
</td>
</tr>
</table>
Show replies by date