Author: chris.laprun(a)jboss.com
Date: 2007-05-07 00:34:38 -0400 (Mon, 07 May 2007)
New Revision: 7211
Modified:
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/framework/support/MockWSRPConsumer.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPConsumer.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java
trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/WSRPConsumerImpl.java
trunk/wsrp/src/resources/portal-wsrp-war/WEB-INF/jsf/consumers/editConsumer.xhtml
Log:
- JBPORTAL-715: Initial support for modifyRegistration (still buggy).
- RegistrationInfo.refresh now maintains a status of whether the registration is valid or
not.
- ProducerInfo.refresh can force refreshing the registration information from the
producer.
- Removed WSRPConsumer.refreshRegistrationInfo.
- Better updating of Producer state in DB.
Modified:
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/framework/support/MockWSRPConsumer.java
===================================================================
---
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/framework/support/MockWSRPConsumer.java 2007-05-07
04:28:58 UTC (rev 7210)
+++
trunk/wsrp/src/main/org/jboss/portal/test/wsrp/framework/support/MockWSRPConsumer.java 2007-05-07
04:34:38 UTC (rev 7211)
@@ -36,7 +36,6 @@
import org.jboss.portal.wsrp.consumer.ProducerInfo;
import org.jboss.portal.wsrp.consumer.ProducerSessionInformation;
import org.jboss.portal.wsrp.consumer.RefreshResult;
-import org.jboss.portal.wsrp.consumer.RegistrationInfo;
import org.jboss.portal.wsrp.services.ServiceFactory;
import javax.servlet.http.HttpSession;
@@ -102,11 +101,6 @@
{
}
- public RegistrationInfo.RegistrationRefreshResult refreshRegistrationInfo(boolean
eraseLocalData) throws PortletInvokerException
- {
- return null;
- }
-
public boolean isActive()
{
return true;
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPConsumer.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPConsumer.java 2007-05-07 04:28:58 UTC
(rev 7210)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/WSRPConsumer.java 2007-05-07 04:34:38 UTC
(rev 7211)
@@ -29,7 +29,6 @@
import org.jboss.portal.wsrp.consumer.ProducerInfo;
import org.jboss.portal.wsrp.consumer.ProducerSessionInformation;
import org.jboss.portal.wsrp.consumer.RefreshResult;
-import org.jboss.portal.wsrp.consumer.RegistrationInfo;
import org.jboss.system.Service;
import javax.servlet.http.HttpSession;
@@ -109,20 +108,9 @@
void deactivate() throws Exception;
/**
- * Refreshes the Registration information required by the remote producer.
- *
- * @param eraseLocalData <code>true</code> if the local data should be
used and validated, <code>false</code> if the
- * local data should be ignored and replaced by empty values for
each of the required
- * properties.
* @return
* @since 2.6
*/
- RegistrationInfo.RegistrationRefreshResult refreshRegistrationInfo(boolean
eraseLocalData) throws PortletInvokerException;
-
- /**
- * @return
- * @since 2.6
- */
boolean isActive();
/**
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-07
04:28:58 UTC (rev 7210)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/admin/ui/ConsumerBean.java 2007-05-07
04:34:38 UTC (rev 7211)
@@ -26,7 +26,7 @@
import org.jboss.portal.wsrp.WSRPConsumer;
import org.jboss.portal.wsrp.consumer.ConsumerRegistry;
import org.jboss.portal.wsrp.consumer.ProducerInfo;
-import org.jboss.portal.wsrp.consumer.RegistrationInfo;
+import org.jboss.portal.wsrp.consumer.RefreshResult;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
@@ -179,6 +179,11 @@
return getProducerInfo().isRegistrationChecked();
}
+ public boolean isRegistrationValid()
+ {
+ return getProducerInfo().getRegistrationInfo().isRegistrationValid();
+ }
+
public ProducerInfo getProducerInfo()
{
return consumer.getProducerInfo();
@@ -216,11 +221,11 @@
{
if (consumer != null)
{
- String param = getParameter("eraseLocalData");
- boolean eraseLocalData = Boolean.valueOf(param).booleanValue();
+ String param = getParameter("mergeLocalInfo");
+ boolean mergeLocalInfo = Boolean.valueOf(param).booleanValue();
try
{
- RegistrationInfo.RegistrationRefreshResult result =
consumer.refreshRegistrationInfo(eraseLocalData);
+ RefreshResult result =
getProducerInfo().refreshRegistrationInfo(mergeLocalInfo);
if (result.hasIssues())
{
createErrorMessage(result.getStatus());
@@ -242,6 +247,27 @@
return null;
}
+ public String modifyRegistration()
+ {
+ if (consumer != null)
+ {
+ try
+ {
+ getProducerInfo().modifyRegistration();
+ createInfoMessage(null, "Successfully modified Registration!");
+ }
+ catch (Exception e)
+ {
+ createErrorMessageFrom(e);
+ return null;
+ }
+ return null;
+ }
+
+ createErrorMessage("Couldn't modify Registration!");
+ return null;
+ }
+
// Listeners
public void useWSDLListener(ValueChangeEvent event)
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java 2007-05-07
04:28:58 UTC (rev 7210)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/ProducerInfo.java 2007-05-07
04:34:38 UTC (rev 7211)
@@ -39,10 +39,12 @@
import org.jboss.portal.wsrp.core.GetPortletPropertyDescription;
import org.jboss.portal.wsrp.core.GetServiceDescription;
import org.jboss.portal.wsrp.core.InvalidHandleFault;
+import org.jboss.portal.wsrp.core.ModifyRegistration;
import org.jboss.portal.wsrp.core.PortletDescription;
import org.jboss.portal.wsrp.core.PortletDescriptionResponse;
import org.jboss.portal.wsrp.core.PortletPropertyDescriptionResponse;
import org.jboss.portal.wsrp.core.RegistrationContext;
+import org.jboss.portal.wsrp.core.RegistrationState;
import org.jboss.portal.wsrp.core.ServiceDescription;
import org.jboss.portal.wsrp.core.WSRP_v1_PortletManagement_PortType;
import org.jboss.portal.wsrp.servlet.UserAccess;
@@ -275,7 +277,7 @@
if (serviceDescription.isRequiresRegistration())
{
// attempt to register and determine if the current service description can
be used to extract POPs
- RefreshResult registrationResult = register(serviceDescription);
+ RefreshResult registrationResult = register(serviceDescription,
forceRefresh);
if (registrationResult.specificCode())
{
// registration occurred, so we should ask for a new service description
@@ -632,26 +634,27 @@
public void register() throws PortletInvokerException
{
- register(null);
+ register(null, false);
}
/**
* Attempts to register with the producer.
*
* @param serviceDescription
+ * @param forceRefresh
* @return <code>true</code> if the client code should ask for a new
service description, <code>false</code> if the
* specified description is good to be further processed
* @throws PortletInvokerException
* @since 2.6
*/
- private RefreshResult register(ServiceDescription serviceDescription) throws
PortletInvokerException
+ private RefreshResult register(ServiceDescription serviceDescription, boolean
forceRefresh) throws PortletInvokerException
{
if (persistentRegistrationInfo == null)
{
persistentRegistrationInfo = new RegistrationInfo(this);
}
- if (!isRegistered())
+ if (forceRefresh || !isRegistered())
{
if (serviceDescription == null)
@@ -662,7 +665,7 @@
if (serviceDescription.isRequiresRegistration())
{
// check if the configured registration information is correct and if we can
get the service description
- RefreshResult result = persistentRegistrationInfo.refresh(serviceDescription,
persistentId, true, false);
+ RefreshResult result = persistentRegistrationInfo.refresh(serviceDescription,
persistentId, true, forceRefresh);
if (!result.hasIssues())
{
try
@@ -715,19 +718,48 @@
{
persistentEndpointInfo.getRegistrationService().deregister(getRegistrationContext());
persistentRegistrationInfo.resetRegistration();
- registry.updateProducerInfo(this);
log.info("Consumer with id '" + persistentId + "'
deregistered.");
}
catch (Exception e)
{
throw new PortletInvokerException("Couldn't deregister with producer
'" + persistentId + "'", e);
}
+ finally
+ {
+ registry.updateProducerInfo(this);
+ }
}
}
- public RegistrationInfo.RegistrationRefreshResult refreshRegistrationInfo(boolean
mergeWithLocalInfo) throws PortletInvokerException
+ public void modifyRegistration() throws PortletInvokerException
{
+ if (isRegistered())
+ {
+ try
+ {
+ ModifyRegistration modifyRegistration =
WSRPTypeFactory.createModifyRegistration(getRegistrationContext(),
+ persistentRegistrationInfo.getRegistrationData());
+ RegistrationState state =
persistentEndpointInfo.getRegistrationService().modifyRegistration(modifyRegistration);
+ if (state != null)
+ {
+
persistentRegistrationInfo.setRegistrationState(state.getRegistrationState());
+ }
+ log.info("Consumer with id '" + persistentId + "'
sucessfully modified its registration.");
+ }
+ catch (Exception e)
+ {
+ throw new PortletInvokerException("Couldn't modify registration with
producer '" + persistentId + "'", e);
+ }
+ finally
+ {
+ registry.updateProducerInfo(this);
+ }
+ }
+ }
+
+ public RefreshResult refreshRegistrationInfo(boolean mergeWithLocalInfo) throws
PortletInvokerException
+ {
if (persistentRegistrationInfo == null)
{
persistentRegistrationInfo = new RegistrationInfo(this);
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java 2007-05-07
04:28:58 UTC (rev 7210)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/RegistrationInfo.java 2007-05-07
04:34:38 UTC (rev 7211)
@@ -24,7 +24,6 @@
package org.jboss.portal.wsrp.consumer;
import org.jboss.logging.Logger;
-import org.jboss.portal.common.i18n.LocaleFormat;
import org.jboss.portal.common.util.ParameterValidation;
import org.jboss.portal.wsrp.WSRPConstants;
import org.jboss.portal.wsrp.WSRPTypeFactory;
@@ -63,9 +62,9 @@
private Map persistentRegistrationProperties;
private transient Boolean requiresRegistration;
-
+ private transient Boolean isRegistrationValid;
private transient RegistrationData registrationData;
- private boolean dirty;
+ private transient boolean dirty;
public RegistrationInfo(ProducerInfo producerInfo)
{
@@ -240,7 +239,6 @@
private Map getOrCreateRegistrationPropertiesMap(boolean forceCreate)
{
- // todo: get from registration
if (forceCreate && persistentRegistrationProperties == null)
{
persistentRegistrationProperties = new HashMap();
@@ -386,6 +384,9 @@
result.setRegistrationProperties(persistentRegistrationProperties);
}
+ // if issues have been detected, mark the registration as invalid (but do not
reset the data)
+ isRegistrationValid = Boolean.valueOf(!result.hasIssues());
+
String msg = "Registration configuration is " + (result.hasIssues() ?
"NOT" : "") + " valid";
result.appendToStatus(msg);
log.debug(msg);
@@ -403,8 +404,8 @@
private void handleNoRequiredRegistrationProperties(String producerId,
RegistrationRefreshResult result, boolean keepExtra)
{
log.info("The producer didn't require any specific registration
properties");
- Map properties = getRegistrationProperties();
- if (!properties.isEmpty())
+ Map properties = getOrCreateRegistrationPropertiesMap(false);
+ if (properties != null && !properties.isEmpty())
{
String msg = "Registration data is available for producer '"
+ producerId + "' when none is expected by the producer";
@@ -500,8 +501,7 @@
public boolean isRegistrationValid()
{
- return (persistentRegistrationHandle != null &&
isRegistrationDeterminedRequired()) ||
- isRegistrationDeterminedNotRequired();
+ return isRegistrationValid != null && isRegistrationValid.booleanValue();
}
public void setRegistrationContext(RegistrationContext registrationContext)
@@ -529,7 +529,7 @@
public boolean isRefreshNeeded()
{
- return dirty || requiresRegistration == null;
+ return dirty || requiresRegistration == null || isRegistrationValid == null;
}
public class RegistrationRefreshResult extends RefreshResult
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/WSRPConsumerImpl.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/WSRPConsumerImpl.java 2007-05-07
04:28:58 UTC (rev 7210)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/consumer/WSRPConsumerImpl.java 2007-05-07
04:34:38 UTC (rev 7211)
@@ -24,7 +24,6 @@
import org.jboss.portal.api.event.PortalEvent;
import org.jboss.portal.api.event.PortalEventContext;
-import org.jboss.portal.common.i18n.LocaleFormat;
import org.jboss.portal.common.invocation.InvocationException;
import org.jboss.portal.common.util.ParameterValidation;
import org.jboss.portal.common.value.StringValue;
@@ -493,11 +492,6 @@
}
}
- public RegistrationInfo.RegistrationRefreshResult refreshRegistrationInfo(boolean
mergeWithLocalInfo) throws PortletInvokerException
- {
- return producerInfo.refreshRegistrationInfo(mergeWithLocalInfo);
- }
-
public boolean isActive()
{
return producerInfo.isActive() && started;
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-07
04:28:58 UTC (rev 7210)
+++
trunk/wsrp/src/resources/portal-wsrp-war/WEB-INF/jsf/consumers/editConsumer.xhtml 2007-05-07
04:34:38 UTC (rev 7211)
@@ -118,19 +118,34 @@
</td>
</tr>
</c:if>
- <c:if test="#{!consumer.registrationChecked}">
- <tr>
- <td colspan="2">
- <p class="info">Registration information hasn't been
validated with the Producer. You should validate
- it.</p>
- <h:commandLink action="#{consumer.refreshRegistrationInfo}"
value="Validate"
- title="Validate registration info from Producer"
- styleClass="portlet-form-button">
- <f:param name="eraseLocalInfo" value="false"/>
- </h:commandLink>
- </td>
- </tr>
- </c:if>
+ <c:choose>
+ <c:when test="#{!consumer.registrationChecked}">
+ <tr>
+ <td colspan="2">
+ <p class="info">Registration information hasn't been
validated with the Producer. You should validate
+ it.</p>
+ <h:commandLink action="#{consumer.refreshRegistrationInfo}"
value="Validate"
+ title="Validate registration info from Producer"
styleClass="portlet-form-button">
+ <f:param name="mergeLocalInfo"
value="true"/>
+ </h:commandLink>
+ </td>
+ </tr>
+ </c:when>
+ <c:otherwise>
+ <c:if
+ test="#{!empty consumer.producerInfo.registrationInfo.registrationHandle
and !consumer.registrationValid}">
+ <tr>
+ <td colspan="2">
+ <p class="error">Registration is not valid. You can try
to fix the problems and modify the
+ registration.</p>
+ <h:commandLink action="#{consumer.modifyRegistration}"
value="Modify registration"
+ title="Modify the registration held with this
Producer"
+ styleClass="portlet-form-button"/>
+ </td>
+ </tr>
+ </c:if>
+ </c:otherwise>
+ </c:choose>
</c:if>
<tr>
<td>